From 76c5ad320495758d4e76d852d96914f1b405ece7 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期一, 15 九月 2025 11:52:17 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java | 77 +++++++++++ src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandard.java | 6 src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java | 16 +- src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java | 218 +++++++++++++++++++++++++++--- src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java | 2 src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java | 44 +++++- src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java | 4 src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java | 7 + src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java | 1 src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java | 4 src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java | 16 +- 11 files changed, 336 insertions(+), 59 deletions(-) diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java index 35302fe..5789c83 100644 --- a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java +++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java @@ -215,4 +215,8 @@ } //TODO: @GetMapping("/handleBack") + @GetMapping("/handleBack") + public Result<?> handleBack(@RequestParam("orderId") String orderId) { + return cuttingReceiveService.handleBack(orderId); + } } diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java index 61c03b7..196cbe4 100644 --- a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java +++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java @@ -77,4 +77,11 @@ @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 private String cuttingBarcodeSearch; + + @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 + private String workpieceMaterial; + + @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 + private BigDecimal ratedLife; + } diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java index 5b9df57..df221a7 100644 --- a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java +++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java @@ -17,4 +17,6 @@ IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params); Result<?> submit(String orderId); + + Result<?> handleBack(String orderId); } diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java index 5ec91bd..69edf6b 100644 --- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java +++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java @@ -5,17 +5,21 @@ import io.micrometer.core.annotation.Timed; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.cms.entity.CuttingInventory; import org.jeecg.modules.cms.entity.CuttingReceive; import org.jeecg.modules.cms.entity.CuttingReceiveDetail; +import org.jeecg.modules.cms.entity.RatedLife; import org.jeecg.modules.cms.mapper.CuttingReceiveMapper; import org.jeecg.modules.cms.service.ICuttingInventoryService; import org.jeecg.modules.cms.service.ICuttingReceiveDetailService; import org.jeecg.modules.cms.service.ICuttingReceiveService; +import org.jeecg.modules.cms.service.IRatedLifeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -33,6 +37,8 @@ private ICuttingInventoryService cuttingInventoryService; @Autowired private ICuttingReceiveDetailService cuttingReceiveDetailService; + @Autowired + private IRatedLifeService ratedLifeService; @Override public IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params) { IPage<Map> pageData = new Page<Map>(pageNo, pageSize); @@ -88,4 +94,75 @@ return Result.error("鎻愪氦澶辫触: " + e.getMessage()); } } + + @Override + public synchronized Result<?> handleBack(String orderId) { + long startTime = System.currentTimeMillis(); + try { + // 1. 鏇存柊棰嗙敤鍗曠姸鎬佷负宸插綊杩� + CuttingReceive cuttingReceive = this.getById(orderId); + if (cuttingReceive == null) { + return Result.error("鏈壘鍒板搴旂殑棰嗙敤鍗�"); + } + + // 妫�鏌ラ鐢ㄥ崟鐘舵�侊紝鍙厑璁哥姸鎬佷负"宸查鐢�"鐨勯鐢ㄥ崟杩涜褰掕繕鎿嶄綔 + if (!"2".equals(cuttingReceive.getOrderStatus())) { + return Result.error("鍙湁鐘舵�佷负宸查鐢ㄧ殑棰嗙敤鍗曟墠鑳芥墽琛屽綊杩樻搷浣�"); + } + + cuttingReceive.setOrderStatus("3"); // 璁剧疆涓哄凡褰掕繕鐘舵�� + boolean updateResult = this.updateById(cuttingReceive); + if (!updateResult) { + return Result.error("鏇存柊棰嗙敤鍗曠姸鎬佸け璐ワ紝鍙兘宸茶鍏朵粬鐢ㄦ埛澶勭悊"); + } + + // 2. 鑾峰彇棰嗙敤鏄庣粏 + List<CuttingReceiveDetail> detailList = cuttingReceiveDetailService.lambdaQuery() + .eq(CuttingReceiveDetail::getOrderId, orderId) + .list(); + + // 3. 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID + List<String> inventoryIds = new ArrayList<>(); + for (CuttingReceiveDetail detail : detailList) { + if (detail.getInventoryId() != null && !detail.getInventoryId().isEmpty()) { + inventoryIds.add(detail.getInventoryId()); + } + } + + // 4. 鎵归噺鏇存柊搴撳瓨鐘舵�佷负"姝e父" + if (!inventoryIds.isEmpty()) { + cuttingInventoryService.updateStatus(inventoryIds, "姝e父"); + } + // 5. 瀵垮懡鎵e噺 + for (CuttingReceiveDetail detail : detailList) { + if (detail.getInventoryId() != null && !detail.getInventoryId().isEmpty()) { + CuttingInventory inventory = cuttingInventoryService.getById(detail.getInventoryId()); + //FIXME:ratedLife绌烘寚閽� + RatedLife ratedLife = ratedLifeService.lambdaQuery() //棰濆畾瀵垮懡 + .eq(RatedLife::getCuttingId, inventory.getCuttingId()) + .eq(RatedLife::getWorkpieceMaterial, inventory.getWorkpieceMaterial()) + .one(); + + BigDecimal currentLife = inventory.getCurrentLife().divide(BigDecimal.valueOf(100),java.math.RoundingMode.HALF_UP);//褰撳墠瀵垮懡鐧惧垎姣� + Integer useLife = detail.getUsedLife();//浣跨敤瀵垮懡 + //璁$畻鍏紡: (ratedLife * currentLife - useLife) * 100 + BigDecimal newLife = ratedLife.getRatedLife() + .multiply(currentLife) + .subtract(BigDecimal.valueOf(useLife)) + .multiply(BigDecimal.valueOf(100)); + // 鏇存柊搴撳瓨瀵垮懡 + inventory.setCurrentLife(newLife); + cuttingInventoryService.updateById(inventory); + } + } + long endTime = System.currentTimeMillis(); + log.info("鍒�鍏峰綊杩樺鐞嗗畬鎴愶紝鑰楁椂: {} ms", (endTime - startTime)); + return Result.ok("褰掕繕鎴愬姛"); + + } catch (Exception e) { + long endTime = System.currentTimeMillis(); + log.error("澶勭悊褰掕繕澶辫触锛宱rderId: " + orderId + "锛岃�楁椂: " + (endTime - startTime) + " ms", e); + return Result.error("褰掕繕澶辫触: " + e.getMessage()); + } + } } diff --git a/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java b/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java index 5f8d97e..a9025c6 100644 --- a/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java +++ b/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java @@ -9,7 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.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; @@ -25,7 +25,6 @@ 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.IEamMaintenanceOrderDetailService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; import org.jeecg.modules.eam.vo.MaintenanceStandardDetailVo; @@ -43,10 +42,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -296,37 +296,58 @@ * @return */ @RequestMapping(value = "/inspectionImportExcel", method = RequestMethod.POST) - public Result<?> inspectionImportExcel(HttpServletRequest request, HttpServletResponse response) { + public Result<?> inspectionImportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 MultipartFile file = entity.getValue(); + byte[] bytes = file.getBytes(); + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + ImportParams params = new ImportParams(); - params.setTitleRows(2); - params.setHeadRows(1); - params.setSheetNum(1); - params.setLastOfInvalidRow(23); + params.setTitleRows(2); // 璺宠繃鍓�2琛屾爣棰� + params.setHeadRows(2); // 绗�3琛屾槸琛ㄥご + params.setSheetNum(1); // 璇诲彇绗竴涓伐浣滆〃 params.setNeedSave(true); + EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { //璇诲彇璁惧缂栧彿锛屽浘鐗囩瓑 readExcel(file, standardRequest); + log.info("璇诲彇鍒扮殑璁惧缂栫爜: {}", standardRequest.getEquipmentCode()); + 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); + // 璇诲彇淇濆吇鏄庣粏鍐呭鍓嶆坊鍔犺皟璇曚俊鎭� + log.info("Excel瀵煎叆鍙傛暟: titleRows={}, headRows={}, lastOfInvalidRow={}", + params.getTitleRows(), params.getHeadRows(), params.getLastOfInvalidRow()); + List<MaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), MaintenanceStandardImport.class, params); + log.info("瀹為檯璇诲彇鍒扮殑鏄庣粏鏁伴噺: {}", list.size()); //鏄庣粏椤� - List<EamMaintenanceStandardDetail> tableList = list.stream().map(EamMaintenanceStandardDetail::new).collect(Collectors.toList()); + List<EamMaintenanceStandardDetail> tableList = new ArrayList<>(); + for(MaintenanceStandardImport maintenanceStandardImport : list) { + try { + Integer.valueOf(maintenanceStandardImport.getItemCode()); + } catch (NumberFormatException e) { + break; + } + tableList.add(new EamMaintenanceStandardDetail(maintenanceStandardImport)); + } + standardRequest.setTableDetailList(tableList); + log.info("杞崲鍚庣殑鏄庣粏鏁伴噺: {}", tableList.size()); + String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MAINTENANCE_STANDARD_CODE_RULE); standardRequest.setStandardCode(codeSeq); boolean b = eamMaintenanceStandardService.addMaintenanceStandard(standardRequest); @@ -334,10 +355,8 @@ 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(); @@ -350,8 +369,10 @@ } + + /** - * 閫氳繃excel瀵煎叆鏁版嵁 + * 瀛d繚閫氳繃excel瀵煎叆鏁版嵁 * * @param request * @param response @@ -368,6 +389,7 @@ params.setTitleRows(2); params.setHeadRows(1); params.setSheetNum(1); + params.setLastOfInvalidRow(23); params.setNeedSave(true); EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { @@ -379,6 +401,7 @@ continue; } standardRequest.setStandardName(standardRequest.getEquipmentName() + "淇濆吇鏍囧噯"); + standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.QUARTERLY_MAINTENANCE.name()); standardRequest.setEquipmentId(equipment.getId()); //璇诲彇淇濆吇鏄庣粏鍐呭 @@ -408,6 +431,68 @@ return Result.ok("鏂囦欢瀵煎叆瀹屾垚锛�"); } + + + /** + * 骞翠繚閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/annualMaintenanceImportExcel", method = RequestMethod.POST) + public Result<?> annualMaintenanceImportExcel(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.setLastOfInvalidRow(23); + 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.ANNUAL_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 file @@ -426,7 +511,7 @@ //绗簩琛岃鍙� Row row = sheet.getRow(1); //璁惧缂栫爜 - Cell equipmentCode = row.getCell(5); + Cell equipmentCode = row.getCell(8); Cell targetCell = row.getCell(0); //鏂囦欢缂栫爜 String fileCodeValue = getCellValue(targetCell); @@ -434,11 +519,16 @@ throw new JeecgBootException("Excel銆�" + file.getOriginalFilename() + "銆戠浜岃绗竴鍒楄幏鍙栧埌鐨勮澶囩紪鍙蜂负绌猴紒"); } request.setFileCode(fileCodeValue.trim()); - 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(CellType.NUMERIC.equals(equipmentCode.getCellType())) { +// request.setEquipmentCode(String.valueOf((int) equipmentCode.getNumericCellValue())); +// }else if(CellType.STRING.equals(equipmentCode.getCellType())) { +// request.setEquipmentCode(equipmentCode.getStringCellValue()); +// } + String equipmentCodeStr = extractEquipmentCode(equipmentCode); + if (StringUtils.isBlank(equipmentCodeStr)) { + throw new JeecgBootException("Excel銆� " + file.getOriginalFilename() + "銆戞病鏈夎鍙栧埌鏈夋晥鐨勮澶囩紪鍙凤紝瀵煎叆澶辫触锛�"); } + request.setEquipmentCode(equipmentCodeStr); if (StringUtils.isBlank(request.getEquipmentCode())) { throw new JeecgBootException("Excel銆� " + file.getOriginalFilename() + "銆戞病鏈夎鍙栧埌璁惧缂栧彿锛屽鍏ュけ璐ワ紒"); } @@ -502,10 +592,16 @@ } Sheet sheet = book.getSheetAt(0); - //绗竴琛岃鍙� - Row row = sheet.getRow(0); + //绗簩琛岃鍙� + Row row = sheet.getRow(1); //璁惧缂栫爜 - Cell equipmentCode = row.getCell(10); + Cell equipmentCode = row.getCell(13); + Cell targetCell = row.getCell(0); + String fileCodeValue = getCellValue(targetCell); + if (fileCodeValue == null || fileCodeValue.trim().isEmpty()) { + throw new JeecgBootException("Excel銆�" + file.getOriginalFilename() + "銆戠浜岃绗竴鍒楄幏鍙栧埌鐨勮澶囩紪鍙蜂负绌猴紒"); + } + request.setFileCode(fileCodeValue.trim()); if(CellType.NUMERIC.equals(equipmentCode.getCellType())) { request.setEquipmentCode(String.valueOf((int) equipmentCode.getNumericCellValue())); }else if(CellType.STRING.equals(equipmentCode.getCellType())) { @@ -515,20 +611,20 @@ throw new JeecgBootException("Excel銆� " + file.getOriginalFilename() + "銆戞病鏈夎鍙栧埌璁惧缂栧彿锛屽鍏ュけ璐ワ紒"); } //鍒濆鏃ユ湡 - Cell initialDate = row.getCell(6); + Cell initialDate = row.getCell(11); if (DateUtil.isCellDateFormatted(initialDate)) { request.setInitialDate(initialDate.getDateCellValue()); } else { request.setInitialDate(new Date()); } //璁惧鍚嶇О - Cell equipmentName = row.getCell(8); - request.setEquipmentName(equipmentName.getStringCellValue()); +// Cell equipmentName = row.getCell(8); +// request.setEquipmentName(equipmentName.getStringCellValue()); //绗簩琛岃鍙� - row = sheet.getRow(1); + row = sheet.getRow(4); //淇濆吇鍛ㄦ湡 - Cell period = row.getCell(6); + Cell period = row.getCell(7); if (CellType.NUMERIC.equals(period.getCellType())) { request.setMaintenancePeriod((int) period.getNumericCellValue()); } else { @@ -541,4 +637,72 @@ log.error("璇诲彇Excel淇℃伅澶辫触锛歿}", e.getMessage(), e); } } + + private int findDataEndRow(InputStream inputStream) throws IOException { + Workbook workbook = null; + try { + workbook = WorkbookFactory.create(inputStream); + Sheet sheet = workbook.getSheetAt(0); + int lastRowNum = sheet.getLastRowNum(); + log.info("Excel鏂囦欢鎬昏鏁�: {}", lastRowNum); + + // 鎵惧埌"瀹炴柦瑕侀"琛岋紝浣滀负鏁版嵁缁撴潫鐨勬爣蹇� + for (int i = 0; i <= lastRowNum; i++) { + Row row = sheet.getRow(i); + if (row == null) continue; + + // 妫�鏌ョA鍒楁槸鍚﹀寘鍚�"瀹炴柦瑕侀" + Cell cell = row.getCell(0); + if (cell != null && cell.getCellType() == CellType.STRING) { + String value = getCellValue(cell).replaceAll("\\s+", ""); + if ("瀹炴柦瑕侀".equals(value)) { + log.info("鎵惧埌'瀹炴柦瑕侀'鍦ㄧ{}琛�", i); + return i - 1; // 杩斿洖"瀹炴柦瑕侀"琛屼箣鍓嶇殑琛屽彿 + } + } + } + + // 濡傛灉娌℃湁鎵惧埌"瀹炴柦瑕侀"锛岃繑鍥炴渶鍚庝竴琛� + log.info("鏈壘鍒�'瀹炴柦瑕侀'锛岃繑鍥炴渶鍚庝竴琛�: {}", lastRowNum); + return lastRowNum; + } finally { + if (workbook != null) { + workbook.close(); + } + } + } + + + + + + /** + * 浠庡崟鍏冩牸涓彁鍙栬澶囩紪鍙凤紝鍘婚櫎鍓嶇紑濡�"璁惧缂栧彿:" + * @param cell 鍗曞厓鏍煎璞� + * @return 绾澶囩紪鍙峰瓧绗︿覆 + */ + private String extractEquipmentCode(Cell cell) { + if (cell == null) { + return null; + } + + String cellValue = getCellValue(cell); + if (StringUtils.isBlank(cellValue)) { + return null; + } + + // 鍘婚櫎鍓嶅悗绌烘牸 + cellValue = cellValue.trim(); + + // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨暟瀛楅儴鍒� + Pattern pattern = Pattern.compile("\\d+"); + Matcher matcher = pattern.matcher(cellValue); + + if (matcher.find()) { + return matcher.group(); + } + + // 濡傛灉娌℃湁鎵惧埌鏁板瓧锛岃繑鍥炲師鍊硷紙鍙兘鏈夊叾浠栨牸寮忥級 + return cellValue; + } } diff --git a/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java b/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java index 7b3bcf8..b930278 100644 --- a/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java +++ b/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java @@ -8,18 +8,46 @@ @Data public class MaintenanceStandardImport implements Serializable { - @Excel(name = "NO", width = 15) +// @Excel(name = "NO", width = 15) +// private String itemCode; +// +// @Excel(name = "鐐规鍐呭", width = 15) +// private String itemName; +// +// @Excel(name = "鐐规鏂规硶", width = 15) +// private String subItemName; +// +// @Excel(name = "閮ㄤ綅鍚嶇О", width = 15) +// private String itemPart; +// +// @Excel(name = "鍩哄噯", width = 15) +// private String itemDemand; + + + + + @Excel(name = "NO") private String itemCode; - @Excel(name = "鐐规鍐呭", width = 15) - private String itemName; + @Excel(name = "鐐规鏉′欢") + private String condition; - @Excel(name = "鐐规鏂规硶", width = 15) - private String subItemName; - - @Excel(name = "閮ㄤ綅鍚嶇О", width = 15) + @Excel(name = "閮ㄤ綅鍚嶇О") private String itemPart; - @Excel(name = "鍩哄噯", width = 15) + @Excel(name = "鐐规鍐呭") + private String itemName; + + @Excel(name = "鐐规鏂规硶") + private String subItemName; + + @Excel(name = "鍩哄噯") private String itemDemand; + + @Excel(name = "寮傚父澶勭悊鍩哄噯") + private String abnormal; + + @Excel(name = "鍛ㄦ湡") + private String period; + } diff --git a/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java b/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java index 9ce89d0..e2a6fc7 100644 --- a/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java +++ b/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java @@ -83,9 +83,9 @@ /** * 浣跨敤閮ㄩ棬 */ - @Excel(name = "浣跨敤杞﹂棿", width = 25, dictTable = "mdc_production", dicText = "production_name", dicCode = "id", orderNum = "9") + @Excel(name = "浣跨敤杞﹂棿", width = 25, dictTable = "base_factory", dicText = "factory_name", dicCode = "id", orderNum = "9") @ApiModelProperty(value = "浣跨敤閮ㄩ棬") - @Dict(dicCode = "mdc_production, production_name, id") + @Dict(dicCode = "base_factory, factory_name, id") private String orgId; /** * 璁惧绠$悊鍛� diff --git a/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandard.java b/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandard.java index 5dabd18..e93dcae 100644 --- a/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandard.java +++ b/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandard.java @@ -115,12 +115,6 @@ */ @ApiModelProperty(value = "鍙傝�冩枃浠�") private String referenceFile; - /** - * 鏈�鏂扮敓鎴愬伐鍗曟椂闂� - * 涓嬩竴娆$敓鎴愭椂闂翠负姝ゆ椂闂� + 淇濆吇鍛ㄦ湡 - */ - @ApiModelProperty(value = "鏈�鏂扮敓鎴愬伐鍗曟椂闂�") - private Date lastGenerateTime; //鍒楄〃灞曠ず @TableField(exist = false) diff --git a/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java b/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java index ceecea8..c415d80 100644 --- a/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java +++ b/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java @@ -75,6 +75,7 @@ public EamMaintenanceStandardDetail(MaintenanceStandardImport dto) { this.itemCode = Integer.valueOf(dto.getItemCode()); this.itemPart = dto.getItemPart(); + this.checkMethod=dto.getCondition(); this.itemName = dto.getItemName(); this.itemDemand = dto.getItemDemand(); } diff --git a/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java b/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java index 968e0e3..a46ac13 100644 --- a/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java +++ b/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java @@ -103,14 +103,14 @@ if (sysUser == null) { return page; } - if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { - //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 - List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); - queryWrapper.in("e.equipment_code", equipArr); - } else { - //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� - queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id", sysUser.getId()); - } +// if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { +// //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 +// List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); +// queryWrapper.in("e.equipment_code", equipArr); +// } else { +// //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� +// queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id", sysUser.getId()); +// } //鏌ヨ鏉′欢杩囨护 if (eamEquipment != null) { if (StringUtils.isNotBlank(eamEquipment.getEquipmentCode())) { diff --git a/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java b/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java index 1315ecf..45637b6 100644 --- a/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java +++ b/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java @@ -55,14 +55,14 @@ if (sysUser == null) { return page; } - if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { - //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 - List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); - queryWrapper.in("e.equipment_code", equipArr); - } else { - //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� - queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId()); - } +// if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { +// //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 +// List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); +// queryWrapper.in("e.equipment_code", equipArr); +// } else { +// //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� +// queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId()); +// } if(eamMaintenanceStandard != null) { //缂栫爜 妯$硦鏌ヨ if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardCode())) { -- Gitblit v1.9.3