package com.zt.core.shiro; 
 | 
  
 | 
import com.zt.common.servlet.Result; 
 | 
import com.zt.core.sys.dto.DictItemDto; 
 | 
import com.zt.core.sys.model.SysDept; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.apache.poi.ss.usermodel.Cell; 
 | 
import org.apache.poi.ss.usermodel.Row; 
 | 
import org.apache.poi.ss.usermodel.Sheet; 
 | 
import org.apache.poi.ss.util.CellRangeAddress; 
 | 
  
 | 
import java.text.DateFormat; 
 | 
import java.text.ParsePosition; 
 | 
import java.text.SimpleDateFormat; 
 | 
import java.util.*; 
 | 
import java.util.regex.Pattern; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
import static org.mapstruct.ap.internal.util.Strings.isEmpty; 
 | 
  
 | 
public class ImportUtil { 
 | 
  
 | 
    /** 
 | 
     * 获取当前单元格有几行 
 | 
     * @param cell 
 | 
     * @param sheet 
 | 
     * @return 
 | 
     */ 
 | 
    public static int getMergeRowNum(Cell cell, Sheet sheet) { 
 | 
        int mergeSize = 1; 
 | 
        List<CellRangeAddress> mergedRegions = sheet.getMergedRegions(); 
 | 
        for (CellRangeAddress cellRangeAddress : mergedRegions) { 
 | 
            if (cellRangeAddress.isInRange(cell)) { 
 | 
                mergeSize = cellRangeAddress.getLastRow() - cellRangeAddress.getFirstRow() + 1; 
 | 
                break; 
 | 
            } 
 | 
        } 
 | 
        return mergeSize; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 判断对象是否为空 
 | 
     * 
 | 
     * @param obj 
 | 
     * @return 
 | 
     */ 
 | 
    public static String ObjectFormat(Object obj) { 
 | 
        return obj == null ? "" : obj.toString(); 
 | 
    } 
 | 
  
 | 
    // 将所有的值转换为String类型 
 | 
    public static String getCellValue(Row row, Integer i, String Pattern) { 
 | 
        Cell cell = row.getCell(i); 
 | 
        String cellStr = ""; 
 | 
        cellStr = getCellValue(Pattern, cell, cellStr); 
 | 
        return cellStr; 
 | 
    } 
 | 
  
 | 
    public static String getCellValue(String Pattern, Cell cell, String cellStr) { 
 | 
        if (cell != null) { 
 | 
            switch (cell.getCellType()) { 
 | 
                case BLANK:// 空值 
 | 
                    cellStr = ""; 
 | 
                    break; 
 | 
                case NUMERIC:// 数字 
 | 
                    if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {// 时间 
 | 
                        DateFormat format = new SimpleDateFormat(Pattern); 
 | 
                        Date date = cell.getDateCellValue(); 
 | 
                        cellStr = format.format(date); 
 | 
                        break; 
 | 
                    } else { 
 | 
                        cellStr = String.valueOf(cell.getNumericCellValue()); 
 | 
                        if (cellStr.split("\\.").length == 2) {// 去.0 
 | 
                            String[] ss = cellStr.split("\\."); 
 | 
                            if (ss[1].equals("0")) { 
 | 
                                cellStr = ss[0] + ""; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                default: 
 | 
                    cellStr = cell.getStringCellValue(); 
 | 
                    break; 
 | 
            } 
 | 
        } 
 | 
        return cellStr; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 导入成功显示提示信息 
 | 
     * 
 | 
     * @param result 
 | 
     * @param importResults 
 | 
     * @param str 
 | 
     */ 
 | 
    public static void importResult(Result<List<ImportErrDto>> result, List<Map<String, Object>> importResults, StringBuilder str) { 
 | 
        if (importResults.size() == 1) { // 导入成功 
 | 
            String sum = importResults.get(0).get("sum").toString(); 
 | 
            String suc = importResults.get(0).get("suc").toString(); 
 | 
            String err = importResults.get(0).get("err").toString(); 
 | 
            str.append("共导入").append(sum).append("条数据,").append(" 成功").append(suc).append("条数据,").append(" 失败").append(err).append("条数据"); 
 | 
            result.setMsg(str.toString()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void ImportErrResult(Result<List<ImportErrDto>> result, List<Map<String, Object>> importResults, StringBuilder str) { 
 | 
        if (importResults.size() == 2) { //导入有错误 
 | 
            String sum = importResults.get(0).get("sum").toString(); 
 | 
            String suc = importResults.get(0).get("suc").toString(); 
 | 
            String err = importResults.get(0).get("err").toString(); 
 | 
            str.append("共导入").append(sum).append("条数据,").append(" 成功").append(suc).append("条数据,").append(" 失败").append(err).append("条数据"); 
 | 
            Map<String, Object> stringObjectMap = importResults.get(1); 
 | 
            List<ImportErrDto> errList = new ArrayList<>(); 
 | 
            for (String key : stringObjectMap.keySet()) { 
 | 
                ImportErrMessage value = (ImportErrMessage) stringObjectMap.get(key); 
 | 
                errList.add(new ImportErrDto(value.getSheetName(), key, value.getLineNumber())); 
 | 
            } 
 | 
            if (errList.size() > 0) { 
 | 
                for (ImportErrDto importErrDto : errList) { 
 | 
                    importErrDto.setLineNumber(importErrDto.getLineNumber().substring(0, importErrDto.getLineNumber().length() - 1)); 
 | 
                } 
 | 
            } 
 | 
            result.setMsg(str.toString()); 
 | 
            result.setCode(501); 
 | 
            result.setData(errList); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计修项目清单导入成功 
 | 
     * 
 | 
     * @param result 
 | 
     * @param importResults 
 | 
     * @param str 
 | 
     */ 
 | 
    public static void importResultProjectList(Result<List<ImportErrDto>> result, List<Map<String, Object>> importResults, StringBuilder str) { 
 | 
        if (importResults.size() == 2) { 
 | 
            String sum = importResults.get(0).get("sum").toString(); 
 | 
            String suc = importResults.get(0).get("suc").toString(); 
 | 
            String err = importResults.get(0).get("err").toString(); 
 | 
            String jsum = importResults.get(1).get("jsum").toString(); 
 | 
            String jsuc = importResults.get(1).get("jsuc").toString(); 
 | 
            String jerr = importResults.get(1).get("jerr").toString(); 
 | 
            str.append("项目清单: 共导入").append(sum).append("条数据,").append(" 成功").append(suc).append("条数据,").append(" 失败").append(err).append("条数据\n"); 
 | 
            str.append("检验内容: 共导入").append(jsum).append("条数据,").append(" 成功").append(jsuc).append("条数据,").append(" 失败").append(jerr).append("条数据"); 
 | 
            result.setMsg(str.toString()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计修项目清单导入成功 
 | 
     * 
 | 
     * @param result 
 | 
     * @param importResults 
 | 
     * @param str 
 | 
     */ 
 | 
    public static void importResultThreeProjectList(Result<List<ImportErrDto>> result, List<Map<String, Object>> importResults, StringBuilder str) { 
 | 
        if (importResults.size() == 3) { 
 | 
            String sum = importResults.get(0).get("sum").toString(); 
 | 
            String suc = importResults.get(0).get("suc").toString(); 
 | 
            String err = importResults.get(0).get("err").toString(); 
 | 
            String jsum = importResults.get(1).get("jsum").toString(); 
 | 
            String jsuc = importResults.get(1).get("jsuc").toString(); 
 | 
            String jerr = importResults.get(1).get("jerr").toString(); 
 | 
            String csum = importResults.get(2).get("csum").toString(); 
 | 
            String csuc = importResults.get(2).get("csuc").toString(); 
 | 
            String cerr = importResults.get(2).get("cerr").toString(); 
 | 
            str.append("项目清单: 共导入").append(sum).append("条数据,").append(" 成功").append(suc).append("条数据,").append(" 失败").append(err).append("条数据\n"); 
 | 
            str.append("检验内容: 共导入").append(jsum).append("条数据,").append(" 成功").append(jsuc).append("条数据,").append(" 失败").append(jerr).append("条数据\n"); 
 | 
            str.append("拆检范围: 共导入").append(csum).append("条数据,").append(" 成功").append(csuc).append("条数据,").append(" 失败").append(cerr).append("条数据"); 
 | 
            result.setMsg(str.toString()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void ImportErrResultThreeProjectList(Result<List<ImportErrDto>> result, List<Map<String, Object>> importResults, StringBuilder str) { 
 | 
        if (importResults.size() == 4) { //导入有错误 
 | 
            String sum = importResults.get(0).get("sum").toString(); 
 | 
            String suc = importResults.get(0).get("suc").toString(); 
 | 
            String err = importResults.get(0).get("err").toString(); 
 | 
            String jsum = importResults.get(1).get("jsum").toString(); 
 | 
            String jsuc = importResults.get(1).get("jsuc").toString(); 
 | 
            String jerr = importResults.get(1).get("jerr").toString(); 
 | 
            String csum = importResults.get(2).get("csum").toString(); 
 | 
            String csuc = importResults.get(2).get("csuc").toString(); 
 | 
            String cerr = importResults.get(2).get("cerr").toString(); 
 | 
            str.append("项目清单: 共导入").append(sum).append("条数据,").append(" 成功").append(suc).append("条数据,").append(" 失败").append(err).append("条数据\n"); 
 | 
            str.append("检验内容: 共导入").append(jsum).append("条数据,").append(" 成功").append(jsuc).append("条数据,").append(" 失败").append(jerr).append("条数据\n"); 
 | 
            str.append("拆检范围: 共导入").append(csum).append("条数据,").append(" 成功").append(csuc).append("条数据,").append(" 失败").append(cerr).append("条数据"); 
 | 
            Map<String, Object> stringObjectMap = importResults.get(3); 
 | 
            List<ImportErrDto> errList = new ArrayList<>(); 
 | 
            for (String key : stringObjectMap.keySet()) { 
 | 
                ImportErrMessage value = (ImportErrMessage) stringObjectMap.get(key); 
 | 
                errList.add(new ImportErrDto(value.getSheetName(), key, value.getLineNumber())); 
 | 
            } 
 | 
            if (errList.size() > 0) { 
 | 
                for (ImportErrDto importErrDto : errList) { 
 | 
                    importErrDto.setLineNumber(importErrDto.getLineNumber().substring(0, importErrDto.getLineNumber().length() - 1)); 
 | 
                } 
 | 
            } 
 | 
            result.setMsg(str.toString()); 
 | 
            result.setCode(501); 
 | 
            Collections.sort(errList); 
 | 
            result.setData(errList); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void ImportErrResultProjectList(Result<List<ImportErrDto>> result, List<Map<String, Object>> importResults, StringBuilder str) { 
 | 
        if (importResults.size() == 3) { //导入有错误 
 | 
            String sum = importResults.get(0).get("sum").toString(); 
 | 
            String suc = importResults.get(0).get("suc").toString(); 
 | 
            String err = importResults.get(0).get("err").toString(); 
 | 
            String jsum = importResults.get(1).get("jsum").toString(); 
 | 
            String jsuc = importResults.get(1).get("jsuc").toString(); 
 | 
            String jerr = importResults.get(1).get("jerr").toString(); 
 | 
            str.append("项目清单: 共导入").append(sum).append("条数据,").append(" 成功").append(suc).append("条数据,").append(" 失败").append(err).append("条数据\n"); 
 | 
            str.append("检验内容: 共导入").append(jsum).append("条数据,").append(" 成功").append(jsuc).append("条数据,").append(" 失败").append(jerr).append("条数据"); 
 | 
            Map<String, Object> stringObjectMap = importResults.get(2); 
 | 
            List<ImportErrDto> errList = new ArrayList<>(); 
 | 
            for (String key : stringObjectMap.keySet()) { 
 | 
                ImportErrMessage value = (ImportErrMessage) stringObjectMap.get(key); 
 | 
                errList.add(new ImportErrDto(value.getSheetName(), key, value.getLineNumber())); 
 | 
            } 
 | 
            if (errList.size() > 0) { 
 | 
                for (ImportErrDto importErrDto : errList) { 
 | 
                    importErrDto.setLineNumber(importErrDto.getLineNumber().substring(0, importErrDto.getLineNumber().length() - 1)); 
 | 
                } 
 | 
            } 
 | 
            result.setMsg(str.toString()); 
 | 
            result.setCode(501); 
 | 
            Collections.sort(errList); 
 | 
            result.setData(errList); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 导入异常处理 
 | 
     * @param errMap 
 | 
     * @param errSting 
 | 
     * @param sheetName 
 | 
     * @param row 
 | 
     */ 
 | 
    public static void updateErrMap(Map<String, Object> errMap, String errSting, String sheetName, int row) { 
 | 
        if (!errMap.containsKey(errSting)) { 
 | 
            errMap.put(errSting, new ImportErrMessage(sheetName, row + "、")); 
 | 
        } else { 
 | 
            ImportErrMessage importErrMessage1 = (ImportErrMessage) errMap.get(errSting); 
 | 
            importErrMessage1.setLineNumber(importErrMessage1.getLineNumber() + row + "、"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /* 
 | 
     * 判断是否为整数 
 | 
     * @param str 传入的字符串 
 | 
     * @return 是整数返回true,否则返回false 
 | 
     */ 
 | 
    public static boolean isInteger(String str) { 
 | 
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); 
 | 
        return pattern.matcher(str).matches(); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 通过字典显示值获取value 
 | 
     * 
 | 
     * @param tempList 字典项集合 
 | 
     * @param dLabel   字典显示值 
 | 
     * @return 
 | 
     */ 
 | 
    public static String getDictValue(List<DictItemDto> tempList, String dLabel) { 
 | 
  
 | 
        String tempstr = ""; 
 | 
        for (DictItemDto dd : tempList) { 
 | 
            if (dd.getDictLabel().equals(dLabel)) { 
 | 
                tempstr = dd.getDictValue(); 
 | 
                break; 
 | 
            } 
 | 
        } 
 | 
        return tempstr; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 通过维修级别的数值返回维系类别 
 | 
     * @param maintainLevel 
 | 
     * @param maintainLevelName 
 | 
     * @return 
 | 
     */ 
 | 
    public static String getMaintainLevelName(Integer maintainLevel, String maintainLevelName) { 
 | 
        if (maintainLevel != null) { 
 | 
            switch (maintainLevel) { 
 | 
                case 1: 
 | 
                    maintainLevelName = "wj"; 
 | 
                    break; 
 | 
                case 2: 
 | 
                    maintainLevelName = "xx"; 
 | 
                    break; 
 | 
                case 3: 
 | 
                    maintainLevelName = "zx"; 
 | 
                    break; 
 | 
                default: 
 | 
                    maintainLevelName = ""; 
 | 
                    break; 
 | 
            } 
 | 
        } 
 | 
        return maintainLevelName; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 通过字符串id获取id数组 
 | 
     * @param ids 
 | 
     * @return 
 | 
     */ 
 | 
    public static List<Long> idsFormatList(String ids) { 
 | 
        List<Long> idList = new ArrayList<>(); 
 | 
        if (!StringUtils.isEmpty(ids)) { 
 | 
            String strids[] = ids.split(","); 
 | 
            for (String strtemp : strids) { 
 | 
                if (strtemp == null || strtemp.isEmpty()) { 
 | 
                    continue; 
 | 
                } 
 | 
                idList.add(Long.parseLong(strtemp)); 
 | 
            } 
 | 
        } 
 | 
        return idList; 
 | 
    } 
 | 
  
 | 
    public static String queryMaintainUnit(List<SysDept> sysDepts, String mainTainUnit, String dwNames) { 
 | 
        if (null != mainTainUnit) { 
 | 
            String[] dwIdList = mainTainUnit.split(","); 
 | 
            dwNames = getMaintainUnit(sysDepts, dwIdList, dwNames); 
 | 
            if (dwNames != null && dwNames.length() > 0) { 
 | 
                dwNames = dwNames.substring(0, dwNames.length() - 1); 
 | 
            } 
 | 
        } 
 | 
        return dwNames; 
 | 
    } 
 | 
  
 | 
    public static String getMaintainUnit(List<SysDept> sysDepts, String[] dwIdList, String dwNames) { 
 | 
        for (String temp : dwIdList) { 
 | 
            if (temp.matches("[0-9]+")) { 
 | 
                Optional<SysDept> sds = sysDepts.stream().filter(item -> item.getId().equals(Long.parseLong(temp))).findFirst(); 
 | 
                if (sds.isPresent()) { 
 | 
                    dwNames += sds.get().getName() + ","; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return dwNames; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 通过字典value获取指点显示 
 | 
     * 
 | 
     * @param templist 字典项集合 
 | 
     * @param dictid   字典value 
 | 
     * @return 
 | 
     */ 
 | 
    public static String getDictName(List<DictItemDto> templist, String dictid) { 
 | 
  
 | 
        String tempstr = ""; 
 | 
        for (DictItemDto dd : templist) { 
 | 
            if (dd.getDictValue().equals(dictid)) { 
 | 
                tempstr = dd.getDictLabel(); 
 | 
                break; 
 | 
            } 
 | 
        } 
 | 
        return tempstr; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 判断时间格式是否正确 
 | 
     * 
 | 
     * @param value 
 | 
     * @param format 
 | 
     * @return 
 | 
     */ 
 | 
    public static boolean isDate(String value, String format) { 
 | 
  
 | 
        SimpleDateFormat sdf = null; 
 | 
        ParsePosition pos = new ParsePosition(0);//指定从所传字符串的首位开始解析 
 | 
  
 | 
        if (value == null || isEmpty(format)) { 
 | 
            return false; 
 | 
        } 
 | 
        try { 
 | 
            sdf = new SimpleDateFormat(format); 
 | 
            sdf.setLenient(false); 
 | 
            Date date = sdf.parse(value, pos); 
 | 
            if (date == null) { 
 | 
                return false; 
 | 
            } else { 
 | 
                //更为严谨的日期,如2011-03-024认为是不合法的 
 | 
                if (pos.getIndex() > sdf.format(date).length()) { 
 | 
                    return false; 
 | 
                } 
 | 
                return true; 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |