From e9de6064cc94d6bc63685c5e62046ff810b96dab Mon Sep 17 00:00:00 2001
From: xusd <330628789@qq.com>
Date: Sat, 05 Jul 2025 17:17:52 +0800
Subject: [PATCH] Merge branch 'gzdyh_prod'

---
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtAccount.java                    |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java           |   22 +
 dyh-service/dyh-sys/src/main/resources/config/application-prod.yml                                   |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java  |   34 ++
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java               |   38 ++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml      |   10 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java              |   28 +
 dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/web/GridEventWebController.java     |   10 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/service/AiCaseClassService.java              |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java |    3 
 sql/20250704.sql                                                                                     |   75 +++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java              |   67 ++---
 dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/SaveEventFeedBackVo.java             |   79 ++++++
 dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridEventService.java                  |  183 +++++++++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java          |  101 +++++++
 dyh-service/dyh-sys/src/main/resources/config/application-test.yml                                   |    2 
 dyh-service/dyh-base/src/main/java/cn/huge/module/sys/constant/GridEnum.java                         |    1 
 dyh-service/dyh-sys/src/main/resources/config/application.yml                                        |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java              |   24 +
 dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java                   |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java                       |   11 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/vo/SaveEventFeedBackVo.java        |   74 +++++
 22 files changed, 706 insertions(+), 66 deletions(-)

diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/constant/GridEnum.java b/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/constant/GridEnum.java
index b88301f..7d57172 100644
--- a/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/constant/GridEnum.java
+++ b/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/constant/GridEnum.java
@@ -6,6 +6,7 @@
     GRID_OBJECT_TYPE_3("13", "待受理矛调工单"),
     GRID_OBJECT_TYPE_4("14", "待审核矛调工单"),
     GRID_TODO_TYPE_5("5", "矛盾纠纷"),
+    GRID_TODO_TYPE_6("6", "专项治理"),
 
     /**
      * 网格通知类型,1:待分派,2:待受理,3:化解中,4:已结案,5:已归档,6:不予受理
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtAccount.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtAccount.java
index c2fb05a..369a37d 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtAccount.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtAccount.java
@@ -98,5 +98,7 @@
     */
     @TableField(value = "update_time")
     private Date updateTime;
