From 592c8a2dcc33fd6eb32dbcfbaed4a16aab31d28d Mon Sep 17 00:00:00 2001
From: liyj <15602261488@163.com>
Date: Mon, 14 Oct 2024 18:02:15 +0800
Subject: [PATCH] 1、线上来访、来访登记、自行排查流程优化 2、任务新增处理耗时、是否超时、超时小时记录

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java |  126 +++++++++++++++++++++++------------------
 1 files changed, 71 insertions(+), 55 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java
index 32c1c62..29b9c33 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java
@@ -172,52 +172,60 @@
             caseEvaluate.setCustId(loginUser.getCustId());
             caseEvaluate.setUpdateTime(nowDate);
             this.saveOrUpdate(caseEvaluate);
-            // 查询当事人评价任务
+            // 查询当事人评价节点任务
             QueryWrapper<CaseTask> caseTaskQueryWrapper = new QueryWrapper<>();
-            caseTaskQueryWrapper.eq("case_id", caseEvaluate.getCaseId()).eq("node_id", FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex());
+            caseTaskQueryWrapper.eq("case_id", caseEvaluate.getCaseId())
+                    .eq("node_id", FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())
+                    .eq("status", CaseTaskConsts.TASK_STATUS_1);
             CaseTask dsrpjCaseTask = caseTaskService.getOne(caseTaskQueryWrapper);
-            // 完成当前当事人评价任务
+            // 完成当前当事人评价节点任务
             dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
             dsrpjCaseTask.setHandleUnitId(dsrpjCaseTask.getCandeUnitId());
             dsrpjCaseTask.setHandleUnitName(dsrpjCaseTask.getCandeUnitName());
             dsrpjCaseTask.setHandleUserId(loginUser.getId());
             dsrpjCaseTask.setHandleUserName(loginUser.getTrueName()+"(当事人)");
-            dsrpjCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+            dsrpjCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0);
             dsrpjCaseTask.setHandleTime(nowDate);
             dsrpjCaseTask.setUpdateTime(nowDate);
             caseTaskService.updateCaseTask(dsrpjCaseTask);
