广州市综治平台后端
ab7b1b5ad5f2eed0b11be524cbaccbb7489fd6cd..f4e5da604604308b9f754de7e863c180fcedd8c9
2 days ago xusd
fix:超时办件优化
f4e5da diff | tree
2 days ago xusd
fix:超时办件优化
e62c34 diff | tree
2 days ago xusd
fix:法院案号生成调整
47a4e9 diff | tree
8 files modified
895 ■■■■■ changed files
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java 6 ●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/resources/config/application.yml 4 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java 5 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml 505 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/resources/config/application.yml 4 ●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/java/cn/huge/module/timer/GridCityCaseTimer.java 343 ●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/resources/config/application.yml 4 ●●●● patch | view | raw | blame | history
dyh-service/dyh-utils/src/main/java/cn/huge/module/mediate/utils/CaseNoUtils.java 24 ●●●● patch | view | raw | blame | history
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
@@ -626,7 +626,7 @@
        } else if (parts.length >= 4) {
            return parts[0] + parts[1] + parts[2] + "-" + parts[3];
        } else if (parts.length >= 5) {
            return parts[0] + parts[1] + parts[2] + "-" + parts[3]+"-" + parts[4];
            return parts[0] + parts[1] + parts[2] + "-" + parts[3] + "-" + parts[4];
        } else {
            return input; // 或抛出异常
        }
