From 9e8f7a8a1a84c56b1f4d18655231c7b98fae6c1f Mon Sep 17 00:00:00 2001
From: wangwh <2397901735@qq.com>
Date: Sun, 08 Sep 2024 09:28:43 +0800
Subject: [PATCH] 1、首页统计部分代码 2、unfo表加字段、修改办理详情 3、督办模板相关接口

---
 dyh-service/dyh-sys/src/main/resources/config/application-prod.yml                                         |    9 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/FrontPageCountDTO.java               |   39 +
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java                    |   24 +
 dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/po/ModeSupervise.java                         |  120 +++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseSuperviseMapper.java             |   10 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java                   |   12 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java       |   13 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseSuperviseMapper.xml          |   12 
 dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/xml/ModeSuperviseMapper.xml               |  251 +++++++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java |   14 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java                |    1 
 dyh-service/dyh-sys/src/main/resources/config/application-test.yml                                         |    9 
 dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/controller/web/ModeSuperviseWebController.java       |  293 +++++++++++++
 dyh-service/dyh-sys/src/main/resources/config/application-dev.yml                                          |    9 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoUnfoldService.java              |   12 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseTaskMapper.java                  |    7 
 dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/bo/ModeSuperviseBO.java                       |   17 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseSuperviseService.java               |   11 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java                        |    4 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/TransactResultDTO.java               |    8 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml         |   24 +
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml               |   20 
 dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/service/ModeSuperviseService.java                    |  217 ++++++++++
 dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/ModeSuperviseMapper.java                  |   84 ++++
 24 files changed, 1,208 insertions(+), 12 deletions(-)

diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
index c681d15..aaab12c 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
@@ -333,7 +333,7 @@
             unitSelectTerm.setValue(ctUnit.getId());
             unitSelectTerm.setLabel(ctUnit.getUnitName());
             unitSelectTerm.setParentId(ctUnit.getParentId());
-            unitSelectTerm.setCheckable(false);
+            unitSelectTerm.setCheckable(true);
             List<SelectTermDTO> deptSelectTerms = new ArrayList<>();
             for(CtDept ctDept : ctDeptList){
                 if(ctUnit.getId().equals(ctDept.getUnitId())){
@@ -341,7 +341,7 @@
                     deptSelectTerm.setValue(ctDept.getId());
                     deptSelectTerm.setLabel(ctDept.getName());
                     deptSelectTerm.setParentId(ctDept.getParentId());
-                    deptSelectTerm.setCheckable(false);
+                    deptSelectTerm.setCheckable(true);
 
                     deptSelectTerms.add(deptSelectTerm);
                 }
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 07ce60b..e181220 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
@@ -268,6 +268,20 @@
             terms.put("updateStart", updateStart);
             terms.put("updateEnd", updateEnd);
         }
+        // 更新时间区间
+        String acceptTimeStart = request.getParameter("acceptTimeStart");
+        String acceptTimeEnd = request.getParameter("acceptTimeEnd");
+        if(StringUtils.isNotBlank(acceptTimeStart) && StringUtils.isNotBlank(acceptTimeEnd)) {
+            terms.put("acceptTimeStart", acceptTimeStart);
+            terms.put("acceptTimeEnd", acceptTimeEnd);
+        }
+        // 更新时间区间
+        String closeTimeStart = request.getParameter("closeTimeStart");
+        String closeTimeEnd = request.getParameter("closeTimeEnd");
+        if(StringUtils.isNotBlank(closeTimeStart) && StringUtils.isNotBlank(closeTimeEnd)) {
+            terms.put("closeTimeStart", closeTimeStart);
+            terms.put("closeTimeEnd", closeTimeEnd);
+        }
         return terms;
     }
 
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java
index daf365e..086f454 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java
@@ -231,4 +231,17 @@
         }
     }
 
+    /**
+     * web端-查询流程进度
+     * @url {ctx}/api/web/caseTask/getCountList
+     * @return Object
+     */
+    @GetMapping("/getCountList")
+    public Object getCountList(@CurrentUser String userId) {
+        try {
+            return ReturnSucUtils.getRepInfo(service.getCountList(userId));
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseSuperviseMapper.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseSuperviseMapper.java
index 9e71c75..da14e53 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseSuperviseMapper.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseSuperviseMapper.java
@@ -64,10 +64,9 @@
     /**
      * 按条件查询实体总数
      * @param caseId 查询条件集合
-     *  @param page 分页对象
      *  @param caseId 事项ID
      */
-    long countCaseSupervise(@Param("caseId") String caseId, @Param("page") PageRequest page, @Param("supStatus") int supStatus, @Param("quiltUnitId") String quiltUnitId);
+    long countCaseSupervise(@Param("caseId") String caseId, @Param("supStatus") int supStatus, @Param("quiltUnitId") String quiltUnitId);
 
     /**
      * 根据事项ID分页查询
@@ -77,5 +76,10 @@
      */
     List<CaseSupervise> pageCaseSupervise(@Param("caseId") String caseId, @Param("page") PageRequest page, @Param("supStatus") int supStatus, @Param("quiltUnitId") String quiltUnitId);
 
-
+    /**
+     * 首页-督办数量
+     * @param supStatus 回复状态
+     *  @param quiltUnitId 被督办组织编号
+     */
+    long countCaseSuperviseList( @Param("supStatus") int supStatus, @Param("quiltUnitId") String quiltUnitId);
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseTaskMapper.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseTaskMapper.java
index 19cf927..8fbaf4c 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseTaskMapper.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseTaskMapper.java
@@ -1,5 +1,6 @@
 package cn.huge.module.cases.dao.mapper;
 
+import cn.huge.module.cases.domain.dto.FrontPageCountDTO;
 import cn.huge.module.cases.domain.po.CaseTask;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
@@ -61,4 +62,10 @@
     */
     List<CaseTask> pageTerms(@Param("page") PageRequest page, @Param("terms") Map<String, Object> terms);
 
+    /**
+     * 按条件查询实体总数
+     * @param terms 查询条件集合
+     * @return long
+     */
+    FrontPageCountDTO countTaskList(@Param("terms") Map<String, Object> terms);
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml
index 2890856..3323de9 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml
@@ -55,6 +55,8 @@
             <result property="custId" column="cust_id"/>
             <result property="createTime" column="create_time"/>
             <result property="updateTime" column="update_time"/>
+            <result property="acceptTime" column="accept_time"/>
+            <result property="closeTime" column="close_time"/>
     </resultMap>
     <!-- 表 -->
     <sql id='table-name'>dyh_case_info_unfold</sql>
@@ -103,7 +105,9 @@
         party_joy,
         cust_id,
         create_time,
-        update_time
+        update_time,
+        accept_time,
+        close_time
     </sql>
     <!-- 更新实体字段 -->
     <sql id="set-part">
@@ -149,7 +153,9 @@
             <if test="entity.partyJoy != null">party_joy = #{entity.partyJoy},</if>
             <if test="entity.custId != null">cust_id = #{entity.custId},</if>
             <if test="entity.createTime != null">create_time = #{entity.createTime},</if>
-            <if test="entity.updateTime != null">update_time = #{entity.updateTime}</if>
+            <if test="entity.updateTime != null">update_time = #{entity.updateTime},</if>
+            <if test="entity.acceptTime != null">accept_time = #{entity.acceptTime},</if>
+            <if test="entity.closeTime != null">close_time = #{entity.closeTime},</if>
     </sql>
     <!-- 条件 -->
     <sql id="where-part">
@@ -295,6 +301,20 @@
                     and (DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.updateStart}
                         and DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.updateEnd})
                 </if>
