package com.zt.life.util; import com.zt.common.servlet.Result; import com.zt.core.sys.dto.DictItemDto; import com.zt.core.sys.model.SysDept; import com.zt.life.core.model.Product; import com.zt.life.dto.ImportErrDto; 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 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> result, List> 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> result, List> 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 stringObjectMap = importResults.get(1); List 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> result, List> 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> result, List> 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> result, List> 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 stringObjectMap = importResults.get(3); List 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> result, List> 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 stringObjectMap = importResults.get(2); List 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 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 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 idsFormatList(String ids) { List 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 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 sysDepts, String[] dwIdList, String dwNames) { for (String temp : dwIdList) { if (temp.matches("[0-9]+")) { Optional 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 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; } } public static Long getProductID(List allProduct, String[] productNames) { Long result = null; List myproducts = allProduct; for (String temp : productNames) { if (temp.isEmpty()) { continue; } Optional myop = myproducts.stream().filter(item -> item.getName().equals(temp)).findFirst(); if (myop != null && myop.isPresent()) { result = myop.get().getId(); myproducts = allProduct.stream().filter(item -> item.getParentProductId().equals(myop.get().getId())).collect(Collectors.toList()); if (myproducts.size() > 0) { continue; } else { break; } } } if (myproducts != null && myproducts.size() > 0) { return myproducts.get(0).getId(); } else { return result; } } }