+    @TableField(value = "pwd_error_count")
+    private Integer pwdErrorCount;
 
 }
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
index fdfaf67..6fd2eb4 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
@@ -29,10 +29,7 @@
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author liyj
@@ -201,7 +198,7 @@
     public Boolean checkCredential(String cipher, CtAccount ctAccount) {
         String credentialMd5 = DigestUtils.md5DigestAsHex(cipher.getBytes());
         log.info("xsd:{}", credentialMd5);
-        if (StringUtils.equals(credentialMd5, ctAccount.getCipher())) {
+        if (StringUtils.equals(cipher, ctAccount.getCipher())) {
             return true;
         } else {
 //            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -235,9 +232,9 @@
             // 判断账号是否存在
             CtAccount ctAccount = this.getByAccAndType(ctAccountLoginDTO.getAcc(), UserBaseConsts.ACC_TYPE_1);
             if (ObjectUtils.isNotEmpty(ctAccount)) {
+                Date nowDate = new Date();
                 // 判断账号是否被锁定
                 if (ObjectUtils.isNotEmpty(ctAccount.getLimitTime())) {
-                    Date nowDate = new Date();
                     if (nowDate.before(ctAccount.getLimitTime())) {
                         SimpleDateFormat sdf = new SimpleDateFormat("HH点mm分");
                         return ReturnFailUtils.getRepInfo("账号已锁定,请于" + sdf.format(ctAccount.getLimitTime()) + "后重试,或者请联系管理员解锁!");
@@ -245,6 +242,13 @@
                 }
                 // 判断密码是否正确
                 if (checkCredential(ctAccountLoginDTO.getCipher(), ctAccount)) {
+                    // 密码正确:重置错误次数
+                    UpdateWrapper<CtAccount> resetPwdErr = new UpdateWrapper<>();
+                    resetPwdErr.set("pwd_error_count", 0)
+                            .set("limit_time", null)
+                            .set("login_time", DateUtils.getNowDate())
+                            .eq("id", ctAccount.getId());
+                    this.update(resetPwdErr);
                     //返回结果
                     UserLoginDTO userLoginDTO = new UserLoginDTO();
                     CtUser ctUser = ctUserService.getById(ctAccount.getUserId());
@@ -307,7 +311,25 @@
                     this.update(accountUpdateWrapper);
                     return ReturnSucUtils.getRepInfo(userLoginDTO);
                 } else {
-                    return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                    // 密码错误:增加错误次数,必要时冻结
+                    int currentErrCount = ctAccount.getPwdErrorCount() == null ? 0 : ctAccount.getPwdErrorCount();
+                    currentErrCount++;
+
+                    UpdateWrapper<CtAccount> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.set("pwd_error_count", currentErrCount).eq("id", ctAccount.getId());
+
+                    if (currentErrCount >= 5) {
+                        // 冻结5分钟
+                        Calendar cal = Calendar.getInstance();
+                        cal.setTime(nowDate);
+                        cal.add(Calendar.MINUTE, 5);
+                        updateWrapper.set("limit_time", cal.getTime());
+                        this.update(updateWrapper);
+                        return ReturnFailUtils.getRepInfo("密码错误已达5次,账号已锁定5分钟,请稍后再试!");
+                    } else {
+                        this.update(updateWrapper);
+                        return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!(" + currentErrCount + "/5)");
+                    }
                 }
             } else {
                 return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
@@ -497,8 +519,10 @@
                 CtUnit ctUnit = ctUnitService.selectUnitByGridId(userRoleDTO.getOrgId());
                 if (ctUnit != null) {
                     userLoginDTO.setUnit(ctUnit.getUnitName());
+                    userLoginDTO.setUnitType(ctUnit.getUnitType());
                     ctUser.setUnitName(ctUnit.getUnitName());
                     ctUser.setUnitId(ctUnit.getId());
+
                     ctUserService.updateCtUser(ctUser);
                 } else {
                     int grade = userRoleDTO.getGrade() - 1;
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/service/AiCaseClassService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/service/AiCaseClassService.java
index f12442f..87d6283 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/service/AiCaseClassService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/service/AiCaseClassService.java
@@ -465,7 +465,7 @@
         if (riskResult != null && riskResult.getIsRiskAi() != null) {
             try {
                 int riskLevel = Integer.parseInt(riskResult.getIsRiskAi());
-                if (riskLevel > 3) {
+                if (riskLevel > 4) {
                     CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
                     caseInfoUnfold.setIsRisk(IS_RISK_STATUS_1);
                     Map<String, Object> caseInfoUnfoldTerms = new HashMap<>();
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
index b15d77a..a47be43 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
@@ -13,6 +13,7 @@
 import cn.huge.module.cust.dto.CtUserDTO;
 import com.google.common.collect.Maps;
 import dm.jdbc.util.StringUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,10 +23,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -573,12 +571,32 @@
                 terms.put("caseStatus", caseStatus);
             }
             if(StringUtils.isNotBlank(regionCode) && StringUtils.isNotBlank(regionName)){
-                if(regionName.matches(".*市")){
-                    terms.put("queCity", regionCode);
+                if(regionName.matches(".*社区") || regionName.matches(".*村")){
+                    terms.put("queVillage", regionCode);
+                }else if(regionName.matches(".*街道") || regionName.matches(".*街") || regionName.matches(".*镇")){
+                    terms.put("queRoad", regionCode);
                 }else if(regionName.matches(".*区")){
                     terms.put("queArea", regionCode);
-                }else if(regionName.contains("街道") || regionName.matches(".*街") || regionName.matches(".*镇")){
-                    terms.put("queRoad", regionCode);
+                }else if(regionName.matches(".*市")){
+                    terms.put("queCity", regionCode);
+                }else if(regionName.matches("本级")){
+                    //把regionCode根据#分割成数组
+                    String[] regionCodeArr = regionCode.split("#");
+                    if(CollectionUtils.isNotEmpty(Arrays.asList(regionCodeArr))){
+                        terms.put(regionCodeArr[0], regionCodeArr[1]);
+                        if(StringUtils.isNotBlank(regionName)){
+                            if(terms.containsKey("queRoad")){
+                                terms.put("unitGrade", "3");
+                            }else if(terms.containsKey("queArea")){
+                                terms.put("unitGrade", "2");
+                            }else if(terms.containsKey("queCity")){
+                                terms.put("unitGrade", "1");
+                            }
+
+                        }
+                    }
+
+
                 }
             }
             Sort sort = Sort.by(Sort.Direction.DESC, "t3.create_time");
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
index 41c8515..a9a6712 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
@@ -1368,6 +1368,10 @@
             level = 3
             and parent_id = #{terms.queArea}
         </if>
+        <if test="terms.queRoad != null and terms.queRoad !=''">
+            level = 4
+            and parent_id = #{terms.queRoad}
+        </if>
         ORDER BY level ASC,create_time ASC
     </select>
 
@@ -1451,6 +1455,9 @@
             and t4.handle_result = 3
             and t4.node_id in ('ZJ_DFP', 'QJ_DFP', 'SJ_DFP', 'DFP', 'QJ_DSL', 'SJ_DSL', 'DSL', 'ZJ_DSL')
         </if>
+        <if test="terms.unitGrade != null and terms.unitGrade !=''">
+            and t1.unit_grade = #{terms.unitGrade}
+        </if>
         <include refid="statisticsCirculation-wherePart"/>
     </select>
 
@@ -1497,6 +1504,9 @@
             and t4.handle_result = 3
             and t4.node_id in ('ZJ_DFP', 'QJ_DFP', 'SJ_DFP', 'DFP', 'QJ_DSL', 'SJ_DSL', 'DSL', 'ZJ_DSL')
         </if>
+        <if test="terms.unitGrade != null and terms.unitGrade !=''">
+            and t1.unit_grade = #{terms.unitGrade}
+        </if>
         <include refid="statisticsCirculation-wherePart"/>
         <if test="page.sort != null">
             <foreach collection="page.sort" item="s" index="index" separator="," open="order by ">
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java
index 8d73f3b..b52c3f3 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java
@@ -927,6 +927,17 @@
                             statisticsCirculationDTO.setLzl(Double.parseDouble(df.format(lzl)));
                             statisticsCirculationDTO.setLzz((int) lzz);
                             BeanUtils.copyProperties(statisticsCirculationDTO, statisticsCirculationDTONew);
+                            if("本级".equals(region)){
+                                if(terms.containsKey("queRoad")){
+                                    statisticsCirculationDTO.setGroupCode("queRoad#"+terms.get("queRoad").toString());
+                                }else if(terms.containsKey("queArea")){
+                                    statisticsCirculationDTO.setGroupCode("queArea#"+terms.get("queArea").toString());
+                                }else if(terms.containsKey("queCity")){
+                                    statisticsCirculationDTO.setGroupCode("queCity#"+terms.get("queCity").toString());
+                                }else if(terms.containsKey("queProv")){
+                                    statisticsCirculationDTO.setGroupCode("queProv"+terms.get("queProv").toString());
+                                }
+                            }
                         }
                     }
                     statisticsCirculationDTONew.setGroupName(region);
@@ -949,6 +960,17 @@
                             double lzl = (lzz + lzsl) / zdj * 100;
                             statisticsCirculationDTO.setLzl(Double.parseDouble(df.format(lzl)));
                             statisticsCirculationDTO.setLzz((int) lzz);
+                            if("本级".equals(region)){
+                                if(terms.containsKey("queRoad")){
+                                    statisticsCirculationDTO.setGroupCode("queRoad#"+terms.get("queRoad").toString());
+                                }else if(terms.containsKey("queArea")){
+                                    statisticsCirculationDTO.setGroupCode("queArea#"+terms.get("queArea").toString());
+                                }else if(terms.containsKey("queCity")){
+                                    statisticsCirculationDTO.setGroupCode("queCity#"+terms.get("queCity").toString());
+                                }else if(terms.containsKey("queProv")){
+                                    statisticsCirculationDTO.setGroupCode("queProv#"+terms.get("queProv").toString());
+                                }
+                            }
                         }
                     }
                     if (flag) {
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
index 704dd3a..79b7409 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
@@ -1208,6 +1208,9 @@
     @GetMapping("/pagePerson")
     public Object pagePerson(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size, @RequestParam(value = "certiNo") String certiNo) {
         try {
+            if(StringUtils.isEmpty(certiNo)){
+                return ReturnFailUtils.getRepInfo("请输入身份证号");
+            }
             Map<String, Object> terms = getParameterAll();
             Sort sort = null;
             String sortName = null;
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/vo/SaveEventFeedBackVo.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/vo/SaveEventFeedBackVo.java
new file mode 100644
index 0000000..85cf099
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/vo/SaveEventFeedBackVo.java
@@ -0,0 +1,74 @@
+package cn.huge.module.cases.domain.vo;
+
+import cn.huge.module.sys.dto.FileInfoBaseDTO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName SaveEventFeedBackVo
+ * @Description 同步办理反馈接口入参
+ * @Author 文锦钊
+ * @Date 2025/7/3 10:48
+ **/
+
+@Data
+public class SaveEventFeedBackVo {
+
+    /**
+     * 反馈记录id,36位,建议用uuid (必填)
+     */
+    private String id;
+
+    /**
+     * 事件工单id (必填)
+     */
+    private String code;
+
+    /**
+     * 反馈用户部门名称 (必填)
+     */
+    private String appOrgName;
+
+    /**
+     * 反馈用户名称 (必填)
+     */
+    private String appUserName;
+
+    /**
+     * 反馈用户部门id (必填)
+     */
+    private String appOrgId;
+
+    /**
+     * 反馈用户id (必填)
+     */
+    private String appUserId;
+
+    /**
+     * 反馈时间,格式yyyy-MM-dd HH:mm:ss (必填)
+     * 示例:2022-05-20 15:11:21
+     */
+    private String appTime;
+
+    /**
+     * 反馈意见 (必填)
+     */
+    private String approveContent;
+
+    /**
+     * 环节处理期限,格式yyyy-MM-dd HH:mm:ss (必填)
+     * 示例:2022-05-20 15:11:21
+     */
+    private String processingTime;
+
+    /**
+     * 环节处理类型 (选填)
+     */
+    private String handleType;
+
+    /**
+     * 附件文件列表
+     */
+    private List<FileInfoBaseDTO> fileInfoList;
+}
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 2d32d8e..9388a67 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
@@ -1,12 +1,16 @@
 package cn.huge.module.cases.service;
+import java.util.ArrayList;
 
 import cn.huge.base.common.exception.ServiceException;
 import cn.huge.base.common.utils.DateUtils;
 import cn.huge.base.common.utils.IdUtils;
 import cn.huge.base.common.utils.ObjectUtils;
+import cn.huge.base.common.utils.ThreadPoolUtils;
 import cn.huge.module.cases.consts.CaseTaskConsts;
+import cn.huge.module.cases.domain.dto.FileRelateDTO;
 import cn.huge.module.cases.domain.dto.MediatorDTO;
 import cn.huge.module.cases.domain.po.*;
+import cn.huge.module.cases.domain.vo.SaveEventFeedBackVo;
 import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.client.api.impl.SysClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
@@ -14,15 +18,19 @@
 import cn.huge.module.cust.dto.CtUnitDTO;
 import cn.huge.module.cust.dto.CtUserDTO;
 import cn.huge.module.mediate.constant.CaseBaseConsts;
+import cn.huge.module.mediate.constant.CaseBaseConstsEnum;
+import cn.huge.module.sys.constant.FileOwnerTypeBaseEnum;
 import cn.huge.module.sys.dto.FileIdInfoBaseDTO;
 import cn.huge.module.sys.dto.FileInfoBaseDTO;
 import cn.huge.module.sys.dto.FileTypeInfoBaseDTO;
+import cn.huge.module.utils.TimeUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
@@ -32,6 +40,8 @@
 
 import javax.print.DocFlavor;
 import java.util.*;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 /**
@@ -73,6 +83,10 @@
 
     @Autowired
     private CaseMediatorService caseMediatorService;
+
+    @Autowired
+    private CaseInfoService caseInfoService;
+
 
     /**
      * 更新对象
@@ -165,10 +179,95 @@
             }
             caseFeedback.setUpdateTime(nowDate);
             this.saveOrUpdate(caseFeedback);
+
+            //  异步同步纠纷办理反馈信息
+            asyncSaveEventFeedback(caseFeedback, userId);
+
         } catch (Exception e) {
             log.error("[caseFeedbackService.savecaseFeedback]调用失败,异常信息:" + e, e);
             throw new ServiceException("caseFeedbackService.savecaseFeedback", e);
         }
+    }
+
+    /**
+     * 异步保存办理反馈信息
+     *
+     * @param caseFeedback
+     * @param userId
+     */
+    private void asyncSaveEventFeedback(CaseFeedback caseFeedback, String userId) {
+        log.info("同步办理反馈信息开始!!");
+        String caseId = caseFeedback.getCaseId();
+        CaseInfo caseInfo = caseInfoService.getById(caseId);
+        String canalSecond = caseInfo.getCanalSecond();
+
+        //  需要同步的渠道类型
+        List<String> needSyncTypeList = new ArrayList<>();
+        needSyncTypeList.add(CaseBaseConstsEnum.CASE_CANAL_SECOND_1.getIndex());
+        needSyncTypeList.add(CaseBaseConstsEnum.CASE_CANAL_SECOND_2.getIndex());
+        needSyncTypeList.add(CaseBaseConstsEnum.CASE_CANAL_SECOND_7.getIndex());
+
+        if (!needSyncTypeList.contains(canalSecond)) {
+            log.info("当前来源的事项不需要同步,来源为:" + CaseBaseConstsEnum.getDes(canalSecond));
+            return ;
+        }
+
+        //  使用completableFuture进行异步处理,使用jdk8的forkjoinPool线程池
+        CompletableFuture<Object> future = CompletableFuture.supplyAsync(() -> {
+            log.info("异步保存办理反馈信息开始");
+            //  保存办理反馈信息后需要同步到大平台中
+            String code = caseInfo.getCaseRef();
+
+            //  反馈用户信息
+            CtUserDTO ctUserDTO = custClient.clientGetUser(userId);
+            CtUnitDTO ctUnitDTO = custClient.getUnitById(ctUserDTO.getUnitId());
+
+            //  反馈意见内容
+            String handleContent = caseFeedback.getHandleContent();
+
+            //  反馈时间
+            Date now = new Date();
+            String appTime = TimeUtils.format(now,TimeUtils.STANDARD_PATTERN);
+            String processingTime = TimeUtils.format(TimeUtils.after(now,14),TimeUtils.STANDARD_PATTERN);
+
+            //  构建参数
+            SaveEventFeedBackVo saveEventFeedBackVo = new SaveEventFeedBackVo();
+            saveEventFeedBackVo.setId(caseFeedback.getId());
+            saveEventFeedBackVo.setCode(code);
+
+            //  先传递当前子系统的用户id
+            saveEventFeedBackVo.setAppUserId(userId);
+            saveEventFeedBackVo.setAppUserName(ctUserDTO.getTrueName());
+            saveEventFeedBackVo.setAppOrgId(ctUnitDTO.getId());
+            saveEventFeedBackVo.setAppOrgName(ctUnitDTO.getUnitName());
+
+            saveEventFeedBackVo.setAppTime(appTime);
+            saveEventFeedBackVo.setApproveContent(handleContent);
+            saveEventFeedBackVo.setProcessingTime(processingTime);
+            saveEventFeedBackVo.setHandleType("");
+
+            //  附件信息
+            //  先获取文件关联表信息
+            List<FileRelateDTO> fileRelateDTOS = sysClient.listFileRelateByOwnerId(caseFeedback.getId());
+            List<FileInfoBaseDTO> fileInfoBaseDTOS = new ArrayList<>();
+            if (CollectionUtils.isNotEmpty(fileRelateDTOS)){
+                fileInfoBaseDTOS = fileRelateDTOS.stream()
+                        .map(o->{
+                            FileInfoBaseDTO fileInfoBaseDTO = new FileInfoBaseDTO();
+                            fileInfoBaseDTO.setId(o.getFileId());
+                            return fileInfoBaseDTO;
+                        }).collect(Collectors.toList());
+            }
+
+            saveEventFeedBackVo.setFileInfoList(fileInfoBaseDTOS);
+
+            //  发起同步
+            sysClient.saveEventFeedback(saveEventFeedBackVo);
+            log.info("异步保存办理反馈信息成功!!");
+            return null;
+        });
+
+
     }
 
     /**
@@ -333,6 +432,8 @@
                 caseFeedback.setHandleType(CaseTaskConsts.HANDLE_TYPE_2);
             }
             this.save(caseFeedback);
+            //  异步同步纠纷办理反馈信息
+            asyncSaveEventFeedback(caseFeedback, userId);
         } catch (Exception e) {
             log.error("[caseFeedbackService.savecaseFeedback]调用失败,异常信息:" + e, e);
             throw new ServiceException("caseFeedbackService.savecaseFeedback", e);
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
index 1d5bb69..65fb528 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -1540,30 +1540,23 @@
             sortType(caseStatisticsTypeDTOS);
         }
         Integer typeTotalNum = 0;
-        Integer otherCaseNum = 0;
-        int i = 1;
-        List<CaseStatisticsTypeDTO> typeList = new ArrayList<>();
+
         for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
             typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
-            if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) {
-                typeList.add(caseStatisticsTypeDTO);
-                i++;
-            } else {
-                otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
-            }
-        }
-        for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) {
-            caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
-        }
-        if (otherCaseNum > 0) {
-            CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO();
-            caseStatisticsTypeDTO.setCaseTypeName("其他");
-            caseStatisticsTypeDTO.setCaseNum(otherCaseNum);
-            caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
-            typeList.add(caseStatisticsTypeDTO);
-            caseStatisticsBaseDTO.setTypeList(typeList);
-        }
 
+        }
+        for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
+            caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
+        }
+//        if (otherCaseNum > 0) {
+//            CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO();
+//            caseStatisticsTypeDTO.setCaseTypeName("其他");
+//            caseStatisticsTypeDTO.setCaseNum(otherCaseNum);
+//            caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
+//            typeList.add(caseStatisticsTypeDTO);
+//            caseStatisticsBaseDTO.setTypeList(typeList);
+//        }
+        caseStatisticsBaseDTO.setTypeList(caseStatisticsTypeDTOS);
         //事项来源
         terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_1.getIndex());
         CaseStatisticsSourceDTO oneSource = mapper.statisticsSource(terms);
@@ -2439,29 +2432,25 @@
                 sortType(caseStatisticsTypeDTOS);
             }
             Integer typeTotalNum = 0;
-            Integer otherCaseNum = 0;
-            int i = 1;
-            List<CaseStatisticsTypeDTO> typeList = new ArrayList<>();
+//            Integer otherCaseNum = 0;
+//            int i = 1;
+//            List<CaseStatisticsTypeDTO> typeList = new ArrayList<>();
             for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
                 typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
-                if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) {
-                    typeList.add(caseStatisticsTypeDTO);
-                    i++;
-                } else {
-                    otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
-                }
+
             }
-            for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) {
+            for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
                 caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
             }
-            if (otherCaseNum > 0) {
-                CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO();
-                caseStatisticsTypeDTO.setCaseTypeName("其他");
-                caseStatisticsTypeDTO.setCaseNum(otherCaseNum);
-                caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
-                typeList.add(caseStatisticsTypeDTO);
-                caseStatisticsBaseDTO.setTypeList(typeList);
-            }
+//            if (otherCaseNum > 0) {
+//                CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO();
+//                caseStatisticsTypeDTO.setCaseTypeName("其他");
+//                caseStatisticsTypeDTO.setCaseNum(otherCaseNum);
+//                caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
+//                typeList.add(caseStatisticsTypeDTO);
+//                caseStatisticsBaseDTO.setTypeList(typeList);
+//            }
+            caseStatisticsBaseDTO.setTypeList(caseStatisticsTypeDTOS);
         }
 
         List<QueAreaDTO> queArea = listAreaByType(areaCode);
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 75ebe25..18a986c 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
@@ -411,6 +411,7 @@
                         caseTaskPO.setReadUserName(loginUser.getTrueName());
                         mapper.updateCaseTask(caseTaskPO);
                     }
+                    CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
                     // 待分派节点
                     if (FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex().equals(caseTask.getNodeId())
                             || FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex().equals(caseTask.getNodeId())
@@ -421,7 +422,7 @@
                         buttonList.add(sl);
                         buttonList.add(jb);
                         buttonList.add(xqcl);
-                        CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
+
                         if (UserBaseConsts.UNIT_GRADE_1 != ctUnitDTO.getUnitGrade()) {
                             buttonList.add(sb);
                         }
@@ -432,6 +433,9 @@
                                 buttonList.add(bysl);
                             }
                         }
+//                        if(ctUnitDTO.getUnitType()!=null &ctUnitDTO.getUnitType()==101){
+//                            buttonList.add(db);
+//                        }
                     }
                     // 待受理节点
                     if (FlowNodeEnum.FLOW_NODE_ZJ_DSL.getIndex().equals(caseTask.getNodeId())
@@ -442,6 +446,9 @@
                         buttonList.add(sl);
                         buttonList.add(ht);
                         buttonList.add(xqcl);
+//                        if(ctUnitDTO.getUnitType()!=null &ctUnitDTO.getUnitType()==101){
+//                            buttonList.add(db);
+//                        }
                     }
                     // 回退审核节点
                     if (FlowNodeEnum.FLOW_NODE_ZJ_HTSH.getIndex().equals(caseTask.getNodeId())
@@ -474,7 +481,6 @@
                             buttonList.add(lhczsq);
                             buttonList.add(jasq);
                             buttonList.add(tabcl);
-                            CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
                             if (ObjectUtils.isNotEmpty(ctUnitDTO)) {
                                 if (GzRegionBaseEnum.AREA_7.getIndex().equals(ctUnitDTO.getArea())) {
                                     buttonList.add(yytj);
@@ -488,6 +494,9 @@
                             buttonList.add(tjbljl);
                             buttonList.add(tabcl);
                         }
+//                        if(ctUnitDTO.getUnitType()!=null &ctUnitDTO.getUnitType()==101){
+//                            buttonList.add(db);
+//                        }
                     }
                     // 结案审核节点
                     if (FlowNodeEnum.FLOW_NODE_JASH.getIndex().equals(caseTask.getNodeId())
@@ -498,6 +507,9 @@
                         tabList.add(jash);
 
                         buttonList.add(tabcl);
+//                        if(ctUnitDTO.getUnitType()!=null &ctUnitDTO.getUnitType()==101){
+//                            buttonList.add(db);
+//                        }
                     }
                     // 当事人评价节点
                     if (FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex().equals(caseTask.getNodeId())) {
@@ -516,6 +528,9 @@
                         buttonList.add(sl);
                         buttonList.add(ht);
                         buttonList.add(tabcl);
+//                        if(ctUnitDTO.getUnitType()!=null &ctUnitDTO.getUnitType()==101){
+//                            buttonList.add(db);
+//                        }
                     }
                 }
                 //司法确认
@@ -831,7 +846,7 @@
                                 || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex())
                                 || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex())
                                 || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex())) {
-                            webCaseFlowDTO.setStatusName("待受理");
+                            webCaseFlowDTO.setStatusName("待分派");
                         }
                         // 受理节点
                         if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSL.getIndex())
@@ -4159,7 +4174,12 @@
             gridToDoBacthVo.setYzyContent("");
             gridToDoBacthVo.setObjTag("");
             gridToDoBacthVo.setMobile("18607214221");
-            gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex());
+            if(StringUtils.isNotEmpty(caseInfo.getCanalSecond())&&caseInfo.getCanalSecond().equals("22_00003-7")){
+                gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_6.getIndex());
+            }else {
+                gridToDoBacthVo.setTodoType(GridEnum.GRID_TODO_TYPE_5.getIndex());
+            }
+
             String title = "";
             title += noticeTypeName;
             if (StringUtils.isNotBlank(caseInfo.getPlaintiffs())) {
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java
index 7644dce..8960b38 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java
@@ -4,6 +4,7 @@
 import cn.huge.base.common.bo.ReturnBO;
 import cn.huge.module.cases.domain.dto.GridApprovalRecordDTO;
 import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo;
+import cn.huge.module.cases.domain.vo.SaveEventFeedBackVo;
 import cn.huge.module.sys.vo.*;
 import cn.huge.module.sys.dto.*;
 import cn.huge.module.cases.domain.dto.FileRelateDTO;
@@ -205,4 +206,14 @@
      */
     @GetMapping("/api/citizen/event/getCaseRefByGenerateQrCode")
     ReturnBO getCaseRefByGenerateQrCode(@RequestBody GenerateQrCodeRequestVo generateQrCodeRequestVo);
+
+    /**
+     * 同步办理反馈信息
+     *
+     * @param saveEventFeedBackVo
+     * @return Object
+     * @url {ctx}/api/web/gridEvent/saveEventFeedback
+     */
+    @PostMapping("/api/web/gridEvent/saveEventFeedback")
+    ReturnBO saveEventFeedback(@RequestBody SaveEventFeedBackVo saveEventFeedBackVo);
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java
index c587b9d..bbe9a53 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java
@@ -10,6 +10,7 @@
 import cn.huge.module.cases.domain.dto.GridApprovalRecordDTO;
 import cn.huge.module.cases.domain.dto.GridEventDTO;
 import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo;
+import cn.huge.module.cases.domain.vo.SaveEventFeedBackVo;
 import cn.huge.module.sy.service.SyHolidayService;
 import cn.huge.module.syncbydyh.domain.po.SyCause;
 import cn.huge.module.sys.vo.*;
@@ -569,4 +570,27 @@
             throw new ServiceException("SysClientImpl.getCaseRefByGenerateQrCode", e);
         }
     }
+
+    /**
+     * 同步办理反馈信息
+     *
+     * @param vo           同步办理反馈信息的入参
+     * @return
+     * @url {ctx}/api/client/event/generateQrCode
+     */
+    public String saveEventFeedback(SaveEventFeedBackVo vo){
+        try{
+            ReturnBO returnBo = sysClient.saveEventFeedback(vo);
+            if (ReturnConsts.OK == returnBo.getCode()){
+                String id = (String) returnBo.getData();
+                return id;
+            }else{
+                log.error("Client外服务接口[SysClientImpl.saveEventFeedback]请求异常:" + returnBo.getMsg(), returnBo.getMsg());
+                throw new ClientException("SysClientImpl.saveEventFeedback", returnBo.getMsg());
+            }
+        }catch (Exception e){
+            log.error("service方法[SysClientImpl.saveEventFeedback]请求成功,处理异常:"+e, e);
+            throw new ServiceException("SysClientImpl.saveEventFeedback", e);
+        }
+    }
 }
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/web/GridEventWebController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/web/GridEventWebController.java
index 64e066e..e0449f7 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/web/GridEventWebController.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/web/GridEventWebController.java
@@ -508,4 +508,14 @@
         }
         return ReturnSucUtils.getRepInfo();
     }
+
+    /**
+     * 同步办理反馈接口信息
+     * @param saveEventFeedBackVo
+     * @return
+     */
+    @PostMapping("/saveEventFeedback")
+    public R<Object> saveEventFeedback(@RequestBody SaveEventFeedBackVo saveEventFeedBackVo) {
+        return service.saveEventFeedback(saveEventFeedBackVo);
+    }
 }
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/SaveEventFeedBackVo.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/SaveEventFeedBackVo.java
new file mode 100644
index 0000000..a25bf34
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/SaveEventFeedBackVo.java
@@ -0,0 +1,79 @@
+package cn.huge.module.grid.domain.vo;
+
+import cn.huge.module.sys.dto.FileInfoBaseDTO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName SaveEventFeedBackVo
+ * @Description 同步办理反馈接口入参
+ * @Author 文锦钊
+ * @Date 2025/7/3 10:48
+ **/
+
+@Data
+public class SaveEventFeedBackVo {
+
+    /**
+     * 反馈记录id,36位,建议用uuid (必填)
+     */
+    private String id;
+
+    /**
+     * 事件工单id (必填)
+     */
+    private String code;
+
+    /**
+     * 反馈用户部门名称 (必填)
+     */
+    private String appOrgName;
+
+    /**
+     * 反馈用户名称 (必填)
+     */
+    private String appUserName;
+
+    /**
+     * 反馈用户部门id (必填)
+     */
+    private String appOrgId;
+
+    /**
+     * 反馈用户id (必填)
+     */
+    private String appUserId;
+
+    /**
+     * 反馈时间,格式yyyy-MM-dd HH:mm:ss (必填)
+     * 示例:2022-05-20 15:11:21
+     */
+    private String appTime;
+
+    /**
+     * 反馈意见 (必填)
+     */
+    private String approveContent;
+
+    /**
+     * 环节处理期限,格式yyyy-MM-dd HH:mm:ss (必填)
+     * 示例:2022-05-20 15:11:21
+     */
+    private String processingTime;
+
+    /**
+     * 环节处理类型 (选填)
+     */
+    private String handleType;
+
+    /**
+     * 反馈附件列表 (选填)
+     */
+    private List<GridFileRelatedVo> feedbackAttrInfos;
+
+    /**
+     * 原子系统的反馈附件列表 (选填)
+     */
+    private List<FileInfoBaseDTO> fileInfoList;
+}
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridEventService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridEventService.java
index 19c2c34..69b1040 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridEventService.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridEventService.java
@@ -1,26 +1,38 @@
 package cn.huge.module.grid.service;
 
+import cn.huge.base.common.bo.R;
 import cn.huge.base.common.exception.ServiceException;
 import cn.huge.base.common.utils.DateUtils;
+import cn.huge.base.common.utils.HttpClientUtils;
 import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.ObjectUtils;
+import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
+import cn.huge.module.cust.dto.CtUserDTO;
+import cn.huge.module.file.domain.po.FileInfo;
+import cn.huge.module.file.service.FileInfoService;
 import cn.huge.module.grid.dao.mapper.GridEventMapper;
+import cn.huge.module.grid.domain.dto.GridFileUploadDTO;
+import cn.huge.module.grid.domain.dto.GridOrgDTO;
 import cn.huge.module.grid.domain.po.GridEvent;
+import cn.huge.module.grid.domain.vo.*;
+import cn.huge.module.sys.dto.FileInfoBaseDTO;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.ibatis.annotations.Param;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
-import javax.annotation.PostConstruct;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author wangwh
@@ -40,6 +52,42 @@
 
     @Autowired
     private UtilsClientImpl utilsClient;
+
+    @Autowired
+    private GridCaseTaskService gridCaseTaskService;
+
+    @Autowired
+    private GridCaseDataService gridCaseDataService;
+
+    @Autowired
+    private GridUserService gridUserService;
+
+    @Autowired
+    private CustClientImpl custClient;
+
+    @Autowired
+    private FileInfoService fileInfoService;
+
+    @Value("${grid.url:http://219.137.166.84:8061}")
+    private String gridUrl;
+    @Value("${grid.username:mtxt0011}")
+    private String userName;
+    @Value("${grid.password}")
+    private String passWord;
+    @Value("${grid.secret:BZb2hLCx05}")
+    private String secret;
+    @Value("${grid.passid:b08c0ec0-772d-caf8-5c9b-1f7d86295a95}")
+    private String passid;
+    public HashMap<String,String> initHeadVo() {
+        long timestamp = System.currentTimeMillis()/1000;
+        HashMap<String,String> headVo = new HashMap<>();
+        headVo.put("x-rio-paasid",passid);
+        headVo.put("x-rio-timestamp",timestamp+"");
+        headVo.put("x-rio-nonce","mt");
+        headVo.put("x-rio-signature", DigestUtils.sha256Hex(timestamp+secret+"mt"+timestamp));
+        return headVo;
+    }
+
 
     /**
      * 更新对象
@@ -141,4 +189,127 @@
     public GridEvent getEventByCaseId(String caseId) {
         return mapper.getEventByCaseId(caseId);
     }
+
+    /**
+     * 同步矛纠工单的办理反馈信息
+     *
+     * @param saveEventFeedBackVo
+     * @return
+     */
+    public R<Object> saveEventFeedback(SaveEventFeedBackVo saveEventFeedBackVo) {
+        HashMap<String,String> headVo=  initHeadVo();
+        try{
+            //  传递过来的是子平台的id,需要转换为大平台的id
+            String appOrgId = saveEventFeedBackVo.getAppOrgId();
+
+            String appGridUnitId = null;
+            if (StringUtils.isNotBlank(appOrgId)) {
+                appGridUnitId = gridCaseTaskService.getGridUnitIdByUnitId(saveEventFeedBackVo.getAppOrgId());
+                saveEventFeedBackVo.setAppOrgId(appGridUnitId);
+                if (StringUtils.isBlank(appGridUnitId)) {
+                    throw new Exception("矛纠工单的办理反馈信息的组织不存在");
+                }
+            }
+//        else {
+//            saveEventFeedBackVo.setAppOrgId(gridEvent.getSysOrgId());
+//            saveEventFeedBackVo.setAppOrgName(gridEvent.getSysOrgName());
+//        }
+            log.info("当前环节组织:" + saveEventFeedBackVo.getAppOrgId());
+
+            if (StringUtils.isNotBlank(saveEventFeedBackVo.getAppUserId())) {
+                CtUserDTO ctUserDTO = custClient.clientGetUserAll(saveEventFeedBackVo.getAppUserId());
+                if (ObjectUtils.isNotEmpty(ctUserDTO)) {
+                    if (StringUtils.isNotBlank(ctUserDTO.getIdcard())) {
+                        GridUserIdNumberVo gridUserIdNumberVo = new GridUserIdNumberVo();
+                        gridUserIdNumberVo.setIdNumber(ctUserDTO.getIdcard());
+                        R<GridUserVo> result = gridUserService.getUserByIdNumber(gridUserIdNumberVo);
+                        if (R.SUCCESS == result.getCode()) {
+                            saveEventFeedBackVo.setAppUserId(result.getData().getId());
+                            log.info("当前环节审批用户为: " + saveEventFeedBackVo.getAppUserId());
+                        } else {
+                            saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd");
+                            log.info("当前环节审批用户为特殊用户,身份证找不到用户{},{}", ctUserDTO.getIdcard(), ctUserDTO.getTrueName());
+                        }
+                    } else {
+                        saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd");
+                        log.info("当前环节审批用户为特殊用户,找不到用户{}", saveEventFeedBackVo.getAppUserId());
+                    }
+                } else {
+                    saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd");
+                    log.info("当前环节审批用户为特殊用户,找不到用户{}", saveEventFeedBackVo.getAppUserId());
+                }
+            } else {
+                saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd");
+                log.info("矛纠工单的办理反馈信息的用户为特殊用户");
+            }
+
+            //  判断附件不为空
+            List<FileInfoBaseDTO> fileInfoList = saveEventFeedBackVo.getFileInfoList();
+            if (!CollectionUtils.isEmpty(fileInfoList)){
+                List<GridFileRelatedVo> feedbackAttrInfos = new ArrayList<>();
+                log.info("获取到矛纠工单的办理反馈信息的附件上传:" + fileInfoList.size());
+                for (FileInfoBaseDTO fileInfoBaseDTO : fileInfoList) {
+                    try {
+                        GridFileUploadVo gridFileUploadVo = new GridFileUploadVo();
+                        //  通过id获取文件信息
+                        FileInfo fileInfo = fileInfoService.getById(fileInfoBaseDTO.getId());
+
+                        gridFileUploadVo.setFileName(fileInfo.getFileName());
+                        gridFileUploadVo.setFilePath(fileInfo.getFullPath());
+                        gridFileUploadVo.setFileSize(fileInfo.getSize() != null ? fileInfo.getSize().longValue() : 0L);
+                        gridFileUploadVo.setType(fileInfo.getSuffix());
+                        R<GridFileUploadDTO> result = null;
+                        //上传附件信息
+                        result = gridCaseDataService.uploadFileInfo(gridFileUploadVo);
+                        if (R.SUCCESS == result.getCode()) {
+                            //获取上传结果,组成新的附件对象
+                            GridFileUploadDTO gridFileUploadDTO = result.getData();
+                            GridFileRelatedVo gridFileRelatedVo = new GridFileRelatedVo();
+                            gridFileRelatedVo.setFileName(gridFileUploadDTO.getFileName());
+                            gridFileRelatedVo.setFilePath(gridFileUploadDTO.getFilePath());
+                            gridFileRelatedVo.setOriginalFileName(gridFileUploadDTO.getOriginalFileName());
+                            gridFileRelatedVo.setFileSize(gridFileUploadDTO.getFileSize());
+                            gridFileRelatedVo.setType("add");
+                            gridFileRelatedVo.setFileType(gridFileUploadDTO.getFileType());
+                            feedbackAttrInfos.add(gridFileRelatedVo);
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        log.info("附件上传失败:" + fileInfoBaseDTO.getId());
+                    }
+                }
+
+                //  上传完成后设置原附件列表为空
+                saveEventFeedBackVo.setFileInfoList(null);
+            }
+
+
+            //  发起请求
+            log.info("办理反馈信息-xsd:{}", JSON.toJSONString(saveEventFeedBackVo));
+            log.info("办理反馈信息-xsd:{}", gridUrl + "/standard/eventform/saveFeedback");
+            String s = null;
+            try {
+                s = HttpClientUtils.httpPostRaw(gridUrl + "/standard/eventform/saveFeedback", JSON.toJSONString(saveEventFeedBackVo), headVo, "utf-8");
+            } catch (Exception e) {
+                log.info("xsderror:{}", e);
+                throw new RuntimeException(e);
+            }
+            log.info("xsd:{}", s);
+
+            //
+            JSONObject object = JSONObject.parseObject(s);
+            if (object.getInteger("code") != null && object.getInteger("code") == 0) {
+                log.info("同步矛纠工单的办理反馈信息成功!");
+                Object data = object.get("data");
+                return R.ok(data);
+            } else {
+                log.info("同步矛纠工单的办理反馈信息失败,错误原因:" + object.getString("message"));
+                return R.fail("同步矛纠工单的办理反馈信息失败");
+            }
+        }catch (Exception e){
+            log.error("同步矛纠工单的办理反馈信息报错",e);
+        }
+        return R.fail("同步矛纠工单的办理反馈信息失败");
+
+    }
 }
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
index 4e18a57..228bf12 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
@@ -449,7 +449,7 @@
                 }
             }
         } else if (unitGrade.equals(3)) {
-            SyRegion roadSyRegion = mapper.selectById(ctUnitDTO.getArea());
+            SyRegion roadSyRegion = mapper.selectById(ctUnitDTO.getRoad());
             AreaBO roadaBO = new AreaBO();
             roadaBO.setParentId("root");
             roadaBO.setLabel(roadSyRegion.getName());
diff --git a/dyh-service/dyh-sys/src/main/resources/config/application-prod.yml b/dyh-service/dyh-sys/src/main/resources/config/application-prod.yml
index 9d2a46c..67e08b1 100644
--- a/dyh-service/dyh-sys/src/main/resources/config/application-prod.yml
+++ b/dyh-service/dyh-sys/src/main/resources/config/application-prod.yml
@@ -16,6 +16,8 @@
     driver-class-name: dm.jdbc.driver.DmDriver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
+      stat-view-servlet:
+        enabled: false
       test-while-idle: true
       min-idle: 10
       initial-size: 10
diff --git a/dyh-service/dyh-sys/src/main/resources/config/application-test.yml b/dyh-service/dyh-sys/src/main/resources/config/application-test.yml
index a8e0142..0185f1a 100644
--- a/dyh-service/dyh-sys/src/main/resources/config/application-test.yml
+++ b/dyh-service/dyh-sys/src/main/resources/config/application-test.yml
@@ -16,6 +16,8 @@
     driver-class-name: dm.jdbc.driver.DmDriver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
+      stat-view-servlet:
+        enabled: false
       test-while-idle: true
       min-idle: 10
       initial-size: 10
diff --git a/dyh-service/dyh-sys/src/main/resources/config/application.yml b/dyh-service/dyh-sys/src/main/resources/config/application.yml
index f1b17fc..b39db80 100644
--- a/dyh-service/dyh-sys/src/main/resources/config/application.yml
+++ b/dyh-service/dyh-sys/src/main/resources/config/application.yml
@@ -16,6 +16,8 @@
   main:
     #可以重复命名配置
     allow-bean-definition-overriding: true
+    # 处理循环引用
+    allow-circular-references: true
 
 #server配置
 server:
diff --git a/sql/20250704.sql b/sql/20250704.sql
new file mode 100644
index 0000000..dd6e0f1
--- /dev/null
+++ b/sql/20250704.sql
@@ -0,0 +1,75 @@
+
+
+update "dyh_th_third_cause" set cause_code = '24_02-46' where case_code ='24_02-51';
+update "dyh_th_third_cause" set cause_code = '24_02-9' where case_code = '24_02-52';
+update "dyh_th_third_cause" set cause_code = '24_02-9' where case_code = '24_02-56';
+update "dyh_th_third_cause" set cause_code = '24_02-5' where case_code = '24_02-67';
+update "dyh_th_third_cause" set cause_code = '24_02-25' where case_code ='24_02-70';
+update "dyh_th_third_cause" set cause_code = '24_02-5' where case_code = '24_02-71';
+
+
+
+update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-59';
+update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-69';
+update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-62';
+update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-60';
+update "dyh_case_info" set case_type_first = '24_01-4' ,case_type_first_name='交通运输' where case_type='24_02-58';
+update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-65';
+update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-64';
+update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-68';
+update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-66';
+update "dyh_case_info" set case_type_first = '24_01-9' ,case_type_first_name='民事经济纠纷' where case_type='24_02-57'; 
+update "dyh_case_info" set case_type_first = '24_01-9' ,case_type_first_name='民事经济纠纷' where case_type='24_02-61';
+update "dyh_case_info" set case_type_first = '24_01-9' ,case_type_first_name='民事经济纠纷' where case_type='24_02-63';
+
+
+
+
+
+
+
+update "dyh_case_info" set case_type = '24_02-46',case_type_name='租赁纠纷' where case_type='24_02-51';
+update "dyh_case_info" set case_type = '24_02-9' ,case_type_name='拖欠、克扣工资' where case_type='24_02-52';
+update "dyh_case_info" set case_type = '24_02-9' ,case_type_name='拖欠、克扣工资' where case_type='24_02-56';
+update "dyh_case_info" set case_type = '24_02-5' ,case_type_name='网购及其他消费纠纷' where case_type='24_02-67';
+update "dyh_case_info" set case_type = '24_02-25',case_type_name='噪声、气味、污水等环境问题' where case_type='24_02-70';
+update "dyh_case_info" set case_type = '24_02-5' ,case_type_name='网购及其他消费纠纷' where case_type='24_02-71';
+
+
+insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-73','债务纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null);
+insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-74','涉退役军人纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null);
+insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-75','涉行政争议纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null);
+insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-76','涉法涉诉纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null);
+
+
+delete from dyh_sy_cause  where id ='24_02-51';
+delete from dyh_sy_cause where id = '24_02-52';
+delete from dyh_sy_cause where id = '24_02-56';
+delete from dyh_sy_cause where id = '24_02-67';
+delete from dyh_sy_cause  where id ='24_02-70';
+delete from dyh_sy_cause where id = '24_02-71';
+
+
+update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-59';
+update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-69';
+update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-62';
+update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-60';
+update "dyh_sy_cause" set parent_id = '24_01-4' where id='24_02-58';
+update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-65';
+update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-64';
+update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-68';
+update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-66';
+update "dyh_sy_cause" set parent_id = '24_01-9' where id='24_02-57';
+update "dyh_sy_cause" set parent_id = '24_01-9' where id='24_02-61';
+update "dyh_sy_cause" set parent_id = '24_01-9' where id='24_02-63';
+
+
+
+
+
+update "dyh_case_info" set case_type_first = '24_01-3' ,case_type_first_name='城市管理' where case_type='24_02-25';
+update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-5';
+update "dyh_case_info" set case_type_first = '24_01-2' ,case_type_first_name='劳动社保' where case_type='24_02-9';
+
+
+

--
Gitblit v1.8.0