+                <if test="terms.acceptTime != null and terms.acceptTime !=''">
+                    and DATE_FORMAT(accept_time,'%Y-%m-%d') = #{terms.acceptTime}
+                </if>
+                <if test="terms.acceptTimeStart != null and terms.acceptTimeStart !='' and terms.acceptTimeEnd != null and terms.acceptTimeEnd !=''">
+                    and (DATE_FORMAT(accept_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.acceptTimeStart}
+                    and DATE_FORMAT(accept_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.acceptTimeEnd})
+                </if>
+                <if test="terms.closeTime != null and terms.closeTime !=''">
+                    and DATE_FORMAT(close_time,'%Y-%m-%d') = #{terms.closeTime}
+                </if>
+                <if test="terms.closeTimeStart != null and terms.closeTimeStart !='' and terms.closeTimeEnd != null and terms.closeTimeEnd !=''">
+                    and (DATE_FORMAT(close_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.closeTimeStart}
+                    and DATE_FORMAT(close_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.closeTimeEnd})
+                </if>
             </where>
         </if>
     </sql>
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseSuperviseMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseSuperviseMapper.xml
index 4c633d9..57334d3 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseSuperviseMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseSuperviseMapper.xml
@@ -240,4 +240,16 @@
         </if>
         limit #{page.offset}, #{page.size}
     </select>
+
+    <!--  根据条件统计  -->
+    <select id="countCaseSuperviseList" resultType="java.lang.Long">
+        select
+        COUNT(1)
+        from
+        <include refid="table-name" />
+        where
+        delete_status = '0'
+        and sup_status = #{supStatus}
+        and quilt_unit_id = #{quiltUnitId}
+    </select>
 </mapper> 
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml
index 73cfc8e..a4ccf2c 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml
@@ -319,4 +319,24 @@
         limit #{page.offset}, #{page.size}
     </select>
 
