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<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;
|
}
|
}
|
|
|
public static Long getProductID(List<Product> allProduct, String[] productNames) {
|
Long result = null;
|
List<Product> myproducts = allProduct;
|
for (String temp : productNames) {
|
if (temp.isEmpty()) {
|
continue;
|
}
|
Optional<Product> 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;
|
}
|
}
|
|
}
|