-            // 完成当前当事人评价工作流任务
-            FlowNode dsrpjFlowNode = flowInfoService.completeTask(dsrpjCaseTask.getFlowableId(), dsrpjCaseTask.getProcessTaskId(),
+            // 完成当前当事人评价工作流节点任务,进入结案归档节点
+            FlowNode jagdFlowNode = flowInfoService.completeTask(dsrpjCaseTask.getFlowableId(), dsrpjCaseTask.getProcessTaskId(),
                     FlowableConsts.OPERATION_forward, userId);
-            // 默认完成结案归档任务
+            // 创建并完成结案归档任务
             CaseTask jagdCaseTask = new CaseTask();
             jagdCaseTask.setId(utilsClient.getNewTimeId());
             jagdCaseTask.setCaseId(caseEvaluate.getCaseId());
-            jagdCaseTask.setFlowableId(dsrpjFlowNode.getFlowableId());
-            jagdCaseTask.setProcessInstanceId(dsrpjFlowNode.getProcessInstanceId());
-            jagdCaseTask.setProcessTaskId(dsrpjFlowNode.getProcessTaskId());
-            jagdCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
-            jagdCaseTask.setNodeType(dsrpjFlowNode.getNodeType());
-            jagdCaseTask.setNodeId(dsrpjFlowNode.getNodeId());
-            jagdCaseTask.setNodeName(dsrpjFlowNode.getNodeName());
-            jagdCaseTask.setFlowId(dsrpjFlowNode.getFlowId());
-            jagdCaseTask.setNodeShowName(dsrpjFlowNode.getNodeShowName());
+            jagdCaseTask.setFlowableId(jagdFlowNode.getFlowableId());
+            jagdCaseTask.setProcessInstanceId(jagdFlowNode.getProcessInstanceId());
+            jagdCaseTask.setProcessTaskId(jagdFlowNode.getProcessTaskId());
+            jagdCaseTask.setNodeType(jagdFlowNode.getNodeType());
+            jagdCaseTask.setNodeId(jagdFlowNode.getNodeId());
+            jagdCaseTask.setNodeName(jagdFlowNode.getNodeName());
+            jagdCaseTask.setFlowId(jagdFlowNode.getFlowId());
+            jagdCaseTask.setNodeShowName(jagdFlowNode.getNodeShowName());
             jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
-            // 通过调度的,任务候选执行者类型是上一步骤选择
-            jagdCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
-            jagdCaseTask.setCandeUnitId(dsrpjCaseTask.getCandeUnitId());
-            jagdCaseTask.setCandeUnitName(dsrpjCaseTask.getCandeUnitName());
-            // 系不需要签收
+            // 任务所属单位:结案申请组织
+            caseTaskQueryWrapper.clear();
+            caseTaskQueryWrapper.eq("case_id", caseEvaluate.getCaseId())
+                    .eq("node_id", FlowNodeEnum.FLOW_NODE_JASQ.getIndex())
+                    .eq("status", CaseTaskConsts.TASK_STATUS_2).orderByDesc("create_time");
+            List<CaseTask> jasqCaseTaskList = caseTaskService.list(caseTaskQueryWrapper);
+            jagdCaseTask.setCandeUnitId(jasqCaseTaskList.get(0).getHandleUnitId());
+            jagdCaseTask.setCandeUnitName(jasqCaseTaskList.get(0).getHandleUnitName());
+            // 受理后的任务,不需要签收
             jagdCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
             jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
             // 任务处理时限
-            if (dsrpjFlowNode.getExpire() != 0) {
-                jagdCaseTask.setExpireTime(DateUtils.addDay(nowDate, dsrpjFlowNode.getExpire()));
+            if (jagdFlowNode.getExpire() != 0) {
+                jagdCaseTask.setExpireTime(DateUtils.addDay(nowDate, jagdFlowNode.getExpire()));
             }
-            jagdCaseTask.setHandleUnitId(dsrpjCaseTask.getCandeUnitId());
-            jagdCaseTask.setHandleUnitName(dsrpjCaseTask.getCandeUnitName());
-            jagdCaseTask.setHandleUserName("系统自动");
-            jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+            jagdCaseTask.setHandleUnitId(jasqCaseTaskList.get(0).getHandleUnitId());
+            jagdCaseTask.setHandleUnitName(jasqCaseTaskList.get(0).getHandleUnitName());
+            jagdCaseTask.setHandleDeptId(jasqCaseTaskList.get(0).getHandleDeptId());
+            jagdCaseTask.setHandleDeptName(jasqCaseTaskList.get(0).getHandleDeptName());
+            jagdCaseTask.setHandleUserId(jasqCaseTaskList.get(0).getHandleUserId());
+            jagdCaseTask.setHandleUserName(jasqCaseTaskList.get(0).getHandleUserName());
+            jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0);
             jagdCaseTask.setHandleTime(nowDate);
             jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
             jagdCaseTask.setCustId(dsrpjCaseTask.getCustId());
@@ -226,7 +234,7 @@
             caseTaskService.save(jagdCaseTask);
             // 结束工作流流程
             flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(),
-                    FlowableConsts.OPERATION_jb_zszz, "系统自动");
+                    FlowableConsts.OPERATION_forward, jasqCaseTaskList.get(0).getHandleUserId());
             // 更新纠纷信息
             CaseInfo caseInfoPO = new CaseInfo();
             caseInfoPO.setId(dsrpjCaseTask.getCaseId());
@@ -238,7 +246,6 @@
             caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
             caseInfoPO.setUpdateTime(nowDate);
             caseInfoService.updateCaseInfo(caseInfoPO);