@@ -674,7 +674,7 @@
        GridUserRoleVo gridUserRoleVo = new GridUserRoleVo();
        gridUserRoleVo.setUserId(userId);
        GridUserRoleDTO userRoleDTO = sysClient.getUserRoleList(gridUserRoleVo);
        if (StringUtils.isEmpty(userRoleDTO.getRoleName()) || !userRoleDTO.getRoleName().contains("(M)")) {
        if (StringUtils.isEmpty(userRoleDTO.getRoleName()) || (!userRoleDTO.getRoleName().contains("(M)") && !userRoleDTO.getRoleName().contains("领导") && !userRoleDTO.getRoleName().contains("调度干部"))) {
            return ReturnFailUtils.getRepInfo("该用户没有矛调系统的权限");
        }
        CtUserole ctUserole = new CtUserole();
@@ -730,7 +730,7 @@
            switch (grade) {
                case 1:
                    //市级级
                    ctUnit.setLevel(grade );
                    ctUnit.setLevel(grade);
                    ctUnit.setUnitGrade(grade);
                    ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102);
                    ctUnit.setParentId("2024000000000001");
dyh-service/dyh-disp/src/main/resources/config/application.yml
@@ -3,8 +3,8 @@
  profiles:
    active:
#      - dev
#      - test
      - prod
      - test
#      - prod
  devtools:
    restart:
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
@@ -205,6 +205,11 @@
        if (StringUtils.isNotBlank(assistUnitId)){
            terms.put("assistUnitId", assistUnitId);
        }
        //任务是否完成
        String taskStatus = request.getParameter("taskStatus");
        if (StringUtils.isNotBlank(taskStatus)){
            terms.put("taskStatus", taskStatus);
        }
        return terms;
    }
    /**
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
@@ -29,13 +29,14 @@
                t1.road,
            </if>
            <if test="terms.queRoad != null and terms.queRoad !=''">
                (case when t1.village_name = '' or t1.village_name is null then '本级' else t1.village_name end)as groupName,
                (case when t1.village_name = '' or t1.village_name is null then '本级' else t1.village_name end)as
                groupName,
                t1.village as groupCode,
                t1.village,
            </if>
<!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
<!--                t1.unit_name as groupName,-->
<!--            </if>-->
            <!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
            <!--                t1.unit_name as groupName,-->
            <!--            </if>-->
        </if>
    </sql>
@@ -54,9 +55,9 @@
            <if test="terms.queRoad != null and terms.queRoad !=''">
                (case when t1.village = '' or t1.village is null then '本级' else t1.village end)
            </if>
<!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
<!--                t1.id-->
<!--            </if>-->
            <!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
            <!--                t1.id-->
            <!--            </if>-->
        </if>
    </sql>
@@ -101,16 +102,20 @@
            <if test="terms.unitIds != null and terms.unitIds !=''">
                and t1.id in(${terms.unitIds})
            </if>
        </if>
    </sql>
    <!--  统计任务平均时长  -->
    <select id="statisticsAVG" resultType="cn.huge.module.analysis.domain.dto.AvgDurationDTO">
        select AVG(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as fp,
            AVG(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')  and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as sl,
            AVG(case when (t2.node_id = 'BLFK' and t2.status = '2') and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as blz
            from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.handle_unit_id
                left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        select AVG(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id =
        'DFP') and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as fp,
        AVG(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
        and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as sl,
        AVG(case when (t2.node_id = 'BLFK' and t2.status = '2') and t2.status = 2 then ROUND(DATEDIFF(SECOND,
        t2.create_time, t2.handle_time) / 3600.0, 2) end) as blz
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.handle_unit_id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
@@ -122,29 +127,59 @@
    <select id="statisticsGroupAVG" resultType="cn.huge.module.analysis.domain.dto.AvgDurationGroupDTO">
        select
        <include refid="selectPart"/>
        AVG(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as fp,
        count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and t2.status = 2 then t2.id end) as fps,
        AVG(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')  and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as sl,
        count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')  and t2.status = 2 then t2.id end) as sls,
        AVG(case when (t2.node_id = 'BLFK' and t2.status = '2') and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as blz,
        AVG(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as fp,
        count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        and t2.status = 2 then t2.id end) as fps,
        AVG(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
        and t2.status = 2 then ROUND(DATEDIFF(SECOND, t2.create_time, t2.handle_time) / 3600.0, 2) end) as sl,
        count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
        and t2.status = 2 then t2.id end) as sls,
        AVG(case when (t2.node_id = 'BLFK' and t2.status = '2') and t2.status = 2 then ROUND(DATEDIFF(SECOND,
        t2.create_time, t2.handle_time) / 3600.0, 2) end) as blz,
        count(case when (t2.node_id = 'BLFK' and t2.status = '2') and t2.status = 2 then t2.id end) as bls
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.handle_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
    </select>
    <!--  分组统计任务  -->
    <select id="statisticsQuantity" resultType="cn.huge.module.analysis.domain.dto.StatisticsGroupDTO">
        select
        count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as fpcs,
        count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as slcs
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
            and ((t2.overtime_status = 1 and t2.status = 2)) then t2.id end) as
            fpcs,
            count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
            and ((t2.overtime_status = 1 and t2.status = 2)) then t2.id end) as
            slcs
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
            and ((sysdate > expire_time and t2.status = 1)) then t2.id end) as
            fpcs,
            count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
            and ((sysdate > expire_time and t2.status = 1)) then t2.id end) as
            slcs
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as
            fpcs,
            count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as
            slcs
        </if>
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
@@ -155,10 +190,14 @@
    <!--  首页-统计超时任务  -->
    <select id="homeStatisticsQuantity" resultType="cn.huge.module.analysis.domain.dto.StatisticsGroupDTO">
        select
        count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as fpcs,
        count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as slcs
        count(case when (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as
        fpcs,
        count(case when (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
        and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1)) then t2.id end) as
        slcs
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
@@ -212,7 +251,8 @@
        from
        (
        select ROUND(DATEDIFF(SECOND, t2.appear_time, t2.audit_time) / 3600.0, 2) as usetime_hour
        from dyh_ct_unit t1 left join dyh_case_appear t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_appear t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.apply_status = 1
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -223,7 +263,8 @@
        </if>
        union all
        select ROUND(DATEDIFF(SECOND, t2.apply_time, t2.audit_time) / 3600.0, 2) as usetime_hour
        from dyh_ct_unit t1 left join dyh_case_assist_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_assist_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.apply_status = 1
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -234,7 +275,8 @@
        </if>
        union all
        select ROUND(DATEDIFF(SECOND, t2.return_time, t2.audit_time) / 3600.0, 2) as usetime_hour
        from dyh_ct_unit t1 left join dyh_case_return t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_return t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.return_status = 1
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -245,7 +287,8 @@
        </if>
        union all
        select ROUND(DATEDIFF(SECOND, t2.apply_time, t2.audit_time) / 3600.0, 2) as usetime_hour
        from dyh_ct_unit t1 left join dyh_case_windup_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_windup_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.apply_status = 1
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -261,12 +304,14 @@
    <select id="statisticsApplyGroup" resultType="cn.huge.module.analysis.domain.dto.AvgDurationGroupDTO">
        select
        <include refid="selectPart"/>
               avg(usetime_hour) as sp,
                count(distinct ownerId) as sps
        avg(usetime_hour) as sp,
        count(distinct ownerId) as sps
        from
        (
        select ROUND(DATEDIFF(SECOND, t2.appear_time, t2.audit_time) / 3600.0, 2) as usetime_hour, t2.id as ownerId, t1.*
        from dyh_ct_unit t1 left join dyh_case_appear t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        select ROUND(DATEDIFF(SECOND, t2.appear_time, t2.audit_time) / 3600.0, 2) as usetime_hour, t2.id as ownerId,
        t1.*
        from dyh_ct_unit t1 left join dyh_case_appear t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.apply_status = 1 and t2.audit_time != t2.appear_time
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -277,7 +322,8 @@
        </if>
        union all
        select ROUND(DATEDIFF(SECOND, t2.apply_time, t2.audit_time) / 3600.0, 2) as usetime_hour, t2.id as ownerId, t1.*
        from dyh_ct_unit t1 left join dyh_case_assist_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_assist_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.apply_status = 1 and t2.audit_time != t2.apply_time
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -287,8 +333,10 @@
            <include refid="statisticsApplyAVG-wherePart"/>
        </if>
        union all
        select ROUND(DATEDIFF(SECOND, t2.return_time, t2.audit_time) / 3600.0, 2) as usetime_hour, t2.id as ownerId, t1.*
        from dyh_ct_unit t1 left join dyh_case_return t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        select ROUND(DATEDIFF(SECOND, t2.return_time, t2.audit_time) / 3600.0, 2) as usetime_hour, t2.id as ownerId,
        t1.*
        from dyh_ct_unit t1 left join dyh_case_return t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.return_status = 1 and t2.audit_time!= t2.return_time
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -299,7 +347,8 @@
        </if>
        union all
        select ROUND(DATEDIFF(SECOND, t2.apply_time, t2.audit_time) / 3600.0, 2) as usetime_hour, t2.id as ownerId, t1.*
        from dyh_ct_unit t1 left join dyh_case_windup_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_windup_apply t2 on t1.id = t2.audit_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where t2.apply_status = 1 and t2.audit_time != t2.apply_time
        <if test="terms != null">
            <if test="terms.closeStart != null and terms.closeStart !='' and terms.closeEnd != null and terms.closeEnd !=''">
@@ -309,7 +358,8 @@
            <include refid="statisticsApplyAVG-wherePart"/>
        </if>
        ) t1
        group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
    </select>
    <!-- 条件 -->
@@ -354,12 +404,14 @@
        <if test="terms.unitIds != null and terms.unitIds !=''">
            and t1.id in(${terms.unitIds})
        </if>
    </sql>
    <!--  统计督办平均时长  -->
    <select id="statisticsSuperviseAVG" resultType="cn.huge.module.analysis.domain.dto.AvgDurationDTO">
        select AVG(ROUND(DATEDIFF(SECOND, t2.sup_time, t2.reply_time) / 3600.0, 2)) as db
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        and t2.sup_status = 1
@@ -367,20 +419,34 @@
    <!--  分组统计督办平均时长  -->
    <select id="statisticsSuperviseGroup" resultType="cn.huge.module.analysis.domain.dto.AvgDurationGroupDTO">
        select <include refid="selectPart"/>
               AVG(ROUND(DATEDIFF(SECOND, t2.sup_time, t2.reply_time) / 3600.0, 2)) as db, count(case when sup_status = 1 then t2.id end ) as hfs
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        select
        <include refid="selectPart"/>
        AVG(ROUND(DATEDIFF(SECOND, t2.sup_time, t2.reply_time) / 3600.0, 2)) as db, count(case when sup_status = 1 then
        t2.id end ) as hfs
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        and t2.sup_status = 1
        group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
    </select>
    <!--  分组查询超时数量  -->
    <select id="statisticsSuperviseQuantity" resultType="cn.huge.module.analysis.domain.dto.StatisticsGroupDTO">
        select
            count(case when ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1')) then t2.id end) as dbcs
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            count(case when (t2.overtime_status = '1') then t2.id end) as dbcs
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            count(case when (sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) then t2.id end) as dbcs
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            count(case when ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or
            (t2.overtime_status = '1')) then t2.id end) as dbcs
        </if>
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
    </select>
@@ -388,14 +454,17 @@
    <!--  首页-查询超时数量  -->
    <select id="homeStatisticsSuperviseQuantity" resultType="cn.huge.module.analysis.domain.dto.StatisticsGroupDTO">
        select
        count(case when ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1')) then t2.id end) as dbcs
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on t2.case_id = t3.id
        count(case when ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or
        (t2.overtime_status = '1')) then t2.id end) as dbcs
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id left join dyh_case_info t3 on
        t2.case_id = t3.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
    </select>
    <!--  统计重复来访案件数量  -->
    <select id="countRepeatedCases" resultType="cn.huge.module.analysis.domain.dto.CountRepeateDto" parameterType="cn.huge.module.analysis.domain.vo.CountRepeateVo">
    <select id="countRepeatedCases" resultType="cn.huge.module.analysis.domain.dto.CountRepeateDto"
            parameterType="cn.huge.module.analysis.domain.vo.CountRepeateVo">
        WITH RepeatedPersons AS (
        SELECT true_name, mobile, certi_no
        FROM gzdyh_test.dyh_case_person
@@ -408,7 +477,8 @@
        MinCaseIds AS (
        SELECT rp.true_name, rp.mobile, rp.certi_no, MIN(p.case_id) as min_case_id
        FROM RepeatedPersons rp
        JOIN gzdyh_test.dyh_case_person p ON rp.true_name = p.true_name AND rp.mobile = p.mobile AND rp.certi_no = p.certi_no
        JOIN gzdyh_test.dyh_case_person p ON rp.true_name = p.true_name AND rp.mobile = p.mobile AND rp.certi_no =
        p.certi_no
        GROUP BY rp.true_name, rp.mobile, rp.certi_no
        ),
        FilteredCases AS (
@@ -478,15 +548,15 @@
            GROUP BY case_type_first_name
        </if>
        <if test="groupByArea != null and groupByArea != ''">
<!--            AND road_name is not NULL-->
            <!--            AND road_name is not NULL-->
            GROUP BY area_name
        </if>
        <if test="groupByRoad != null and groupByRoad != ''">
<!--            AND road_name is not NULL-->
            <!--            AND road_name is not NULL-->
            GROUP BY road_name
        </if>
        <if test="groupByTime != null and groupByTime != ''">
            GROUP BY  groupByType
            GROUP BY groupByType
        </if>
    </select>
@@ -495,31 +565,51 @@
        select
        COUNT(1)
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        and (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        and (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = 1 and t2.status = 2)
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > expire_time and t2.status = 1)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        </if>
    </select>
    <!--  查询分派超时案件  -->
    <select id="listFPQuantity" resultType="cn.huge.module.analysis.domain.dto.TimeoutTaskInfoDTO">
        select t2.case_id as caseId, t2.id as caseTaskId, t2.create_time as turnaroundTime, t2.node_name as nodeName, (case t2.status when 1 then 0 when 2 then 1 end) as taskStatus,
        (case t2.status when 2 then t2.overtime_hour when 1 then DATEDIFF(hh, t2.expire_time, sysdate) end) as timeLimit,
        select t2.case_id as caseId, t2.id as caseTaskId, t2.create_time as turnaroundTime, t2.node_name as nodeName,
        (case t2.status when 1 then 0 when 2 then 1 end) as taskStatus,
        (case t2.status when 2 then t2.overtime_hour when 1 then DATEDIFF(hh, t2.expire_time, sysdate) end) as
        timeLimit,
        t3.case_level as caseGrade, t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
        concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
        concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.cande_unit_name as candeUnitName,
        (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        and (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        and (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = 1 and t2.status = 2)
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > expire_time and t2.status = 1)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        </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}
@@ -536,7 +626,7 @@
        select
        COUNT(1)
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
@@ -544,19 +634,29 @@
        <include refid="statisticsAVG-wherePart"/>
        and
        (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
          and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1) )
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = 1 and t2.status = 2)
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > expire_time and t2.status = 1)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        </if>
    </select>
    <!--  查询受理超时案件  -->
    <select id="listSLQuantity" resultType="cn.huge.module.analysis.domain.dto.TimeoutTaskInfoDTO">
        select t2.case_id as caseId, t2.id as caseTaskId,t2.create_time as turnaroundTime, t2.node_name as nodeName, (case t2.status when 1 then 0 when 2 then 1 end) as taskStatus,
        (case t2.status when 2 then t2.overtime_hour when 1 then DATEDIFF(hh, t2.expire_time, sysdate) end) as timeLimit,
        select t2.case_id as caseId, t2.id as caseTaskId,t2.create_time as turnaroundTime, t2.node_name as nodeName,
        (case t2.status when 1 then 0 when 2 then 1 end) as taskStatus,
        (case t2.status when 2 then t2.overtime_hour when 1 then DATEDIFF(hh, t2.expire_time, sysdate) end) as
        timeLimit,
        t3.case_level as caseGrade, t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
        concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
        concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.cande_unit_name as candeUnitName,
        (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
@@ -564,7 +664,15 @@
        <include refid="statisticsAVG-wherePart"/>
        and
        (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL')
          and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = 1 and t2.status = 2)
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > expire_time and t2.status = 1)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        </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}
@@ -581,25 +689,42 @@
        select
        COUNT(1)
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and  (t2.overtime_status = '1')
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        </if>
    </select>
    <!--  查询督办超时案件  -->
    <select id="listDBQuantity" resultType="cn.huge.module.analysis.domain.dto.TimeoutTaskInfoDTO">
        select t2.case_id as caseId, t2.sup_time as turnaroundTime, '督办回复' as nodeName, t2.sup_status as taskStatus,
        (case t2.sup_status when 1 then t2.overtime_hour when 0 then DATEDIFF(hh, DATEADD(hour, t2.reply_term, t2.sup_time), sysdate) end) as timeLimit,
               t3.case_level as caseGrade,t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
               concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
            concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.quilt_unit_name as candeUnitName,
            (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
        (case t2.sup_status when 1 then t2.overtime_hour when 0 then DATEDIFF(hh, DATEADD(hour, t2.reply_term,
        t2.sup_time), sysdate) end) as timeLimit,
        t3.case_level as caseGrade,t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
        concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
        concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.quilt_unit_name as candeUnitName,
        (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id
            left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and  (t2.overtime_status = '1')
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        </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}
@@ -615,60 +740,97 @@
    <select id="countAllQuantity" resultType="java.lang.Long">
        select sum(zs)
        from(
            select
                COUNT(1) as zs
            from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
                                left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
            where
                t1.delete_status = 0
              and t2.delete_status = 0
              and t3.delete_status = 0
                <include refid="statisticsAVG-wherePart"/>
              and((t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
                or (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL'))
              and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
            union
            select
                COUNT(1) as zs
            from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id
                                left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
            where
        select
        COUNT(1) as zs
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        and((t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        or (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL'))
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = 1 and t2.status = 2)
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > expire_time and t2.status = 1)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        </if>
        union
        select
        COUNT(1) as zs
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
            and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        )
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = '1')
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status =
            '1'))
        </if>)
    </select>
    <!--  查询督办超时案件  -->
    <select id="listAllQuantity" resultType="cn.huge.module.analysis.domain.dto.TimeoutTaskInfoDTO">
        select * from(
            select t2.case_id as caseId, t2.id as caseTaskId, t2.create_time as turnaroundTime, t2.node_name as nodeName, (case t2.status when 1 then 0 when 2 then 1 end) as taskStatus,
            (case t2.status when 2 then t2.overtime_hour when 1 then DATEDIFF(hh, t2.expire_time, sysdate) end) as timeLimit,
            t3.case_level as caseGrade, t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
            concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
            concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.cande_unit_name as candeUnitName,
            (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
            from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
                left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
            where
            t1.delete_status = 0
            and t2.delete_status = 0
            and t3.delete_status = 0
            <include refid="statisticsAVG-wherePart"/>
            and ((t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
                or (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL'))
        select t2.case_id as caseId, t2.id as caseTaskId, t2.create_time as turnaroundTime, t2.node_name as nodeName,
        (case t2.status when 1 then 0 when 2 then 1 end) as taskStatus,
        (case t2.status when 2 then t2.overtime_hour when 1 then DATEDIFF(hh, t2.expire_time, sysdate) end) as
        timeLimit,
        t3.case_level as caseGrade, t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
        concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
        concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.cande_unit_name as candeUnitName,
        (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
        from dyh_ct_unit t1 left join dyh_case_task t2 on t1.id = t2.cande_unit_id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        t1.delete_status = 0
        and t2.delete_status = 0
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        and ((t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        or (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL'))
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = 1 and t2.status = 2)
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > expire_time and t2.status = 1)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
            union all
            select t2.case_id as caseId, null as caseTaskId, t2.sup_time as turnaroundTime, '督办回复' as nodeName, t2.sup_status as taskStatus,
            (case t2.sup_status when 1 then t2.overtime_hour when 0 then DATEDIFF(hh, DATEADD(hour, t2.reply_term, t2.sup_time), sysdate) end) as timeLimit,
            t3.case_level as caseGrade,t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
            concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
            concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.quilt_unit_name as candeUnitName,
            (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
            from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id
                left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
            where
            <include refid="statisticsSuperviseAVG-wherePart"/>
            and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        </if>
        union all
        select t2.case_id as caseId, null as caseTaskId, t2.sup_time as turnaroundTime, '督办回复' as nodeName,
        t2.sup_status as taskStatus,
        (case t2.sup_status when 1 then t2.overtime_hour when 0 then DATEDIFF(hh, DATEADD(hour, t2.reply_term,
        t2.sup_time), sysdate) end) as timeLimit,
        t3.case_level as caseGrade,t3.canal_name as caseSource, t4.mediator as mediator, t3.status_name as statusName,
        concat_ws('', ifnull(t3.case_type_first_name, ''), '/' , ifnull(t3.case_type_name, '')) as caseType,
        concat(t3.que_area_name, t3.que_road_name) as queAddress, t2.quilt_unit_name as candeUnitName,
        (select count(1) from dyh_case_supervise where case_id = t2.case_id) as superviseCount
        from dyh_ct_unit t1 left join dyh_case_supervise t2 on t1.id = t2.quilt_unit_id
        left join dyh_case_info t3 on t2.case_id = t3.id left join dyh_case_info_unfold t4 on t3.id = t4.id
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        <if test="terms.taskStatus != null and terms.taskStatus == 1 ">
            and (t2.overtime_status = '1')
        </if>
        <if test="terms.taskStatus != null and terms.taskStatus == 0">
            and (sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0)
        </if>
        <if test="terms.taskStatus == null or terms.taskStatus ==''">
            and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status =
            '1'))
        </if>
        )
        <if test="page.sort != null">
            <foreach collection="page.sort" item="s" index="index" separator="," open="order by ">
@@ -679,6 +841,7 @@
            order by isnull(t2.sup_time), t2.sup_time desc
        </if>
        limit #{page.offset}, #{page.size}
    </select>
    <sql id="statisticsCirculation-wherePart">
@@ -730,18 +893,19 @@
        count(distinct case when t3.zxsl_status = 1 then t4.id end) as zxsl,
        count(distinct case when t3.zxsl_status = 0 and (t4.node_id = 'JAGD' or t4.node_id = 'BLFK'
        or t4.node_id = 'JASH' or t4.node_id = 'JASH_EJ' or t4.node_id = 'JASH_YJ') then t4.id end) as lzsl,
--         count(distinct case when t3.zxsl_status = 0 and (((t4.node_id = 'ZJ_DFP' or t4.node_id = 'QJ_DFP'
--         or t4.node_id = 'SJ_DFP' or t4.node_id = 'DFP' or t4.node_id = 'QJ_DSL' or t4.node_id = 'SJ_DSL'
--         or t4.node_id = 'DSL' or t4.node_id = 'ZJ_DSL')and t4.handle_result !=3)
--         or t4.node_id = 'SJ_SBSH'
--         or t4.node_id = 'SJ_HTSH' or t4.node_id = 'QJ_HTSH' or t4.node_id = 'QJ_SBSH' or t4.node_id = 'ZJ_HTSH'
--         or t4.node_id = 'JASQ' or t4.node_id = 'HTSH'
--         ) then t4.id end) as lzz,
        -- count(distinct case when t3.zxsl_status = 0 and (((t4.node_id = 'ZJ_DFP' or t4.node_id = 'QJ_DFP'
        -- or t4.node_id = 'SJ_DFP' or t4.node_id = 'DFP' or t4.node_id = 'QJ_DSL' or t4.node_id = 'SJ_DSL'
        -- or t4.node_id = 'DSL' or t4.node_id = 'ZJ_DSL')and t4.handle_result !=3)
        -- or t4.node_id = 'SJ_SBSH'
        -- or t4.node_id = 'SJ_HTSH' or t4.node_id = 'QJ_HTSH' or t4.node_id = 'QJ_SBSH' or t4.node_id = 'ZJ_HTSH'
        -- or t4.node_id = 'JASQ' or t4.node_id = 'HTSH'
        -- ) then t4.id end) as lzz,
        count(distinct case when (t3.zxsl_status = 0 and (t4.node_id = 'ZJ_DFP' or t4.node_id = 'QJ_DFP'
        or t4.node_id = 'SJ_DFP' or t4.node_id = 'DFP' or t4.node_id = 'QJ_DSL' or t4.node_id = 'SJ_DSL'
        or t4.node_id = 'DSL' or t4.node_id = 'ZJ_DSL')and t4.handle_result =3) then t4.id end) as bysl
        from
        dyh_ct_unit t1 left join dyh_case_info_unfold t2 on t2.belong_unit_id = t1.id left join dyh_case_info t3 on t2.id = t3.id
        dyh_ct_unit t1 left join dyh_case_info_unfold t2 on t2.belong_unit_id = t1.id left join dyh_case_info t3 on
        t2.id = t3.id
        left join(SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result
        FROM (
        SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result,
@@ -752,7 +916,8 @@
        group by s.case_id) t4 on t2.id = t4.case_id
        where t1.delete_status = 0 and t3.delete_status = 0
        <include refid="statisticsCirculation-wherePart"/>
        group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
    </select>
    <!-- 分组查询字段 -->
@@ -829,10 +994,10 @@
                village as code,
                'queVillage' as region
            </if>
<!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
<!--                unit_name as name,-->
<!--                id as code-->
<!--            </if>-->
            <!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
            <!--                unit_name as name,-->
            <!--                id as code-->
            <!--            </if>-->
        </if>
        from dyh_ct_unit
        where
@@ -863,12 +1028,14 @@
        <if test="terms.unitIds != null and terms.unitIds !=''">
            and id in(${terms.unitIds})
        </if>
        group by <include refid="groupALLPart"/>
        group by
        <include refid="groupALLPart"/>
    </select>
    <!--  查询下属所有属地  -->
    <select id="listSubordinateTerritory" resultType="string">
        select <include refid="selectALLPart"/>
        select
        <include refid="selectALLPart"/>
        from dyh_ct_unit
        where
        delete_status = 0
@@ -898,22 +1065,21 @@
        <if test="terms.unitIds != null and terms.unitIds !=''">
            and id in(${terms.unitIds})
        </if>
        group by <include refid="groupALLPart"/>
        group by
        <include refid="groupALLPart"/>
    </select>
    <!--  获取所有下属组织包括自己  -->
    <select id="getAllParentUnit" resultType="string">
        SELECT id
        FROM dyh_ct_unit
        START WITH id = #{unitId}
        FROM dyh_ct_unit START WITH id = #{unitId}
        CONNECT BY PRIOR id = parent_id;
    </select>
    <!--  获取所有下属组织包括自己  -->
    <select id="getAllDeptParentUnit" resultType="string">
        SELECT id
        FROM dyh_ct_unit
                 START WITH id = #{unitId}
        FROM dyh_ct_unit START WITH id = #{unitId}
        CONNECT BY PRIOR id = parent_id and unit_type != 101 and unit_type != 103;
    </select>
@@ -946,11 +1112,11 @@
                t3.village as code,
                'queVillage' as region,
            </if>
<!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
<!--                (case when t3.unit_name = '' or t3.unit_name is null then '本级' else t3.unit_name end)as name,-->
<!--                t3.id as code,-->
<!--                'unitId' as region,-->
<!--            </if>-->
            <!--            <if test="terms.unitIds != null and terms.unitIds !=''">-->
            <!--                (case when t3.unit_name = '' or t3.unit_name is null then '本级' else t3.unit_name end)as name,-->
            <!--                t3.id as code,-->
            <!--                'unitId' as region,-->
            <!--            </if>-->
        </if>
        count(distinct t1.id) as total
        FROM dyh_case_info t1 left join dyh_case_info_unfold t2 on t1.id = t2.id
@@ -995,7 +1161,7 @@
                and t2.mediate_unit_id = #{terms.mediateUnitId}
            </if>
            <if test="terms.assistUnitId != null and terms.assistUnitId !=''">
                and t2.assist_unit_id  = #{terms.assistUnitId}
                and t2.assist_unit_id = #{terms.assistUnitId}
            </if>
        </if>
        group by
@@ -1027,8 +1193,8 @@
        FROM dyh_case_info t1 left join dyh_case_info_unfold t2 on t1.id = t2.id
        left join dyh_ct_unit t3 on t2.belong_unit_id = t3.id
        where t1.delete_status = 0
          and t3.delete_status = 0
          and t2.is_risk = 1
        and t3.delete_status = 0
        and t2.is_risk = 1
        <if test="terms != null">
            <if test="terms.queProv != null and terms.queProv !=''">
                and t3.prov = #{terms.queProv}
@@ -1066,7 +1232,7 @@
                and t2.mediate_unit_id = #{terms.mediateUnitId}
            </if>
            <if test="terms.assistUnitId != null and terms.assistUnitId !=''">
                and t2.assist_unit_id  = #{terms.assistUnitId}
                and t2.assist_unit_id = #{terms.assistUnitId}
            </if>
        </if>
        group by t1.case_type_first_name order by count(t1.case_type_first_name) desc limit 3
@@ -1076,7 +1242,7 @@
    <select id="getZZZXUnitId" resultType="string">
        select id from dyh_ct_unit
        where delete_status = 0
          and (unit_type = 101 or unit_type = 103)
        and (unit_type = 101 or unit_type = 103)
        <if test="terms.queProv != null and terms.queProv !=''">
            and prov = #{terms.queProv}
        </if>
@@ -1110,8 +1276,10 @@
        and t2.delete_status = 0
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        and (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        group by <include refid="groupPart"/>
        and (t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP') and
        ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        group by
        <include refid="groupPart"/>
        order by quantity asc
    </select>
@@ -1128,8 +1296,10 @@
        and t3.delete_status = 0
        <include refid="statisticsAVG-wherePart"/>
        and
        (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL') and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1) )
        group by <include refid="groupPart"/>
        (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL') and
        ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1) )
        group by
        <include refid="groupPart"/>
        order by quantity asc
    </select>
@@ -1143,7 +1313,8 @@
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
        order by quantity asc
    </select>
@@ -1167,7 +1338,8 @@
        and((t2.node_id = 'ZJ_DFP' or t2.node_id = 'QJ_DFP' or t2.node_id = 'SJ_DFP' or t2.node_id = 'DFP')
        or (t2.node_id = 'ZJ_DSL' or t2.node_id = 'QJ_DSL' or t2.node_id = 'SJ_DSL' or t2.node_id = 'DSL'))
        and ((t2.overtime_status = 1 and t2.status = 2) or (sysdate > expire_time and t2.status = 1))
        group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
        union all
        select
        <include refid="selectPart"/>
@@ -1177,8 +1349,10 @@
        where
        <include refid="statisticsSuperviseAVG-wherePart"/>
        and ((sysdate > DATEADD(hour, t2.reply_term, t2.sup_time) and t2.sup_status = 0) or (t2.overtime_status = '1'))
        group by <include refid="groupPart"/>
        )t1 group by <include refid="groupPart"/>
        group by
        <include refid="groupPart"/>
        )t1 group by
        <include refid="groupPart"/>
        order by quantity asc
    </select>
@@ -1249,7 +1423,8 @@
        select
        count(1)
        from
        dyh_ct_unit t1 left join dyh_case_info_unfold t2 on t2.belong_unit_id = t1.id left join dyh_case_info t3 on t2.id = t3.id
        dyh_ct_unit t1 left join dyh_case_info_unfold t2 on t2.belong_unit_id = t1.id left join dyh_case_info t3 on
        t2.id = t3.id
        left join(SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result
        FROM (
        SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result,
@@ -1268,7 +1443,8 @@
        <if test="terms.caseStatus != null and terms.caseStatus == 3">
            and t3.zxsl_status = 0
            and ((t4.node_id in ('ZJ_DFP', 'QJ_DFP', 'SJ_DFP', 'DFP', 'QJ_DSL', 'SJ_DSL', 'DSL', 'ZJ_DSL')
            and t4.handle_result !=3) or t4.node_id in ('SJ_SBSH', 'SJ_HTSH', 'QJ_HTSH', 'QJ_SBSH', 'ZJ_HTSH', 'JASQ', 'HTSH'))
            and t4.handle_result !=3) or t4.node_id in ('SJ_SBSH', 'SJ_HTSH', 'QJ_HTSH', 'QJ_SBSH', 'ZJ_HTSH', 'JASQ',
            'HTSH'))
        </if>
        <if test="terms.caseStatus != null and terms.caseStatus == 4">
            and t3.zxsl_status = 0
@@ -1280,7 +1456,8 @@
    <select id="listStatisticsCirculation" resultMap="dataResult-CasePageDTO">
        select
        t3.id, t3.status,t3.status_name,t3.canal,t3.canal_name,t3.canal_second,t3.canal_second_name,t3.case_level,t3.case_type,
        t3.id,
        t3.status,t3.status_name,t3.canal,t3.canal_name,t3.canal_second,t3.canal_second_name,t3.case_level,t3.case_type,
        t3.case_type_name,t3.case_type_first_name,t3.input_unit_id,t3.input_unit_name,t3.create_time,t3.plaintiffs,t3.defendants,
        IF(t1.city_name is null,t3.que_city_name,t1.city_name) as que_city_name,
        IF(t1.area_name is null,t3.que_area_name,t1.area_name) as que_area_name,
@@ -1292,7 +1469,8 @@
        t2.assist_unit_name,t2.close_time,t2.agree_type,t2.agree_type_name,t2.agree_content,t2.windup_content,
        t4.id
        from
        dyh_ct_unit t1 left join dyh_case_info_unfold t2 on t2.belong_unit_id = t1.id left join dyh_case_info t3 on t2.id = t3.id
        dyh_ct_unit t1 left join dyh_case_info_unfold t2 on t2.belong_unit_id = t1.id left join dyh_case_info t3 on
        t2.id = t3.id
        left join(SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result
        FROM (
        SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result,
@@ -1311,7 +1489,8 @@
        <if test="terms.caseStatus != null and terms.caseStatus == 3">
            and t3.zxsl_status = 0
            and ((t4.node_id in ('ZJ_DFP', 'QJ_DFP', 'SJ_DFP', 'DFP', 'QJ_DSL', 'SJ_DSL', 'DSL', 'ZJ_DSL')
            and t4.handle_result !=3) or t4.node_id in ('SJ_SBSH', 'SJ_HTSH', 'QJ_HTSH', 'QJ_SBSH', 'ZJ_HTSH', 'JASQ', 'HTSH'))
            and t4.handle_result !=3) or t4.node_id in ('SJ_SBSH', 'SJ_HTSH', 'QJ_HTSH', 'QJ_SBSH', 'ZJ_HTSH', 'JASQ',
            'HTSH'))
        </if>
        <if test="terms.caseStatus != null and terms.caseStatus == 4">
            and t3.zxsl_status = 0
dyh-service/dyh-mediate/src/main/resources/config/application.yml
@@ -3,8 +3,8 @@
  profiles:
    active:
#      - dev
#        - test
        - prod
        - test
#        - prod
  devtools:
    restart:
dyh-service/dyh-sys/src/main/java/cn/huge/module/timer/GridCityCaseTimer.java
@@ -74,6 +74,7 @@
        List<String> canalSecondList = new ArrayList<>();
        canalSecondList.add("12");
        canalSecondList.add("13");
        canalSecondList.add("07");
        // 获取东八区的当前时间
        ZonedDateTime now = ZonedDateTime.now(TARGET_ZONE);
        // 计算前30分钟的开始和结束(基于东八区)
@@ -155,97 +156,89 @@
                                String certiNo = "";
                                String plaintiffs = "";
                                String phone = "";
                                if ("07".equals(canalSecond)) {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getLinkman())) {
                                        uploadPolice = AesUtils.decrypt(gridCaseInfoDTO.getLinkman(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getContactTel())) {
                                        uploadPolicePhone = AesUtils.decrypt(gridCaseInfoDTO.getContactTel(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                } else if ("12".equals(canalSecond) || "13".equals(canalSecond)) {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getLinkman())) {
                                        uploadPolice = AesUtils.decrypt(gridCaseInfoDTO.getLinkman(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getContactTel())) {
                                        uploadPolicePhone = AesUtils.decrypt(gridCaseInfoDTO.getContactTel(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                    try {
                                        if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfo())) {
                                            JSONObject jsonObject = JSON.parseObject(gridCaseInfoDTO.getExtInfo());
                                            zrga = jsonObject.get("tcdwMc").toString();
                                            zrmj = jsonObject.get("zrmj").toString();
                                            fxdj = jsonObject.get("fxdj").toString();
                                            jfmc = jsonObject.get("jfmc").toString();
                                            registerSaveDTO.setGridHandle(zrga + "--" + zrmj);
                                        }
                                    } catch (Exception e) {
                                        log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                    }
                                    try {
                                        if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoTcqk())) {
                                            List<Map<String, Object>> expInfoTcqkMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoTcqk(),
                                                    new TypeReference<List<Map<String, Object>>>() {
                                                    });
                                            for (Map expInfoMap : expInfoTcqkMapList) {
                                                tcr = expInfoMap.get("tcr").toString();
                                                tcqk = expInfoMap.get("tcqk").toString();
                                                tcjg = expInfoMap.get("tcjgMc").toString();
                                                tcfa = expInfoMap.get("tcfa").toString();
                                            }
                                        }
                                    } catch (Exception e) {
                                        log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                    }
                                    registerSaveDTO.setTcqk(uploadPolice + " -- " + uploadPolicePhone + " -- " + fxdj + " -- " + zrmj + " -- " + tcr + " -- " + tcfa + " -- " + tcqk);
                                    try {
                                        if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoRisk())) {
                                            List<Map<String, Object>> expInfoMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoRisk(),
                                                    new TypeReference<List<Map<String, Object>>>() {
                                                    });
                                            List<CasePersonDTO> casePersonDTOList = new ArrayList<>();
                                            for (Map expInfoMap : expInfoMapList) {
                                                CasePersonDTO casePersonDTO = new CasePersonDTO();
                                                String name = "";
                                                certiNo = "";
                                                String mobile = "";
                                                if (StringUtils.isNotBlank(expInfoMap.get("cardNumber").toString())) {
                                                    certiNo = expInfoMap.get("cardNumber").toString();
                                                }
                                                if (StringUtils.isNotBlank(expInfoMap.get("name").toString())) {
                                                    name = expInfoMap.get("name").toString();
                                                }
                                                if (StringUtils.isNotBlank(expInfoMap.get("contactPhone").toString())) {
                                                    mobile = expInfoMap.get("contactPhone").toString();
                                                }
                                                casePersonDTO.setMobile(mobile);
                                                casePersonDTO.setTrueName(name);
                                                casePersonDTO.setCertiNo(certiNo);
                                                casePersonDTOList.add(casePersonDTO);
                                                gridEvent.setCertiNo(certiNo);
                                                if (StringUtils.isNotBlank(plaintiffs)) {
                                                    if (!plaintiffs.contains(name))
                                                        plaintiffs = plaintiffs + "," + name;
                                                } else {
                                                    plaintiffs = name;
                                                }
                                                if (StringUtils.isNotBlank(phone)) {
                                                    if (!phone.contains(mobile))
                                                        phone = phone + "," + mobile;
                                                } else {
                                                    phone = mobile;
                                                }
                                                if (StringUtils.isNotBlank(gridEvent.getCertiNo())) {
                                                    gridEvent.setCertiNo(gridEvent.getCertiNo() + "," + certiNo);
                                                } else {
                                                    gridEvent.setCertiNo(certiNo);
                                                }
                                            }
                                            registerSaveDTO.setPersonList(casePersonDTOList);
                                        }
                                    } catch (Exception e) {
                                        log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                if (StringUtils.isNotBlank(gridCaseInfoDTO.getLinkman())) {
                                    uploadPolice = AesUtils.decrypt(gridCaseInfoDTO.getLinkman(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                }
                                if (StringUtils.isNotBlank(gridCaseInfoDTO.getContactTel())) {
                                    uploadPolicePhone = AesUtils.decrypt(gridCaseInfoDTO.getContactTel(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                }
                                try {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfo())) {
                                        JSONObject jsonObject = JSON.parseObject(gridCaseInfoDTO.getExtInfo());
                                        zrga = jsonObject.get("tcdwMc").toString();
                                        zrmj = jsonObject.get("zrmj").toString();
                                        fxdj = jsonObject.get("fxdj").toString();
                                        jfmc = jsonObject.get("jfmc").toString();
                                        registerSaveDTO.setGridHandle(zrga + "--" + zrmj);
                                    }
                                } catch (Exception e) {
                                    log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                }
                                try {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoTcqk())) {
                                        List<Map<String, Object>> expInfoTcqkMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoTcqk(),
                                                new TypeReference<List<Map<String, Object>>>() {
                                                });
                                        for (Map expInfoMap : expInfoTcqkMapList) {
                                            tcr = expInfoMap.get("tcr").toString();
                                            tcqk = expInfoMap.get("tcqk").toString();
                                            tcjg = expInfoMap.get("tcjgMc").toString();
                                            tcfa = expInfoMap.get("tcfa").toString();
                                        }
                                    }
                                } catch (Exception e) {
                                    log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                }
                                registerSaveDTO.setTcqk(uploadPolice + " -- " + uploadPolicePhone + " -- " + fxdj + " -- " + zrmj + " -- " + tcr + " -- " + tcfa + " -- " + tcqk);
                                try {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoRisk())) {
                                        List<Map<String, Object>> expInfoMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoRisk(),
                                                new TypeReference<List<Map<String, Object>>>() {
                                                });
                                        List<CasePersonDTO> casePersonDTOList = new ArrayList<>();
                                        for (Map expInfoMap : expInfoMapList) {
                                            CasePersonDTO casePersonDTO = new CasePersonDTO();
                                            String name = "";
                                            certiNo = "";
                                            String mobile = "";
                                            if (StringUtils.isNotBlank(expInfoMap.get("cardNumber").toString())) {
                                                certiNo = expInfoMap.get("cardNumber").toString();
                                            }
                                            if (StringUtils.isNotBlank(expInfoMap.get("name").toString())) {
                                                name = expInfoMap.get("name").toString();
                                            }
                                            if (StringUtils.isNotBlank(expInfoMap.get("contactPhone").toString())) {
                                                mobile = expInfoMap.get("contactPhone").toString();
                                            }
                                            casePersonDTO.setMobile(mobile);
                                            casePersonDTO.setTrueName(name);
                                            casePersonDTO.setCertiNo(certiNo);
                                            casePersonDTOList.add(casePersonDTO);
                                            gridEvent.setCertiNo(certiNo);
                                            if (StringUtils.isNotBlank(plaintiffs)) {
                                                if (!plaintiffs.contains(name))
                                                    plaintiffs = plaintiffs + "," + name;
                                            } else {
                                                plaintiffs = name;
                                            }
                                            if (StringUtils.isNotBlank(phone)) {
                                                if (!phone.contains(mobile))
                                                    phone = phone + "," + mobile;
                                            } else {
                                                phone = mobile;
                                            }
                                            if (StringUtils.isNotBlank(gridEvent.getCertiNo())) {
                                                gridEvent.setCertiNo(gridEvent.getCertiNo() + "," + certiNo);
                                            } else {
                                                gridEvent.setCertiNo(certiNo);
                                            }
                                        }
                                        registerSaveDTO.setPersonList(casePersonDTOList);
                                    }
                                } catch (Exception e) {
                                    log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                }
                                registerSaveDTO.setId(IdUtils.getNewTimeId());
                                BeanUtils.copyProperties(gridCaseInfoDTO, gridEvent);
@@ -329,7 +322,6 @@
                                registerSaveDTO.setPhone(phone);
                                String dyhUnitId = gridCaseTaskService.getGridUnitIdByUnitId(gridCode);
                                if (StringUtils.isNotBlank(dyhUnitId)) {
                                    registerSaveDTO.setWantUnitId(dyhUnitId);
                                } else {
                                    log.info("网格组织查询不到对应组织:" + gridCode);
                                }
@@ -378,6 +370,7 @@
        List<String> canalSecondList = new ArrayList<>();
        canalSecondList.add("12");
        canalSecondList.add("13");
        canalSecondList.add("07");
        log.info("startTime:" + startTime);
        log.info("endTime:" + endTime);
        // 定义一个列表,用于存储需要查询的网格代码
@@ -447,97 +440,89 @@
                                String certiNo = "";
                                String plaintiffs = "";
                                String phone = "";
                                if ("07".equals(canalSecond)) {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getLinkman())) {
                                        uploadPolice = AesUtils.decrypt(gridCaseInfoDTO.getLinkman(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getContactTel())) {
                                        uploadPolicePhone = AesUtils.decrypt(gridCaseInfoDTO.getContactTel(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                } else if ("12".equals(canalSecond) || "13".equals(canalSecond)) {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getLinkman())) {
                                        uploadPolice = AesUtils.decrypt(gridCaseInfoDTO.getLinkman(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getContactTel())) {
                                        uploadPolicePhone = AesUtils.decrypt(gridCaseInfoDTO.getContactTel(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                    }
                                    try {
                                        if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfo())) {
                                            JSONObject jsonObject = JSON.parseObject(gridCaseInfoDTO.getExtInfo());
                                            zrga = jsonObject.get("tcdwMc").toString();
                                            zrmj = jsonObject.get("zrmj").toString();
                                            fxdj = jsonObject.get("fxdj").toString();
                                            jfmc = jsonObject.get("jfmc").toString();
                                            registerSaveDTO.setGridHandle(zrga + "--" + zrmj);
                                        }
                                    } catch (Exception e) {
                                        log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                    }
                                    try {
                                        if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoTcqk())) {
                                            List<Map<String, Object>> expInfoTcqkMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoTcqk(),
                                                    new TypeReference<List<Map<String, Object>>>() {
                                                    });
                                            for (Map expInfoMap : expInfoTcqkMapList) {
                                                tcr = expInfoMap.get("tcr").toString();
                                                tcqk = expInfoMap.get("tcqk").toString();
                                                tcjg = expInfoMap.get("tcjgMc").toString();
                                                tcfa = expInfoMap.get("tcfa").toString();
                                            }
                                        }
                                    } catch (Exception e) {
                                        log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                    }
                                    registerSaveDTO.setTcqk(uploadPolice + " -- " + uploadPolicePhone + " -- " + fxdj + " -- " + zrmj + " -- " + tcr + " -- " + tcfa + " -- " + tcqk);
                                    try {
                                        if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoRisk())) {
                                            List<Map<String, Object>> expInfoMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoRisk(),
                                                    new TypeReference<List<Map<String, Object>>>() {
                                                    });
                                            List<CasePersonDTO> casePersonDTOList = new ArrayList<>();
                                            for (Map expInfoMap : expInfoMapList) {
                                                CasePersonDTO casePersonDTO = new CasePersonDTO();
                                                String name = "";
                                                certiNo = "";
                                                String mobile = "";
                                                if (StringUtils.isNotBlank(expInfoMap.get("cardNumber").toString())) {
                                                    certiNo = expInfoMap.get("cardNumber").toString();
                                                }
                                                if (StringUtils.isNotBlank(expInfoMap.get("name").toString())) {
                                                    name = expInfoMap.get("name").toString();
                                                }
                                                if (StringUtils.isNotBlank(expInfoMap.get("contactPhone").toString())) {
                                                    mobile = expInfoMap.get("contactPhone").toString();
                                                }
                                                casePersonDTO.setMobile(mobile);
                                                casePersonDTO.setTrueName(name);
                                                casePersonDTO.setCertiNo(certiNo);
                                                casePersonDTOList.add(casePersonDTO);
                                                gridEvent.setCertiNo(certiNo);
                                                if (StringUtils.isNotBlank(plaintiffs)) {
                                                    if (!plaintiffs.contains(name))
                                                        plaintiffs = plaintiffs + "," + name;
                                                } else {
                                                    plaintiffs = name;
                                                }
                                                if (StringUtils.isNotBlank(phone)) {
                                                    if (!phone.contains(mobile))
                                                        phone = phone + "," + mobile;
                                                } else {
                                                    phone = mobile;
                                                }
                                                if (StringUtils.isNotBlank(gridEvent.getCertiNo())) {
                                                    gridEvent.setCertiNo(gridEvent.getCertiNo() + "," + certiNo);
                                                } else {
                                                    gridEvent.setCertiNo(certiNo);
                                                }
                                            }
                                            registerSaveDTO.setPersonList(casePersonDTOList);
                                        }
                                    } catch (Exception e) {
                                        log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                if (StringUtils.isNotBlank(gridCaseInfoDTO.getLinkman())) {
                                    uploadPolice = AesUtils.decrypt(gridCaseInfoDTO.getLinkman(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                }
                                if (StringUtils.isNotBlank(gridCaseInfoDTO.getContactTel())) {
                                    uploadPolicePhone = AesUtils.decrypt(gridCaseInfoDTO.getContactTel(), "W90akz7tA7tyMn5tNTynG69YM2E8jGfF");
                                }
                                try {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfo())) {
                                        JSONObject jsonObject = JSON.parseObject(gridCaseInfoDTO.getExtInfo());
                                        zrga = jsonObject.get("tcdwMc").toString();
                                        zrmj = jsonObject.get("zrmj").toString();
                                        fxdj = jsonObject.get("fxdj").toString();
                                        jfmc = jsonObject.get("jfmc").toString();
                                        registerSaveDTO.setGridHandle(zrga + "--" + zrmj);
                                    }
                                } catch (Exception e) {
                                    log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                }
                                try {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoTcqk())) {
                                        List<Map<String, Object>> expInfoTcqkMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoTcqk(),
                                                new TypeReference<List<Map<String, Object>>>() {
                                                });
                                        for (Map expInfoMap : expInfoTcqkMapList) {
                                            tcr = expInfoMap.get("tcr").toString();
                                            tcqk = expInfoMap.get("tcqk").toString();
                                            tcjg = expInfoMap.get("tcjgMc").toString();
                                            tcfa = expInfoMap.get("tcfa").toString();
                                        }
                                    }
                                } catch (Exception e) {
                                    log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                }
                                registerSaveDTO.setTcqk(uploadPolice + " -- " + uploadPolicePhone + " -- " + fxdj + " -- " + zrmj + " -- " + tcr + " -- " + tcfa + " -- " + tcqk);
                                try {
                                    if (StringUtils.isNotBlank(gridCaseInfoDTO.getExtInfoRisk())) {
                                        List<Map<String, Object>> expInfoMapList = JSON.parseObject(gridCaseInfoDTO.getExtInfoRisk(),
                                                new TypeReference<List<Map<String, Object>>>() {
                                                });
                                        List<CasePersonDTO> casePersonDTOList = new ArrayList<>();
                                        for (Map expInfoMap : expInfoMapList) {
                                            CasePersonDTO casePersonDTO = new CasePersonDTO();
                                            String name = "";
                                            certiNo = "";
                                            String mobile = "";
                                            if (StringUtils.isNotBlank(expInfoMap.get("cardNumber").toString())) {
                                                certiNo = expInfoMap.get("cardNumber").toString();
                                            }
                                            if (StringUtils.isNotBlank(expInfoMap.get("name").toString())) {
                                                name = expInfoMap.get("name").toString();
                                            }
                                            if (StringUtils.isNotBlank(expInfoMap.get("contactPhone").toString())) {
                                                mobile = expInfoMap.get("contactPhone").toString();
                                            }
                                            casePersonDTO.setMobile(mobile);
                                            casePersonDTO.setTrueName(name);
                                            casePersonDTO.setCertiNo(certiNo);
                                            casePersonDTOList.add(casePersonDTO);
                                            gridEvent.setCertiNo(certiNo);
                                            if (StringUtils.isNotBlank(plaintiffs)) {
                                                if (!plaintiffs.contains(name))
                                                    plaintiffs = plaintiffs + "," + name;
                                            } else {
                                                plaintiffs = name;
                                            }
                                            if (StringUtils.isNotBlank(phone)) {
                                                if (!phone.contains(mobile))
                                                    phone = phone + "," + mobile;
                                            } else {
                                                phone = mobile;
                                            }
                                            if (StringUtils.isNotBlank(gridEvent.getCertiNo())) {
                                                gridEvent.setCertiNo(gridEvent.getCertiNo() + "," + certiNo);
                                            } else {
                                                gridEvent.setCertiNo(certiNo);
                                            }
                                        }
                                        registerSaveDTO.setPersonList(casePersonDTOList);
                                    }
                                } catch (Exception e) {
                                    log.error("解析extInfo失败,事件id:{" + gridCaseInfoDTO.getId() + "}; 解析内容:" + gridCaseInfoDTO.getExtInfo() + "失败原因:" + e.getMessage());
                                }
                                registerSaveDTO.setId(IdUtils.getNewTimeId());
                                registerSaveDTO.setCreateTime(DateUtils.StringToDate(gridCaseInfoDTO.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
dyh-service/dyh-sys/src/main/resources/config/application.yml
@@ -3,8 +3,8 @@
  profiles:
    active:
#      - dev
#        - test
        - prod
        - test
#        - prod
  devtools:
    restart:
dyh-service/dyh-utils/src/main/java/cn/huge/module/mediate/utils/CaseNoUtils.java
@@ -19,17 +19,17 @@
    /**
     * 常量前缀
     */
    public static String CASE_NO_SIGN_TH = "天河调";
    public static String CASE_NO_SIGN_HZ = "海珠调";
    public static String CASE_NO_SIGN_LW = "荔湾调";
    public static String CASE_NO_SIGN_YX = "越秀调";
    public static String CASE_NO_SIGN_PY = "番禺调";
    public static String CASE_NO_SIGN_HD = "花都调";
    public static String CASE_NO_SIGN_BY = "粤云调";
    public static String CASE_NO_SIGN_NS = "南沙调";
    public static String CASE_NO_SIGN_HP = "黄埔调";
    public static String CASE_NO_SIGN_ZC = "增城调";
    public static String CASE_NO_SIGN_CH = "从化调";
    public static String CASE_NO_SIGN_TH = "穗天综调";
    public static String CASE_NO_SIGN_HZ = "穗海综调";
    public static String CASE_NO_SIGN_LW = "穗荔综调";
    public static String CASE_NO_SIGN_YX = "穗越综调";
    public static String CASE_NO_SIGN_PY = "穗番综调";
    public static String CASE_NO_SIGN_HD = "穗花综调";
    public static String CASE_NO_SIGN_BY = "穗云综调";
    public static String CASE_NO_SIGN_NS = "穗南综调";
    public static String CASE_NO_SIGN_HP = "穗埔综调";
    public static String CASE_NO_SIGN_ZC = "穗增综调";
    public static String CASE_NO_SIGN_CH = "穗从综调";
    public static String CASE_NO_SIGN_GZ = "粤调";
    /**
@@ -136,7 +136,7 @@
        StringBuffer caseNoSign = new StringBuffer();
        // 设置年号
        int year = DateUtils.getYear(DateUtils.getNowDate());
        caseNoSign.append("(").append(year).append(")");
        caseNoSign.append(year);
        if (GzRegionBaseEnum.AREA_1.getIndex().equals(area)){
            caseNoSign.append(CASE_NO_SIGN_TH);
        }else if (GzRegionBaseEnum.AREA_2.getIndex().equals(area)){