<?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-08-27 10:00:57
|
* @version 1.0.0
|
-->
|
<mapper namespace="cn.huge.module.analysis.dao.mapper.AnalysisMapper">
|
<!-- 条件 -->
|
<sql id="statisticsAVG-wherePart">
|
<if test="terms != null">
|
<if test="terms.queProv != null and terms.queProv !=''">
|
and t1.que_prov = #{terms.queProv}
|
</if>
|
<if test="terms.queCity != null and terms.queCity !=''">
|
and t1.que_city = #{terms.queCity}
|
</if>
|
<if test="terms.queArea != null and terms.queArea !=''">
|
and t1.que_area = #{terms.queArea}
|
</if>
|
<if test="terms.queRoad != null and terms.queRoad !=''">
|
and t1.que_road = #{terms.queRoad}
|
</if>
|
<if test="terms.queVillage != null and terms.queVillage !=''">
|
and t1.que_village = #{terms.queVillage}
|
</if>
|
<if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
|
and (DATE_FORMAT(t2.create_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.createStart}
|
and DATE_FORMAT(t2.create_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.createEnd})
|
</if>
|
<if test="terms.handleStart != null and terms.handleStart !='' and terms.handleEnd != null and terms.handleEnd !=''">
|
and (DATE_FORMAT(t2.handle_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.handleStart}
|
and DATE_FORMAT(t2.handle_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.handleEnd})
|
</if>
|
<if test="terms.queVillage != null and terms.queVillage !=''">
|
and t1.que_village = #{terms.queVillage}
|
</if>
|
<if test="terms.mediType != null and terms.mediType !=''">
|
and medi_type = #{terms.mediType}
|
</if>
|
<if test="terms.caseTypeFirst != null and terms.caseTypeFirst !=''">
|
and case_type_first = #{terms.caseTypeFirst}
|
</if>
|
</if>
|
</sql>
|
|
<!-- 统计任务平均时长 -->
|
<select id="statisticsAVG" resultType="java.lang.Long">
|
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') then count(usetime_hour) 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') then usetime_hour end) as sl,
|
AVG(case when (t2.node_id = 'BLFK' and t2.status = '2') then usetime_hour end) as sl,
|
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 then overtime_hour 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 then overtime_hour end) as slcs
|
from dyh_case_info t1 left join dyh_case_task t2 on t1.id = t2.case_id
|
where
|
t2.status = 2
|
<include refid="statisticsAVG-wherePart"/>
|
</select>
|
|
<!-- 条件 -->
|
<sql id="statisticsApplyAVG-wherePart">
|
<if test="terms.queProv != null and terms.queProv !=''">
|
and t1.que_prov = #{terms.queProv}
|
</if>
|
<if test="terms.queCity != null and terms.queCity !=''">
|
and t1.que_city = #{terms.queCity}
|
</if>
|
<if test="terms.queArea != null and terms.queArea !=''">
|
and t1.que_area = #{terms.queArea}
|
</if>
|
<if test="terms.queRoad != null and terms.queRoad !=''">
|
and t1.que_road = #{terms.queRoad}
|
</if>
|
<if test="terms.queVillage != null and terms.queVillage !=''">
|
and t1.que_village = #{terms.queVillage}
|
</if>
|
<if test="terms.queVillage != null and terms.queVillage !=''">
|
and t1.que_village = #{terms.queVillage}
|
</if>
|
<if test="terms.mediType != null and terms.mediType !=''">
|
and t1.medi_type = #{terms.mediType}
|
</if>
|
<if test="terms.caseTypeFirst != null and terms.caseTypeFirst !=''">
|
and t1.case_type_first = #{terms.caseTypeFirst}
|
</if>
|
</sql>
|
|
<!-- 统计审批平均时长 -->
|
<select id="statisticsApplyAVG" resultType="java.lang.Long">
|
select select avg(usetime_hour)
|
form
|
(
|
select usetime_hour
|
from dyh_case_info t1 left join dyh_case_appear t2 on t1.id = t2.case_id
|
where t2.apply_status = 1
|
<if test="terms != null">
|
<if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
|
and (DATE_FORMAT(t2.appear_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.createStart}
|
and DATE_FORMAT(t2.appear_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.createEnd})
|
</if>
|
<if test="terms.handleStart != null and terms.handleStart !='' and terms.handleEnd != null and terms.handleEnd !=''">
|
and (DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.handleStart}
|
and DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.handleEnd})
|
</if>
|
<include refid="statisticsApplyAVG-wherePart"/>
|
</if>
|
union all
|
select usetime_hour
|
from dyh_case_info t1 left join dyh_case_assist_apply t2 on t1.id = t2.case_id
|
where t2.apply_status = 1
|
<if test="terms != null">
|
<if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
|
and (DATE_FORMAT(t2.apply_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.createStart}
|
and DATE_FORMAT(t2.apply_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.createEnd})
|
</if>
|
<if test="terms.handleStart != null and terms.handleStart !='' and terms.handleEnd != null and terms.handleEnd !=''">
|
and (DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.handleStart}
|
and DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.handleEnd})
|
</if>
|
<include refid="statisticsApplyAVG-wherePart"/>
|
</if>
|
union all
|
select usetime_hour
|
from dyh_case_info t1 left join dyh_case_return t2 on t1.id = t2.case_id
|
where t2.return_status = 1
|
<if test="terms != null">
|
<if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
|
and (DATE_FORMAT(t2.return_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.createStart}
|
and DATE_FORMAT(t2.return_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.createEnd})
|
</if>
|
<if test="terms.handleStart != null and terms.handleStart !='' and terms.handleEnd != null and terms.handleEnd !=''">
|
and (DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.handleStart}
|
and DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.handleEnd})
|
</if>
|
<include refid="statisticsApplyAVG-wherePart"/>
|
</if>
|
union all
|
select usetime_hour
|
from dyh_case_info t1 left join dyh_case_windup_apply t2 on t1.id = t2.case_id
|
where t2.apply_status = 1
|
<if test="terms != null">
|
<if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
|
and (DATE_FORMAT(t2.apply_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.createStart}
|
and DATE_FORMAT(t2.apply_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.createEnd})
|
</if>
|
<if test="terms.handleStart != null and terms.handleStart !='' and terms.handleEnd != null and terms.handleEnd !=''">
|
and (DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.handleStart}
|
and DATE_FORMAT(t2.audit_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.handleEnd})
|
</if>
|
<include refid="statisticsApplyAVG-wherePart"/>
|
</if>
|
)
|
</select>
|
|
<!-- 条件 -->
|
<sql id="statisticsSuperviseAVG-wherePart">
|
t2.sup_status = 1
|
<if test="terms.queProv != null and terms.queProv !=''">
|
and t1.que_prov = #{terms.queProv}
|
</if>
|
<if test="terms.queCity != null and terms.queCity !=''">
|
and t1.que_city = #{terms.queCity}
|
</if>
|
<if test="terms.queArea != null and terms.queArea !=''">
|
and t1.que_area = #{terms.queArea}
|
</if>
|
<if test="terms.queRoad != null and terms.queRoad !=''">
|
and t1.que_road = #{terms.queRoad}
|
</if>
|
<if test="terms.queVillage != null and terms.queVillage !=''">
|
and t1.que_village = #{terms.queVillage}
|
</if>
|
<if test="terms.queVillage != null and terms.queVillage !=''">
|
and t1.que_village = #{terms.queVillage}
|
</if>
|
<if test="terms.mediType != null and terms.mediType !=''">
|
and t1.medi_type = #{terms.mediType}
|
</if>
|
<if test="terms.caseTypeFirst != null and terms.caseTypeFirst !=''">
|
and t1.case_type_first = #{terms.caseTypeFirst}
|
</if>
|
<if test="terms.createStart != null and terms.createStart !='' and terms.createEnd != null and terms.createEnd !=''">
|
and (DATE_FORMAT(t2.sup_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.createStart}
|
and DATE_FORMAT(t2.sup_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.createEnd})
|
</if>
|
<if test="terms.handleStart != null and terms.handleStart !='' and terms.handleEnd != null and terms.handleEnd !=''">
|
and (DATE_FORMAT(t2.reply_time,'%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{terms.handleStart}
|
and DATE_FORMAT(t2.reply_time,'%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{terms.handleEnd})
|
</if>
|
</sql>
|
|
<!-- 统计督办平均时长 -->
|
<select id="statisticsSuperviseAVG" resultType="java.lang.Long">
|
select usetime_hour
|
from dyh_case_info t1 left join dyh_case_supervise t2 on t1.id = t2.case_id
|
<include refid="statisticsSuperviseAVG-wherePart"/>
|
</select>
|
|
<!-- 统计重复来访案件数量 -->
|
<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
|
WHERE per_type = '15_020008-1'
|
AND per_class = '09_01001-1'
|
AND certi_type = '09_00015-1'
|
GROUP BY true_name, mobile, certi_no
|
HAVING COUNT(*) > 1
|
),
|
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
|
GROUP BY rp.true_name, rp.mobile, rp.certi_no
|
),
|
FilteredCases AS (
|
SELECT p.case_id
|
FROM gzdyh_test.dyh_case_person p
|
JOIN RepeatedPersons rp ON p.true_name = rp.true_name AND p.mobile = rp.mobile AND p.certi_no = rp.certi_no
|
JOIN MinCaseIds mci ON rp.true_name = mci.true_name AND rp.mobile = mci.mobile AND rp.certi_no = mci.certi_no
|
WHERE p.case_id != mci.min_case_id
|
)
|
SELECT
|
<if test="groupByCaseType != null and groupByCaseType != ''">
|
case_type_first_name as groupByType,
|
</if>
|
<if test="groupByArea != null and groupByArea != ''">
|
area_name as groupByType,
|
</if>
|
<if test="groupByRoad != null and groupByRoad != ''">
|
road_name as groupByType,
|
</if>
|
<if test="groupByTime != null and groupByTime != '' and groupByTime == 'month'">
|
DATE_FORMAT(ci.create_time, '%Y-%m') as groupByType,
|
</if>
|
COUNT(DISTINCT fc.case_id) as repeatCount
|
FROM FilteredCases fc
|
JOIN gzdyh_test.dyh_case_info ci ON fc.case_id = ci.id
|
JOIN gzdyh_test.dyh_case_info_unfold cui ON ci.id = cui.id
|
JOIN gzdyh_test.dyh_ct_unit unit ON cui.mediate_unit_id = unit.id
|
WHERE 1=1
|
<if test="createTimeStart != null and createTimeStart != '' and createTimeEnd != null and createTimeEnd != ''">
|
AND ci.create_time BETWEEN #{createTimeStart} AND #{createTimeEnd}
|
</if>
|
<if test="queCity != null and queCity != ''">
|
AND unit.city = #{queCity}
|
</if>
|
<if test="queArea != null and queArea != ''">
|
AND unit.area = #{queArea}
|
</if>
|
<if test="queRoad != null and queRoad != ''">
|
AND unit.road = #{queRoad}
|
</if>
|
<if test="groupByCaseType != null and groupByCaseType != ''">
|
GROUP BY case_type_first_name
|
</if>
|
<if test="groupByArea != null and groupByArea != ''">
|
GROUP BY area_name
|
</if>
|
<if test="groupByRoad != null and groupByRoad != ''">
|
GROUP BY road_name
|
</if>
|
<if test="groupByTime != null and groupByTime != ''">
|
GROUP BY groupByType
|
</if>
|
</select>
|
|
</mapper>
|