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