From fd479eeb7dae6ec6b8b83d18e07aa163e8357eff Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期一, 04 八月 2025 21:26:03 +0800
Subject: [PATCH] 改造保养规范流程与升版导入代码

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java |  225 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 180 insertions(+), 45 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
index b26bfbe..429a12f 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
@@ -80,8 +80,6 @@
     @Autowired
     private IEamEquipmentService eamEquipmentService;
     @Autowired
-    private IEamReportRepairService eamReportRepairService;
-    @Autowired
     private IEamEquipmentExtendService eamEquipmentExtendService;
     @Autowired
     private IEamBaseHFCodeService hfCodeService;
@@ -114,6 +112,9 @@
         }
         //鏌ヨ鏉′欢杩囨护
         if (query != null) {
+            if (StringUtils.isNotBlank(query.getId())){
+                queryWrapper.eq("wmo.id", query.getId());
+            }
             if (StringUtils.isNotBlank(query.getEquipmentId())) {
                 queryWrapper.eq("wmo.equipment_id", query.getEquipmentId());
             }
@@ -180,6 +181,7 @@
             eamMaintenanceStandardDetailList.forEach(item -> {
                 EamSecondMaintenanceOrderDetail detail = new EamSecondMaintenanceOrderDetail();
                 BeanUtils.copyProperties(item, detail);
+                detail.setId(null);
                 detail.setOrderId(order.getId());
                 requestTableDetailList.add(detail);
             });
@@ -254,17 +256,28 @@
             throw new JeecgBootException("璁惧涓嶅瓨鍦紝娣诲姞澶辫触锛�");
         }
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        if(sysUser == null || !BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
-            throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒");
+        if(sysUser != null) {
+            if (!BusinessCodeConst.PCR0001.equals(sysUser.getPost()) && !BusinessCodeConst.PCR0002.equals(sysUser.getPost())){
+                throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒");
+            }
         }
-        entity.setOperator(sysUser.getUsername());
+        List<String> usernames = new ArrayList<>();
+        if (sysUser != null) {
+            if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
+                entity.setOperator(sysUser.getUsername());
+                usernames.add(entity.getOperator());
+            }
+            if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
+                entity.setRepairman(sysUser.getUsername());
+                usernames.add(entity.getRepairman());
+            }
+        }
         entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
         entity.setActualStartTime(new Date());
         eamSecondMaintenanceOrderMapper.updateById(entity);
-
         //鍚姩娴佺▼
-        flowCommonService.initActBusiness("宸ュ崟鍙�: " + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";瀹夎浣嶇疆" + equipment.getInstallationPosition(),
-                entity.getId(), "IEamSecondMaintenanceOrderService", "second_maintenance_process", null);
+        flowCommonService.initActBusiness("宸ュ崟鍙�: " + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + "杩涜璁惧浜岀骇淇濆吇",
+                entity.getId(), "IEamSecondMaintenanceOrderService", "SecondMaintenance_Process", null);
         Map<String, Object> variables = new HashMap<>();
         variables.put("dataId", entity.getId());
         if (StrUtil.isEmpty(entity.getRemark())) {
@@ -275,10 +288,24 @@
             variables.put("comment", entity.getRemark());
         }
         variables.put("proofreading", true);
-        List<String> usernames = new ArrayList<>();
-        usernames.add(entity.getOperator());
-        variables.put("NextAssignee", usernames);
-        Result result = flowDefinitionService.startProcessInstanceByKey("second_maintenance_process", variables);
+        if (sysUser != null) {
+            if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
+                variables.put("operator_task", usernames);
+                List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002);
+                if (!CollectionUtils.isEmpty(userSelectorList)) {
+                    List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    variables.put("maintenance_task",usernameList);
+                }
+            }else if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
+                variables.put("maintenance_task", usernames);
+                List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
+                if (!CollectionUtils.isEmpty(userSelectorList)) {
+                    List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    variables.put("operator_task",usernameList);
+                }
+            }
+        }
+        Result result = flowDefinitionService.startProcessInstanceByKey("SecondMaintenance_Process", variables);
         if (result != null) {
             //鏇存柊璁惧淇濆吇鐘舵��
             eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name());
@@ -302,7 +329,7 @@
         }
         request.setAssignee(user.getUsername());
         // 鑾峰彇娴佺▼涓氬姟璁板綍
-        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId());
+        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId(), request.getTaskId());
         if (flowMyBusiness == null) {
             throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�");
         }
