| 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; | 
|         } | 
|     } | 
|   | 
| } |