From ecb8ee9c13ef1d4b7c0324dcd39e3ae34d9ce5b5 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Sat, 14 Sep 2024 23:21:05 +0800
Subject: [PATCH] 1、自行受理bug修复2 2、流程进度展示bug修复2

---
 dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml      |   23 +++++--
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java   |  117 ++++++++++++++++++++++++++++++--------
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/WebCaseFlowDTO.java |    5 +
 3 files changed, 113 insertions(+), 32 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/WebCaseFlowDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/WebCaseFlowDTO.java
index edd8ee6..2509ec1 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/WebCaseFlowDTO.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/WebCaseFlowDTO.java
@@ -20,6 +20,11 @@
 public class WebCaseFlowDTO {
 
     /**
+     * 流程进度名称
+     */
+    private String processName;
+
+    /**
      * 流程节点名称
      */
     private String nodeShowName;
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
index 776d69a..c399f44 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
@@ -413,20 +413,22 @@
             for (CaseTask caseTask: handleCaseTaskList){
                 // 已结束节点
                 if (CaseTaskConsts.TASK_STATUS_2 == caseTask.getStatus()){
-                    // 待受理节点,需要加多一个签收节点
+                    // 待受理并已签收的节点,需要加多一个签收节点
                     if(caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_DSL.getIndex())
                             || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_DSL.getIndex())
                             || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_DSL.getIndex())
                             || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSL.getIndex())){
-                        WebCaseFlowDTO slWebCaseFlowDTO = new WebCaseFlowDTO();
-                        slWebCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
-                        slWebCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
-                        slWebCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName());
-                        slWebCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
-                        slWebCaseFlowDTO.setHandleNotes("已签收");
-                        slWebCaseFlowDTO.setTaskType(caseTask.getTaskType());
-                        slWebCaseFlowDTO.setStatus(caseTask.getStatus());
-                        handleCaseFlowList.add(slWebCaseFlowDTO);
+                        if (CaseTaskConsts.SIGN_STATUS_2 == caseTask.getSignStatus()){
+                            WebCaseFlowDTO slWebCaseFlowDTO = new WebCaseFlowDTO();
+                            slWebCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
+                            slWebCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
+                            slWebCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName());
+                            slWebCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
+                            slWebCaseFlowDTO.setHandleNotes("已签收");
+                            slWebCaseFlowDTO.setTaskType(caseTask.getTaskType());
+                            slWebCaseFlowDTO.setStatus(caseTask.getStatus());
+                            handleCaseFlowList.add(slWebCaseFlowDTO);
+                        }
                     }
                     // 回退审核节点,需要加多一个回退申请节点
                     if(caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex())
@@ -460,12 +462,18 @@
                     // 普通节点
                     WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
                     webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
-                    webCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
                     webCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName());
                     webCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
                     webCaseFlowDTO.setStatus(caseTask.getStatus());
                     webCaseFlowDTO.setHandleNotes(caseTask.getHandleIllust());
                     webCaseFlowDTO.setTaskType(caseTask.getTaskType());
+                    // 当事人评价节点,特殊处理
+                    if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())){
+                        webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
+                        webCaseFlowDTO.setProcessName(caseTask.getNodeShowName());
+                    }else{
+                        webCaseFlowDTO.setHandleUnitName(caseTask.getHandleUnitName());
+                    }
                     // 审核节点要判断通过/不通过
                     if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_JASH.getIndex())
                             || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex())
@@ -496,8 +504,13 @@
                 }else {
                     // 进行中的节点
                     WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
-                    webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
-                    webCaseFlowDTO.setHandleUnitName(caseTask.getCandeUnitName());
+                    // 当事人评价节点,特殊处理
+                    if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())){
+                        webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
+                        webCaseFlowDTO.setProcessName(caseTask.getNodeShowName());
+                    }else{
+                        webCaseFlowDTO.setHandleUnitName(caseTask.getCandeUnitName());
+                    }
                     webCaseFlowDTO.setStatus(caseTask.getStatus());
                     handleCaseFlowList.add(webCaseFlowDTO);
                 }