@@ -331,50 +358,158 @@
         List<UserSelector> userSelectors;
         switch (status) {
             case UNDER_MAINTENANCE:
+                //淇濆吇涓�
+                boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId());
                 //鎵ц瀹屾垚
-                //璁惧绠$悊鍛樼‘璁�
-//                String equipmentManager = equipment.getEquipmentManager();
-//                if(StringUtils.isBlank(equipmentManager)) {
-//                    throw new JeecgBootException("璁惧鏈垎閰嶈澶囩鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
-//                }
-//                userApprovalList = Collections.singletonList(equipmentManager);
-                values.put("dataId", entity.getId());
-                values.put("organization", "浜屼繚鎵ц缁撴潫");
-                values.put("comment", "浜屼繚鎵ц缁撴潫");
-//                values.put("NextAssignee", userApprovalList);
-                request.setComment("浜屼繚鎵ц缁撴潫");
-                //璁剧疆entity
-                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_CONFIRM.name());
-                entity.setActualEndTime(new Date());
-                //鏇存柊璁惧淇濆吇鐘舵��
-                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.SECOND_MAINTENANCE_WAIT_CONFIRM.name());
-                break;
-            case WAIT_CONFIRM:
-                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(),null, BusinessCodeConst.PCR0003);
+                 userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0004);
                 if (CollectionUtil.isEmpty(userSelectors)) {
-                    throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+                    throw new JeecgBootException("璁惧鏈瓨鍦ㄧ鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+                }else{
+                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    if (parallelCompletion) {
+                        values.put("NextAssignee", userApprovalList);
+                        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name());
+                        entity.setActualEndTime(new Date());
+                    }
                 }
-                //鐝粍闀跨‘璁�
-                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
-                //璁剧疆entity
-                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_LEADER_CONFIRM.name());
-                entity.setConfirmTime(new Date());
-                break;
-            case WAIT_LEADER_CONFIRM:
+                if (BusinessCodeConst.PCR0001.equals(user.getPost())) {
+                    entity.setOperator(user.getUsername());
+                    values.put("organization", "浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�");
+                    values.put("comment", "浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�");
+                    request.setComment("浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�");
+                    //澶勭悊瀵瑰簲璇︽儏
+                    if (CollectionUtils.isNotEmpty(request.getTableDetailList())){
+                        //鍒犻櫎鍘熸湁鏁版嵁
+                        List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
+                        //鍏堝垹闄ゅ師鏈�
+                        LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
+                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId());
+                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.OPERATOR_MAINTENANCE.name());
+                        secondMaintenanceOrderDetailService.remove(queryWrapper);
+                        request.getTableDetailList().forEach(tableDetail -> {
+                            EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail();
+                            BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail);
+                            eamMaintenanceStandardDetail.setOrderId(entity.getId());
+                            eamMaintenanceStandardDetail.setCreateBy(user.getUsername());
+                            addList.add(eamMaintenanceStandardDetail);
+                        });
+                        secondMaintenanceOrderDetailService.saveBatch(addList);
+                    }
+                }else if (BusinessCodeConst.PCR0002.equals(user.getPost())) {
+                    entity.setRepairman(user.getUsername());
+                    values.put("organization", "浜屼繚缁翠慨宸ユ墽琛岀粨鏉�");
+                    values.put("comment", "浜屼繚缁翠慨宸ユ墽琛岀粨鏉�");
+                    request.setComment("浜屼繚缁翠慨宸ユ墽琛岀粨鏉�");
+                    //澶勭悊瀵瑰簲璇︽儏
+                    if (CollectionUtils.isNotEmpty(request.getTableDetailList())){
+                        //鍒犻櫎鍘熸湁鏁版嵁
+                        List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
+                        //鍏堝垹闄ゅ師鏈�
+                        LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
+                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId());
+                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.REPAIRER_MAINTENANCE.name());
+                        secondMaintenanceOrderDetailService.remove(queryWrapper);
+                        request.getTableDetailList().forEach(tableDetail -> {
+                            EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail();
+                            BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail);
+                            eamMaintenanceStandardDetail.setOrderId(entity.getId());
+                            eamMaintenanceStandardDetail.setCreateBy(user.getUsername());
+                            addList.add(eamMaintenanceStandardDetail);
+                        });
+                        secondMaintenanceOrderDetailService.saveBatch(addList);
+                    }
+                }
                 values.put("dataId", entity.getId());