-
         }catch (Exception e){
             log.error("[CaseEvaluateService.saveCaseEvaluateWechat]调用失败,异常信息:"+e, e);
             throw new ServiceException("CaseEvaluateService.saveCaseEvaluateWechat", e);
@@ -258,44 +265,53 @@
             caseTaskQueryWrapper.in("case_id", idList).eq("node_id", FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex());
             List<CaseTask> dsrpjCaseTaskList = caseTaskService.list(caseTaskQueryWrapper);
             for(CaseTask dsrpjCaseTask: dsrpjCaseTaskList){
-                // 完成当前当事人评价任务
+                // 完成当前当事人评价节点任务
                 dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
-//                dsrpjCaseTask.setHandleUserId(loginUser.getId());
-                dsrpjCaseTask.setHandleUserName("系统自动");
-                dsrpjCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+                dsrpjCaseTask.setHandleUserId(dsrpjCaseTask.getCandeUserId());
+                dsrpjCaseTask.setHandleUserName(dsrpjCaseTask.getCandeUserName());
+                dsrpjCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0);
+                dsrpjCaseTask.setHandleIllust("规定时间内未评价");
                 dsrpjCaseTask.setHandleTime(nowDate);
                 dsrpjCaseTask.setUpdateTime(nowDate);
                 caseTaskService.updateCaseTask(dsrpjCaseTask);
-                // 完成当前当事人评价工作流任务
-                FlowNode dsrpjFlowNode = flowInfoService.completeTask(dsrpjCaseTask.getFlowableId(), dsrpjCaseTask.getProcessTaskId(),
+                // 完成当前当事人评价工作流节点任务,进入结案归档节点
+                FlowNode jagdFlowNode = flowInfoService.completeTask(dsrpjCaseTask.getFlowableId(), dsrpjCaseTask.getProcessTaskId(),
                         FlowableConsts.OPERATION_forward, "系统自动");
-                // 默认完成结案归档任务
+                // 创建并完成结案归档任务
                 CaseTask jagdCaseTask = new CaseTask();
                 jagdCaseTask.setId(utilsClient.getNewTimeId());
                 jagdCaseTask.setCaseId(dsrpjCaseTask.getCaseId());
-                jagdCaseTask.setFlowableId(dsrpjFlowNode.getFlowableId());
-                jagdCaseTask.setProcessInstanceId(dsrpjFlowNode.getProcessInstanceId());
-                jagdCaseTask.setProcessTaskId(dsrpjFlowNode.getProcessTaskId());
-                jagdCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
-                jagdCaseTask.setNodeType(dsrpjFlowNode.getNodeType());
-                jagdCaseTask.setNodeId(dsrpjFlowNode.getNodeId());
-                jagdCaseTask.setNodeName(dsrpjFlowNode.getNodeName());
-                jagdCaseTask.setFlowId(dsrpjFlowNode.getFlowId());
-                jagdCaseTask.setNodeShowName(dsrpjFlowNode.getNodeShowName());
+                jagdCaseTask.setFlowableId(jagdFlowNode.getFlowableId());
+                jagdCaseTask.setProcessInstanceId(jagdFlowNode.getProcessInstanceId());
+                jagdCaseTask.setProcessTaskId(jagdFlowNode.getProcessTaskId());
+                jagdCaseTask.setNodeType(jagdFlowNode.getNodeType());
+                jagdCaseTask.setNodeId(jagdFlowNode.getNodeId());
+                jagdCaseTask.setNodeName(jagdFlowNode.getNodeName());
+                jagdCaseTask.setFlowId(jagdFlowNode.getFlowId());
+                jagdCaseTask.setNodeShowName(jagdFlowNode.getNodeShowName());
                 jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
-                // 通过调度的,任务候选执行者类型是上一步骤选择
-                jagdCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
-                jagdCaseTask.setCandeUnitId(dsrpjCaseTask.getCandeUnitId());
-                jagdCaseTask.setCandeUnitName(dsrpjCaseTask.getCandeUnitName());
-                // 系不需要签收
+                // 任务所属单位:结案申请组织
+                caseTaskQueryWrapper.clear();
+                caseTaskQueryWrapper.eq("case_id", dsrpjCaseTask.getCaseId())
+                        .eq("node_id", FlowNodeEnum.FLOW_NODE_JASQ.getIndex())
+                        .eq("status", CaseTaskConsts.TASK_STATUS_2).orderByDesc("create_time");
+                List<CaseTask> jasqCaseTaskList = caseTaskService.list(caseTaskQueryWrapper);
+                jagdCaseTask.setCandeUnitId(jasqCaseTaskList.get(0).getHandleUnitId());
+                jagdCaseTask.setCandeUnitName(jasqCaseTaskList.get(0).getHandleUnitName());
+                // 受理后的任务,不需要签收
                 jagdCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                 jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
                 // 任务处理时限
-                if (dsrpjFlowNode.getExpire() != 0) {
-                    jagdCaseTask.setExpireTime(DateUtils.addDay(nowDate, dsrpjFlowNode.getExpire()));
+                if (jagdFlowNode.getExpire() != 0) {
+                    jagdCaseTask.setExpireTime(DateUtils.addDay(nowDate, jagdFlowNode.getExpire()));
                 }
-                jagdCaseTask.setHandleUnitName("系统自动");
-                jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+                jagdCaseTask.setHandleUnitId(jasqCaseTaskList.get(0).getHandleUnitId());
+                jagdCaseTask.setHandleUnitName(jasqCaseTaskList.get(0).getHandleUnitName());
+                jagdCaseTask.setHandleDeptId(jasqCaseTaskList.get(0).getHandleDeptId());
+                jagdCaseTask.setHandleDeptName(jasqCaseTaskList.get(0).getHandleDeptName());
+                jagdCaseTask.setHandleUserId(jasqCaseTaskList.get(0).getHandleUserId());
+                jagdCaseTask.setHandleUserName(jasqCaseTaskList.get(0).getHandleUserName());
+                jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_0);
                 jagdCaseTask.setHandleTime(nowDate);
                 jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                 jagdCaseTask.setCustId(dsrpjCaseTask.getCustId());
@@ -304,7 +320,7 @@
                 caseTaskService.save(jagdCaseTask);
                 // 结束工作流流程
                 flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(),
-                        FlowableConsts.OPERATION_jb_zszz, "系统自动");
+                        FlowableConsts.OPERATION_jb_zszz, jasqCaseTaskList.get(0).getHandleUserId());
                 // 更新纠纷信息
                 CaseInfo caseInfoPO = new CaseInfo();
                 caseInfoPO.setId(dsrpjCaseTask.getCaseId());

--
Gitblit v1.8.0