From 548de3053898bc6571c90d014a40050c39a7d195 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期六, 02 八月 2025 15:33:07 +0800
Subject: [PATCH] 二保添加流转节点

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java          |   76 +++++++++++++++++++++++++++-----------
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrder.java                    |    4 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamSecondMaintenanceOrderMapper.xml                  |    3 +
 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml |    2 
 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml                      |   21 ++++------
 5 files changed, 70 insertions(+), 36 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrder.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrder.java
index 9624cd6..4a52c29 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrder.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrder.java
@@ -183,4 +183,8 @@
     //鍨嬪彿
     @TableField(exist = false)
     private String equipmentModel;
+
+    //娴佽浆鑺傜偣浣跨敤鏌ヨ
+    @TableField(exist = false)
+    private String procInstId;
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamSecondMaintenanceOrderMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamSecondMaintenanceOrderMapper.xml
index 5034d04..d0e591c 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamSecondMaintenanceOrderMapper.xml
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamSecondMaintenanceOrderMapper.xml
@@ -3,10 +3,11 @@
 <mapper namespace="org.jeecg.modules.eam.mapper.EamSecondMaintenanceOrderMapper">
 
     <select id="queryPageList" resultType="org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder">
-        select wmo.*, e.equipment_code, e.equipment_name,e.equipment_model
+        select wmo.*, e.equipment_code, e.equipment_name,e.equipment_model,f.process_instance_id as 'procInstId'
         from eam_second_maintenance_order wmo
         inner join eam_equipment e
         on wmo.equipment_id = e.id
+        left join flow_my_business f on f.data_id=wmo.id
         ${ew.customSqlSegment}
     </select>
 </mapper>
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 a24b234..97aaf33 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;
@@ -430,43 +428,52 @@
                     throw new JeecgBootException("璁惧鏈瓨鍦ㄦ鏌ヤ汉锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
                 }else{
                     userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
-                    values.put("NextAssignee", userApprovalList);
                     values.put("dataId", entity.getId());
-                    if (StrUtil.isEmpty(request.getDealDescription())){
-                        request.setDealDescription("");
+                    if (StrUtil.isEmpty(request.getManageUserResult())){
+                        request.setManageUserResult("");
                     }
                     values.put("organization",request.getDealDescription());
-                    values.put("comment", request.getDealDescription());
+                    values.put("comment", request.getManageUserResult());
                     values.put("manageUserResult",request.getManageUserResult());
-                    entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_INSPECTOR_CONFIRM.name());
-                    entity.setManageUser(user.getUsername());
-                    entity.setProblemDescription(request.getProblemDescription());
-                    entity.setManageUserResult(request.getManageUserResult());
-                    entity.setDealDescription(request.getDealDescription());
-                    entity.setConfirmTime(new Date());
                     request.setComment(request.getDealDescription());
                     if (request.getManageUserResult().equals("2")){
-                        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.REJECTED.name());
+                        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.getDealDescription())){
-                    request.setDealDescription("");
+                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());
-                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
-                entity.setInspector(user.getUsername());
-                entity.setInspectorResult(request.getInspectorResult());
-                entity.setInspectConfirmComment(request.getInspectConfirmComment());
-                entity.setInspectConfirmTime(new Date());
-                request.setComment(request.getDealDescription());
+                request.setComment(request.getInspectConfirmComment());
                 if (request.getInspectorResult().equals("2")){
-                    entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.REJECTED.name());
+                    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:
@@ -478,6 +485,31 @@
         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;
diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml
index 24e3fe8..5fdbd45 100644
--- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml
+++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml
@@ -47,7 +47,7 @@
     <select id="ListMyBusiness" resultType="org.jeecg.modules.flowable.domain.dto.FlowTaskDto">
         SELECT
         latest_task.ID_ AS 'taskId',
-        latest_task.PROC_DEF_ID_ AS 'procInstId',
+        latest_task.PROC_INST_ID_ AS 'procInstId',
         latest_task.PROC_DEF_ID_ AS 'processInstanceId',
         ACT_RE_PROCDEF.CATEGORY_ AS 'category',
         ACT_RE_PROCDEF.NAME_ AS 'procDefName',
diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml
index edb48a8..a824ccb 100644
--- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml
+++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml
@@ -28,8 +28,7 @@
             SELECT
                 p.PROC_INST_ID_ AS procInstId,
                 p.BUSINESS_KEY_ AS businessKey,
-                p.START_TIME_ AS procStartTime,
-                p.END_TIME_ AS procEndTime,
+                a.EXECUTION_ID_ AS executionId,
                 a.ACT_ID_,
                 COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) AS actName,
                 a.ACT_TYPE_ AS actType,
@@ -38,10 +37,12 @@
                 c.NAME_ AS taskName,
                 c.ASSIGNEE_ AS assignee,
                 c.DESCRIPTION_ AS description,
--- 浣跨敤 LEAD 鑾峰彇涓嬩竴涓椿鍔ㄤ俊鎭�
-                LEAD ( COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActName,
-                LEAD ( a.ACT_TYPE_ ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActType,
-                LEAD ( a.START_TIME_ ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActStartTime
+                LEAD ( COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) ) OVER ( PARTITION BY p.PROC_INST_ID_, a.EXECUTION_ID_
+                    ORDER BY a.START_TIME_ ) AS nextActName,
+                LEAD ( a.ACT_TYPE_ ) OVER ( PARTITION BY p.PROC_INST_ID_, a.EXECUTION_ID_
+                    ORDER BY a.START_TIME_ ) AS nextActType,
+                LEAD ( a.START_TIME_ ) OVER ( PARTITION BY p.PROC_INST_ID_, a.EXECUTION_ID_
+                    ORDER BY a.START_TIME_ ) AS nextActStartTime
             FROM
                 act_hi_procinst p
                     LEFT JOIN act_hi_actinst a ON p.PROC_INST_ID_ = a.PROC_INST_ID_
@@ -52,23 +53,19 @@
         ) SELECT
               procInstId,
               businessKey,
--- 褰撳墠娲诲姩锛坲serTask锛変俊鎭�
               actName AS userTaskName,
               taskName,
               assignee,
               actStartTime,
               actEndTime,
               description,
--- 涓嬩竴涓椿鍔紙sequenceFlow锛変俊鎭�
               nextActName AS sequenceFlowName,
               nextActStartTime AS sequenceFlowStartTime
         FROM
             ActivitySequence
         WHERE
-            actType = 'userTask' -- 绛涢�夊綋鍓嶆椿鍔ㄤ负 userTask
-
-          AND nextActType = 'sequenceFlow' -- 涓斾笅涓�涓椿鍔ㄤ负 sequenceFlow
-
+            actType = 'userTask'
+          AND nextActType = 'sequenceFlow'
         ORDER BY
             actStartTime;
     </select>

--
Gitblit v1.9.3