From 1b7f266af71b91254a22295f1bafc6a905e0b41f Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期六, 05 七月 2025 18:02:18 +0800
Subject: [PATCH] 保养规范修改流程处理

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java |  195 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 186 insertions(+), 9 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
index d69efd8..b83c998 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -12,6 +12,9 @@
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.apache.shiro.SecurityUtils;
 import org.flowable.engine.TaskService;
 import org.flowable.task.api.Task;
@@ -47,9 +50,12 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -133,6 +139,10 @@
                         .or()
                         .like("e.equipment_code", eamMaintenanceStandard.getKeyword()));
             }
+            //id
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getId())) {
+                queryWrapper.eq("ems.id", eamMaintenanceStandard.getId());
+            }
         }
         queryWrapper.orderByDesc("ems.create_time");
         return eamMaintenanceStandardMapper.queryPageList(page, queryWrapper);
@@ -145,7 +155,7 @@
         BeanUtils.copyProperties(standardRequest, entity);
         entity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         //鐗堟湰閫掑
-        entity.setStandardVersion(CommonConstant.OPERATE_TYPE_1);
+        entity.setStandardVersion("v"+CommonConstant.OPERATE_TYPE_1);
         //璁惧澶勭悊
         entity.setEquipmentId(standardRequest.getEquipmentId());
         //鍒犻櫎鏍囪
@@ -209,9 +219,6 @@
         if(entity == null){
             throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�");
         }
-        entity.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
-        //鍘熸潵鐨勪綔搴�
-        eamMaintenanceStandardMapper.updateById(entity);
 
         //鏂板涓�涓増鏈�
         EamMaintenanceStandard newEntity = new EamMaintenanceStandard();
@@ -222,7 +229,16 @@
         newEntity.setInitialDate(standardRequest.getInitialDate());
         newEntity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         //鐗堟湰閫掑
-        newEntity.setStandardVersion(entity.getStandardVersion() + 1);
+        //鑾峰彇鏁板瓧
+        Pattern pattern = Pattern.compile("(\\d+)(?:\\.\\d+)*$");
+        Matcher matcher = pattern.matcher(entity.getStandardVersion());
+        if (matcher.find()) {
+            try {
+                int mainVersion = Integer.parseInt(matcher.group(1));
+                newEntity.setStandardVersion("v"+(mainVersion+1));
+            } catch (NumberFormatException ignored) {
+            }
+        }
         //璁惧澶勭悊
         newEntity.setEquipmentId(standardRequest.getEquipmentId());
         //鍒犻櫎鏍囪
@@ -398,13 +414,27 @@
             // 璁剧疆娴佺▼鍙橀噺
             Map<String, Object> values = setProcessVariables(eamMaintenanceStandard, userId, eamMaintenanceStandardVo);
             eamMaintenanceStandardVo.setValues(values);
-
+            eamMaintenanceStandardVo.setComment(values.get("comment").toString());
             // 瀹屾垚娴佺▼浠诲姟
             Result result = flowTaskService.complete(eamMaintenanceStandardVo);
             if (result.isSuccess()) {
                 if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) {
                     if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("1")){
+                        List<FlowMyBusiness> newbusinessList = flowMyBusinessService.list(
+                                new QueryWrapper<FlowMyBusiness>()
+                                        .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId()));
+                        FlowMyBusiness newflowMyBusiness = newbusinessList.get(0);
                         eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name());
+                        //鑾峰彇flow鐨勬祦绋嬪疄渚媔d,璁剧疆涓嬩竴姝ョ殑澶勭悊浜哄憳
+                        EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId());
+                        EamEquipment eamEquipment=eamEquipmentService.getById(maintenanceStandard.getEquipmentId());
+                        BaseFactory baseFactory=baseFactoryService.getOne(new QueryWrapper<BaseFactory>().eq("org_code", eamEquipment.getFactoryOrgCode()));
+                        List<UserSelector> userSelectorList=sysUserService.selectOperatorFactoryList(eamEquipment.getEquipmentCode(),baseFactory.getId(), BusinessCodeConst.PCR0008);
+                        if (!CollectionUtils.isEmpty(userSelectorList)) {
+                            List<String> usernameList=userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                            newflowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList));
+                            flowMyBusinessService.updateById(newflowMyBusiness);
+                        }
                     }else {
                         eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
                     }
