package com.example.server.progressTrack.service; import com.example.client.dto.JComboBoxItem; import com.example.client.service.BaseService; import com.example.server.progressTrack.Dto.NetworkNodeStatusDto; import com.example.server.progressTrack.dao.DjJdgzNetworkLevel3Dao; import com.example.server.progressTrack.model.DjJdgzNetworkLevel3; import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List; import com.example.server.teamGroup.service.SysTeamGroupClassService; import com.example.server.utils.FileUtils; import com.example.server.utils.ImportUtil; import com.example.server.utils.UUIDUtil; 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.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.*; /** * dj_jdgz_network_level3 * * @author zt generator * @since 1.0.0 2024-12-17 */ @Service public class DjJdgzNetworkLevel3Service extends BaseService { @Autowired NetWorkDiagramService netWorkDiagramService; @Autowired DjJdgzNetworkLevel3ListService DjJdgzNetworkLevel3ListService; @Autowired SysTeamGroupClassService sysTeamGroupClassService; @Value("${zt.oss.local-path}") private String path; public List getList(Long shipId) { List list = baseDao.getList(shipId); return list; } /** * 获取节点状态数据 */ public List getNodeStatusData(Long id) { List list = baseDao.getNodeStatusData(id); return list; } /** * 删除 * * @param ids */ public void delete(Long[] ids) { super.deleteLogic(ids); } public String getStatusDiagram(Long id) { DjJdgzNetworkLevel3 djJdgzNetworkLevel3 = this.get(id); String json = djJdgzNetworkLevel3.getContent(); List nodeStatusData = this.getNodeStatusData(id); String statusDiagram = netWorkDiagramService.getStatusDiagram(json, null, nodeStatusData); return statusDiagram; } public void deleteLevel3(Long id) { baseDao.deleteLevel3List(id); baseDao.deleteLevel3(id); } public List getDiagramByNodeId(Long id) { List data = baseDao.getByNodeId(id); return data; } public JComboBoxItem[] getListByLevel1(Long level1NetworkId) { return baseDao.getListByLevel1(level1NetworkId); } public String importDiagramFromExcel(String path, Long level1NetworkId, Long level2NetworkId, Long level2NodeId) { String result = "true"; Integer sum = 0; // 总共的条数 Integer suc = 0; // 成功的条数 Integer err = 0; // 失败的条数 Map errMap = new HashMap<>(); MultipartFile mutFile = null; try { mutFile = FileUtils.convertFileToMultipartFile(path); } catch (IOException e) { e.printStackTrace(); } String sheetName = null; int row1 = 0; 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,并终止执行。 Sheet sheet = workbook.getSheetAt(0); int num = sheet.getLastRowNum(); // 一共有多少行 sheetName = sheet.getSheetName(); //获取当前sheet名称 sum = sum + num; Map mapProcessName = new HashMap<>(); mapProcessName.put(1,"设备拆卸出舱"); mapProcessName.put(2,"设备分交"); mapProcessName.put(3,"拆检鉴定"); mapProcessName.put(4,"设备返厂"); mapProcessName.put(5,"回装"); Map mapTeamGroup = sysTeamGroupClassService.getMapGroup(false, "hld"); for (int j = 1; j <= num; j++) { DjJdgzNetworkLevel3 data = new DjJdgzNetworkLevel3(); DjJdgzNetworkLevel3List node = new DjJdgzNetworkLevel3List(); boolean isErr = false; row1 = j + 1; String pattern = "yyyy-MM-dd"; Row row = sheet.getRow(j); String name = ImportUtil.getCellValue(row, 0, pattern); String teamGroup = ImportUtil.getCellValue(row, 1, pattern); String time1 = ImportUtil.getCellValue(row, 2, pattern); String time2 = ImportUtil.getCellValue(row, 3, pattern); String time3 = ImportUtil.getCellValue(row, 4, pattern); String time4 = ImportUtil.getCellValue(row, 5, pattern); String time5 = ImportUtil.getCellValue(row, 6, pattern); String repairUnit = ImportUtil.getCellValue(row, 7, pattern); String repairUnitDirector = ImportUtil.getCellValue(row, 8, pattern); String repairUnitContact = ImportUtil.getCellValue(row, 9, pattern); String generalRepairUnit = ImportUtil.getCellValue(row, 10, pattern); String generalRepairUnitDirector = ImportUtil.getCellValue(row, 11, pattern); String generalRepairUnitContact = ImportUtil.getCellValue(row, 12, pattern); Long id = UUIDUtil.generateId(); if (StringUtils.isEmpty(name)) { result = "第"+j+"行"+"设备名称不能为空"; isErr = true; } else { data.setId(id); data.setName(name); data.setLevel1NetworkId(level1NetworkId); data.setLevel2NetworkId(level2NetworkId); data.setLevel2NodeId(level2NodeId); } if (StringUtils.isEmpty(teamGroup)) { result = "第"+j+"行"+"专业不能为空"; isErr = true; } else { Long teamGroupId = Long.valueOf(mapTeamGroup.get(teamGroup)); //删除数据库中相同专业及相同三级网络图数据 baseDao.deleteByTeamGroup(teamGroupId, name); node.setTeamgroupId(teamGroupId); node.setTeamgroupName(teamGroup); node.setNetworkId(id); } if (StringUtils.isEmpty(time1)) { result = "第"+j+"行"+"第"+1+"个"+"节点时间不能为空"; isErr = true; } else { if (time1.matches("[0-9/]+")) { time1 = time1.replace("/", "-"); node.setRequiredCompletionTime(time1); node.setProcessName(mapProcessName.get(1)); node.setSort(1); DjJdgzNetworkLevel3ListService.insert(node); } else if (time1.matches("[0-9.]+")) { time1 = time1.replace(".", "-"); node.setRequiredCompletionTime(time1); node.setProcessName(mapProcessName.get(1)); node.setSort(1); DjJdgzNetworkLevel3ListService.insert(node); } else if (time1.matches("[0-9-]+")) { node.setRequiredCompletionTime(time1); node.setProcessName(mapProcessName.get(1)); node.setSort(1); DjJdgzNetworkLevel3ListService.insert(node); } else { result = "第"+j+"行"+"第"+1+"个"+"节点时间日期格式不规范"; isErr = true; } } if (StringUtils.isEmpty(time2)) { result = "第"+j+"行"+"第"+2+"个"+"节点时间不能为空"; isErr = true; } else { if (node.getId()!=null){ node.setId(null); } if (time2.matches("[0-9/]+")) { node.setRequiredCompletionTime(time2); node.setProcessName(mapProcessName.get(2)); node.setSort(2); DjJdgzNetworkLevel3ListService.insert(node); } else if (time2.matches("[0-9.]+")) { time2 = time2.replace(".", "-"); node.setRequiredCompletionTime(time2); node.setProcessName(mapProcessName.get(2)); node.setSort(2); DjJdgzNetworkLevel3ListService.insert(node); } else if (time2.matches("[0-9-]+")) { node.setRequiredCompletionTime(time2); node.setProcessName(mapProcessName.get(2)); node.setSort(2); DjJdgzNetworkLevel3ListService.insert(node); } else { result = "第"+j+"行"+"第"+2+"个"+"节点时间的日期格式不规范"; isErr = true; } } if (StringUtils.isEmpty(time3)) { result = "第"+j+"行"+"第"+3+"个"+"节点时间不能为空"; isErr = true; } else { if (node.getId()!=null){ node.setId(null); } if (time3.matches("[0-9/]+")) { time3 = time3.replace("/", "-"); node.setRequiredCompletionTime(time3); node.setProcessName(mapProcessName.get(3)); node.setSort(3); DjJdgzNetworkLevel3ListService.insert(node); } else if (time3.matches("[0-9.]+")) { time3 = time3.replace(".", "-"); node.setRequiredCompletionTime(time3); node.setProcessName(mapProcessName.get(3)); node.setSort(3); DjJdgzNetworkLevel3ListService.insert(node); } else if (time3.matches("[0-9-]+")) { node.setRequiredCompletionTime(time3); node.setProcessName(mapProcessName.get(3)); node.setSort(3); DjJdgzNetworkLevel3ListService.insert(node); } else { result = "第"+j+"行"+"第"+3+"个"+"节点时间的日期格式不规范"; isErr = true; } } if (StringUtils.isEmpty(time4)) { result = "第"+j+"行"+"第"+4+"个"+"节点时间不能为空"; isErr = true; } else { if (node.getId()!=null){ node.setId(null); } if (time4.matches("[0-9/]+")) { time4 = time4.replace("/", "-"); node.setRequiredCompletionTime(time4); node.setProcessName(mapProcessName.get(4)); node.setSort(4); DjJdgzNetworkLevel3ListService.insert(node); } else if (time4.matches("[0-9.]+")) { time4 = time4.replace(".", "-"); node.setRequiredCompletionTime(time4); node.setProcessName(mapProcessName.get(4)); node.setSort(4); DjJdgzNetworkLevel3ListService.insert(node); } else if (time4.matches("[0-9-]+")) { node.setRequiredCompletionTime(time4); node.setProcessName(mapProcessName.get(4)); node.setSort(4); DjJdgzNetworkLevel3ListService.insert(node); } else { result = "第"+j+"行"+"第"+4+"个"+"节点时间的日期格式不规范"; isErr = true; } } if (StringUtils.isEmpty(time5)) { result = "第"+j+"行"+"第"+5+"个"+"节点时间不能为空"; isErr = true; } else { if (node.getId()!=null){ node.setId(null); } if (time5.matches("[0-9/]+")) { time5 = time5.replace("/", "-"); node.setRequiredCompletionTime(time5); node.setProcessName(mapProcessName.get(5)); node.setSort(5); DjJdgzNetworkLevel3ListService.insert(node); } else if (time5.matches("[0-9.]+")) { time5 = time5.replace(".", "-"); node.setRequiredCompletionTime(time5); node.setProcessName(mapProcessName.get(5)); node.setSort(5); DjJdgzNetworkLevel3ListService.insert(node); } else if (time5.matches("[0-9-]+")) { node.setRequiredCompletionTime(time5); node.setProcessName(mapProcessName.get(5)); node.setSort(5); DjJdgzNetworkLevel3ListService.insert(node); } else { result = "第"+j+"行"+"第"+5+"个"+"要求完成时间的日期格式不规范"; isErr = true; } } if(StringUtils.isNotBlank(generalRepairUnit)){ data.setGeneralRepairUnit(generalRepairUnit); } if(StringUtils.isNotBlank(generalRepairUnitContact)){ data.setGeneralRepairUnitContact(generalRepairUnitContact); } if(StringUtils.isNotBlank(generalRepairUnitDirector)){ data.setGeneralRepairUnitDirector(generalRepairUnitDirector); } if(StringUtils.isNotBlank(generalRepairUnit)){ data.setRepairUnit(repairUnit); } if(StringUtils.isNotBlank(generalRepairUnit)){ data.setRepairUnitContact(repairUnitContact); } if(StringUtils.isNotBlank(generalRepairUnit)){ data.setRepairUnitDirector(repairUnitDirector); } if (!isErr) { this.insert(data); String diagram = DjJdgzNetworkLevel3ListService.getDiagram(data.getId()); data.setContent(diagram); this.update(data); } if (isErr) { err++; continue; } } } catch (Exception e) { e.printStackTrace(); result = "导入"+row1+"行数据时检测到异常,中断导入操作。"; } suc = sum - err; return result; } /* public void exportExcelTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException { String excelName="三级网络图批量模版"; String excelPath = path + "template/jx-model/" + excelName + ".xlsx"; //模板路径 File file = new File(excelPath); excelName = excelName + "_" + DateUtil.now() + ".xlsx"; DownloadService.exportModelPath(excelPath, excelName, file, response, request); }*/ }