com.esd.cs.worker.WorkerUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.esd.cs.worker.WorkerUtil.java

Source

/*
 * Copyright (c) 2013 ????www.hrbesd.com. All rights reserved.
 * 
 * HRBESD PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.esd.cs.worker;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.esd.common.util.CalendarUtil;
import com.esd.cs.common.HExcelSheetParser;
import com.esd.cs.common.XExcelSheetParser;
import com.esd.hesf.model.AuditParameter;
import com.esd.hesf.model.Worker;
import com.esd.hesf.model.WorkerHandicapLevel;
import com.esd.hesf.model.WorkerHandicapType;

public class WorkerUtil {
    public static Integer DnISABILITYCARDLENGTH = 20;// ??
    private static final Logger logger = LoggerFactory.getLogger(WorkerUtil.class);

    // ?
    public static Integer conversionAge(String param) {
        if (param != null) {
            try {
                // ?
                Integer age = Integer.valueOf(param.substring(6, 10));
                // ?
                Integer nowYear = Integer.valueOf(CalendarUtil.getNowYear());
                return (nowYear - age) + 1;
            } catch (Exception e) {
                logger.error("conversionAge:{}", e.getMessage());
            }
        }
        logger.error("conversionAge:{}", -1);
        return -1;
    }

    private static HSSFWorkbook hWorkbook;// excel 2003?
    private static XSSFWorkbook xWorkbook;// excel 2007-2012

    /**
     * excel:?2003?HSSFWorkbook,2007XSSFWorkbook.
     * 2003??HSSFWorkbook,??office2003 ??
     * 
     * @param file
     * @return
     * @throws IOException
     * @throws FileNotFoundException
     */
    public static Object hasParser(File file) throws FileNotFoundException, IOException {
        try {
            // ?workbook
            hWorkbook = new HSSFWorkbook(new FileInputStream(file));
            logger.info("excel 97-2003");
            return hWorkbook;
        } catch (Exception e) {
            xWorkbook = new XSSFWorkbook(new FileInputStream(file));
            logger.info("excel 2007-2010");
            return xWorkbook;

        }
    }

    /**
     * ??
     * 
     * @param row
     * @return
     */
    public static Worker parseRow(List<Object> row) {
        Worker callBack = new Worker();
        for (int j = 0; j < row.size(); j++) {
            Object obj = row.get(j);
            String value = String.valueOf(obj).trim();
            switch (j) {
            case 0:
                // ??
                callBack.setWorkerName(value);
                break;
            case 1:
                // ??
                callBack.setWorkerHandicapCode(value);
                break;
            }
            logger.debug(callBack.toString());
        }
        return callBack;
    }

    /**
     * ???
     * 
     * @param file
     * @return
     * @throws IOException
     * @throws FileNotFoundException
     */
    public static List<Worker> parse(File file, int sheetNumber) throws FileNotFoundException, IOException {
        List<Worker> list = null;
        // excel
        Object obj = hasParser(file);
        if (obj == null) {
            return list;
        }
        list = new ArrayList<Worker>();

        if (obj instanceof HSSFWorkbook) {// 97-2003
            logger.debug("excelFileType:{}", "97-2003");

            HExcelSheetParser parser = new HExcelSheetParser(file);
            List<List<Object>> datas = parser.getDatasInSheet(sheetNumber);
            for (int i = 1; i < datas.size(); i++) {
                List<Object> row = datas.get(i);
                list.add(parseRow(row));
            }
        } else if (obj instanceof XSSFWorkbook) { // 2003-2010
            logger.debug("excelFileType:{}", " 2003-2010");
            XExcelSheetParser parser = new XExcelSheetParser(file);
            List<List<Object>> datas = parser.getDatasInSheet(sheetNumber);
            for (int i = 1; i < datas.size(); i++) {
                List<Object> row = datas.get(i);
                list.add(parseRow(row));
            }
        }

        return list;
    }

    /**
     * ??? ?
     */
    public static Worker assembly(Worker w) {
        Worker worker = new Worker();
        // ??
        String handicapCode = w.getWorkerHandicapCode();
        worker.setWorkerName(w.getWorkerName());
        worker.setWorkerHandicapCode(handicapCode);
        // ??
        worker.setWorkerIdCard(handicapCode.substring(0, 18));

        int age = Integer.valueOf(handicapCode.substring(16, 17));
        // 
        if (age % 2 == 0) {
            // 
            worker.setWorkerGender(0 + "");
        } else {
            // 
            worker.setWorkerGender(1 + "");
        }
        // 
        int handicapType = Integer.valueOf(handicapCode.substring(18, 19));
        worker.setWorkerHandicapType(new WorkerHandicapType(handicapType));

        // 
        int handicapLeve = Integer.valueOf(handicapCode.substring(19, 20));
        worker.setWorkerHandicapLevel(new WorkerHandicapLevel(handicapLeve));

        // 
        String year = handicapCode.substring(6, 10);// 
        String month = handicapCode.substring(10, 12);// 
        String day = handicapCode.substring(12, 14);// 

        worker.setWorkerBirth(year + "-" + month + "-" + day);
        // --??
        worker.setWorkerBirthYear(year);
        logger.debug("assemblyWorker:{}", worker);

        return worker;

    }

    /**
     * 
     * 
     * @param workerHandicapCode
     * @param param
     * @return
     */
    public List<String> ageVerifi(String workerHandicapCode, AuditParameter param) {
        int sex = Integer.valueOf(workerHandicapCode.substring(16, 17));
        List<String> result = new ArrayList<String>();

        if (param != null) {
            int age = conversionAge(workerHandicapCode);
            // 
            if (sex % 2 == 0) {
                result.add("");
                result.add(age + "");
                //  
                if (age > param.getRetireAgeFemale()) {
                    result.add("");
                    return result;
                }
                // ?
                if (age < 16) {
                    result.add("");
                    return result;
                }
            } else {

                result.add("");
                result.add(age + "");
                // 
                if (age > param.getRetireAgeMale()) {
                    result.add("");
                    return result;
                }
                // ?
                if (age < 16) {
                    result.add("");
                    return result;
                }
            }
        } else {
            logger.error("getLastYearERROR:{}");
        }
        return null;
    }
}