+    <!--  结果集-->
+    <resultMap id="FrontPageCountResult" type="cn.huge.module.cases.domain.dto.FrontPageCountDTO">
+        <result property="waitSign" column="waitSign"/>
+        <result property="waitAccept" column="waitAccept"/>
+        <result property="waitAccept" column="waitAccept"/>
+    </resultMap>
+    <!--  查询任务数量  -->
+    <select id="countTaskList" resultMap="FrontPageCountResult">
+        select
+        count(case when sign_status = 1 then id end) as waitSign,
+        count(case when node_id = then id end) as waitAccept,
+        count(case when node_id = then id end) as Processing
+        from
+        <include refid="table-name" />
+        where
+        cande_unit_id = #{terms.candeUnitId}
+        and (cande_dept_id = #{terms.candeDeptId} or cande_dept_id is null)
+        and delete_status = '0'
+        and status = '1'
+    </select>
 </mapper> 
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/FrontPageCountDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/FrontPageCountDTO.java
new file mode 100644
index 0000000..47ceccf
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/FrontPageCountDTO.java
@@ -0,0 +1,39 @@
+package cn.huge.module.cases.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FrontPageCountDTO {
+    /**
+     * 待分派
+     */
+    private Long waitDispatch;
+
+    /**
+     * 待签收
+     */
+    private Long waitSign;
+
+    /**
+     * 待受理
+     */
+    private Long waitAccept;
+
+    /**
+     * 办理中
+     */
+    private Long Processing;
+
+    /**
+     * 待审核
+     */
+    private Long waitReview;
+
+    /**
+     * 督办
+     */
+    private Long supervise;
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/TransactResultDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/TransactResultDTO.java
index d430b33..3d09be6 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/TransactResultDTO.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/TransactResultDTO.java
@@ -1,8 +1,11 @@
 package cn.huge.module.cases.domain.dto;
 
 import cn.huge.module.cases.domain.po.CaseInfoUnfold;
+import cn.huge.module.sys.dto.FileInfoBaseDTO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
+
+import java.util.List;
 
 @Data
 public class TransactResultDTO extends CaseInfoUnfold {
@@ -10,4 +13,9 @@
      * 申请配合组织名称,多个用、隔开
      */
     private String applyAssistUnitName;
+
+    /**
+     * 附件
+     */
+    private List<FileInfoBaseDTO> fileInfoBaseDTOList;
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java
index 6247ae6..0efd46c 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java
@@ -33,6 +33,12 @@
     private String caseId;
 
     /**
+     * 纠纷受理时间
+     */
+    @TableField(value = "accept_time")
+    private Date acceptTime;
+
+    /**
     * 实际调解组织编号
     */
     @TableField(value = "mediate_unit_id")
@@ -273,6 +279,12 @@
     private String custId;
 
     /**
+     * 案件办结时间
+     */
+    @TableField(value = "close_time")
+    private Date closeTime;
+
+    /**
     * 创建时间
     */
     @TableField(value = "create_time")
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 0d5288d..6629ef2 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
@@ -230,7 +230,6 @@
             caseFeedback.setHandleUserId(loginUser.getId());
             caseFeedback.setHandleUserName(loginUser.getTrueName());
             Date nowDate = DateUtils.getNowDate();
-            caseFeedback.setId(utilsClient.getNewTimeId());
             caseFeedback.setUpdateTime(nowDate);
             caseFeedback.setCreateTime(nowDate);
             //todo 承办、配合--查询task
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 ef02010..5ce5c6d 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
@@ -7,11 +7,13 @@
 import cn.huge.module.cases.domain.po.CaseAssistApply;
 import cn.huge.module.cases.domain.dto.TransactResultDTO;
 import cn.huge.module.client.api.impl.CustClientImpl;
+import cn.huge.module.client.api.impl.SysClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
 import cn.huge.module.cases.dao.mapper.CaseInfoUnfoldMapper;
 import cn.huge.module.cases.domain.po.CaseInfoUnfold;
 import cn.huge.module.cust.dto.CtUserDTO;
 import cn.huge.module.mediate.constant.CaseBaseConsts;
+import cn.huge.module.sys.dto.FileIdInfoBaseDTO;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
@@ -52,6 +54,9 @@
 
     @Autowired
     private CaseAssistApplyService assistApplyService;
+
+    @Autowired
+    private SysClientImpl sysClient;
 
     /**
     * 更新对象
@@ -183,6 +188,13 @@
                 transactResultDTO.setApplyAssistUnitName(caseAssistApply.getApplyAssistUnitName());
             }
         }
+        Map<String, Object> terms = new HashMap<>();
+        terms.put("mainId", caseId);
+        terms.put("ownerIds", "'"+caseId+"'");
+        List<FileIdInfoBaseDTO> fileIdInfoBaseDTOList = sysClient.listIdInfoByOwnerIdList(terms);
+        if(ObjectUtils.isNotEmpty(fileIdInfoBaseDTOList)){
+            transactResultDTO.setFileInfoBaseDTOList(fileIdInfoBaseDTOList.get(0).getFileList());
+        }
         return transactResultDTO;
     }
 
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseSuperviseService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseSuperviseService.java
index fbebe41..d7a2aa0 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseSuperviseService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseSuperviseService.java
@@ -194,7 +194,7 @@
         try{
             CtUserDTO loginUser = custClient.clientGetUserAll(userId);
             String quiltUnitId = loginUser.getUnitId();
-            long countSuperviseList = mapper.countCaseSupervise(caseId, page, supStatus, quiltUnitId);
+            long countSuperviseList = mapper.countCaseSupervise(caseId, supStatus, quiltUnitId);
             List<CaseSupervise> caseSuperviseList = mapper.pageCaseSupervise(caseId, page, supStatus, quiltUnitId);
 
             Map<String, Object>map = new HashMap<>();
@@ -216,4 +216,13 @@
         }
     }
 
+    /**
+     * 查询督办数量
+     * @param supStatus 回复状态
+     * @param quiltUnitId 被督办组织编号
+     * @return long
+     */
+    public long countCaseSuperviseList(Integer supStatus, String quiltUnitId){
+        return mapper.countCaseSuperviseList(supStatus, quiltUnitId);
+    }
 }
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 6d85073..3e92f05 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
@@ -6,9 +6,11 @@
 import cn.huge.module.cases.domain.dto.CaseFlowDTO;
 import cn.huge.module.cases.domain.dto.TabButtonDTO;
 import cn.huge.module.cases.domain.dto.TabButtonInfoDTO;
+import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
 import cn.huge.module.cases.dao.mapper.CaseTaskMapper;
 import cn.huge.module.cases.domain.po.CaseTask;
+import cn.huge.module.cust.dto.CtUserDTO;
 import cn.huge.module.mediate.constant.CaseBaseConsts;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Maps;
@@ -42,6 +44,12 @@
 
     @Autowired
     private UtilsClientImpl utilsClient;
+
+    @Autowired
+    private CustClientImpl custClient;
+
+    @Autowired
+    private CaseSuperviseService superviseService;
 
     /**
     * 更新对象
@@ -332,4 +340,20 @@
         }
     }
 
+    /**
+     * 按条件统计
+     * @param userId 用户编号
+     * @return long
+     */
+    public Map<String, Long> getCountList(String userId){
+        CtUserDTO loginUser = custClient.clientGetUserAll(userId);
+        Map<String, Object> terms = new HashMap<>();
+        terms.put("candeUnitId", loginUser.getUnitId());
+        terms.put("candeDeptId", loginUser.getDeptId());
+        mapper.countTaskList(terms);
+        superviseService.countCaseSuperviseList(0,loginUser.getUnitId());
+        Map<String, Long> result = new HashMap<>();
+        return result;
+    }
+
 }
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/controller/web/ModeSuperviseWebController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/controller/web/ModeSuperviseWebController.java
new file mode 100644
index 0000000..a18e7e4
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/controller/web/ModeSuperviseWebController.java
@@ -0,0 +1,293 @@
+package cn.huge.module.mode.controller.web;
+
+import cn.huge.base.common.utils.ReturnFailUtils;
+import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.base.config.CurrentUser;
+import cn.huge.module.client.api.impl.CustClientImpl;
+import cn.huge.module.cust.dto.CtUserDTO;
+import cn.huge.module.mode.domain.po.ModeSupervise;
+import cn.huge.module.mode.service.ModeSuperviseService;
+import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * @title: 督办模板表接口api-web端
+ * @description: 督办模板表接口api-web端
+ * @company: hugeinfo
+ * @author: wangwh
+ * @time: 2024-09-07 10:31:33
+ * @version: 1.0.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/web/modeSupervise")
+public class ModeSuperviseWebController {
+
+    @Autowired(required = false)
+    private HttpServletRequest request;
+
+    @Autowired
+    private ModeSuperviseService service;
+
+    @Autowired
+    private CustClientImpl custClient;
+
+    /**
+    * 获取请求URL参数
+    * @return Map<String, Object>
+    */
+    private Map<String, Object> getParameter(){
+        Map<String, Object> terms = Maps.newHashMap();
+        // 主键编号
+        String id = request.getParameter("id");
+        if (StringUtils.isNotBlank(id)){
+            terms.put("id", id);
+        }
+        // 模板类型,1:系统模板,2:自定义模板
+        String modeType = request.getParameter("modeType");
+        if (StringUtils.isNotBlank(modeType)){
+            terms.put("modeType", modeType);
+        }
+        // 模板内容
+        String modeContent = request.getParameter("modeContent");
+        if (StringUtils.isNotBlank(modeContent)){
+            terms.put("modeContent", modeContent);
+        }
+        // 模板所属人编号
+        String modeUserId = request.getParameter("modeUserId");
+        if (StringUtils.isNotBlank(modeUserId)){
+            terms.put("modeUserId", modeUserId);
+        }
+        // 模板所属人名称
+        String modeUserName = request.getParameter("modeUserName");
+        if (StringUtils.isNotBlank(modeUserName)){
+            terms.put("modeUserName", modeUserName);
+        }
+        // 模板所属单位编号
+        String modeUnitId = request.getParameter("modeUnitId");
+        if (StringUtils.isNotBlank(modeUnitId)){
+            terms.put("modeUnitId", modeUnitId);
+        }
+        // 模板所属单位名称
+        String modeUnitName = request.getParameter("modeUnitName");
+        if (StringUtils.isNotBlank(modeUnitName)){
+            terms.put("modeUnitName", modeUnitName);
+        }
+        // 模板状态,0:启用,1:禁用
+        String modeStatus = request.getParameter("modeStatus");
+        if (StringUtils.isNotBlank(modeStatus)){
+            terms.put("modeStatus", modeStatus);
+        }
+        // 模板展示顺序
+        String modeIndex = request.getParameter("modeIndex");
+        if (StringUtils.isNotBlank(modeIndex)){
+            terms.put("modeIndex", modeIndex);
+        }
+        // 操作人编号
+        String operUserId = request.getParameter("operUserId");
+        if (StringUtils.isNotBlank(operUserId)){
+            terms.put("operUserId", operUserId);
+        }
+        // 操作人名称
+        String operUserName = request.getParameter("operUserName");
+        if (StringUtils.isNotBlank(operUserName)){
+            terms.put("operUserName", operUserName);
+        }
+        // 使用次数
+        String useNum = request.getParameter("useNum");
+        if (StringUtils.isNotBlank(useNum)){
+            terms.put("useNum", useNum);
+        }
+        // 删除状态,0:未删除,1:已删除
+        String deleteStatus = request.getParameter("deleteStatus");
+        if (StringUtils.isNotBlank(deleteStatus)){
+            terms.put("deleteStatus", deleteStatus);
+        }
+        // 顾客编号
+        String custId = request.getParameter("custId");
+        if (StringUtils.isNotBlank(custId)){
+            terms.put("custId", custId);
+        }
+        // 创建时间区间
+        String createStart = request.getParameter("createStart");
+        String createEnd = request.getParameter("createEnd");
+        if(StringUtils.isNotBlank(createStart) && StringUtils.isNotBlank(createEnd)) {
+            terms.put("createStart", createStart);
+            terms.put("createEnd", createEnd);
+        }
+        // 更新时间区间
+        String updateStart = request.getParameter("updateStart");
+        String updateEnd = request.getParameter("updateEnd");
+        if(StringUtils.isNotBlank(updateStart) && StringUtils.isNotBlank(updateEnd)) {
+            terms.put("updateStart", updateStart);
+            terms.put("updateEnd", updateEnd);
+        }
+        return terms;
+    }
+
+    /**
+    * 条件查询多个
+    * @url {ctx}/api/web/modeSupervise/listQuery
+    * @return Object
+    */
+    @GetMapping("/listQuery")
+    public Object listQuery() {
+        try {
+            Map<String, Object> terms = getParameter();
+            return ReturnSucUtils.getRepInfo(service.listTerms(terms));
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+    * 条件分页查询
+    * @url {ctx}/api/web/modeSupervise/pageQuery
+    * @param page 页码
+    * @param size 每页数量
+    * @return Object
+    */
+    @GetMapping("/pageQuery")
+    public Object pageQuery(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) {
+        try {
+            Map<String, Object> terms = getParameter();
+            Sort sort = Sort.by(Sort.Direction.DESC, "create_time");
+            PageRequest pageRequest = PageRequest.of(page-1, size, sort);
+            Page<ModeSupervise> modeSupervisePage = service.pageQuery(pageRequest, terms);
+            return ReturnSucUtils.getRepInfo( "处理成功", modeSupervisePage);
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+    * 根据编号查询单个
+    * @url {ctx}/api/web/modeSupervise/getById
+    * @param id 主键编号
+    * @return Object
+    */
+    @GetMapping("/getById")
+    public Object getById(@RequestParam(value = "id") String id) {
+        try {
+            return ReturnSucUtils.getRepInfo(service.getById(id));
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+    * 根据主键单个
+    * @url {ctx}/api/web/modeSupervise/deleteById
+    * @param id 主键编号
+    * @return Object
+    */
+    @GetMapping("/deleteById")
+    public Object deleteById(@RequestParam(value = "id") String id) {
+        try {
+            service.removeById(id);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+    * 新增或更新对象
+    * @url {ctx}/api/web/modeSupervise/saveModeSupervise
+    * @param modeSupervise 实体对象
+    * @return Object
+    */
+    @PostMapping("/saveModeSupervise")
+    public Object saveModeSupervise(@RequestBody ModeSupervise modeSupervise) {
+        try {
+            service.saveModeSupervise(modeSupervise);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+     * 条件分页查询
+     * @url {ctx}/api/web/modeSupervise/pageModeSupervise
+     * @param page 页码
+     * @param size 每页数量
+     * @return Object
+     */
+    @GetMapping("/pageModeSupervise")
+    public Object pageModeSupervise(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size,
+                                    @CurrentUser String userId) {
+        try {
+            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
+            Map<String, Object> terms = getParameter();
+            terms.put("modeUserId", loginUser.getId());
+            terms.put("modeUnitId", loginUser.getUnitId());
+            Sort sort = Sort.by(Sort.Direction.DESC, "create_time");
+            PageRequest pageRequest = PageRequest.of(page-1, size, sort);
+            Page<ModeSupervise> modeSupervisePage = service.pageModeSupervise(pageRequest, terms);
+            return ReturnSucUtils.getRepInfo( "处理成功", modeSupervisePage);
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+     * 修改状态
+     * @url {ctx}/api/web/modeSupervise/updateModeStatus
+     * @param id 模板编号
+     * @return Object
+     */
+    @PostMapping("/updateModeStatus")
+    public Object updateModeStatus(@RequestParam(value = "id") String id, @RequestParam(value = "modeStatus") Integer modeStatus,
+                                   @CurrentUser String userId) {
+        try {
+            service.updateModeStatus(id, modeStatus, userId);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+     * 使用次数增加
+     * @url {ctx}/api/web/modeSupervise/addUseNum
+     * @param id 模板编号
+     * @return Object
+     */
+    @PostMapping("/addUseNum")
+    public Object addUseNum(@RequestParam(value = "id") String id) {
+        try {
+            service.addUseNum(id);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+     * 新增督办模板
+     * @url {ctx}/api/web/modeSupervise/addModeSupervise
+     * @param modeSupervise 实体对象
+     * @return Object
+     */
+    @PostMapping("/addModeSupervise")
+    public Object addModeSupervise(@RequestBody ModeSupervise modeSupervise, @CurrentUser String userId) {
+        try {
+            service.addModeSupervise(modeSupervise, userId);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+}
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/ModeSuperviseMapper.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/ModeSuperviseMapper.java
new file mode 100644
index 0000000..ee3eaae
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/ModeSuperviseMapper.java
@@ -0,0 +1,84 @@
+package cn.huge.module.mode.dao.mapper;
+
+import cn.huge.module.mode.domain.po.ModeSupervise;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @title: 督办模板表持久层业务处理
+* @Description 此处仅涉及复杂SQL操作,务必不要在此再次写单表的CRUD操作,因为mybatisPlus已经实现。
+* @company: hugeinfo
+* @author: wangwh
+* @time: 2024-09-07 10:31:33
+* @version 1.0.0
+*/
+@Repository
+public interface ModeSuperviseMapper extends BaseMapper<ModeSupervise>{
+
+    /**
+    * 更新对象
+    * @param entity 对象
+    */
+    void updateModeSupervise(@Param("entity") ModeSupervise entity);
+
+    /**
+    * 条件更新对象
+    * @param entity 对象
+    * @param terms 条件
+    */
+    void updateModeSuperviseTerms(@Param("entity") ModeSupervise entity, @Param("terms") Map<String, Object> terms);
+
+    /**
+    * 根据编号物理删除
+    * @param id 查询条件集合
+    */
+    void deleteModeSupervise(@Param("id") String id);
+
+    /**
+    * 按条件查询结果集
+    * @param terms 查询条件集合
+    * @return List<ModeSupervise>
+    */
+    List<ModeSupervise> listTerms(@Param("terms") Map<String, Object> terms);
+
+    /**
+    * 按条件查询实体总数
+    * @param terms 查询条件集合
+    * @return long
+    */
+    long countTerms(@Param("terms") Map<String, Object> terms);
+
+    /**
+    * 按条件查询实体分页结果集
+    * @param page 分页对象
+    * @param terms 查询条件集合
+    * @return List<ModeSupervise>
+    */
+    List<ModeSupervise> pageTerms(@Param("page") PageRequest page, @Param("terms") Map<String, Object> terms);
+
+    /**
+     * 按条件查询实体总数
+     * @param terms 查询条件集合
+     * @return long
+     */
+    long countModeSupervise(@Param("terms") Map<String, Object> terms);
+
+    /**
+     * 按条件查询实体分页结果集
+     * @param page 分页对象
+     * @param terms 查询条件集合
+     * @return List<ModeSupervise>
+     */
+    List<ModeSupervise> pageModeSupervise(@Param("page") PageRequest page, @Param("terms") Map<String, Object> terms);
+
+    /**
+     * 使用次数增加
+     * @param id 查询条件集合
+     */
+    void addUseNum(@Param("id") String id);
+}
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/xml/ModeSuperviseMapper.xml b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/xml/ModeSuperviseMapper.xml
new file mode 100644
index 0000000..5354c6d
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/dao/mapper/xml/ModeSuperviseMapper.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 
+ * @title: 督办模板表
+ * @description: 自定义sql,请自行实现业务逻辑
+ * @company: hugeinfo
+ * @author: wangwh
+ * @time:2024-09-07 10:31:33
+ * @version 1.0.0
+-->
+<mapper namespace="cn.huge.module.mode.dao.mapper.ModeSuperviseMapper">
+    <!-- 结果集 -->
+    <resultMap id="dataResult" type="cn.huge.module.mode.domain.po.ModeSupervise">
+            <result property="id" column="id"/>
+            <result property="modeType" column="mode_type"/>
+            <result property="modeContent" column="mode_content"/>
+            <result property="modeUserId" column="mode_user_id"/>
+            <result property="modeUserName" column="mode_user_name"/>
+            <result property="modeUnitId" column="mode_unit_id"/>
+            <result property="modeUnitName" column="mode_unit_name"/>
+            <result property="modeStatus" column="mode_status"/>
+            <result property="modeIndex" column="mode_index"/>
+            <result property="operUserId" column="oper_user_id"/>
+            <result property="operUserName" column="oper_user_name"/>
+            <result property="useNum" column="use_num"/>
+            <result property="deleteStatus" column="delete_status"/>
+            <result property="custId" column="cust_id"/>
+            <result property="createTime" column="create_time"/>
+            <result property="updateTime" column="update_time"/>
+    </resultMap>
+    <!-- 表 -->
+    <sql id='table-name'>dyh_mode_supervise</sql>
+    <!-- 字段 -->
+    <sql id="column-part">
+        id,
+        mode_type,
+        mode_content,
+        mode_user_id,
+        mode_user_name,
+        mode_unit_id,
+        mode_unit_name,
+        mode_status,
+        mode_index,
+        oper_user_id,
+        oper_user_name,
+        use_num,
+        delete_status,
+        cust_id,
+        create_time,
+        update_time
+    </sql>
+    <!-- 更新实体字段 -->
+    <sql id="set-part">
+            <if test="entity.modeType != null">mode_type = #{entity.modeType},</if>
+            <if test="entity.modeContent != null">mode_content = #{entity.modeContent},</if>
+            <if test="entity.modeUserId != null">mode_user_id = #{entity.modeUserId},</if>
+            <if test="entity.modeUserName != null">mode_user_name = #{entity.modeUserName},</if>
+            <if test="entity.modeUnitId != null">mode_unit_id = #{entity.modeUnitId},</if>
+            <if test="entity.modeUnitName != null">mode_unit_name = #{entity.modeUnitName},</if>
+            <if test="entity.modeStatus != null">mode_status = #{entity.modeStatus},</if>
+            <if test="entity.modeIndex != null">mode_index = #{entity.modeIndex},</if>
+            <if test="entity.operUserId != null">oper_user_id = #{entity.operUserId},</if>
+            <if test="entity.operUserName != null">oper_user_name = #{entity.operUserName},</if>
+            <if test="entity.useNum != null">use_num = #{entity.useNum},</if>
+            <if test="entity.deleteStatus != null">delete_status = #{entity.deleteStatus},</if>
+            <if test="entity.custId != null">cust_id = #{entity.custId},</if>
+            <if test="entity.createTime != null">create_time = #{entity.createTime},</if>
+            <if test="entity.updateTime != null">update_time = #{entity.updateTime}</if>
+    </sql>
+    <!-- 条件 -->
+    <sql id="where-part">
+        <if test="terms != null">
+            <where>
+                <if test="terms.id != null and terms.id !=''">
+                    and id = #{terms.id}
+                </if>
+                <if test="terms.modeType != null and terms.modeType !=''">
+                    and mode_type = #{terms.modeType}
+                </if>
+                <if test="terms.modeContent != null and terms.modeContent !=''">
+                    and mode_content = #{terms.modeContent}
+                </if>
+                <if test="terms.modeUserId != null and terms.modeUserId !=''">
+                    and mode_user_id = #{terms.modeUserId}
+                </if>
+                <if test="terms.modeUserName != null and terms.modeUserName !=''">
+                    and mode_user_name = #{terms.modeUserName}
+                </if>
+                <if test="terms.modeUnitId != null and terms.modeUnitId !=''">
+                    and mode_unit_id = #{terms.modeUnitId}
+                </if>
+                <if test="terms.modeUnitName != null and terms.modeUnitName !=''">
+                    and mode_unit_name = #{terms.modeUnitName}
+                </if>
+                <if test="terms.modeStatus != null and terms.modeStatus !=''">
+                    and mode_status = #{terms.modeStatus}
+                </if>
+                <if test="terms.modeIndex != null and terms.modeIndex !=''">
+                    and mode_index = #{terms.modeIndex}
+                </if>
+                <if test="terms.operUserId != null and terms.operUserId !=''">
+                    and oper_user_id = #{terms.operUserId}
+                </if>
+                <if test="terms.operUserName != null and terms.operUserName !=''">
+                    and oper_user_name = #{terms.operUserName}
+                </if>
+                <if test="terms.useNum != null and terms.useNum !=''">
+                    and use_num = #{terms.useNum}
+                </if>
+                <if test="terms.deleteStatus = null and terms.deleteStatus =''">
+                    and delete_status = 0
+                </if>
+                <if test="terms.deleteStatus != null and terms.deleteStatus !=''">
+                    and delete_status = #{terms.deleteStatus}
+                </if>
+                <if test="terms.custId != null and terms.custId !=''">
+                    and cust_id = #{terms.custId}
+                </if>
+                <if test="terms.createTime != null and terms.createTime !=''">
+                    and DATE_FORMAT(create_time,'%Y-%m-%d') = #{terms.createTime}
+                </if>
+                <if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
+                    and (DATE_FORMAT(create_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.createStart}
+                        and DATE_FORMAT(create_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.createEnd})
+                </if>
+                <if test="terms.updateTime != null and terms.updateTime !=''">
+                    and DATE_FORMAT(update_time,'%Y-%m-%d') = #{terms.updateTime}
+                </if>
+                <if test="terms.updateStart != null and terms.updateStart !='' and terms.updateEnd != null and terms.updateEnd !=''">
+                    and (DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.updateStart}
+                        and DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.updateEnd})
+                </if>
+            </where>
+        </if>
+    </sql>
+    <!-- 更新对象 -->
+    <update id="updateModeSupervise">
+        update
+        <include refid="table-name"/>
+        <set>
+            <include refid="set-part"/>
+        </set>
+        <where>
+            id = #{entity.id}
+        </where>
+    </update>
+    <!-- 条件更新对象 -->
+    <update id="updateModeSuperviseTerms">
+        update
+        <include refid="table-name"/>
+        <set>
+            <include refid="set-part"/>
+        </set>
+        <include refid="where-part"/>
+    </update>
+    <!--  根据编号物理删除  -->
+    <delete id="deleteModeSupervise">
+        delete from
+        <include refid="table-name" />
+        where id = #{id}
+    </delete>
+    <!--  根据条件查询  -->
+    <select id="listTerms" resultMap="dataResult">
+        select
+        <include refid="column-part"/>
+        from
+        <include refid="table-name" />
+        <include refid="where-part"/>
+    </select>
+    <!--  根据条件统计  -->
+    <select id="countTerms" resultType="java.lang.Long">
+        select
+        COUNT(1)
+        from
+        <include refid="table-name" />
+        <include refid="where-part"/>
+    </select>
+    <!--  根据条件分页查询  -->
+    <select id="pageTerms" resultMap="dataResult">
+        SELECT
+        <include refid="column-part"/>
+        FROM
+        <include refid="table-name" />
+        <include refid="where-part"/>
+        <if test="page.sort != null">
+            <foreach collection="page.sort" item="s" index="index" separator="," open="order by ">
+                isnull(${s.property}), ${s.property} ${s.direction}
+            </foreach>
+        </if>
+        <if test="page.sort == null">
+            order by isnull(create_time), create_time desc
+        </if>
+        limit #{page.offset}, #{page.size}
+    </select>
+
+    <!--  根据条件统计  -->
+    <select id="countModeSupervise" resultType="java.lang.Long">
+        select
+        COUNT(1)
+        from
+        <include refid="table-name" />
+        where
+            modeStatus = '0'
+            and deleteStatus = '0'
+            and (modeType = '1'
+            or
+            (modeType = '2'
+            <if test="terms.modeUserId != null and terms.modeUserId !=''">
+                and mode_user_id = #{terms.modeUserId}
+            </if>
+            <if test="terms.modeUnitId != null and terms.modeUnitId !=''">
+                and mode_unit_id = #{terms.modeUnitId}
+            </if>)
+    </select>
+
+    <!--  根据条件分页查询  -->
+    <select id="pageModeSupervise" resultMap="dataResult">
+        SELECT
+        <include refid="column-part"/>
+        FROM
+        <include refid="table-name" />
+        where
+            modeStatus = '0'
+            and deleteStatus = '0'
+            and (modeType = '1'
+            or
+            (modeType = '2'
+            <if test="terms.modeUserId != null and terms.modeUserId !=''">
+                and mode_user_id = #{terms.modeUserId}
+            </if>
+            <if test="terms.modeUnitId != null and terms.modeUnitId !=''">
+                and mode_unit_id = #{terms.modeUnitId}
+            </if>)
+
+        <if test="page.sort != null">
+            <foreach collection="page.sort" item="s" index="index" separator="," open="order by ">
+                isnull(${s.property}), ${s.property} ${s.direction}
+            </foreach>
+        </if>
+        <if test="page.sort == null">
+            order by isnull(create_time), create_time desc
+        </if>
+        limit #{page.offset}, #{page.size}
+    </select>
+
+    <!--  增加使用次数  -->
+    <delete id="addUseNum">
+        update dyh_mode_supervise set use_num = use_num+1
+        where id = #{id}
+    </delete>
+</mapper> 
\ No newline at end of file
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/bo/ModeSuperviseBO.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/bo/ModeSuperviseBO.java
new file mode 100644
index 0000000..a335cba
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/bo/ModeSuperviseBO.java
@@ -0,0 +1,17 @@
+package cn.huge.module.mode.domain.bo;
+
+import cn.huge.module.mode.domain.po.ModeSupervise;
+
+/**
+ * @title: 督办模板表业务扩展类
+ * @description: 督办模板表业务扩展类
+ * @company: hugeinfo
+ * @author: wangwh
+ * @time: 2024-09-07 10:31:33
+ * @version: 1.0.0
+ * @see cn.huge.module.mode.domain.po.ModeSupervise
+ */
+public class ModeSuperviseBO extends ModeSupervise {
+
+
+}
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/po/ModeSupervise.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/po/ModeSupervise.java
new file mode 100644
index 0000000..cf3ab99
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/domain/po/ModeSupervise.java
@@ -0,0 +1,120 @@
+package cn.huge.module.mode.domain.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @title: 督办模板表数据库对应关系类
+ * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。
+ * @company:hugeinfo
+ * @author: wangwh
+ * @time: 2024-09-07 10:31:33
+ * @version 1.0.0
+ */
+@TableName(value = "dyh_mode_supervise")
+@Data
+public class ModeSupervise {
+
+    /**
+    * 主键编号
+    */
+    @TableId(value = "id")
+    private String id;
+
+    /**
+    * 模板类型,1:系统模板,2:自定义模板
+    */
+    @TableField(value = "mode_type")
+    private Integer modeType;
+
+    /**
+    * 模板内容
+    */
+    @TableField(value = "mode_content")
+    private String modeContent;
+
+    /**
+    * 模板所属人编号
+    */
+    @TableField(value = "mode_user_id")
+    private String modeUserId;
+
+    /**
+    * 模板所属人名称
+    */
+    @TableField(value = "mode_user_name")
+    private String modeUserName;
+
+    /**
+    * 模板所属单位编号
+    */
+    @TableField(value = "mode_unit_id")
+    private String modeUnitId;
+
+    /**
+    * 模板所属单位名称
+    */
+    @TableField(value = "mode_unit_name")
+    private String modeUnitName;
+
+    /**
+    * 模板状态,0:启用,1:禁用
+    */
+    @TableField(value = "mode_status")
+    private Integer modeStatus;
+
+    /**
+    * 模板展示顺序
+    */
+    @TableField(value = "mode_index")
+    private Integer modeIndex;
+
+    /**
+    * 操作人编号
+    */
+    @TableField(value = "oper_user_id")
+    private String operUserId;
+
+    /**
+    * 操作人名称
+    */
+    @TableField(value = "oper_user_name")
+    private String operUserName;
+
+    /**
+    * 使用次数
+    */
+    @TableField(value = "use_num")
+    private Integer useNum;
+
+    /**
+    * 删除状态,0:未删除,1:已删除
+    */
+    @TableLogic
+    @TableField(value = "delete_status")
+    private Integer deleteStatus;
+
+    /**
+    * 顾客编号
+    */
+    @TableField(value = "cust_id")
+    private String custId;
+
+    /**
+    * 创建时间
+    */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+    * 更新时间
+    */
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+}
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/service/ModeSuperviseService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/service/ModeSuperviseService.java
new file mode 100644
index 0000000..5c045aa
--- /dev/null
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/mode/service/ModeSuperviseService.java
@@ -0,0 +1,217 @@
+package cn.huge.module.mode.service;
+
+import cn.huge.base.common.exception.ServiceException;
+import cn.huge.base.common.utils.DateUtils;
+import cn.huge.base.common.utils.IdUtils;
+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.mode.dao.mapper.ModeSuperviseMapper;
+import cn.huge.module.mode.domain.po.ModeSupervise;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+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 javax.annotation.PostConstruct;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @title: 督办模板表业务逻辑处理
+ * @Description 督办模板表业务逻辑处理
+ * @company hugeinfo
+ * @author wangwh
+ * @Time 2024-09-07 10:31:33
+ * @version 1.0.0
+ */
+@Slf4j
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ModeSuperviseService extends ServiceImpl<ModeSuperviseMapper, ModeSupervise>{
+
+    @Autowired
+    private ModeSuperviseMapper mapper;
+
+    @Autowired
+    private UtilsClientImpl utilsClient;
+
+    @Autowired
+    private CustClientImpl custClient;
+
+    /**
+    * 更新对象
+    * @param entity 对象
+    */
+    public void updateModeSupervise(ModeSupervise entity){
+        try{
+            mapper.updateModeSupervise(entity);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.updateModeSupervise]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.updateModeSupervise", e);
+        }
+    }
+
+    /**
+    * 条件更新对象
+    * @param entity 对象
+    * @param terms 条件
+    */
+    public void updateModeSuperviseTerms(ModeSupervise entity, Map<String, Object> terms){
+        try{
+            mapper.updateModeSuperviseTerms(entity, terms);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.updateModeSuperviseTerms]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.updateModeSuperviseTerms", e);
+        }
+    }
+
+    /**
+    * 根据编号物理删除
+    * @param id 查询条件集合
+    */
+    public void deleteModeSupervise(String id){
+        try{
+            mapper.deleteModeSupervise(id);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.deleteModeSupervise]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.deleteModeSupervise", e);
+        }
+    }
+
+    /**
+    * 按条件查询
+    * @param terms 条件
+    * @return List
+    */
+    public List<ModeSupervise> listTerms(Map<String, Object> terms){
+        return mapper.listTerms(terms);
+    }
+
+    /**
+    * 按条件统计
+    * @param terms 条件
+    * @return long
+    */
+    public long countTerms(Map<String, Object> terms){
+        return mapper.countTerms(terms);
+    }
+
+    /**
+    * 按条件分页查询
+    * @param page 分页对象
+    * @param terms 条件
+    * @return Page
+    */
+    public Page<ModeSupervise> pageQuery(PageRequest page, Map<String, Object> terms){
+        long total = mapper.countTerms(terms);
+        List<ModeSupervise> content = mapper.pageTerms(page, terms);
+        return new PageImpl<ModeSupervise>(content, page, total);
+    }
+
+    /**
+    * 新增或更新对象
+    * @param modeSupervise 实体对象
+    */
+    public void saveModeSupervise(ModeSupervise modeSupervise){
+        try{
+            Date nowDate = DateUtils.getNowDate();
+            // 判断是否新增
+            if (IdUtils.checkNewId(modeSupervise.getId())){
+                modeSupervise.setId(utilsClient.getNewTimeId());
+                modeSupervise.setCreateTime(nowDate);
+            }
+            modeSupervise.setUpdateTime(nowDate);
+            this.saveOrUpdate(modeSupervise);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.saveModeSupervise]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.saveModeSupervise", e);
+        }
+    }
+
+    /**
+     * 按条件分页查询
+     * @param page 分页对象
+     * @param terms 条件
+     * @return Page
+     */
+    public Page<ModeSupervise> pageModeSupervise(PageRequest page, Map<String, Object> terms){
+        long total = mapper.countModeSupervise(terms);
+        List<ModeSupervise> content = mapper.pageModeSupervise(page, terms);
+        return new PageImpl<ModeSupervise>(content, page, total);
+    }
+
+    /**
+     * 修改状态
+     * @param id 模板编号
+     * @param modeStatus 状态
+     */
+    public void updateModeStatus(String id, Integer modeStatus, String userId){
+        try{
+            Date nowDate = DateUtils.getNowDate();
+            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
+            ModeSupervise modeSupervise = new ModeSupervise();
+            modeSupervise.setId(id);
+            modeSupervise.setModeStatus(modeStatus);
+            modeSupervise.setOperUserId(loginUser.getId());
+            modeSupervise.setOperUserName(loginUser.getTrueName());
+            modeSupervise.setUpdateTime(nowDate);
+            Map<String, Object> terms = new HashMap<>();
+            terms.put("modeType", 2);
+            mapper.updateModeSuperviseTerms(modeSupervise, terms);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.saveModeSupervise]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.saveModeSupervise", e);
+        }
+    }
+
+    /**
+     * 修改状态
+     * @param modeSupervise 模板信息
+     * @param userId 用户编号
+     */
+    public void addModeSupervise(ModeSupervise modeSupervise, String userId){
+        try{
+            Date nowDate = DateUtils.getNowDate();
+            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
+            modeSupervise.setId(IdUtils.getNewTimeId());
+            //默认添加所属人和组织为当前用户
+            modeSupervise.setModeUserId(loginUser.getId());
+            modeSupervise.setModeUserName(loginUser.getTrueName());
+            modeSupervise.setModeUnitId(loginUser.getUnitId());
+            modeSupervise.setModeUnitName(loginUser.getUnitName());
+            modeSupervise.setModeStatus(0);
+            modeSupervise.setUseNum(0);
+            modeSupervise.setOperUserId(loginUser.getId());
+            modeSupervise.setOperUserName(loginUser.getTrueName());
+            modeSupervise.setDeleteStatus(0);
+            modeSupervise.setUpdateTime(nowDate);
+            modeSupervise.setCreateTime(nowDate);
+            //todo 模板展示顺序
+            mapper.insert(modeSupervise);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.addModeSupervise]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.addModeSupervise", e);
+        }
+    }
+
+    /**
+     * 使用次数增加
+     * @param id 模板编号
+     */
+    public void addUseNum(String id){
+        try{
+            mapper.addUseNum(id);
+        }catch (Exception e){
+            log.error("[ModeSuperviseService.saveModeSupervise]调用失败,异常信息:"+e, e);
+            throw new ServiceException("ModeSuperviseService.saveModeSupervise", e);
+        }
+    }
+}
diff --git a/dyh-service/dyh-sys/src/main/resources/config/application-dev.yml b/dyh-service/dyh-sys/src/main/resources/config/application-dev.yml
index 89abc93..28ca250 100644
--- a/dyh-service/dyh-sys/src/main/resources/config/application-dev.yml
+++ b/dyh-service/dyh-sys/src/main/resources/config/application-dev.yml
@@ -106,4 +106,11 @@
   #密码
   password: hugeinfo123
   #附件存储根目录
-  rootdir: /home/ftp/gzdyh
\ No newline at end of file
+  rootdir: /home/ftp/gzdyh
+
+#科大讯飞配置
+xfyun:
+  host_url: https://iat-api.xfyun.cn/v2/iat
+  appid: 5c7b00be
+  api_secret: MGM5Mjg2ODQzYWZmNGE2YjlhOGZlMTJj
+  api_key: 9e0a80ed995daf5b194f06ca336080c1
\ No newline at end of file
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 5465a0e..4a13e04 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
@@ -93,4 +93,11 @@
     servlet:
       context-path: /
     ssl:
-      enabled: false
\ No newline at end of file
+      enabled: false
+
+#科大讯飞配置
+xfyun:
+  host_url: https://iat-api.xfyun.cn/v2/iat
+  appid: 5c7b00be
+  api_secret: MGM5Mjg2ODQzYWZmNGE2YjlhOGZlMTJj
+  api_key: 9e0a80ed995daf5b194f06ca336080c1
\ No newline at end of file
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 5465a0e..4a13e04 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
@@ -93,4 +93,11 @@
     servlet:
       context-path: /
     ssl:
-      enabled: false
\ No newline at end of file
+      enabled: false
+
+#科大讯飞配置
+xfyun:
+  host_url: https://iat-api.xfyun.cn/v2/iat
+  appid: 5c7b00be
+  api_secret: MGM5Mjg2ODQzYWZmNGE2YjlhOGZlMTJj
+  api_key: 9e0a80ed995daf5b194f06ca336080c1
\ No newline at end of file

--
Gitblit v1.8.0