@@ -905,6 +918,10 @@
                         // 系统给综治中心分派,不需要签收
                         dfpCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                         dfpCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
+                        // 任务处理时限
+                        if (firstFlowNode.getExpire() != 0) {
+                            dfpCaseTask.setExpireTime(DateUtils.addDay(caseInfo.getCreateTime(), firstFlowNode.getExpire()));
+                        }
                         dfpCaseTask.setHandleUnitName("系统派单");
                         dfpCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
                         dfpCaseTask.setHandleIllust("派单至:"+caseDispBaseDTO.getTargetName());
@@ -974,21 +991,61 @@
      */
     public void webStartFlowZXSL(CaseInfo caseInfo, CtUserDTO loginUser){
         try{
-            // 启动自行受理工作流
-            FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_ZXSL, caseInfo.getId());
+            // 启动自行受理工作流,进入待受理节点
+            FlowNode dslFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_ZXSL, caseInfo.getId());
+            // 创建并完成待受理任务
+            CaseTask dslCaseTask = new CaseTask();
+            dslCaseTask.setId(utilsClient.getNewTimeId());
+            dslCaseTask.setCaseId(caseInfo.getId());
+            dslCaseTask.setFlowableId(dslFlowNode.getFlowableId());
+            dslCaseTask.setProcessInstanceId(dslFlowNode.getProcessInstanceId());
+            dslCaseTask.setProcessTaskId(dslFlowNode.getProcessTaskId());
+            dslCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
+            dslCaseTask.setNodeType(dslFlowNode.getNodeType());
+            dslCaseTask.setNodeId(dslFlowNode.getNodeId());
+            dslCaseTask.setNodeName(dslFlowNode.getNodeName());
+            dslCaseTask.setFlowId(dslFlowNode.getFlowId());
+            dslCaseTask.setNodeShowName(dslFlowNode.getNodeShowName());
+            dslCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
+            // 自行受理,任务候选执行者类型是上一步骤选择
+            dslCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
+            dslCaseTask.setCandeUnitId(loginUser.getUnitId());
+            dslCaseTask.setCandeUnitName(loginUser.getUnitName());
+            // 自行受理,不需要签收
+            dslCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
+            dslCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
+            // 任务处理时限
+            if (dslFlowNode.getExpire() != 0) {
+                dslCaseTask.setExpireTime(DateUtils.addDay(caseInfo.getCreateTime(), dslFlowNode.getExpire()));
+            }
+            dslCaseTask.setHandleUnitId(loginUser.getUnitId());
+            dslCaseTask.setHandleUnitName(loginUser.getUnitName());
+            dslCaseTask.setHandleUserId(loginUser.getId());
+            dslCaseTask.setHandleUserName(loginUser.getTrueName());
+            dslCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+            dslCaseTask.setHandleIllust("自行受理");
+            dslCaseTask.setHandleTime(caseInfo.getCreateTime());
+            dslCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+            dslCaseTask.setCustId(caseInfo.getCustId());
+            dslCaseTask.setCreateTime(caseInfo.getCreateTime());
+            dslCaseTask.setUpdateTime(caseInfo.getCreateTime());
+            mapper.insert(dslCaseTask);
+            // 完成待受理任务,走办理反馈节点
+            FlowNode blfkFlowNode = flowInfoService.completeTask(dslCaseTask.getFlowableId(), dslCaseTask.getProcessTaskId(),
+                    FlowableConsts.OPERATION_forward, loginUser.getId());
             // 进入第1个节点-办理反馈
             CaseTask blfkCaseTask = new CaseTask();
             blfkCaseTask.setId(utilsClient.getNewTimeId());
             blfkCaseTask.setCaseId(caseInfo.getId());
-            blfkCaseTask.setFlowableId(firstFlowNode.getFlowableId());
-            blfkCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId());
-            blfkCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId());
+            blfkCaseTask.setFlowableId(blfkFlowNode.getFlowableId());
+            blfkCaseTask.setProcessInstanceId(blfkFlowNode.getProcessInstanceId());
+            blfkCaseTask.setProcessTaskId(blfkFlowNode.getProcessTaskId());
             blfkCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
