From ab555253a4e8c07342bf25ee8779010745f69f16 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Wed, 18 Sep 2024 10:44:42 +0800
Subject: [PATCH] 1、联合处置流程优化3

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java |    5 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java                |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java                    |  124 ++++++++++++++++++++++++++----
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoUnfoldService.java              |   44 ++++++++--
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistInfoService.java              |   11 ++
 5 files changed, 154 insertions(+), 32 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java
index 61c899e..192fc26 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java
@@ -389,9 +389,10 @@
      * @return Object
      */
     @GetMapping("/choosePrincipal")
-    public Object choosePrincipal(@RequestParam(value = "caseId") String caseId, @RequestParam(value = "userId") String userId) {
+    public Object choosePrincipal(@RequestParam(value = "caseId") String caseId, @RequestParam(value = "caseTaskId") String caseTaskId,
+                                  @RequestParam(value = "userId") String userId) {
         try {
-            service.choosePrincipal(caseId, userId);
+            service.choosePrincipal(caseId, caseTaskId, userId);
             return ReturnSucUtils.getRepInfo();
         } catch (Exception e) {
             return ReturnFailUtils.getRepInfo(e.getMessage());
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistInfoService.java
index 28bd646..26844d0 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistInfoService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistInfoService.java
@@ -143,4 +143,15 @@
         return caseAssistInfo;
     }
 
+    /**
+     * 根据案件编号查询
+     * @param caseId
+     * @return
+     */
+    public List<CaseAssistInfo> listByCaseId(String caseId){
+        QueryWrapper<CaseAssistInfo> caseAssistInfoQueryWrapper = new QueryWrapper<>();
+        caseAssistInfoQueryWrapper.eq("case_id", caseId);
+        return mapper.selectList(caseAssistInfoQueryWrapper);
+    }
+
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java
index d9cb6d9..5d61d90 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java
@@ -169,8 +169,8 @@
      */
     public Map<String, Object> getFeedbackInfo(String caseId, String caseTaskId, String userId){
         Map<String, Object> result = Maps.newHashMap();
-        CaseTask caseTask = caseTaskService.getById(caseTaskId);
         CaseInfoUnfold caseInfoUnfold = unfoldService.getById(caseId);
+        CaseTask caseTask = caseTaskService.getById(caseTaskId);
         // 承办部门查询扩展表
         if (CaseTaskConsts.CASE_TASK_TYPE_1 == caseTask.getCaseTaskType()) {
             if (ObjectUtils.isNotEmpty(caseInfoUnfold)) {
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoUnfoldService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoUnfoldService.java
index 1852d1a..24c7c05 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoUnfoldService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoUnfoldService.java
@@ -4,8 +4,11 @@
 import cn.huge.base.common.utils.DateUtils;
 import cn.huge.base.common.utils.IdUtils;
 import cn.huge.base.common.utils.ObjectUtils;
+import cn.huge.module.cases.consts.CaseTaskConsts;
 import cn.huge.module.cases.domain.po.CaseAssistApply;
 import cn.huge.module.cases.domain.dto.TransactResultDTO;
+import cn.huge.module.cases.domain.po.CaseAssistInfo;
+import cn.huge.module.cases.domain.po.CaseTask;
 import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.client.api.impl.SysClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
@@ -62,6 +65,12 @@
 
     @Autowired
     private SysClientImpl sysClient;
+
+    @Autowired
+    private CaseTaskService caseTaskService;
+
+    @Autowired
+    private CaseAssistInfoService caseAssistInfoService;
 
     /**
     * 更新对象
@@ -155,19 +164,34 @@
 
     /**
      * PC端-选择经办人
-     * @param caseId 对象
+     * @param caseId 纠纷编号
+     * @param caseTaskId 办理反馈任务编号
      * @param userId 条件
      */
-    public void choosePrincipal(String caseId, String userId){
+    public void choosePrincipal(String caseId, String caseTaskId, String userId){
         try{
-            // 获取当前登录用户
-            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
-            CaseInfoUnfold CaseInfoUnfold = new CaseInfoUnfold();
-            CaseInfoUnfold.setId(caseId);
-            CaseInfoUnfold.setMediatorId(loginUser.getId());
-            CaseInfoUnfold.setMediator(loginUser.getTrueName());
-            CaseInfoUnfold.setMediatorMobile(loginUser.getMobile());
-            mapper.updateCaseInfoUnfold(CaseInfoUnfold);
+            Date nowDate = DateUtils.getNowDate();
+            // 获取经办人信息
+            CtUserDTO ctUserDTO = custClient.clientGetUser(userId);
+            CaseTask caseTask = caseTaskService.getById(caseTaskId);
+            // 承办部门,更新扩展表
+            if (CaseTaskConsts.CASE_TASK_TYPE_1 == caseTask.getCaseTaskType()) {
+                CaseInfoUnfold CaseInfoUnfold = new CaseInfoUnfold();
+                CaseInfoUnfold.setId(caseId);
+                CaseInfoUnfold.setMediatorId(ctUserDTO.getId());
+                CaseInfoUnfold.setMediator(ctUserDTO.getTrueName());
+                CaseInfoUnfold.setMediatorMobile(ctUserDTO.getMobile());
+                CaseInfoUnfold.setUpdateTime(nowDate);
+                mapper.updateCaseInfoUnfold(CaseInfoUnfold);
+            }else {
+                // 配合部门,更新联合处置信息表
+                CaseAssistInfo caseAssistInfo = caseAssistInfoService.getByCaseTaskId(caseTaskId);
+                caseAssistInfo.setAssistUserId(ctUserDTO.getId());
+                caseAssistInfo.setAssistUserName(ctUserDTO.getTrueName());
+                caseAssistInfo.setUpdateTime(nowDate);
+                caseAssistInfoService.updateCaseAssistInfo(caseAssistInfo);
+
+            }
         }catch (Exception e){
             log.error("[CaseInfoUnfoldService.choosePrincipal]调用失败,异常信息:"+e, e);
             throw new ServiceException("CaseInfoUnfoldService.choosePrincipal", e);
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 8099665..068cffb 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
@@ -518,32 +518,118 @@
             result.put("handleCaseFlowList", handleCaseFlowList);
 
             // 查询配合组织流程
-            CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseId);
-            if (StringUtils.isNotEmpty(caseInfoUnfold.getAssistUnitId())){
+            List<CaseAssistInfo> caseAssistInfoList = caseAssistInfoService.listByCaseId(caseId);
+            if (CollectionUtils.isNotEmpty(caseAssistInfoList)){
                 LinkedList<WebAssistCaseFlowDTO> assistCaseFlowList = new LinkedList<>();
-                String[] unitIdList = caseInfoUnfold.getAssistUnitId().split(BaseConsts.COMMA);
-                String[] unitNameList = caseInfoUnfold.getAssistUnitName().split(BaseConsts.COMMA);
-                for (int i=0; i<unitIdList.length; i++){
-                    String unitId = unitIdList[i];
-                    String unitName = unitNameList[i];
+                for (CaseAssistInfo caseAssistInfo: caseAssistInfoList){
                     WebAssistCaseFlowDTO webAssistCaseFlowDTO = new WebAssistCaseFlowDTO();
-                    webAssistCaseFlowDTO.setUnitId(unitId);
-                    webAssistCaseFlowDTO.setUnitName(unitName);
-                    i ++;
+                    webAssistCaseFlowDTO.setUnitId(caseAssistInfo.getAssistUserId());
+                    webAssistCaseFlowDTO.setUnitName(caseAssistInfo.getAssistUserName());
                     LinkedList<WebCaseFlowDTO> caseFlowList = new LinkedList<>();
                     caseTaskQueryWrapper.clear();
-                    caseTaskQueryWrapper.eq("case_id", caseId).eq("cande_unit_id", unitId)
+                    caseTaskQueryWrapper.eq("case_id", caseId).eq("cande_unit_id", caseAssistInfo.getAssistUserId())
                             .eq("case_task_type", CaseTaskConsts.CASE_TASK_TYPE_2).orderByDesc("create_time");
                     List<CaseTask> assistCaseTaskList = mapper.selectList(caseTaskQueryWrapper);
                     for (CaseTask caseTask: assistCaseTaskList){
-                        WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
-                        webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
-                        webCaseFlowDTO.setHandleUnitName(caseTask.getCandeUnitName());
-                        webCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
-                        webCaseFlowDTO.setHandleNotes(caseTask.getHandleIllust());
-                        webCaseFlowDTO.setTaskType(caseTask.getTaskType());
-                        webCaseFlowDTO.setStatus(caseTask.getStatus());
-                        caseFlowList.add(webCaseFlowDTO);
+                        // 已结束节点
+                        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())){
+                                if (CaseTaskConsts.SIGN_STATUS_2 == caseTask.getSignStatus() && CaseTaskConsts.TASK_TYPE_1 == caseTask.getTaskType()){
+                                    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());
+                                    caseFlowList.add(slWebCaseFlowDTO);
+                                }
+                            }
+                            // 普通节点
+                            WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
+                            webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
+                            webCaseFlowDTO.setHandleUserName(caseTask.getHandleUserName());
+                            webCaseFlowDTO.setHandleTime(caseTask.getHandleTime());
+                            webCaseFlowDTO.setStatus(caseTask.getStatus());
+                            webCaseFlowDTO.setHandleNotes(caseTask.getHandleIllust());
+                            webCaseFlowDTO.setTaskType(caseTask.getTaskType());
+                            // 回退申请节点
+                            if(CaseTaskConsts.TASK_TYPE_2 == caseTask.getTaskType()){
+                                webCaseFlowDTO.setNodeShowName("事件回退");
+                                CaseReturn caseReturn = caseReturnService.getNewByCaseId(caseId, caseTask.getCaseTaskType());
+                                if (StringUtils.isNotEmpty(caseReturn.getReturnContent())) {
+                                    webCaseFlowDTO.setHandleNotes("回退理由:" + caseReturn.getReturnContent());
+                                }else {
+                                    webCaseFlowDTO.setHandleNotes("回退理由:-");
+
+                                }
+                            }
+                            // 上报申请节点
+                            if(CaseTaskConsts.TASK_TYPE_3 == caseTask.getTaskType()){
+                                webCaseFlowDTO.setNodeShowName("事件上报");
+                                CaseAppear caseAppear = caseAppearService.getNewByCaseId(caseId);
+                                if (StringUtils.isNotEmpty(caseAppear.getAppearContent())) {
+                                    webCaseFlowDTO.setHandleNotes("上报理由:" + caseAppear.getAppearContent());
+                                }else {
+                                    webCaseFlowDTO.setHandleNotes("上报意见:-" );
+                                }
+                            }
+                            // 当事人评价节点,特殊处理
+                            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())
+                                    || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_SBSH.getIndex())
+                                    || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_HTSH.getIndex())
+                                    || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_SBSH.getIndex())
+                                    || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_HTSH.getIndex())){
+                                // 处理不通过,任务类型就是回退
+                                if (CaseTaskConsts.HANDLE_RESULT_2 == caseTask.getHandleResult()) {
+                                    webCaseFlowDTO.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_2.getIndex());
+                                    webCaseFlowDTO.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_2.getDes());
+                                    webCaseFlowDTO.setTaskType(CaseTaskConsts.TASK_TYPE_2);
+                                }else{
+                                    // 处理通过
+                                    webCaseFlowDTO.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex());
+                                    webCaseFlowDTO.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_1.getDes());
+                                }
+                                // 临时加上
+                                webCaseFlowDTO.setHandleNotes("审核结果:"+webCaseFlowDTO.getAuditResultName());
+                            }
+                            // 结案申请,需要展示化解结果
+                            if (FlowNodeEnum.FLOW_NODE_JASQ.getIndex().equals(caseTask.getNodeId())){
+                                CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseTask.getCaseId());
+                                if (ObjectUtils.isNotEmpty(caseInfoUnfold)){
+                                    webCaseFlowDTO.setMediResult(caseInfoUnfold.getMediResult());
+                                    webCaseFlowDTO.setMediResultName(caseInfoUnfold.getMediResultName());
+                                    // 临时加上
+                                    webCaseFlowDTO.setHandleNotes("化解结果:"+webCaseFlowDTO.getMediResultName());
+                                }
+                            }
+                            caseFlowList.add(webCaseFlowDTO);
+                        }else {
+                            // 进行中的节点
+                            WebCaseFlowDTO webCaseFlowDTO = new WebCaseFlowDTO();
+                            webCaseFlowDTO.setNodeShowName(caseTask.getNodeShowName());
+                            webCaseFlowDTO.setStatus(caseTask.getStatus());
+                            // 当事人评价节点,特殊处理
+                            if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())){
+                                webCaseFlowDTO.setProcessName(caseTask.getNodeShowName());
+                            }else{
+                                webCaseFlowDTO.setHandleUnitName(caseTask.getCandeUnitName());
+                            }
+                            caseFlowList.add(webCaseFlowDTO);
+                        }
                     }
                     webAssistCaseFlowDTO.setCaseFlowList(caseFlowList);
                     assistCaseFlowList.add(webAssistCaseFlowDTO);

--
Gitblit v1.8.0