@@ -416,6 +446,20 @@
                 if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) {
                     if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")){
                         eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name());
+                        //鍒ゆ柇鏄惁杩涜鍗囩増锛岄�氳繃璁惧缂栧彿銆佷繚鍏诲垎绫汇�佺姸鎬佽繘琛岀瓫閫�
+                        EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId());
+                        QueryWrapper<EamMaintenanceStandard> queryWrapper=new QueryWrapper<>();
+                        queryWrapper.eq("equipment_id", maintenanceStandard.getEquipmentId());
+                        queryWrapper.eq("maintenance_category", maintenanceStandard.getMaintenanceCategory());
+                        queryWrapper.eq("standard_status", MaintenanceStandardStatusEnum.START.name());
+                        List<EamMaintenanceStandard> list=eamMaintenanceStandardMapper.selectList(queryWrapper);
+                        if (!CollectionUtils.isEmpty(list)) {
+                            //浣滃簾鍘熸湁
+                            for (EamMaintenanceStandard eamMaintenanceStandard1 : list) {
+                                eamMaintenanceStandard1.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
+                                this.updateById(eamMaintenanceStandard1);
+                            }
+                        }
                     }else {
                         eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
                     }
@@ -428,7 +472,6 @@
             } else {
                 return result;
             }
-
             return Result.OK("鎿嶄綔鎴愬姛");
         } catch (Exception e) {
             return Result.error("鎿嶄綔澶辫触锛�" + e.getMessage());
@@ -439,13 +482,15 @@
         Map<String, Object> values = new HashMap<>();
         values.put("dataId", eamMaintenanceStandard.getId());
         values.put("assignee", userId);
-        values.put("organization", eamMaintenanceStandardVo.getComment());
-        values.put("comment", eamMaintenanceStandardVo.getComment());
         if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) {
             values.put("repairManagerApproveResult", eamMaintenanceStandardVo.getRepairManagerApproveResult());
+            values.put("organization", eamMaintenanceStandardVo.getRepairManagerApproveComment());
+            values.put("comment", eamMaintenanceStandardVo.getRepairManagerApproveComment());
         }
         if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) {
             values.put("technicalManagerApproveResult", eamMaintenanceStandardVo.getTechnicalManagerApproveResult());
+            values.put("organization", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
+            values.put("comment", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
         }
         return values;
     }
@@ -475,4 +520,136 @@
     }
 
     /*娴佺▼涓氬姟浠g爜--------------------------缁撴潫*/