-            blfkCaseTask.setNodeType(firstFlowNode.getNodeType());
-            blfkCaseTask.setNodeId(firstFlowNode.getNodeId());
-            blfkCaseTask.setNodeName(firstFlowNode.getNodeName());
-            blfkCaseTask.setFlowId(firstFlowNode.getFlowId());
-            blfkCaseTask.setNodeShowName(firstFlowNode.getNodeShowName());
+            blfkCaseTask.setNodeType(blfkFlowNode.getNodeType());
+            blfkCaseTask.setNodeId(blfkFlowNode.getNodeId());
+            blfkCaseTask.setNodeName(blfkFlowNode.getNodeName());
+            blfkCaseTask.setFlowId(blfkFlowNode.getFlowId());
+            blfkCaseTask.setNodeShowName(blfkFlowNode.getNodeShowName());
             blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
             // 通过调度的,任务候选执行者类型是上一步骤选择
             blfkCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
@@ -998,8 +1055,8 @@
             blfkCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
             blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
             // 任务处理时限
-            if (firstFlowNode.getExpire() != 0) {
-                blfkCaseTask.setExpireTime(DateUtils.addDay(caseInfo.getCreateTime(), firstFlowNode.getExpire()));
+            if (blfkFlowNode.getExpire() != 0) {
+                blfkCaseTask.setExpireTime(DateUtils.addDay(caseInfo.getCreateTime(), blfkFlowNode.getExpire()));
             }
             blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
             blfkCaseTask.setCustId(caseInfo.getCustId());
@@ -1016,6 +1073,13 @@
             caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
             caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
             caseInfoService.updateCaseInfo(caseInfoPO);
+            // 更新纠纷扩展信息
+            CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
+            caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId());
+            caseInfoUnfoldPO.setAcceptTime(blfkCaseTask.getCreateTime());
+            caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId());
+            caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName());
+            caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
         }catch (Exception e){
             log.error("[CaseTaskService.webStartFlowZXSL]调用失败,异常信息:"+e, e);
             throw new ServiceException("CaseTaskService.webStartFlowZXSL", e);
@@ -1332,7 +1396,8 @@
             // 新增结案申请信息
             caseWindupApply.setApplyUnitId(loginUser.getUnitId());
             caseWindupApply.setApplyUnitName(loginUser.getUnitName());
-            caseWindupApply.setApplyUserId(loginUser.getTrueName());
+            caseWindupApply.setApplyUserId(loginUser.getId());
+            caseWindupApply.setApplyUserName(loginUser.getTrueName());
             caseWindupApply.setApplyTime(nowDate);
             caseWindupApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
             caseWindupApply.setCreateTime(nowDate);
diff --git a/dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml b/dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml
index 1ab88eb..428c7bc 100644
--- a/dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml
+++ b/dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml
@@ -10,7 +10,6 @@
     <endEvent id="END" name="结束"/>
     <userTask id="JASQ" name="结案申请"/>
     <sequenceFlow id="sid-FE66E67A-D6D4-4E68-BB7E-14A17E87B9E5" sourceRef="JAGD" targetRef="END"/>
-    <sequenceFlow id="sid-E2A63ACD-76CD-4419-A771-C082334A3A11" sourceRef="START" targetRef="BLFK"/>
     <sequenceFlow id="sid-15046AD2-218B-4567-B05A-26B2D0069DE2" name="通过" sourceRef="DSRPJ" targetRef="JAGD">
       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
     </sequenceFlow>
@@ -26,11 +25,16 @@
     <sequenceFlow id="sid-03DCE158-DCD9-4C4F-803A-FA2795072196" name="结案审核不同意不同意" sourceRef="JASH" targetRef="BLFK">
       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jash_bty'}]]></conditionExpression>
     </sequenceFlow>
+    <userTask id="DSL" name="待受理"/>
+    <sequenceFlow id="sid-6435F238-68D1-434F-8830-9130EE87BE4C" name="通过" sourceRef="DSL" targetRef="BLFK">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="sid-B9DCA90A-70F1-4D12-90AE-44A0943FA1B3" sourceRef="START" targetRef="DSL"/>
   </process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_GZDYH_ZXSL_3LEVEL_V1">
     <bpmndi:BPMNPlane bpmnElement="GZDYH_ZXSL_3LEVEL_V1" id="BPMNPlane_GZDYH_ZXSL_3LEVEL_V1">
       <bpmndi:BPMNShape bpmnElement="START" id="BPMNShape_START">
-        <omgdc:Bounds height="30.0" width="30.0" x="195.0" y="160.00001244246837"/>
+        <omgdc:Bounds height="30.0" width="30.0" x="40.0" y="160.00001244246837"/>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="BLFK" id="BPMNShape_BLFK">
         <omgdc:Bounds height="80.0" width="100.0" x="314.9999953061343" y="134.99999798834327"/>
@@ -50,10 +54,9 @@
       <bpmndi:BPMNShape bpmnElement="JASQ" id="BPMNShape_JASQ">
         <omgdc:Bounds height="80.0" width="100.0" x="479.99999284744274" y="134.99998591840347"/>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge bpmnElement="sid-E2A63ACD-76CD-4419-A771-C082334A3A11" id="BPMNEdge_sid-E2A63ACD-76CD-4419-A771-C082334A3A11">
-        <omgdi:waypoint x="224.94999837483869" y="175.00001039707323"/>
-        <omgdi:waypoint x="314.9999950161384" y="174.99999811788496"/>
-      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape bpmnElement="DSL" id="BPMNShape_DSL">
+        <omgdc:Bounds height="80.0" width="100.0" x="135.0" y="135.00001244246837"/>
+      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge bpmnElement="sid-03DCE158-DCD9-4C4F-803A-FA2795072196" id="BPMNEdge_sid-03DCE158-DCD9-4C4F-803A-FA2795072196">
         <omgdi:waypoint x="684.9999901652337" y="134.99999798834327"/>
         <omgdi:waypoint x="684.9999901652337" y="105.00000053644179"/>
@@ -63,6 +66,10 @@
       <bpmndi:BPMNEdge bpmnElement="sid-A0580378-38E0-44D8-981B-9D048ED42E97" id="BPMNEdge_sid-A0580378-38E0-44D8-981B-9D048ED42E97">
         <omgdi:waypoint x="414.94999530600165" y="174.9999943307857"/>
         <omgdi:waypoint x="479.9999928473666" y="174.99998957230346"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="sid-6435F238-68D1-434F-8830-9130EE87BE4C" id="BPMNEdge_sid-6435F238-68D1-434F-8830-9130EE87BE4C">
+        <omgdi:waypoint x="234.95000000000002" y="175.0000084274335"/>
+        <omgdi:waypoint x="314.99999530610273" y="175.0000019993631"/>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-FE66E67A-D6D4-4E68-BB7E-14A17E87B9E5" id="BPMNEdge_sid-FE66E67A-D6D4-4E68-BB7E-14A17E87B9E5">
         <omgdi:waypoint x="1059.9499856948855" y="175.00000415177684"/>
@@ -80,6 +87,10 @@
         <omgdi:waypoint x="579.9499928474428" y="174.99998600593358"/>
         <omgdi:waypoint x="659.9999901652095" y="174.99999338149593"/>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="sid-B9DCA90A-70F1-4D12-90AE-44A0943FA1B3" id="BPMNEdge_sid-B9DCA90A-70F1-4D12-90AE-44A0943FA1B3">
+        <omgdi:waypoint x="69.94999891869115" y="175.00001244246837"/>
+        <omgdi:waypoint x="134.99999999999022" y="175.00001244246837"/>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </definitions>
\ No newline at end of file

--
Gitblit v1.8.0