-                //璁剧疆entity
-                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
-                //鏇存柊璁惧淇濆吇鐘舵��
-                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
                 break;
+            case WAIT_ADMIN_CONFIRM:
+                //绠$悊鍛樼‘璁�
+                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0006);
+                if (CollectionUtil.isEmpty(userSelectors)) {
+                    throw new JeecgBootException("璁惧鏈瓨鍦ㄦ鏌ヤ汉锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+                }else{
+                    userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    values.put("dataId", entity.getId());
+                    if (StrUtil.isEmpty(request.getDealDescription())){
+                        request.setDealDescription("");
+                    }
+                    values.put("organization",request.getDealDescription());
+                    values.put("comment", request.getDealDescription());
+                    values.put("manageUserResult",request.getManageUserResult());
+                    request.setComment(request.getDealDescription());
+                    if (request.getManageUserResult().equals("2")){
+                        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
+                    }else {
+                        values.put("NextAssignee", userApprovalList);
+                        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_INSPECTOR_CONFIRM.name());
+                        entity.setConfirmTime(new Date());
+                        entity.setManageUser(user.getUsername());
+                        entity.setProblemDescription(request.getProblemDescription());
+                        entity.setManageUserResult(request.getManageUserResult());
+                        entity.setDealDescription(request.getDealDescription());
+                    }
+                }
+                break;
+            case WAIT_INSPECTOR_CONFIRM:
+                //妫�鏌ヤ汉纭
+                if (StrUtil.isEmpty(request.getInspectConfirmComment())){
+                    request.setInspectConfirmComment("");
+                }
+                values.put("dataId", entity.getId());
+                values.put("organization",request.getInspectConfirmComment());
+                values.put("comment", request.getInspectConfirmComment());
+                values.put("inspectorResult",request.getInspectorResult());
+                request.setComment(request.getInspectConfirmComment());
+                if (request.getInspectorResult().equals("2")){
+                    entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name());
+                    userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0004);
+                    if (CollectionUtil.isEmpty(userSelectors)) {
+                        throw new JeecgBootException("璁惧鏈瓨鍦ㄨ溅闂磋澶囩鐞嗗憳锛屾棤娉曡繘鍏ラ┏鍥炲鎵癸紒");
+                    }else{
+                        userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                        values.put("NextAssignee", userApprovalList);
+                    }
+                }else {
+                    entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
+                    entity.setInspector(user.getUsername());
+                    entity.setInspectorResult(request.getInspectorResult());
+                    entity.setInspectConfirmComment(request.getInspectConfirmComment());
+                    entity.setInspectConfirmTime(new Date());
+                }
+                break;
+            default:
+                throw  new JeecgBootException("瀹℃壒澶辫触");
         }
         request.setValues(values);
-
         // 瀹屾垚娴佺▼浠诲姟
         Result result = flowTaskService.complete(request);
         if (!result.isSuccess()) {
             throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
         }
+        if (user.getPost().equals(BusinessCodeConst.PCR0004)&&request.getManageUserResult().equals("2")){
+            //绠$悊鍛樻嫆缁濓紝浼氱鑺傜偣淇敼瀵瑰簲鍏崇郴
+            List<FlowMyBusiness> list = flowMyBusinessService.list(new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, request.getInstanceId()));
+            if (CollectionUtils.isNotEmpty(list)) {
+                list.forEach(item -> {
+                    if (item.getTaskNameId().equals("maintenance_task")) {
+                        //鑾峰彇缁翠慨宸ュ矖浣嶇敤鎴�
+                        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002);
+                        if (!CollectionUtils.isEmpty(userSelectorList)) {
+                            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                            item.setTodoUsers(JSON.toJSONString(usernameList));
+                        }
+                    }
+                    if (item.getTaskNameId().equals("operator_task")) {
+                        //鑾峰彇鎿嶄綔浜哄矖浣嶇敤鎴�
+                        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
+                        if (!CollectionUtils.isEmpty(userSelectorList)) {
+                            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                            item.setTodoUsers(JSON.toJSONString(usernameList));
+                        }
+                    }
+                });
+                flowMyBusinessService.updateBatchById(list);
+            }
+        }
         //淇濆瓨宸ュ崟
         eamSecondMaintenanceOrderMapper.updateById(entity);
         return entity;

--
Gitblit v1.9.3