package com.zt.life.modules.mainPart.taskReliability.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zt.common.constant.Constant; import com.zt.common.db.query.QueryFilter; import com.zt.common.service.BaseService; import com.zt.common.utils.CacheUtils; import com.zt.common.utils.CommonUtils; import com.zt.common.utils.TreeUtils; import com.zt.common.utils.UUIDUtil; import com.zt.core.shiro.ImportUtil; import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao; import com.zt.life.modules.mainPart.basicInfo.model.ParamData; import com.zt.life.modules.mainPart.basicInfo.model.ProductImg; import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel; import com.zt.life.modules.mainPart.basicInfo.service.ParamDataService; import com.zt.life.modules.mainPart.sysPictureBase.service.SysPictureBaseService; import com.zt.life.modules.mainPart.taskReliability.dao.ReliabilityAssessDao; import com.zt.life.modules.mainPart.taskReliability.model.AssessItem; import com.zt.life.modules.mainPart.taskReliability.model.ReliabilityAssess; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.util.*; /** * product_model * * @author zt generator * @since 1.0.0 2024-02-29 */ @Service public class ReliabilityAssessService extends BaseService { public List> importProductExcel(MultipartFile mutFile, String progressId, Long shipId, Long itemId) { Date beginDate = new Date(); List> list = new ArrayList<>();//存储所有的导入状态 Map map;//存储每一行的状态 Integer sum = 0; // 总共的条数 Integer suc = 0; // 成功的条数 Integer err = 0; // 失败的条数 int row1 = 0; Map errMap = new HashMap<>(); try { // 获取导入文件的后缀名 String fileName = mutFile.getOriginalFilename(); Workbook workbook = null; //解决excel版本问题 if (fileName != null && fileName.endsWith(".xls")) { workbook = new HSSFWorkbook(mutFile.getInputStream()); } else if (fileName != null && fileName.endsWith(".xlsx")) { workbook = new XSSFWorkbook(mutFile.getInputStream()); } assert workbook != null; //断言如果[boolean表达式]为true,则程序继续执行。 如果为false,则程序抛出AssertionError,并终止执行。 int sheets = workbook.getNumberOfSheets(); Map modelMap = new HashMap<>(); List prductList = baseDao.getProductPath(shipId); for (XhProductModel product : prductList) { if (StringUtils.isNotBlank(product.getNamePath())) { modelMap.put(product.getNamePath(), product); } } String shipPath = ""; String xtPath = ""; String fxtPath = ""; String sbPath = ""; String path = ""; for (int i = 0; i < sheets; i++) { Sheet sheet = workbook.getSheetAt(i); int num = sheet.getLastRowNum(); // 一共有多少行 String sheetName = sheet.getSheetName(); //获取当前sheet名称 for (int j = 1; j <= num; j++) { CacheUtils.put(progressId, "speed", CommonUtils.getPercent(j, num)); CacheUtils.put(progressId, "msg", "共" + num + "行,已完成第" + j + "行"); row1 = j; String pattern = "yyyy-MM-dd"; Row row = sheet.getRow(row1); // String sort = ImportUtil.getCellValue(row, 0, pattern); //序号 String name = ImportUtil.getCellValue(row, 1, pattern); //节点名称 String type = ImportUtil.getCellValue(row, 2, pattern);//节点类型 String runTime = ImportUtil.getCellValue(row, 3, pattern); //运行时长 String runNum = ImportUtil.getCellValue(row, 4, pattern); //运行次数 String failNum = ImportUtil.getCellValue(row, 5, pattern); //失败次数 if (StringUtils.isBlank(name) || StringUtils.isBlank(type)) continue; Long productId = null; if (type.equals("总体")) { path = shipPath = name; xtPath = ""; fxtPath = ""; sbPath = ""; productId = shipId; }else { if (type.equals("系统")) { if (StringUtils.isNotBlank(shipPath)) { path = xtPath = name; fxtPath = ""; sbPath = ""; } else { continue; } } if (type.equals("分系统")) { if (StringUtils.isNotBlank(xtPath)) { path = fxtPath = xtPath + "," + name; sbPath = ""; } else { continue; } } if (type.equals("设备")) { if ((StringUtils.isNotBlank(xtPath) || StringUtils.isNotBlank(fxtPath))) { path = sbPath = StringUtils.isNotBlank(fxtPath) ? fxtPath + "," + name : xtPath + "," + name; } else { continue; } } if (modelMap.get(path) != null) { productId = modelMap.get(path).getId(); } } ReliabilityAssess assess = new ReliabilityAssess(); assess.setFailNum(Integer.valueOf(failNum)); if (StringUtils.isNotBlank(runNum)){ assess.setRunNum(Integer.valueOf(runNum)); } if (StringUtils.isNotBlank(runTime)){ assess.setRunTimes(Double.valueOf(runTime)); } assess.setItemId(itemId); assess.setProductId(productId); this.insert(assess); } } } catch (Exception e) { e.printStackTrace(); ImportUtil.updateErrMap(errMap, "导入异常" + e.getMessage(), "", row1); //err++; } Date nowDate = new Date(); String msg = "产品模型导入时间:" + CommonUtils.getDatePoor(nowDate, beginDate) + "\r\n"; System.out.println(msg); suc = sum - err; map = new HashMap<>(); map.put("sum", sum + ""); // 所有导入的条数 map.put("suc", suc + ""); // 成功的条数 map.put("err", err + ""); // 失败的条数 list.add(map); list.add(errMap); return list; } public List getAssessDataList(Long productId) { return baseDao.getAssessDataList(productId); } }