From 0d06048c5d560e301bf17fad476975c8ffffcb56 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期五, 05 九月 2025 16:07:31 +0800 Subject: [PATCH] 添加三级保养工作计划单生成规则 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java | 552 +++++++++++++++++++------------------------------------ 1 files changed, 190 insertions(+), 362 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java index e8d2bc8..bf01e42 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java @@ -6,31 +6,24 @@ 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.apache.shiro.SecurityUtils; 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.common.system.vo.LoginUser; 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.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -38,9 +31,10 @@ 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.concurrent.atomic.AtomicInteger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -58,28 +52,33 @@ private IEamMaintenanceStandardService eamMaintenanceStandardService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; - @Autowired - private IEamEquipmentService eamEquipmentService; /** * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹� + * * @param id * @return */ @ApiOperation(value = "淇濆吇鏍囧噯-娴佺▼鍚姩淇濆瓨瀵瑰簲鐨勬暟鎹�", notes = "淇濆吇鏍囧噯-娴佺▼鍚姩淇濆瓨瀵瑰簲鐨勬暟鎹�") @GetMapping(value = "/saveEamMaintenanceStandardProcess") - public Result<?> saveEamMaintenanceStandardProcess(String id){ + public Result<?> saveEamMaintenanceStandardProcess(String id) { + // 鏍¢獙棰嗗彇鏉冮檺 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!BusinessCodeConst.PCR0002.equals(user.getPost())) { + return Result.error("濉姤澶辫触,娌℃湁濉姤鏉冮檺锛�,闇�缁翠慨宸ユ彁浜�"); + } return eamMaintenanceStandardService.saveEamMaintenanceStandardProcess(id); } /** * 娴佺▼瀹℃牳 + * * @param eamMaintenanceStandardVo * @return */ @ApiOperation(value = "淇濆吇鏍囧噯-娴佺▼瀹℃牳", notes = "淇濆吇鏍囧噯-娴佺▼瀹℃牳") @PostMapping(value = "/audit") - public Result<?> auditEamMaintenanceStandard(@RequestBody EamMaintenanceStandardVo eamMaintenanceStandardVo){ + public Result<?> auditEamMaintenanceStandard(@RequestBody EamMaintenanceStandardVo eamMaintenanceStandardVo) { return eamMaintenanceStandardService.auditEamMaintenanceStandard(eamMaintenanceStandardVo); } @@ -179,7 +178,8 @@ /** * 鏌ヨ鏍囧噯鍒楄〃-鍓嶇灞曠ず璇ョ敤鎴锋嫢鏈夌殑鏍囧噯 - * @param keyword 璁惧缂栧彿 + * + * @param keyword 璁惧缂栧彿 * @param maintenanceCategory 淇濆吇绫诲瀷 * @return */ @@ -241,14 +241,17 @@ @DeleteMapping(value = "/deleteBatch") public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { List<String> list = Arrays.asList(ids.split(",")); + AtomicInteger i = new AtomicInteger(); list.forEach(id -> { EamMaintenanceStandard entity = eamMaintenanceStandardService.getById(id); - if (entity != null) { + if (entity != null&&entity.getStandardStatus().equals(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name())) { + //鍙垹闄ょ姸鎬佷负寰呮彁浜ょ殑 + i.getAndIncrement(); entity.setDelFlag(CommonConstant.DEL_FLAG_1); eamMaintenanceStandardService.updateById(entity); } }); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛,宸插垹闄ょ姸鎬佷负寰呮彁浜ょ殑淇濆吇鏍囧噯锛屽垹闄ゆ暟閲忎负"+i); } /** @@ -275,358 +278,183 @@ return super.exportXls(request, eamMaintenanceStandard, EamMaintenanceStandard.class, "淇濆吇鏍囧噯"); } - @PostMapping("/import") - public Result<?> importExcel(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(); - eamMaintenanceStandardService.importPointInspectionExcel(file); - } - return Result.ok("瀵煎叆鎴愬姛"); - } - /** - * 閫氳繃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("鏂囦欢瀵煎叆瀹屾垚锛�"); - } - - /** - * 閫氳繃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; + * 鐐规瀵煎叆 + */ + @PostMapping("/importPointInspection") + public Result<?> importPointInspectionExcel(HttpServletRequest request) { try { - book = WorkbookFactory.create(file.getInputStream()); - if (book instanceof XSSFWorkbook) { - isXSSFWorkbook = true; + 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(); + String fileName = file.getOriginalFilename(); + Result<?> importResult=eamMaintenanceStandardService.importPointInspectionExcel(file,null); + if (importResult.isSuccess()) { + successCount++; + } else { + results.put(fileName, importResult.getMessage()); + failureCount++; + } } - 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()); - } else { - request.setInitialDate(new Date()); - } - //璁惧鍚嶇О - Cell equipmentName = row.getCell(13); - request.setEquipmentName(equipmentName.getStringCellValue()); + // 鏋勫缓鏈�缁堝搷搴� + return getResult(results, fileMap.size(), successCount, failureCount); - //绗簩琛岃鍙� - row = sheet.getRow(1); - //淇濆吇鍛ㄦ湡 - Cell period = row.getCell(11); - if (CellType.NUMERIC.equals(period.getCellType())) { - request.setMaintenancePeriod((int) period.getNumericCellValue()); - } else { - //榛樿鐐规鍛ㄦ湡 1 - request.setMaintenancePeriod(1); - } - //鏂囦欢缂栫爜 - 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()); } } /** - * 璇诲彇Excel 绗竴琛岋紝 绗簩琛岀殑淇℃伅 - * @param file - * @param request - */ - public void readWeekExcel(MultipartFile file, EamMaintenanceStandardRequest request) { - Workbook book = null; - boolean isXSSFWorkbook = false; + * 浜屼繚瀵煎叆 + */ + @PostMapping("/importSecondMaintenanceStandard") + public Result<?> importSecondMaintenanceStandard(HttpServletRequest request) { try { - book = WorkbookFactory.create(file.getInputStream()); - if (book instanceof XSSFWorkbook) { - isXSSFWorkbook = true; + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + int totalFiles = fileMap.size(); + List<String> successFileNames = new ArrayList<>(); + List<String> failedFileNames = new ArrayList<>(); + Map<String, String> failedFiles = new LinkedHashMap<>(); + int successDeviceCount = 0; + List<String> notFoundCodes = new ArrayList<>(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue(); + String fileName = file.getOriginalFilename(); + Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", null); + successDeviceCount = getSuccessDeviceCount(successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes, fileName, importResult); } - - 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()); - - //绗簩琛岃鍙� - row = sheet.getRow(1); - //淇濆吇鍛ㄦ湡 - Cell period = row.getCell(6); - if (CellType.NUMERIC.equals(period.getCellType())) { - request.setMaintenancePeriod((int) period.getNumericCellValue()); - } else { - request.setMaintenancePeriod(null); - } - //鏂囦欢缂栫爜 - Cell fileCode = row.getCell(8); - request.setFileCode(fileCode.getStringCellValue()); + // 鏋勫缓鍝嶅簲 + return getResult(totalFiles, successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes); } catch (Exception e) { - log.error("璇诲彇Excel淇℃伅澶辫触锛歿}", e.getMessage(), e); + log.error("瀵煎叆澶勭悊寮傚父", e); + return Result.error("瀵煎叆澶勭悊澶辫触: " + e.getMessage()); } } + + @NotNull + private Result<?> getResult(int totalFiles, List<String> successFileNames, List<String> failedFileNames, Map<String, String> failedFiles, int successDeviceCount, List<String> notFoundCodes) { + if (!failedFiles.isEmpty()) { + String errorMsg = String.format("澶辫触鏂囦欢鏁帮細%d锛屽け璐ユ枃浠跺悕锛�%s锛屽け璐ュ師鍥狅細%s", + totalFiles, + String.join(",", failedFileNames), + failedFiles.entrySet().stream() + .map(e -> e.getKey() + ":" + e.getValue()) + .collect(Collectors.joining("锛�"))); + return Result.error(errorMsg); + } + + if (!notFoundCodes.isEmpty()) { + return Result.ok(String.format("鎴愬姛瀵煎叆鏂囦欢鏁帮細%d锛屾枃浠跺悕锛�%s锛屾垚鍔熷鍏ヨ澶囨暟锛�%d锛屾湭鎵惧埌鐨勮澶囩紪鐮侊細%s", + totalFiles, + String.join(",", successFileNames), + successDeviceCount, + String.join(",", notFoundCodes))); + } + + return Result.ok(String.format("鎴愬姛瀵煎叆鏂囦欢鏁帮細%d锛屾枃浠跺悕锛�%s锛屾垚鍔熷鍏ヨ澶囨暟锛�%d", + totalFiles, + String.join(",", successFileNames), + successDeviceCount)); + } + + private int getSuccessDeviceCount(List<String> successFileNames, List<String> failedFileNames, Map<String, String> failedFiles, int successDeviceCount, List<String> notFoundCodes, String fileName, Result<?> importResult) { + if (importResult.isSuccess()) { + successFileNames.add(fileName); + String message = importResult.getMessage(); + // 鎻愬彇璁惧鏁� + Pattern devicePattern = Pattern.compile("璁惧鏁帮細(\\d+)"); + Matcher deviceMatcher = devicePattern.matcher(message); + if (deviceMatcher.find()) { + successDeviceCount += Integer.parseInt(deviceMatcher.group(1)); + } + // 妫�鏌ユ湭鎵惧埌鐨勮澶囩紪鐮� + if (message.contains("浠ヤ笅璁惧缂栫爜鏈壘鍒�")) { + int colonIndex = message.indexOf("锛�", message.indexOf("浠ヤ笅璁惧缂栫爜鏈壘鍒�")); + if (colonIndex != -1) { + String notFoundPart = message.substring(colonIndex + 1).replaceAll("[銆傦紱锛宂", ""); + notFoundCodes.addAll(Arrays.asList(notFoundPart.split("\\s*,\\s*"))); + } + } + } else { + failedFileNames.add(fileName); + failedFiles.put(fileName, importResult.getMessage()); + } + return successDeviceCount; + } + + /** + * 涓変繚瀵煎叆 + */ + @PostMapping("/importThirdMaintenanceStandard") + public Result<?> importThirdMaintenanceStandard(HttpServletRequest request) { + try { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + int totalFiles = fileMap.size(); + List<String> successFileNames = new ArrayList<>(); + List<String> failedFileNames = new ArrayList<>(); + Map<String, String> failedFiles = new LinkedHashMap<>(); + int successDeviceCount = 0; + List<String> notFoundCodes = new ArrayList<>(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue(); + String fileName = file.getOriginalFilename(); + Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", null); + successDeviceCount = getSuccessDeviceCount(successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes, fileName, importResult); + } + // 鏋勫缓鍝嶅簲 + return getResult(totalFiles, successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes); + } catch (Exception e) { + log.error("瀵煎叆澶勭悊寮傚父", e); + return Result.error("瀵煎叆澶勭悊澶辫触: " + e.getMessage()); + } + } + + /** + * 鍗囩増瀵煎叆 + */ + @PostMapping(value = "/importUpgrade") + public Result<?> importUpgrade(String id, MultipartFile file) { + EamMaintenanceStandard eamMaintenanceStandard = eamMaintenanceStandardService.getById(id); + if (eamMaintenanceStandard == null) { + return Result.error("璇烽�夋嫨闇�瑕佸崌鐗堢殑淇濆吇鏍囧噯"); + } else { + switch (eamMaintenanceStandard.getMaintenanceCategory()) { + case "POINT_INSPECTION": + //鐐规鍗囩増瀵煎叆 + return eamMaintenanceStandardService.importPointInspectionExcel(file,id); + case "SECOND_MAINTENANCE": + //浜屼繚鍗囩増瀵煎叆 + return eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND",id); + case "THIRD_MAINTENANCE": + //涓変繚鍗囩増瀵煎叆 + return eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD",id); + default: + break; + } + } + return Result.error("鍗囩増瀵煎叆澶辫触"); + } + + private Result<?> getResult(Map<String, String> results, int fileCount, int successCount, int failureCount) { + List<String> response = new ArrayList<>(); + response.add("鎬绘枃浠舵暟锛�" + fileCount); + response.add("鎴愬姛鏁帮細" + successCount); + response.add("澶辫触鏁帮細" + failureCount); + if (failureCount > 0) { + response.add("閿欒淇℃伅锛�" + results.values()); + return Result.error("閮ㄥ垎鏂囦欢瀵煎叆澶辫触锛�" + response); + } + return Result.ok("鎵�鏈夋枃浠跺鍏ユ垚鍔燂細" + response); + } + } -- Gitblit v1.9.3