From 9cd7dd1c881f21dd17fbbd7aceb4d60e78149b9c Mon Sep 17 00:00:00 2001
From: xusd <330628789@qq.com>
Date: Thu, 19 Jun 2025 20:50:42 +0800
Subject: [PATCH] fix:办理反馈优化;结案审核优化

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java |   10 +++++++---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java        |   41 +++++++++++++++++++++++++++++------------
 2 files changed, 36 insertions(+), 15 deletions(-)

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 39208a2..545b2c7 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
@@ -420,11 +420,17 @@
                         sl.setName("自行受理");
                         buttonList.add(sl);
                         buttonList.add(jb);
-                        buttonList.add(bysl);
                         buttonList.add(xqcl);
                         CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
                         if (UserBaseConsts.UNIT_GRADE_1 != ctUnitDTO.getUnitGrade()) {
                             buttonList.add(sb);
+                        }
+                        if (bysl.getName().equals("不予受理")) {
+                            buttonList.add(bysl);
+                        } else {
+                            if (UserBaseConsts.UNIT_GRADE_2 == ctUnitDTO.getUnitGrade()) {
+                                buttonList.add(bysl);
+                            }
                         }
                     }
                     // 待受理节点
@@ -1492,7 +1498,7 @@
             dispCaseBaseDTO.setCaseId(caseInfo.getId());
             if ("22_00003-1".equals(caseInfo.getCanalSecond())) {
                 dispCaseBaseDTO.setIsQu(1);
-            }else {
+            } else {
                 dispCaseBaseDTO.setIsQu(0);
             }
             CaseDispBaseDTO caseDispBaseDTO = dispClient.sysDisp(dispCaseBaseDTO);
@@ -1999,8 +2005,13 @@
             CaseInfo caseInfo = caseInfoService.getCaseInfo(dslCaseTask.getCaseId());
             CaseInfo caseInfoPO = new CaseInfo();
             caseInfoPO.setId(dslCaseTask.getCaseId());
-            caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex());
-            caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.getDes());
+            if (flowOperation == FlowableConsts.OPERATION_jb_zzzx) {
+                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex());
+                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes());
+            } else {
+                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex());
+                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.getDes());
+            }
             caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
             caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
             caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
@@ -2430,8 +2441,12 @@
             ThreadPoolUtils.executor(new AsynUpdateCaseEventNode(jasqCaseTask.getCaseId(), blfkCaseTaskPO,
                     jasqCaseTask, GridEnum.getCatByTaskNode(blfkCaseTask.getNodeId()), GridEnum.EVENT_FLOW_7.getIndex(),
                     ownerIdList, loginUser.getId(), 0, GridEnum.EVENT_PROCESS_STATUS_1.getIndex()));
-            // 化解成功,自动结案审核通过
-            if (MediResultBaseConstsEnum.MEDI_RESULT_1.getIndex().equals(caseWindupApply.getMediResult())) {
+            // 1、如果是综治中心自己结案,就直接结案
+            // 2、交办案件,如果不是,不管成功与否,就审核,审核部门为当前提交部门对应的综治中心
+            // 3、自行受理,直接结案
+            CaseInfo caseInfo = caseInfoService.getById(jasqCaseTask.getCaseId());
+            // 判断是否自行受理
+            if (CaseBaseConsts.ZXSL_STATUS_1 == caseInfo.getZxslStatus()) {
                 // 完成当前结案申请工作流节点任务,走结案审核任务
                 FlowNode jashFlowNode = flowInfoService.completeTask(jasqCaseTask.getFlowableId(), jasqCaseTask.getProcessTaskId(),
                         FlowableConsts.OPERATION_forward, userId);
@@ -2573,7 +2588,7 @@
                     mapper.insert(jagdCaseTask);
                     // 完成结案归档工作流节点任务,结束流程
                     log.info("xsd:结案归档");
-                    CaseInfo caseInfo = caseInfoService.getById(caseWindupApply.getCaseId());
+                    caseInfo = caseInfoService.getById(caseWindupApply.getCaseId());
                     Date createTime = caseInfo.getCreateTime();
                     // 创建 2025年4月30日 的日期对象
                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -2625,14 +2640,16 @@
                 caseInfoUnfoldPO.setCloseTime(nowDate);
                 caseInfoUnfoldPO.setUpdateTime(nowDate);
                 caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
-            } else {// 化解不成功
+            } else {// 不是自行受理
                 // 完成当前结案申请工作流节点任务
                 FlowNode jashFlowNode = flowInfoService.completeTask(jasqCaseTask.getFlowableId(), jasqCaseTask.getProcessTaskId(),
                         FlowableConsts.OPERATION_forward, userId);
-                // 判断是否自行受理
-                CaseInfo caseInfo = caseInfoService.getById(jasqCaseTask.getCaseId());
-                if (CaseBaseConsts.ZXSL_STATUS_1 == caseInfo.getZxslStatus()) {
-                    // 自行受理,自行完成结案审核节点,直接进入下一个节点
+
+                //判断是否是综治中心
+                String unitId = loginUser.getUnitId();
+                CtUnitDTO unitById = custClient.getUnitById(unitId);
+                if (unitById != null && 101 == unitById.getUnitType()) {
+                    // 是综治中心,自行完成结案审核节点,直接进入下一个节点
                     // 新建并自动完成结案审核任务
                     CaseTask jashCaseTask = new CaseTask();
                     jashCaseTask.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java
index 639c2b8..e54896b 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java
@@ -173,8 +173,12 @@
         try{
             // 创建CaseWindupApply的查询条件包装器
             QueryWrapper<CaseWindupApply> caseWindupApplyQueryWrapper = new QueryWrapper<>();
-            // 设置查询条件为case_task_id等于传入的caseTaskId
+            // 设置查询条件为case_id等于传入的caseId
             caseWindupApplyQueryWrapper.eq("case_id", caseId);
+            // 按创建时间降序排序,确保获取最新的记录
+            caseWindupApplyQueryWrapper.orderByDesc("create_time");
+            // 添加LIMIT 1限制,确保只返回一条记录
+            caseWindupApplyQueryWrapper.last("LIMIT 1");
             // 使用查询条件从数据库中选取一条记录
             CaseWindupApply caseWindupApply = mapper.selectOne(caseWindupApplyQueryWrapper);
 
@@ -182,9 +186,9 @@
             return caseWindupApply;
         }catch (Exception e){
             // 记录错误日志,包括方法调用失败的信息和异常堆栈
-            log.error("[CaseWindupApplyService.getByCaseTaskId]调用失败,异常信息:"+e, e);
+            log.error("[CaseWindupApplyService.getByCaseId]调用失败,异常信息:"+e, e);
             // 抛出服务异常,包含方法名称和原始异常
-            throw new ServiceException("CaseWindupApplyService.getByCaseTaskId", e);
+            throw new ServiceException("CaseWindupApplyService.getByCaseId", e);
         }
     }
     /**

--
Gitblit v1.8.0