+
+
+    /*瀵煎叆鏂囦欢--------------------------寮�濮�*/
+    /**
+     * 瀵煎叆鐐规琛ㄦ暟鎹�
+     * @param file Excel鏂囦欢
+     * @return 瀵煎叆缁撴灉
+     */
+//    public Result<?> importInspectionData(MultipartFile file) {
+//        int successCount = 0;
+//
+//        try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) {
+//            Sheet sheet = workbook.getSheetAt(0);
+//            // 1. 瑙f瀽琛ㄥご淇℃伅
+//            Map<String, String> header = parseHeader(sheet, errors);
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//
+//        return new ImportResult(successCount, errors);
+//    }
+
+    /**
+     * 瑙f瀽琛ㄥご淇℃伅
+     */
+//    private Map<String, String> parseHeader(Sheet sheet, List<ImportError> errors) {
+//        Map<String, String> header = new HashMap<>();
+//        try {
+//            Row headerRow = sheet.getRow(0);
+//            // 绀轰緥锛氱涓�琛岋細璁惧鍚嶇О:鍓茬偓  鍨嬪彿:gta001  缁熶竴缂栧彿:xc001
+//            String cellValue = getCellStringValue(headerRow.getCell(0));
+//
+//            // 浣跨敤姝e垯琛ㄨ揪寮忚В鏋愬叧閿俊鎭�
+//            Pattern pattern = Pattern.compile("璁惧鍚嶇О[:锛歖(\\S+)\\s+鍨嬪彿[:锛歖(\\S+)\\s+缁熶竴缂栧彿[:锛歖(\\S+)\\s+鏃ユ湡[:锛歖(\\S+)\\s+鍗曚綅[:锛歖(\\S+)");
+//            Matcher matcher = pattern.matcher(cellValue);
+//
+//            if (matcher.find()) {
+//                header.put("deviceName", matcher.group(1));
+//                header.put("deviceModel", matcher.group(2));
+//                header.put("deviceCode", matcher.group(3));
+//                header.put("inspectionMonth", matcher.group(4));
+//                header.put("unit", matcher.group(5));
+//            } else {
+//                errors.add(new ImportError("琛ㄥご鏍煎紡閿欒", cellValue, 1));
+//            }
+//        } catch (Exception e) {
+//            errors.add(new ImportError("瑙f瀽琛ㄥご寮傚父", e.getMessage(), 1));
+//        }
+//        return header;
+//    }
+//
+//    /**
+//     * 瑙f瀽姣忔棩鐐规椤圭洰
+//     */
+//    private List<InspectionItem> parseDailyItems(Sheet sheet, List<ImportError> errors) {
+//        List<InspectionItem> items = new ArrayList<>();
+//
+//        // 鐐规椤圭洰浠庣3琛屽紑濮嬶紙搴忓彿浠�1寮�濮嬶級
+//        int startRow = 2;
+//        int rowNum = startRow;
+//
+//        try {
+//            // 鎵惧埌姣忔棩鐐规琛ㄧ殑缁撴潫浣嶇疆锛堢淮鎶よ矗浠讳汉绛惧瓧锛�
+//            while (rowNum <= sheet.getLastRowNum()) {
+//                Row row = sheet.getRow(rowNum);
+//                if (row == null) {
+//                    rowNum++;
+//                    continue;
+//                }
+//
+//                // 鍒ゆ柇鏄惁鍒拌揪缁撴潫浣嶇疆
+//                String sequenceValue = getCellStringValue(row.getCell(0));
+//                if ("9".equals(sequenceValue) || "缁存姢璐d换浜虹瀛�".contains(sequenceValue)) {
+//                    break;
+//                }
+//
+//                // 瑙f瀽椤圭洰琛�
+//                InspectionItem item = new InspectionItem();
+//                item.setSequence(Integer.parseInt(sequenceValue));
+//                item.setProjectName(getCellStringValue(row.getCell(1)));
+//                item.setRequirement(getCellStringValue(row.getCell(2)));
+//
+//                items.add(item);
+//                rowNum++;
+//            }
+//        } catch (Exception e) {
+//            errors.add(new ImportError("瑙f瀽姣忔棩椤圭洰寮傚父", e.getMessage(), rowNum + 1));
+//        }
+//
+//        return items;
+//    }
+//
+//    /**
+//    * 瑙f瀽鍛ㄤ繚鍏婚」鐩�
+//     */
+//    private List<InspectionItem> parseWeeklyItems(Sheet sheet, List<ImportError> errors) {
+//        List<InspectionItem> items = new ArrayList<>();
+//
+//        try {
+//            // 瀹氫綅鍛ㄤ繚鍏绘爣棰樿锛堣鍙�11锛�
+//            int startRow = 10;
+//
+//            // 浠庣12琛屽紑濮嬫槸鍛ㄤ繚鍏婚」鐩�
+//            for (int rowNum = startRow + 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
+//                Row row = sheet.getRow(rowNum);
+//                if (row == null) continue;
+//
+//                String sequenceValue = getCellStringValue(row.getCell(0));
+//
+//                // 閬囧埌缁撴潫鏍囧織鍒欏仠姝㈣В鏋�
+//                if ("鍛ㄤ繚鍏绘搷浣滆�呮墽琛�".contains(sequenceValue)) break;
+//
+//                try {
+//                    InspectionItem item = new InspectionItem();
+//                    item.setSequence(Integer.parseInt(sequenceValue));
+//                    item.setProjectName(getCellStringValue(row.getCell(1)));
+//                    item.setStandard(getCellStringValue(row.getCell(2)));
+//                    item.setRequirement(getCellStringValue(row.getCell(3))); // 鎵ц璁板綍
+//
+//                    items.add(item);
+//                } catch (Exception e) {
+//                    errors.add(new ImportError("瑙f瀽鍛ㄤ繚鍏婚」鐩紓甯�", e.getMessage(), rowNum + 1));
+//                }
+//            }
+//        } catch (Exception e) {
+//            errors.add(new ImportError("瀹氫綅鍛ㄤ繚鍏婚」鐩紓甯�", e.getMessage(), 0));
+//        }
+//
+//        return items;
+//    }
+    /*瀵煎叆鏂囦欢--------------------------缁撴潫*/
 }

--
Gitblit v1.9.3