db/430É豸¹ÜÀíÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -4,7 +4,7 @@ "avatar": "", "version": "4.9.2", "createdTime": "2025-3-10 16:38:19", "updatedTime": "2025-7-7 15:35:51", "updatedTime": "2025-7-7 21:00:24", "dbConns": [], "profile": { "default": { @@ -632,7 +632,7 @@ "#DDE5FF" ], "DDLToggleCase": "L", "menuWidth": "472px" "menuWidth": "371px" }, "entities": [ { @@ -23721,6 +23721,24 @@ "id": "2C88A464-AC97-4512-94EE-CCD08ED27A64" }, { "defKey": "standard_version", "defName": "çæ¬", "comment": "V1,V2+", "type": "", "len": "", "scale": "", "primaryKey": false, "notNull": false, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, "refDict": "", "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", "extProps": {}, "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6", "id": "1ACB9237-2E42-44F0-AC09-BBB51D55A83D" }, { "defKey": "remark", "defName": "夿³¨", "comment": "", db/template/Éú²úÉ豸Èý¼¶±£Ñø¹æ·¶.docxBinary files differ
db/template/Éú²úÉ豸¶þ¼¶±£Ñø¹æ·¶.docxBinary files differ
db/template/É豸̨Õ˵¼ÈëÄ£°å.xlsBinary files differ
db/template/É豸µã¼ì±ê×¼µ¼ÈëÄ£°å.xlsxBinary files differ
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java
@@ -27,6 +27,8 @@ String TRANSFER_CODE_RULE = "EquipmentTransferCodeRule"; //设å¤è°æ¨ç¼ç è§å String SCRAP_CODE_RULE = "EquipmentScrapCodeRule"; //ææ¯ç¶æé´å®è§èç¼ç è§å String TECHNICAL_STATUS_EVALUATION_STANDARD_CODE_RULE = "TechnicalStatusStandardCodeRule"; /** * å¤ä»¶è¯·è´åç¶æ 1:å·²å建 2:å·²æäº¤ 3:å·²éè¿ 4:已驳å 5:已宿 */ lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamMaintenanceStandardDetailCategory.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ package org.jeecg.modules.eam.constant; public enum EamMaintenanceStandardDetailCategory { DAY_INSPECTION, //æ¥ç¹æ£ WEEK_INSPECTION, //å¨ç¹æ£ OPERATOR_MAINTENANCE, //æä½å·¥ REPAIRER_MAINTENANCE //维修工 } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/TechnicalStatusEvaluationStandardEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ package org.jeecg.modules.eam.constant; public enum TechnicalStatusEvaluationStandardEnum { WAIT_SUBMIT, //å¾ æäº¤ ENABLE, //å¯ç¨ DISABLE, //ç¦ç¨ ; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/ImportException.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ package org.jeecg.modules.eam.request; public class ImportException extends RuntimeException { public ImportException(String message) { super(message); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
@@ -6,31 +6,22 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; import org.jeecg.modules.eam.dto.MaintenanceStandardImport; import org.jeecg.modules.eam.dto.SecondMaintenanceStandardImport; import org.jeecg.modules.eam.dto.ThirdMaintenanceStandardImport; import org.jeecg.modules.eam.dto.WeekMaintenanceStandardImport; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamMaintenanceStandard; import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail; import org.jeecg.modules.eam.request.EamMaintenanceStandardRequest; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; import org.jeecg.modules.eam.vo.EamMaintenanceStandardVo; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -38,10 +29,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; /** * @Description: ä¿å »æ å @@ -63,6 +51,7 @@ /** * æµç¨å¯å¨,ä¿å对åºçæ°æ® * * @param id * @return */ @@ -74,6 +63,7 @@ /** * æµç¨å®¡æ ¸ * * @param eamMaintenanceStandardVo * @return */ @@ -179,6 +169,7 @@ /** * æ¥è¯¢æ åå表-å端å±ç¤ºè¯¥ç¨æ·æ¥æçæ å * * @param keyword 设å¤ç¼å· * @param maintenanceCategory ä¿å »ç±»å * @return @@ -243,7 +234,8 @@ List<String> list = Arrays.asList(ids.split(",")); list.forEach(id -> { EamMaintenanceStandard entity = eamMaintenanceStandardService.getById(id); if (entity != null) { if (entity != null&&entity.getStandardStatus().equals(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name())) { //åªå é¤ç¶æä¸ºå¾ æäº¤ç entity.setDelFlag(CommonConstant.DEL_FLAG_1); eamMaintenanceStandardService.updateById(entity); } @@ -275,358 +267,150 @@ return super.exportXls(request, eamMaintenanceStandard, EamMaintenanceStandard.class, "ä¿å »æ å"); } @PostMapping("/import") public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { /** * ç¹æ£å¯¼å ¥ */ @PostMapping("/importPointInspection") public Result<?> importPointInspectionExcel(HttpServletRequest request) { try { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); Map<String, String> results = new LinkedHashMap<>(); int successCount = 0; int failureCount = 0; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // è·åä¸ä¼ æä»¶å¯¹è±¡ MultipartFile file = entity.getValue(); eamMaintenanceStandardService.importPointInspectionExcel(file); } return Result.ok("å¯¼å ¥æå"); } String fileName = file.getOriginalFilename(); /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ @RequestMapping(value = "/inspectionImportExcel", method = RequestMethod.POST) public Result<?> inspectionImportExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // è·åä¸ä¼ æä»¶å¯¹è±¡ MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setSheetNum(1); params.setNeedSave(true); EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { //读å设å¤ç¼å·ï¼å¾çç readExcel(file, standardRequest); EamEquipment equipment = eamEquipmentService.selectByEquipmentCode(standardRequest.getEquipmentCode()); if(equipment == null) { log.error("设å¤ä¸åå¨ï¼{}", standardRequest.getEquipmentCode()); continue; } standardRequest.setStandardName(standardRequest.getEquipmentName() + "ç¹æ£æ å"); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.POINT_INSPECTION.name()); standardRequest.setEquipmentId(equipment.getId()); //读åä¿å »æç»å 容 List<MaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), MaintenanceStandardImport.class, params); //æç»é¡¹ List<EamMaintenanceStandardDetail> tableList = list.stream().map(EamMaintenanceStandardDetail::new).collect(Collectors.toList()); standardRequest.setTableDetailList(tableList); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE); standardRequest.setStandardCode(codeSeq); boolean b = eamMaintenanceStandardService.addMaintenanceStandard(standardRequest); if (!b) { log.error("ä¿åå¤±è´¥ï¼ {}", standardRequest.getEquipmentCode()); } } catch (Exception e) { //update-begin-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º String msg = e.getMessage(); log.error("æä»¶ {} å¤çå¼å¸¸ï¼ {}", file.getOriginalFilename(), msg, e); //update-end-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º } finally { try { file.getInputStream().close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } return Result.ok("æä»¶å¯¼å ¥å®æï¼"); } Result<?> importResult = eamMaintenanceStandardService.importPointInspectionExcel(file); /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ @RequestMapping(value = "/weekMaintenanceImportExcel", method = RequestMethod.POST) public Result<?> weekMaintenanceImportExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // è·åä¸ä¼ æä»¶å¯¹è±¡ MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setSheetNum(1); params.setNeedSave(true); EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { //读å设å¤ç¼å·ï¼å¾çç readWeekExcel(file, standardRequest); EamEquipment equipment = eamEquipmentService.selectByEquipmentCode(standardRequest.getEquipmentCode()); if(equipment == null) { log.error("设å¤ä¸åå¨ï¼{}", standardRequest.getEquipmentCode()); continue; } standardRequest.setStandardName(standardRequest.getEquipmentName() + "å¨ä¿æ å"); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.WEEK_MAINTENANCE.name()); standardRequest.setEquipmentId(equipment.getId()); //读åä¿å »æç»å 容 List<WeekMaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), WeekMaintenanceStandardImport.class, params); //æç»é¡¹ List<EamMaintenanceStandardDetail> tableList = list.stream().map(EamMaintenanceStandardDetail::new).collect(Collectors.toList()); standardRequest.setTableDetailList(tableList); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE); standardRequest.setStandardCode(codeSeq); boolean b = eamMaintenanceStandardService.addMaintenanceStandard(standardRequest); if (!b) { log.error("ä¿åå¤±è´¥ï¼ {}", standardRequest.getEquipmentCode()); } } catch (Exception e) { //update-begin-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º String msg = e.getMessage(); log.error("æä»¶ {} å¤çå¼å¸¸ï¼ {}", file.getOriginalFilename(), msg, e); //update-end-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º } finally { try { file.getInputStream().close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } return Result.ok("æä»¶å¯¼å ¥å®æï¼"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ @RequestMapping(value = "/secondMaintenanceImportExcel", method = RequestMethod.POST) public Result<?> secondMaintenanceImportExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // è·åä¸ä¼ æä»¶å¯¹è±¡ MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setSheetNum(1); params.setNeedSave(true); EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { //读å设å¤ç¼å·ï¼å¾çç readWeekExcel(file, standardRequest); EamEquipment equipment = eamEquipmentService.selectByEquipmentCode(standardRequest.getEquipmentCode()); if(equipment == null) { log.error("设å¤ä¸åå¨ï¼{}", standardRequest.getEquipmentCode()); continue; } standardRequest.setStandardName(standardRequest.getEquipmentName() + "äºä¿æ å"); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.SECOND_MAINTENANCE.name()); standardRequest.setEquipmentId(equipment.getId()); //读åä¿å »æç»å 容 List<SecondMaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), SecondMaintenanceStandardImport.class, params); //æç»é¡¹ List<EamMaintenanceStandardDetail> tableList = list.stream().map(EamMaintenanceStandardDetail::new).collect(Collectors.toList()); standardRequest.setTableDetailList(tableList); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE); standardRequest.setStandardCode(codeSeq); boolean b = eamMaintenanceStandardService.addMaintenanceStandard(standardRequest); if (!b) { log.error("ä¿åå¤±è´¥ï¼ {}", standardRequest.getEquipmentCode()); } } catch (Exception e) { //update-begin-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º String msg = e.getMessage(); log.error("æä»¶ {} å¤çå¼å¸¸ï¼ {}", file.getOriginalFilename(), msg, e); //update-end-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º } finally { try { file.getInputStream().close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } return Result.ok("æä»¶å¯¼å ¥å®æï¼"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ @RequestMapping(value = "/thirdMaintenanceImportExcel", method = RequestMethod.POST) public Result<?> thirdMaintenanceImportExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // è·åä¸ä¼ æä»¶å¯¹è±¡ MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setSheetNum(1); params.setNeedSave(true); EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { //读å设å¤ç¼å·ï¼å¾çç readWeekExcel(file, standardRequest); EamEquipment equipment = eamEquipmentService.selectByEquipmentCode(standardRequest.getEquipmentCode()); if(equipment == null) { log.error("设å¤ä¸åå¨ï¼{}", standardRequest.getEquipmentCode()); continue; } standardRequest.setStandardName(standardRequest.getEquipmentName() + "ä¸ä¿æ å"); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.THIRD_MAINTENANCE.name()); standardRequest.setEquipmentId(equipment.getId()); //读åä¿å »æç»å 容 List<ThirdMaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), ThirdMaintenanceStandardImport.class, params); //æç»é¡¹ List<EamMaintenanceStandardDetail> tableList = list.stream().map(EamMaintenanceStandardDetail::new).collect(Collectors.toList()); standardRequest.setTableDetailList(tableList); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE); standardRequest.setStandardCode(codeSeq); boolean b = eamMaintenanceStandardService.addMaintenanceStandard(standardRequest); if (!b) { log.error("ä¿åå¤±è´¥ï¼ {}", standardRequest.getEquipmentCode()); } } catch (Exception e) { //update-begin-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º String msg = e.getMessage(); log.error("æä»¶ {} å¤çå¼å¸¸ï¼ {}", file.getOriginalFilename(), msg, e); //update-end-author:taoyan date:20211124 for: å¯¼å ¥æ°æ®éå¤å¢å æç¤º } finally { try { file.getInputStream().close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } return Result.ok("æä»¶å¯¼å ¥å®æï¼"); } /** * 读åExcel 第ä¸è¡ï¼ 第äºè¡çä¿¡æ¯ï¼å æ¬å¾çä¿¡æ¯ * @param file * @param request */ private void readExcel(MultipartFile file, EamMaintenanceStandardRequest request) { Workbook book = null; boolean isXSSFWorkbook = false; try { book = WorkbookFactory.create(file.getInputStream()); if (book instanceof XSSFWorkbook) { isXSSFWorkbook = true; } Sheet sheet = book.getSheetAt(0); //第ä¸è¡è¯»å Row row = sheet.getRow(0); //设å¤ç¼ç Cell equipmentCode = row.getCell(15); if(CellType.NUMERIC.equals(equipmentCode.getCellType())) { request.setEquipmentCode(String.valueOf((int) equipmentCode.getNumericCellValue())); }else if(CellType.STRING.equals(equipmentCode.getCellType())) { request.setEquipmentCode(equipmentCode.getStringCellValue()); } if (StringUtils.isBlank(request.getEquipmentCode())) { throw new JeecgBootException("Excelã " + file.getOriginalFilename() + "ãæ²¡æè¯»åå°è®¾å¤ç¼å·ï¼å¯¼å ¥å¤±è´¥ï¼"); } //åå§æ¥æ Cell initialDate = row.getCell(11); if (DateUtil.isCellDateFormatted(initialDate)) { request.setInitialDate(initialDate.getDateCellValue()); if (importResult.isSuccess()) { results.put(fileName, "æå: " + importResult.getMessage()); successCount++; } else { request.setInitialDate(new Date()); results.put(fileName, "失败: " + importResult.getMessage()); failureCount++; } //设å¤åç§° Cell equipmentName = row.getCell(13); request.setEquipmentName(equipmentName.getStringCellValue()); } //第äºè¡è¯»å row = sheet.getRow(1); //ä¿å »å¨æ Cell period = row.getCell(11); if (CellType.NUMERIC.equals(period.getCellType())) { request.setMaintenancePeriod((int) period.getNumericCellValue()); // æå»ºååº Map<String, Object> response = new HashMap<>(); response.put("results", results); response.put("totalFiles", fileMap.size()); response.put("successCount", successCount); response.put("failureCount", failureCount); if (failureCount == 0) { return Result.ok("ææç¹æ£æä»¶å¯¼å ¥æå"+response); } else if (successCount == 0) { return Result.error("ææç¹æ£æä»¶å¯¼å ¥å¤±è´¥", response); } else { //é»è®¤ç¹æ£å¨æ 1 request.setMaintenancePeriod(1); return Result.error("é¨åç¹æ£æä»¶å¯¼å ¥å¤±è´¥", response); } //æä»¶ç¼ç Cell fileCode = row.getCell(13); request.setFileCode(fileCode.getStringCellValue()); } catch (Exception e) { log.error("读åExcelä¿¡æ¯å¤±è´¥ï¼{}", e.getMessage(), e); log.error("ç¹æ£å¯¼å ¥å¤çå¼å¸¸", e); return Result.error("ç¹æ£å¯¼å ¥å¤ç失败: " + e.getMessage()); } } /** * äºä¿å¯¼å ¥ */ @PostMapping("/importSecondMaintenanceStandard") public Result<?> importSecondMaintenanceStandard(HttpServletRequest request) { try { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, String> results = new LinkedHashMap<>(); Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); // ç»è®¡å¯¼å ¥ç»æ int successCount = 0; int failureCount = 0; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { MultipartFile file = entity.getValue(); String fileName = file.getOriginalFilename(); Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND"); if (importResult.isSuccess()) { results.put(fileName, "æå: " + importResult.getMessage()); successCount++; } else { results.put(fileName, "失败: " + importResult.getMessage()); failureCount++; } } // æå»ºæç»ååº Map<String, Object> response = new HashMap<>(); response.put("results", results); response.put("totalFiles", fileMap.size()); response.put("successCount", successCount); response.put("failureCount", failureCount); if (failureCount > 0) { return Result.error("é¨åæä»¶å¯¼å ¥å¤±è´¥", response); } return Result.ok("æææä»¶å¯¼å ¥æå"+response); } catch (Exception e) { log.error("å¯¼å ¥å¤çå¼å¸¸", e); return Result.error("å¯¼å ¥å¤ç失败: " + e.getMessage()); } } /** * 读åExcel 第ä¸è¡ï¼ 第äºè¡çä¿¡æ¯ * @param file * @param request * ä¸ä¿å¯¼å ¥ */ public void readWeekExcel(MultipartFile file, EamMaintenanceStandardRequest request) { Workbook book = null; boolean isXSSFWorkbook = false; @PostMapping("/importThirdMaintenanceStandard") public Result<?> importThirdMaintenanceStandard(HttpServletRequest request) { try { book = WorkbookFactory.create(file.getInputStream()); if (book instanceof XSSFWorkbook) { isXSSFWorkbook = true; MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, String> results = new LinkedHashMap<>(); Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); // ç»è®¡å¯¼å ¥ç»æ int successCount = 0; int failureCount = 0; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { MultipartFile file = entity.getValue(); String fileName = file.getOriginalFilename(); Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD"); if (importResult.isSuccess()) { results.put(fileName, "æå: " + importResult.getMessage()); successCount++; } else { results.put(fileName, "失败: " + importResult.getMessage()); failureCount++; } } Sheet sheet = book.getSheetAt(0); //第ä¸è¡è¯»å Row row = sheet.getRow(0); //设å¤ç¼ç Cell equipmentCode = row.getCell(10); if(CellType.NUMERIC.equals(equipmentCode.getCellType())) { request.setEquipmentCode(String.valueOf((int) equipmentCode.getNumericCellValue())); }else if(CellType.STRING.equals(equipmentCode.getCellType())) { request.setEquipmentCode(equipmentCode.getStringCellValue()); } if (StringUtils.isBlank(request.getEquipmentCode())) { throw new JeecgBootException("Excelã " + file.getOriginalFilename() + "ãæ²¡æè¯»åå°è®¾å¤ç¼å·ï¼å¯¼å ¥å¤±è´¥ï¼"); } //åå§æ¥æ Cell initialDate = row.getCell(6); if (DateUtil.isCellDateFormatted(initialDate)) { request.setInitialDate(initialDate.getDateCellValue()); } else { request.setInitialDate(new Date()); } //设å¤åç§° Cell equipmentName = row.getCell(8); request.setEquipmentName(equipmentName.getStringCellValue()); // æå»ºæç»ååº Map<String, Object> response = new HashMap<>(); response.put("results", results); response.put("totalFiles", fileMap.size()); response.put("successCount", successCount); response.put("failureCount", failureCount); //第äºè¡è¯»å row = sheet.getRow(1); //ä¿å »å¨æ Cell period = row.getCell(6); if (CellType.NUMERIC.equals(period.getCellType())) { request.setMaintenancePeriod((int) period.getNumericCellValue()); } else { request.setMaintenancePeriod(null); if (failureCount > 0) { return Result.error("é¨åæä»¶å¯¼å ¥å¤±è´¥", response); } //æä»¶ç¼ç Cell fileCode = row.getCell(8); request.setFileCode(fileCode.getStringCellValue()); return Result.ok("æææä»¶å¯¼å ¥æå"+response); } catch (Exception e) { log.error("读åExcelä¿¡æ¯å¤±è´¥ï¼{}", e.getMessage(), e); log.error("å¯¼å ¥å¤çå¼å¸¸", e); return Result.error("å¯¼å ¥å¤ç失败: " + e.getMessage()); } } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationStandardController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,176 @@ package org.jeecg.modules.eam.controller; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationStandardEnum; import org.jeecg.modules.eam.entity.EamMaintenanceStandard; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @Description: ææ¯ç¶æé´å®è§è * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Slf4j @Api(tags = "ææ¯ç¶æé´å®è§è") @RestController @RequestMapping("/eam/eamTechnicalStatusEvaluationStandard") public class EamTechnicalStatusEvaluationStandardController extends JeecgController<EamTechnicalStatusEvaluationStandard, IEamTechnicalStatusEvaluationStandardService> { @Autowired private IEamTechnicalStatusEvaluationStandardService eamTechnicalStatusEvaluationStandardService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; /** * å页å表æ¥è¯¢ * * @param eamTechnicalStatusEvaluationStandard * @param pageNo * @param pageSize * @return */ @ApiOperation(value = "ææ¯ç¶æé´å®è§è-å页å表æ¥è¯¢", notes = "ææ¯ç¶æé´å®è§è-å页å表æ¥è¯¢") @GetMapping(value = "/list") public Result<?> queryPageList(EamTechnicalStatusEvaluationStandard eamTechnicalStatusEvaluationStandard, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page<EamTechnicalStatusEvaluationStandard> page = new Page<>(pageNo, pageSize); IPage<EamTechnicalStatusEvaluationStandard> pageList = eamTechnicalStatusEvaluationStandardService.queryPageList(page, eamTechnicalStatusEvaluationStandard); return Result.OK(pageList); } /** * æ·»å * * @param request * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§è-æ·»å ") @ApiOperation(value = "ææ¯ç¶æé´å®è§è-æ·»å ", notes = "ææ¯ç¶æé´å®è§è-æ·»å ") @PostMapping(value = "/add") public Result<?> add(@RequestBody EamTechnicalStatusEvaluationStandardRequest request) { if (request == null) { return Result.error("æ·»å ç对象ä¸è½ä¸ºç©ºï¼"); } if (CollectionUtil.isEmpty(request.getTableDetailList())) { return Result.error("æ£æ¥é¡¹ä¸è½ä¸ºç©ºï¼"); } String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_STANDARD_CODE_RULE); request.setStandardCode(codeSeq); boolean b = eamTechnicalStatusEvaluationStandardService.addEamTechnicalStatusEvaluationStandard(request); if (!b) { return Result.error("æ·»å 失败ï¼"); } return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param request * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§è-ç¼è¾") @ApiOperation(value = "ææ¯ç¶æé´å®è§è-ç¼è¾", notes = "ææ¯ç¶æé´å®è§è-ç¼è¾") @PutMapping(value = "/edit") public Result<?> edit(@RequestBody EamTechnicalStatusEvaluationStandardRequest request) { if (request == null) { return Result.error("æ·»å ç对象ä¸è½ä¸ºç©ºï¼"); } if (CollectionUtil.isEmpty(request.getTableDetailList())) { return Result.error("æ£æ¥é¡¹ä¸è½ä¸ºç©ºï¼"); } boolean b = eamTechnicalStatusEvaluationStandardService.editEamTechnicalStatusEvaluationStandard(request); if (!b) { return Result.error("ç¼è¾å¤±è´¥ï¼"); } return Result.OK("ç¼è¾æå!"); } /** * åç * * @param request * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§è-åç") @ApiOperation(value = "ææ¯ç¶æé´å®è§è-åç", notes = "ææ¯ç¶æé´å®è§è-åç") @PutMapping(value = "/upgrade") public Result<?> upgrade(@RequestBody EamTechnicalStatusEvaluationStandardRequest request) { if (request == null) { return Result.error("æ·»å ç对象ä¸è½ä¸ºç©ºï¼"); } if (CollectionUtil.isEmpty(request.getTableDetailList())) { return Result.error("ä¿å »é¡¹ä¸è½ä¸ºç©ºï¼"); } String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_STANDARD_CODE_RULE); request.setStandardCode(codeSeq); boolean b = eamTechnicalStatusEvaluationStandardService.upgrade(request); if (!b) { return Result.error("åç失败ï¼"); } return Result.OK("åçæå!"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§è-éè¿idæ¥è¯¢") @ApiOperation(value = "ææ¯ç¶æé´å®è§è-éè¿idæ¥è¯¢", notes = "ææ¯ç¶æé´å®è§è-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { EamTechnicalStatusEvaluationStandard eamTechnicalStatusEvaluationStandard = eamTechnicalStatusEvaluationStandardService.getById(id); return Result.OK(eamTechnicalStatusEvaluationStandard); } /** * æäº¤ * @param id * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§è-æäº¤") @ApiOperation(value = "ææ¯ç¶æé´å®è§è-æäº¤", notes = "ææ¯ç¶æé´å®è§è-æäº¤") @GetMapping(value = "/submit") public Result<?> submit(@RequestParam(name = "id", required = true) String id) { EamTechnicalStatusEvaluationStandard entity = eamTechnicalStatusEvaluationStandardService.getById(id); if (entity != null) { entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.ENABLE.name()); eamTechnicalStatusEvaluationStandardService.updateById(entity); } return Result.OK("å 餿å!"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, EamTechnicalStatusEvaluationStandard.class); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationStandardDetailController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,129 @@ package org.jeecg.modules.eam.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; /** * @Description: ææ¯ç¶æé´å®è§èæç» * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Slf4j @Api(tags = "ææ¯ç¶æé´å®è§èæç»") @RestController @RequestMapping("/eam/eamTechnicalStatusEvaluationStandardDetail") public class EamTechnicalStatusEvaluationStandardDetailController extends JeecgController<EamTechnicalStatusEvaluationStandardDetail, IEamTechnicalStatusEvaluationStandardDetailService> { @Autowired private IEamTechnicalStatusEvaluationStandardDetailService eamTechnicalStatusEvaluationStandardDetailService; /** * å页å表æ¥è¯¢ * * @param eamTechnicalStatusEvaluationStandardDetail * @param pageNo * @param pageSize * @param req * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§èæç»-å页å表æ¥è¯¢") @ApiOperation(value = "ææ¯ç¶æé´å®è§èæç»-å页å表æ¥è¯¢", notes = "ææ¯ç¶æé´å®è§èæç»-å页å表æ¥è¯¢") @GetMapping(value = "/list") public Result<?> queryPageList(EamTechnicalStatusEvaluationStandardDetail eamTechnicalStatusEvaluationStandardDetail, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper<EamTechnicalStatusEvaluationStandardDetail> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusEvaluationStandardDetail, req.getParameterMap()); Page<EamTechnicalStatusEvaluationStandardDetail> page = new Page<EamTechnicalStatusEvaluationStandardDetail>(pageNo, pageSize); IPage<EamTechnicalStatusEvaluationStandardDetail> pageList = eamTechnicalStatusEvaluationStandardDetailService.page(page, queryWrapper); return Result.OK(pageList); } /** * æ·»å * * @param eamTechnicalStatusEvaluationStandardDetail * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§èæç»-æ·»å ") @ApiOperation(value = "ææ¯ç¶æé´å®è§èæç»-æ·»å ", notes = "ææ¯ç¶æé´å®è§èæç»-æ·»å ") @PostMapping(value = "/add") public Result<?> add(@RequestBody EamTechnicalStatusEvaluationStandardDetail eamTechnicalStatusEvaluationStandardDetail) { eamTechnicalStatusEvaluationStandardDetailService.save(eamTechnicalStatusEvaluationStandardDetail); return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param eamTechnicalStatusEvaluationStandardDetail * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§èæç»-ç¼è¾") @ApiOperation(value = "ææ¯ç¶æé´å®è§èæç»-ç¼è¾", notes = "ææ¯ç¶æé´å®è§èæç»-ç¼è¾") @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) public Result<?> edit(@RequestBody EamTechnicalStatusEvaluationStandardDetail eamTechnicalStatusEvaluationStandardDetail) { eamTechnicalStatusEvaluationStandardDetailService.updateById(eamTechnicalStatusEvaluationStandardDetail); return Result.OK("ç¼è¾æå!"); } /** * éè¿idå é¤ * * @param id * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§èæç»-éè¿idå é¤") @ApiOperation(value = "ææ¯ç¶æé´å®è§èæç»-éè¿idå é¤", notes = "ææ¯ç¶æé´å®è§èæç»-éè¿idå é¤") @DeleteMapping(value = "/delete") public Result<?> delete(@RequestParam(name = "id", required = true) String id) { eamTechnicalStatusEvaluationStandardDetailService.removeById(id); return Result.OK("å 餿å!"); } /** * æ¹éå é¤ * * @param ids * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§èæç»-æ¹éå é¤") @ApiOperation(value = "ææ¯ç¶æé´å®è§èæç»-æ¹éå é¤", notes = "ææ¯ç¶æé´å®è§èæç»-æ¹éå é¤") @DeleteMapping(value = "/deleteBatch") public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { this.eamTechnicalStatusEvaluationStandardDetailService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("æ¹éå 餿åï¼"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ @AutoLog(value = "ææ¯ç¶æé´å®è§èæç»-éè¿idæ¥è¯¢") @ApiOperation(value = "ææ¯ç¶æé´å®è§èæç»-éè¿idæ¥è¯¢", notes = "ææ¯ç¶æé´å®è§èæç»-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { EamTechnicalStatusEvaluationStandardDetail eamTechnicalStatusEvaluationStandardDetail = eamTechnicalStatusEvaluationStandardDetailService.getById(id); return Result.OK(eamTechnicalStatusEvaluationStandardDetail); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationStandard.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ package org.jeecg.modules.eam.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecgframework.poi.excel.annotation.Excel; import java.util.Date; /** * @Description: ææ¯ç¶æé´å®è§è * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Data @TableName("eam_technical_status_evaluation_standard") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="eam_technical_status_evaluation_standard对象", description="ææ¯ç¶æé´å®è§è") public class EamTechnicalStatusEvaluationStandard { /**主é®*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主é®") private String id; /**å建人*/ @ApiModelProperty(value = "å建人") private String createBy; /**å建æ¶é´*/ @ApiModelProperty(value = "å建æ¶é´") private Date createTime; /**æ´æ°äºº*/ @ApiModelProperty(value = "æ´æ°äºº") private String updateBy; /**æ´æ°æ¶é´*/ @ApiModelProperty(value = "æ´æ°æ¶é´") private Date updateTime; /**å 餿 è®°*/ @ApiModelProperty(value = "å 餿 è®°") private Integer delFlag; /**è§èåç§°*/ @ApiModelProperty(value = "è§èåç§°") private String standardName; /**è§èç¼ç */ @ApiModelProperty(value = "è§èç¼ç ") private String standardCode; /**é´å®å¨æ*/ @ApiModelProperty(value = "é´å®å¨æ") private Integer evaluationPeriod; /**设å¤ID*/ @ApiModelProperty(value = "设å¤ID") private String equipmentId; /**è§èç¶æ;å¾ æäº¤ãå¯ç¨ãä½åº*/ @ApiModelProperty(value = "è§èç¶æ;å¾ æäº¤ãå¯ç¨ãä½åº") private String standardStatus; /**æ¯å¦æå®å ¨è£ ç½®æ£æ¥;æ¯å¦*/ @ApiModelProperty(value = "æ¯å¦æå®å ¨è£ ç½®æ£æ¥;æ¯å¦") private String hasSafetyEquipmentCheck; /**æ¯å¦æè®¾å¤ç²¾åº¦æ£æ¥;æ¯å¦*/ @ApiModelProperty(value = "æ¯å¦æè®¾å¤ç²¾åº¦æ£æ¥;æ¯å¦") private String hasPrecisionCheck; /**æ¯å¦æå ¶ä»æ£æ¥;æ¯å¦*/ @ApiModelProperty(value = "æ¯å¦æå ¶ä»æ£æ¥;æ¯å¦") private String hasOtherCheck; /**çæ¬ V1,V2+*/ @ApiModelProperty(value = "çæ¬ V1,V2") private String standardVersion; /**夿³¨*/ @Excel(name = "夿³¨", width = 15) @ApiModelProperty(value = "夿³¨") private String remark; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationStandardDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,73 @@ package org.jeecg.modules.eam.entity; import java.io.Serializable; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; /** * @Description: ææ¯ç¶æé´å®è§èæç» * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Data @TableName("eam_technical_status_evaluation_standard_detail") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="eam_technical_status_evaluation_standard_detail对象", description="ææ¯ç¶æé´å®è§èæç»") public class EamTechnicalStatusEvaluationStandardDetail { /**主é®*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主é®") private String id; /**å建人*/ @Excel(name = "å建人", width = 15) @ApiModelProperty(value = "å建人") private String createBy; /**å建æ¶é´*/ @ApiModelProperty(value = "å建æ¶é´") private Date createTime; /**æ´æ°äºº*/ @Excel(name = "æ´æ°äºº", width = 15) @ApiModelProperty(value = "æ´æ°äºº") private String updateBy; /**æ´æ°æ¶é´*/ @ApiModelProperty(value = "æ´æ°æ¶é´") private Date updateTime; /**è§èID*/ @Excel(name = "è§èID", width = 15) @ApiModelProperty(value = "è§èID") private String standardId; /**æ£æ¥åç±»;ç²¾åº¦æ£æ¥ãå®å ¨è£ ç½®æ£æ¥ãå ¶ä»æ£æ¥*/ @Excel(name = "æ£æ¥åç±»;ç²¾åº¦æ£æ¥ãå®å ¨è£ ç½®æ£æ¥ãå ¶ä»æ£æ¥", width = 15) @ApiModelProperty(value = "æ£æ¥åç±»;ç²¾åº¦æ£æ¥ãå®å ¨è£ ç½®æ£æ¥ãå ¶ä»æ£æ¥") private String checkCategory; /**项ç®åºå·*/ @Excel(name = "项ç®åºå·", width = 15) @ApiModelProperty(value = "项ç®åºå·") private Integer itemCode; /**æ£æ¥é¡¹ç®*/ @Excel(name = "æ£æ¥é¡¹ç®", width = 15) @ApiModelProperty(value = "æ£æ¥é¡¹ç®") private String itemName; /**å å·®å¼;ç²¾åº¦æ£æ¥å±ç¤º*/ @Excel(name = "å å·®å¼;ç²¾åº¦æ£æ¥å±ç¤º", width = 15) @ApiModelProperty(value = "å å·®å¼;ç²¾åº¦æ£æ¥å±ç¤º") private String toleranceValue; /**æ£æ¥å项ç®;ç²¾åº¦æ£æ¥å±ç¤ºï¼å¯ä»¥ä¸ºç©º*/ @Excel(name = "æ£æ¥å项ç®;ç²¾åº¦æ£æ¥å±ç¤ºï¼å¯ä»¥ä¸ºç©º", width = 15) @ApiModelProperty(value = "æ£æ¥å项ç®;ç²¾åº¦æ£æ¥å±ç¤ºï¼å¯ä»¥ä¸ºç©º") private String subItemName; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationStandardDetailMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package org.jeecg.modules.eam.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: ææ¯ç¶æé´å®è§èæç» * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ public interface EamTechnicalStatusEvaluationStandardDetailMapper extends BaseMapper<EamTechnicalStatusEvaluationStandardDetail> { } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationStandardMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package org.jeecg.modules.eam.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard; /** * @Description: ææ¯ç¶æé´å®è§è * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ public interface EamTechnicalStatusEvaluationStandardMapper extends BaseMapper<EamTechnicalStatusEvaluationStandard> { /** * å页æ¥è¯¢ * @param page * @param queryWrapper * @return */ IPage<EamTechnicalStatusEvaluationStandard> queryPageList(Page<EamTechnicalStatusEvaluationStandard> page, QueryWrapper<EamTechnicalStatusEvaluationStandard> queryWrapper); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationStandardDetailMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardDetailMapper"> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationStandardMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardMapper"> <select id="queryPageList" resultType="org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard"> select ems.*, e.equipment_code, e.equipment_name, e.equipment_model from eam_technical_status_evaluation_standard ems inner join eam_equipment e on ems.equipment_id = e.id ${ew.customSqlSegment} </select> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationStandardRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package org.jeecg.modules.eam.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import java.io.Serializable; import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="eam_technical_status_evaluation_standard对象", description="ææ¯ç¶æé´å®è§è") public class EamTechnicalStatusEvaluationStandardRequest implements Serializable { /**主é®*/ @ApiModelProperty(value = "主é®") private String id; /**è§èç¼ç */ @ApiModelProperty(value = "è§èç¼ç ") private String standardCode; /**è§èåç§°*/ @ApiModelProperty(value = "è§èåç§°") private String standardName; /**é´å®å¨æ;åä½:å¹´*/ @ApiModelProperty(value = "é´å®å¨æ;åä½:å¹´") private Integer evaluationPeriod; /**设å¤ID*/ @ApiModelProperty(value = "设å¤ID") private String equipmentId; /**å表 æ£æ¥é¡¹æç»*/ @ApiModelProperty(value = "å表 æ£æ¥é¡¹æç»") private List<EamTechnicalStatusEvaluationStandardDetail> tableDetailList; /**å é¤ æ£æ¥é¡¹æç»*/ @ApiModelProperty(value = "å é¤ æ£æ¥é¡¹æç»") private List<EamTechnicalStatusEvaluationStandardDetail> removeDetailList; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamMaintenanceStandardService.java
@@ -9,6 +9,7 @@ import org.jeecg.modules.eam.vo.EamMaintenanceStandardVo; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; /** @@ -87,4 +88,7 @@ * ç¹æ£è¡¨å¯¼å ¥å ¥å£ */ public Result<?> importPointInspectionExcel(MultipartFile file); Result<?> importMaintenanceStandard(MultipartFile file, String type); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationStandardDetailService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package org.jeecg.modules.eam.service; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: ææ¯ç¶æé´å®è§èæç» * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ public interface IEamTechnicalStatusEvaluationStandardDetailService extends IService<EamTechnicalStatusEvaluationStandardDetail> { } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationStandardService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ package org.jeecg.modules.eam.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest; /** * @Description: ææ¯ç¶æé´å®è§è * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ public interface IEamTechnicalStatusEvaluationStandardService extends IService<EamTechnicalStatusEvaluationStandard> { /** * * @param page * @param eamTechnicalStatusEvaluationStandard * @return */ IPage<EamTechnicalStatusEvaluationStandard> queryPageList(Page<EamTechnicalStatusEvaluationStandard> page, EamTechnicalStatusEvaluationStandard eamTechnicalStatusEvaluationStandard); /** * æ°å¢ * @param request * @return */ boolean addEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request); /** * é夿 ¡éª * @param equipmentId * @param id * @return */ EamTechnicalStatusEvaluationStandard checkDuplicate(String equipmentId, String id); /** * ç¼è¾ * @param request * @return */ boolean editEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request); /** * åç * @param request * @return */ boolean upgrade(EamTechnicalStatusEvaluationStandardRequest request); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -10,8 +10,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jeecg.weibo.exception.BusinessException; import liquibase.pro.packaged.R; import liquibase.pro.packaged.S; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.usermodel.*; import org.apache.shiro.SecurityUtils; import org.flowable.engine.TaskService; import org.flowable.task.api.Task; @@ -24,12 +29,16 @@ import org.jeecg.modules.eam.base.service.IBaseFactoryService; import org.jeecg.modules.eam.base.service.IBaseFactoryUserService; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.EamMaintenanceStandardDetailCategory; import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.entity.EamMaintenanceStandard; import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail; import org.jeecg.modules.eam.mapper.EamMaintenanceStandardMapper; import org.jeecg.modules.eam.request.EamMaintenanceStandardRequest; import org.jeecg.modules.eam.request.ImportException; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; @@ -40,6 +49,7 @@ import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.vo.UserSelector; import org.springframework.beans.BeanUtils; @@ -87,6 +97,22 @@ private ISysUserService sysUserService; @Autowired private IEamEquipmentService eamEquipmentService; @Autowired private IEamEquipmentExtendService eamEquipmentExtendService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; // 常éå®ä¹ private static final String REPAIR_TITLE = "维修人åä¿å »å 容"; private static final String OPERATOR_TITLE = "æä½äººåä¿å »å 容"; private static final Map<String, EamMaintenanceStandardDetailCategory> SECOND_CATEGORY_MAPPING = new HashMap<>(); // æä¸¾æ å°åå§å static { SECOND_CATEGORY_MAPPING.put(REPAIR_TITLE, EamMaintenanceStandardDetailCategory.REPAIRER_MAINTENANCE); SECOND_CATEGORY_MAPPING.put(OPERATOR_TITLE, EamMaintenanceStandardDetailCategory.OPERATOR_MAINTENANCE); } @Override public IPage<EamMaintenanceStandard> queryPageList(Page<EamMaintenanceStandard> page, EamMaintenanceStandard eamMaintenanceStandard) { QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>(); @@ -520,7 +546,7 @@ /*æµç¨ä¸å¡ä»£ç --------------------------ç»æ*/ /*å¯¼å ¥æä»¶--------------------------å¼å§*/ /*å¯¼å ¥ç¹æ£æä»¶Excel--------------------------å¼å§*/ /** * ç¹æ£è¡¨å¯¼å ¥å ¥å£ */ @@ -536,7 +562,7 @@ // 1. æå设å¤ä¿¡æ¯ EamMaintenanceStandard eamMaintenanceStandard = extractDeviceInfo(sheet); if (eamMaintenanceStandard == null) { throw new BusinessException("设å¤ä¿¡æ¯æå失败"); return Result.error("设å¤ä¿¡æ¯æå失败"); } eamMaintenanceStandard.setStandardName(name); @@ -544,9 +570,15 @@ // 2. æåæ¯æ¥ç¹æ£é¡¹ç® List<EamMaintenanceStandardDetail> dailyDetails = extractDailyItems(sheet, eamMaintenanceStandard); if(dailyDetails.isEmpty()){ return Result.error("æªæ¾å°æ¯æ¥ç¹æ£é¡¹ç®"); } // 3. æåå¨ä¿å »é¡¹ç® List<EamMaintenanceStandardDetail> weeklyDetails = extractWeeklyItems(sheet, eamMaintenanceStandard); if(weeklyDetails.isEmpty()){ return Result.error("æªæ¾å°å¨ä¿å »é¡¹ç®"); } // åå¹¶å¹¶ä¿åææé¡¹ç® List<EamMaintenanceStandardDetail> allDetails = new ArrayList<>(); @@ -618,7 +650,7 @@ EamMaintenanceStandard standard = new EamMaintenanceStandard(); standard.setEquipmentName(extractField(headerText, "设å¤åç§°[:ï¼]\\s*(\\S+)")); standard.setEquipmentId(extractField(headerText, "设å¤åå·[:ï¼]\\s*(\\S+)")); standard.setStandardCode(extractField(headerText, "ç»ä¸ç¼å·[:ï¼]\\s*(\\S+)")); // æ¥æå¤ç String dateStr = extractField(headerText, "æ¥æ[:ï¼]\\s*(\\S+)"); @@ -633,11 +665,31 @@ } } // å ³è设å¤ID if (isNotBlank(standard.getEquipmentCode()) && isNotBlank(standard.getEquipmentName())) { List<EamEquipment> equipments = eamEquipmentService.list( new QueryWrapper<EamEquipment>() .eq("equipment_code", standard.getEquipmentCode()) .eq("equipment_name", standard.getEquipmentName()) ); if (!equipments.isEmpty()) { standard.setEquipmentId(equipments.get(0).getId()); }else { return null; } } String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE); standard.setStandardCode(codeSeq); standard.setMaintenanceCategory("POINT_INSPECTION"); standard.setPeriodUnit("天"); standard.setStandardStatus(MaintenanceStandardStatusEnum.START.name()); standard.setStandardVersion("v" + CommonConstant.OPERATE_TYPE_1); standard.setDelFlag(0); standard.setMaintenancePeriod(1); return standard; } @@ -837,7 +889,6 @@ */ private String extractField(String text, String regex) { if (StringUtils.isBlank(text)) return ""; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); return matcher.find() ? matcher.group(1) : ""; @@ -848,7 +899,6 @@ */ private String getCellStringValue(Cell cell) { if (cell == null) return ""; switch (cell.getCellType()) { case STRING: return cell.getStringCellValue().trim(); @@ -886,5 +936,462 @@ return ""; } } /*å¯¼å ¥æä»¶--------------------------ç»æ*/ /*å¯¼å ¥ç¹æ£æä»¶Excel--------------------------ç»æ*/ /*å¯¼å ¥äºä¿ä¸ä¿æä»¶Excel--------------------------å¼å§*/ /** * ç»ä¸ä¿å »è§èå¯¼å ¥å ¥å£ * @param file ä¸ä¼ æä»¶ * @param type ä¿å »ç±»å (SECOND/THIRD) * @return å¯¼å ¥ç»æï¼å 嫿å/失败信æ¯ï¼ */ @Override @Transactional public Result<?> importMaintenanceStandard(MultipartFile file, String type) { String fileName = file.getOriginalFilename(); try (XWPFDocument doc = new XWPFDocument(file.getInputStream())) { // åºç¡éªè¯ if (doc.getTables().isEmpty()) { return Result.error(fileName + ": ææ¡£ä¸æªæ¾å°è¡¨æ ¼"); } XWPFTable table = doc.getTables().get(0); // ææ¡£ç±»åæ ¡éª - 鲿¢äºä¿ä¼ å ¥ä¸ä¿æåä¹ if (isWrongDocumentType(table, type)) { return Result.error(fileName + ": ææ¡£ç±»åä¸å¹é - " + ("SECOND".equals(type) ? "è¯·å¯¼å ¥äºçº§ä¿å »ææ¡£" : "è¯·å¯¼å ¥ä¸çº§ä¿å »ææ¡£")); } EamMaintenanceStandard standard = extractDeviceInfo(table); if (standard == null) { return Result.error(fileName + ": 设å¤ä¿¡æ¯æå失败"); } // é 置类åç¸å ³åæ° configureStandard(standard, type, file); eamMaintenanceStandardMapper.insert(standard); String standardId = standard.getId(); // æåä¿å »é¡¹ç® List<EamMaintenanceStandardDetail> items; if ("SECOND".equals(type)) { items = extractSecondMaintenanceItems(table, standardId); } else if ("THIRD".equals(type)) { items = extractThirdMaintenanceItems(table, standardId); } else { return Result.error(fileName + ": 䏿¯æçä¿å »ç±»å: " + type); } // 项ç®éªè¯ if (items.isEmpty()) { return Result.error(fileName + ": æªæåå°ä»»ä½ä¿å »é¡¹ç®"); } // ä¿åé¡¹ç® eamMaintenanceStandardDetailService.saveBatch(items); return Result.ok(fileName + ": å¯¼å ¥æå, é¡¹ç®æ°: " + items.size()); } catch (ImportException e) { return Result.error(e.getMessage()); } catch (Exception e) { return Result.error(fileName + ": ç³»ç»é误 - " + e.getClass().getSimpleName()); } } /** * ææ¡£ç±»åæ ¡éª - 鲿¢äºä¿ä¼ å ¥ä¸ä¿æåä¹ */ private boolean isWrongDocumentType(XWPFTable table, String requestedType) { boolean hasRepairTitle = false; boolean hasOperatorTitle = false; boolean hasMaintenancePart = false; // åªæ£æ¥å10è¡ï¼é常æ é¢å¨åå è¡ï¼ int maxRows = Math.min(table.getNumberOfRows(), 10); for (int i = 0; i < maxRows; i++) { XWPFTableRow row = table.getRow(i); if (row == null) continue; // æ£æ¥ææåå æ ¼å 容 for (int j = 0; j < row.getTableCells().size(); j++) { String cellText = getCellText(row.getCell(j)); // æ£æ¥äºçº§ä¿å »ç¹å¾ if (cellText.contains(REPAIR_TITLE)) { hasRepairTitle = true; } if (cellText.contains(OPERATOR_TITLE)) { hasOperatorTitle = true; } // æ£æ¥ä¸çº§ä¿å »ç¹å¾ if (cellText.contains("ä¿å »é¨ä½")) { hasMaintenancePart = true; } } } // é»è¾å¤æ if ("SECOND".equals(requestedType)) { // å¦æè¯·æ±å¯¼å ¥äºçº§ä¿å »ï¼ä½ææ¡£ä¸æä¸çº§ä¿å »ç¹å¾ return !(hasRepairTitle || hasOperatorTitle) || hasMaintenancePart; } else if ("THIRD".equals(requestedType)) { // å¦æè¯·æ±å¯¼å ¥ä¸çº§ä¿å »ï¼ä½ææ¡£ä¸æäºçº§ä¿å »ç¹å¾ return !hasMaintenancePart || (hasRepairTitle || hasOperatorTitle); } return false; } /** * æå设å¤åºæ¬ä¿¡æ¯ */ private EamMaintenanceStandard extractDeviceInfo(XWPFTable table) { if (table.getNumberOfRows() < 2) return null; // æååä¸¤è¡æ°æ® Map<String, String> row1Data = extractRowData(table.getRow(0)); Map<String, String> row2Data = extractRowData(table.getRow(1)); // åå»ºè®¾å¤æ å对象 EamMaintenanceStandard standard = new EamMaintenanceStandard(); standard.setEquipmentText(row1Data.get("设å¤ç±»å«")); standard.setEquipmentCode(row1Data.get("设å¤ç¼å·")); standard.setEquipmentName(row2Data.get("设å¤åç§°")); standard.setEquipmentModel(row2Data.get("设å¤åå·")); // å ³è设å¤ID if (isNotBlank(standard.getEquipmentCode()) && isNotBlank(standard.getEquipmentName())) { List<EamEquipment> equipments = eamEquipmentService.list( new QueryWrapper<EamEquipment>() .eq("equipment_code", standard.getEquipmentCode()) .eq("equipment_name", standard.getEquipmentName()) ); if (!equipments.isEmpty()) { standard.setEquipmentId(equipments.get(0).getId()); }else { return null; } } return standard; } // ç®æçå符串éç©ºå¤æ private boolean isNotBlank(String str) { return str != null && !str.trim().isEmpty(); } /** * è¡¨æ ¼è¡æ°æ®è§£æ */ private Map<String, String> extractRowData(XWPFTableRow row) { Map<String, String> data = new HashMap<>(); int cellCount = row.getTableCells().size(); try { // é®å¼å¯¹æ¨¡å¼ (æ ç¾|å¼|æ ç¾|å¼) if (cellCount >= 4 && cellCount % 2 == 0) { for (int i = 0; i < cellCount; i += 2) { String key = cleanKey(getCellText(row.getCell(i))); String value = getCellText(row.getCell(i + 1)); if (!key.isEmpty()) data.put(key, value); } } // è¿ç»åå æ ¼æ¨¡å¼ else { for (int i = 0; i < cellCount; i++) { String text = getCellText(row.getCell(i)); int colonIndex = text.indexOf('ï¼'); if (colonIndex > 0) { String key = cleanKey(text.substring(0, colonIndex)); String value = text.substring(colonIndex + 1); data.put(key, value); } } } } catch (Exception e) { log.error("è¡æ°æ®è§£æå¼å¸¸", e); } return data; } /** * é®åæ ååå¤ç */ private String cleanKey(String key) { if (key == null) return ""; // ç§»é¤ç©ºæ ¼å䏿åå· return key.replaceAll("\\s", "").replace("ï¼", ""); } /** * é ç½®ä¿å »æ ååæ° */ private void configureStandard(EamMaintenanceStandard standard, String type, MultipartFile file) { // åºç¡åæ° String filename = file.getOriginalFilename(); if (filename != null && filename.contains(".")) { filename = filename.substring(0, filename.lastIndexOf('.')); } standard.setStandardName(filename) .setInitialDate(new Date()) .setStandardStatus(MaintenanceStandardStatusEnum.START.name()) .setStandardVersion("v1.0") .setDelFlag(0) .setStandardCode(businessCodeRuleService.generateBusinessCodeSeq( BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE )); // ç±»åç¹å®åæ° if ("SECOND".equals(type)) { standard.setMaintenanceCategory("SECOND_MAINTENANCE") .setMaintenancePeriod(6) .setPeriodUnit("æ"); } else { standard.setMaintenanceCategory("THIRD_MAINTENANCE") .setPeriodUnit("å¹´"); // è·åä¸çº§ä¿å »å¨æ if (standard.getEquipmentId() != null) { EamEquipmentExtend extend = eamEquipmentExtendService.getById(standard.getEquipmentId()); if (extend != null) { standard.setMaintenancePeriod(extend.getThirdMaintenancePeriod()); } } } } /** * æåäºçº§ä¿å »é¡¹ç® */ private List<EamMaintenanceStandardDetail> extractSecondMaintenanceItems( XWPFTable table, String standardId) { List<EamMaintenanceStandardDetail> items = new ArrayList<>(); EamMaintenanceStandardDetailCategory currentCategory = null; for (int i = 0; i < table.getNumberOfRows(); i++) { XWPFTableRow row = table.getRow(i); if (row == null) continue; // æ£æ¥æ¯å¦æ¯æ é¢è¡ï¼ç»´ä¿®äººåä¿å »å 容ææä½äººåä¿å »å å®¹ï¼ String firstCell = getCellText(row.getCell(0)); if (firstCell != null) { for (String title : SECOND_CATEGORY_MAPPING.keySet()) { if (firstCell.contains(title)) { currentCategory = SECOND_CATEGORY_MAPPING.get(title); // æ£æ¥ç¬¬äºåå第ä¸åæ¯å¦æ¯"åºå·"å"ä¿å »å 容" if (row.getTableCells().size() > 2) { String secondCell = getCellText(row.getCell(1)); String thirdCell = getCellText(row.getCell(2)); // æç¡®è·³è¿æ é¢è¡ if ("åºå·".equals(secondCell) && "ä¿å »å 容".equals(thirdCell)) { continue; // è·³è¿è¿ä¸è¡ } } // å°è¯æåæ é¢è¡ä¸ç项ç®ï¼å¦æåå¨ï¼ if (row.getTableCells().size() > 2) { String content = getCellText(row.getCell(2)); if (content != null && !content.trim().isEmpty() && !"ä¿å »å 容".equals(content.trim())) { // è¿æ»¤æ æå 容 items.add(createItem(currentCategory, content.trim(), standardId)); } } continue; } } } // å¤çæ®é项ç®è¡ if (currentCategory != null && isValidItemRow(row)) { // è·åå 容 String content = row.getTableCells().size() > 2 ? getCellText(row.getCell(2)) : ""; // æé¤æ é¢å 容 if ("ä¿å »å 容".equals(content) || "åºå·".equals(content) || content.contains("维修人åä¿å »å 容") || content.contains("æä½äººåä¿å »å 容")) { continue; } EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail(); item.setItemCategory(String.valueOf(currentCategory)); item.setStandardId(standardId); item.setItemName(cleanContent(content)); // å¤çåºå·ï¼ç¬¬äºåï¼ if (row.getTableCells().size() > 1) { String seqText = getCellText(row.getCell(1)); try { if (seqText != null && !seqText.trim().isEmpty()) { item.setItemCode(Integer.parseInt(seqText.trim())); } } catch (NumberFormatException e) { // 忽ç¥åºå·è§£æé误 } } items.add(item); } } return items; } /** * å建ä¿å »é¡¹ç® */ private EamMaintenanceStandardDetail createItem( EamMaintenanceStandardDetailCategory category, String content, String standardId) { EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail(); item.setItemCategory(category.name()); item.setStandardId(standardId); item.setItemName(cleanContent(content)); return item; } /** * æåä¸çº§ä¿å »é¡¹ç®ï¼æ ç±»åï¼ */ private List<EamMaintenanceStandardDetail> extractThirdMaintenanceItems( XWPFTable table, String standardId) { List<EamMaintenanceStandardDetail> items = new ArrayList<>(); String currentPart = ""; int itemCount = 1; // ä»ç¬¬ä¸è¡å¼å§ï¼è·³è¿è¡¨å¤´å设å¤ä¿¡æ¯ï¼ for (int i = 2; i < table.getNumberOfRows(); i++) { XWPFTableRow row = table.getRow(i); if (row == null || isRowEmpty(row)) continue; // è·³è¿"ä¿å »é¨ä½"æ é¢è¡ String firstCell = getCellText(row.getCell(0)); if ("ä¿å »é¨ä½".equals(firstCell)) { continue; } EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail(); // ä¸çº§ä¿å »ä¸éè¦ç±»åï¼ä¸è®¾ç½®itemCategory item.setStandardId(standardId); item.setItemCode(itemCount++); // å¤çé¨ä½å if (!row.getTableCells().isEmpty()) { String partCell = getCellText(row.getCell(0)); if (!partCell.trim().isEmpty()) { currentPart = partCell.trim(); } } item.setItemPart(currentPart); // æ ¹æ®åæ°ç¡®å®å å®¹åæ åçä½ç½® int cellCount = row.getTableCells().size(); if (cellCount == 3) { // é¨ä½|å 容|æ å item.setItemName(getCellText(row.getCell(1))); item.setItemDemand(getCellText(row.getCell(2))); } else if (cellCount == 2) { // å 容|æ å item.setItemName(getCellText(row.getCell(0))); item.setItemDemand(getCellText(row.getCell(1))); } else if (cellCount == 1) { // ååå 容 item.setItemName(getCellText(row.getCell(0))); } else if (cellCount > 3) { // å¤åå¤ç // å第2åä½ä¸ºå å®¹ï¼æåä¸åä½ä¸ºæ å item.setItemName(getCellText(row.getCell(1))); item.setItemDemand(getCellText(row.getCell(cellCount - 1))); } items.add(item); } return items; } /** * å ¼å®¹çåå æ ¼ææ¬æå */ private String getCellText(XWPFTableCell cell) { if (cell == null) return ""; StringBuilder text = new StringBuilder(); for (XWPFParagraph para : cell.getParagraphs()) { if (para != null) { for (XWPFRun run : para.getRuns()) { if (run != null) { String runText = run.getText(0); if (runText != null) { text.append(runText); } } } } } return text.toString(); } /** * å å®¹æ¸ ç */ private String cleanContent(String text) { if (text == null) return ""; // æ¿æ¢ç¹æ®ç©ºæ ¼ååå¹¶è¿ç»ç©ºæ ¼ text = text.replace('\u00A0', ' ') .replace('\u2007', ' ') .replace('\u202F', ' ') .replaceAll("\\s+", " "); // è§èæ ç¹ç¬¦å· return text.replace(',', 'ã') .replace('ï¼', 'ã') .replace(';', 'ï¼') .replace('ï¼', 'ï¼') .replace(':', 'ï¼') .replace('ï¼', 'ï¼') .trim(); } /** * éªè¯ææé¡¹ç®è¡ */ private boolean isValidItemRow(XWPFTableRow row) { return row != null && row.getTableCells().size() >= 2 && !getCellText(row.getCell(1)).trim().isEmpty(); } /** * ç©ºè¡æ£æµ */ private boolean isRowEmpty(XWPFTableRow row) { if (row == null) return true; for (XWPFTableCell cell : row.getTableCells()) { String text = getCellText(cell); if (text != null && !text.trim().isEmpty()) { return false; } } return true; } /*å¯¼å ¥äºä¿ä¸ä¿æä»¶Excel--------------------------ç»æ*/ } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package org.jeecg.modules.eam.service.impl; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardDetailMapper; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: ææ¯ç¶æé´å®è§èæç» * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Service public class EamTechnicalStatusEvaluationStandardDetailServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationStandardDetailMapper, EamTechnicalStatusEvaluationStandardDetail> implements IEamTechnicalStatusEvaluationStandardDetailService { } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,226 @@ package org.jeecg.modules.eam.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.SimpleVersionGenerateUtil; import org.jeecg.modules.eam.base.entity.BaseFactory; import org.jeecg.modules.eam.base.entity.BaseFactoryUser; import org.jeecg.modules.eam.base.service.IBaseFactoryService; import org.jeecg.modules.eam.base.service.IBaseFactoryUserService; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationStandardEnum; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardMapper; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * @Description: ææ¯ç¶æé´å®è§è * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Service public class EamTechnicalStatusEvaluationStandardServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationStandardMapper, EamTechnicalStatusEvaluationStandard> implements IEamTechnicalStatusEvaluationStandardService { @Autowired private IBaseFactoryUserService baseFactoryUserService; @Autowired private IBaseFactoryService baseFactoryService; @Autowired private IEamTechnicalStatusEvaluationStandardDetailService standardDetailService; @Override public IPage<EamTechnicalStatusEvaluationStandard> queryPageList(Page<EamTechnicalStatusEvaluationStandard> page, EamTechnicalStatusEvaluationStandard query) { QueryWrapper<EamTechnicalStatusEvaluationStandard> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ems.del_flag", CommonConstant.DEL_FLAG_0); //ç¨æ·æ°æ®æé LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return page; } if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { //éæ©äºè®¾å¤ï¼æ ¹æ®è®¾å¤idè¿æ»¤è®¾å¤ List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); queryWrapper.in("e.equipment_code", equipArr); } else { //没æéæ©è®¾å¤ï¼æ ¹æ®ä¸å¿è¿æ»¤è®¾å¤ List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService. list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId())); if (!CollectionUtils.isEmpty(baseFactoryUserList)) { List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList()); List<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList()); queryWrapper.in("e.factory_code", factoryCode); } else { return page; } } if (query != null) { //ç¼ç æ¨¡ç³æ¥è¯¢ if (StringUtils.isNotBlank(query.getStandardCode())) { queryWrapper.like("ems.standard_code", query.getStandardCode()); } //åç§° æ¨¡ç³æ¥è¯¢ if (StringUtils.isNotBlank(query.getStandardName())) { queryWrapper.like("ems.standard_name", query.getStandardName()); } //è®¾å¤ if (StringUtils.isNotBlank(query.getEquipmentId())) { queryWrapper.eq("ems.equipment_id", query.getEquipmentId()); } //ä¿å »åç±» if (StringUtils.isNotBlank(query.getStandardStatus())) { queryWrapper.eq("ems.standard_status", query.getStandardStatus()); } } queryWrapper.orderByDesc("ems.create_time"); return this.getBaseMapper().queryPageList(page, queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public boolean addEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) { EamTechnicalStatusEvaluationStandard entity = new EamTechnicalStatusEvaluationStandard(); BeanUtils.copyProperties(request, entity); entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name()); //çæ¬éå¢ entity.setStandardVersion(SimpleVersionGenerateUtil.getInitVersion()); //设å¤å¤ç entity.setEquipmentId(request.getEquipmentId()); //å 餿 è®° entity.setDelFlag(CommonConstant.DEL_FLAG_0); //é夿§æ ¡éª EamTechnicalStatusEvaluationStandard exist = checkDuplicate(entity.getEquipmentId(), null); if(exist != null){ throw new JeecgBootException("è§èå·²åå¨ï¼ä¸è½é夿·»å ï¼"); } this.getBaseMapper().insert(entity); //å¤çæç»æ°æ® if(CollectionUtil.isNotEmpty(request.getTableDetailList())) { request.getTableDetailList().forEach(tableDetail -> { tableDetail.setStandardId(entity.getId()); }); standardDetailService.saveBatch(request.getTableDetailList()); } return true; } @Override public EamTechnicalStatusEvaluationStandard checkDuplicate(String equipmentId, String id) { LambdaQueryWrapper<EamTechnicalStatusEvaluationStandard> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamTechnicalStatusEvaluationStandard::getEquipmentId, equipmentId); queryWrapper.eq(EamTechnicalStatusEvaluationStandard::getDelFlag, CommonConstant.DEL_FLAG_0); //å¾ æäº¤ãå¯ç¨ç¶æ queryWrapper.in(EamTechnicalStatusEvaluationStandard::getStandardStatus, Arrays.asList(TechnicalStatusEvaluationStandardEnum.ENABLE.name(), TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name())); queryWrapper.orderByDesc(EamTechnicalStatusEvaluationStandard::getStandardVersion); if(StringUtils.isNotBlank(id)){ queryWrapper.ne(EamTechnicalStatusEvaluationStandard::getId, id); } List<EamTechnicalStatusEvaluationStandard> list = this.getBaseMapper().selectList(queryWrapper); if(CollectionUtil.isEmpty(list)) { return null; } return list.get(0); } @Override @Transactional(rollbackFor = Exception.class) public boolean editEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) { EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId()); if(entity == null){ throw new JeecgBootException("ç¼è¾çæ°æ®å·²å é¤ï¼è¯·å·æ°éè¯ï¼"); } entity.setStandardName(request.getStandardName()); entity.setEvaluationPeriod(request.getEvaluationPeriod()); this.getBaseMapper().updateById(entity); //å¤ç详æ if(CollectionUtil.isNotEmpty(request.getTableDetailList())) { List<EamTechnicalStatusEvaluationStandardDetail> addList = new ArrayList<>(); List<EamTechnicalStatusEvaluationStandardDetail> updateList = new ArrayList<>(); request.getTableDetailList().forEach(tableDetail -> { tableDetail.setStandardId(entity.getId()); if(tableDetail.getId() == null){ addList.add(tableDetail); }else { updateList.add(tableDetail); } }); if(CollectionUtil.isNotEmpty(addList)){ standardDetailService.saveBatch(addList); } if(CollectionUtil.isNotEmpty(updateList)){ standardDetailService.updateBatchById(updateList); } } if(CollectionUtil.isNotEmpty(request.getRemoveDetailList())) { List<String> ids = request.getRemoveDetailList().stream().map(EamTechnicalStatusEvaluationStandardDetail::getId).collect(Collectors.toList()); standardDetailService.removeBatchByIds(ids); } return true; } @Override @Transactional(rollbackFor = Exception.class) public boolean upgrade(EamTechnicalStatusEvaluationStandardRequest request) { EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId()); if(entity == null){ throw new JeecgBootException("åççæ°æ®å·²å é¤ï¼è¯·å·æ°éè¯ï¼"); } //æ°å¢ä¸ä¸ªçæ¬ EamTechnicalStatusEvaluationStandard newEntity = new EamTechnicalStatusEvaluationStandard(); newEntity.setStandardCode(request.getStandardCode()); newEntity.setStandardName(request.getStandardName()); newEntity.setEvaluationPeriod(request.getEvaluationPeriod()); newEntity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.ENABLE.name()); //çæ¬éå¢ newEntity.setStandardVersion(SimpleVersionGenerateUtil.addVersion(entity.getStandardVersion())); //设å¤å¤ç newEntity.setEquipmentId(request.getEquipmentId()); //å 餿 è®° newEntity.setDelFlag(CommonConstant.DEL_FLAG_0); //é夿§æ ¡éª EamTechnicalStatusEvaluationStandard exist = checkDuplicate(newEntity.getEquipmentId(), entity.getId()); if(exist != null){ throw new JeecgBootException("é´å®è§èå·²åå¨ï¼ä¸è½é夿·»å ï¼"); } this.getBaseMapper().insert(newEntity); //å¤çæç»æ°æ® if(CollectionUtil.isNotEmpty(request.getTableDetailList())) { request.getTableDetailList().forEach(tableDetail -> { tableDetail.setId(null); tableDetail.setCreateBy(null); tableDetail.setUpdateBy(null); tableDetail.setCreateTime(null); tableDetail.setUpdateTime(null); tableDetail.setStandardId(newEntity.getId()); }); standardDetailService.saveBatch(request.getTableDetailList()); } //ç¦ç¨åæ¥ççæ¬ entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.DISABLE.name()); this.getBaseMapper().updateById(entity); return true; } }