From e32c502ce9ecd3d93cde809adc6cfd77d8c62f79 Mon Sep 17 00:00:00 2001
From: wangwh <2397901735@qq.com>
Date: Fri, 25 Oct 2024 11:01:24 +0800
Subject: [PATCH] feat:创建效能分析模块
---
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java | 66 +++++++++++
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java | 42 +++++++
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml | 202 +++++++++++++++++++++++++++++++++
dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/AnalysisMapper.java | 26 ++++
4 files changed, 336 insertions(+), 0 deletions(-)
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
new file mode 100644
index 0000000..865f8f4
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
@@ -0,0 +1,42 @@
+package cn.huge.module.analysis.controller;
+
+import cn.huge.base.common.utils.ReturnFailUtils;
+import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.module.analysis.service.AnalysisService;
+import cn.huge.module.cases.domain.po.CaseInfo;
+import cn.huge.module.cases.service.CaseInfoService;
+import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @title: 纠纷信息主表接口api-web端
+ * @description: 纠纷信息主表接口api-web端
+ * @company: hugeinfo
+ * @author: wangwh
+ * @time: 2024-08-27 10:00:57
+ * @version: 1.0.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/web/analysis")
+public class AnalysisWebController {
+
+ @Autowired(required = false)
+ private HttpServletRequest request;
+
+ @Autowired
+ private AnalysisService service;
+
+
+
+
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/AnalysisMapper.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/AnalysisMapper.java
new file mode 100644
index 0000000..a78f61d
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/AnalysisMapper.java
@@ -0,0 +1,26 @@
+package cn.huge.module.analysis.dao.mapper;
+
+import cn.huge.module.cases.domain.dto.*;
+import cn.huge.module.cases.domain.po.CaseInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @title: 纠纷信息主表持久层业务处理
+* @Description 此处仅涉及复杂SQL操作,务必不要在此再次写单表的CRUD操作,因为mybatisPlus已经实现。
+* @company: hugeinfo
+* @author: wangwh
+* @time: 2024-08-27 10:00:57
+* @version 1.0.0
+*/
+@Repository
+public interface AnalysisMapper extends BaseMapper<CaseInfo>{
+
+
+
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
new file mode 100644
index 0000000..af7666f
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
@@ -0,0 +1,202 @@
+<?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>
+
+</mapper>
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java
new file mode 100644
index 0000000..0aaf9a6
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java
@@ -0,0 +1,66 @@
+package cn.huge.module.analysis.service;
+
+import cn.huge.base.common.exception.ServiceException;
+import cn.huge.base.common.utils.*;
+import cn.huge.module.analysis.dao.mapper.AnalysisMapper;
+import cn.huge.module.cases.dao.mapper.CaseInfoMapper;
+import cn.huge.module.cases.domain.dto.*;
+import cn.huge.module.cases.domain.po.CaseAgent;
+import cn.huge.module.cases.domain.po.CaseInfo;
+import cn.huge.module.cases.domain.po.CaseInfoUnfold;
+import cn.huge.module.cases.domain.po.CasePerson;
+import cn.huge.module.cases.service.*;
+import cn.huge.module.client.api.impl.CustClientImpl;
+import cn.huge.module.client.api.impl.SysClientImpl;
+import cn.huge.module.client.api.impl.UtilsClientImpl;
+import cn.huge.module.constant.BaseConsts;
+import cn.huge.module.cust.dto.CtUserDTO;
+import cn.huge.module.cust.dto.PaUserDTO;
+import cn.huge.module.draft.service.CasedraftInfoService;
+import cn.huge.module.mediate.constant.*;
+import cn.huge.module.mediate.dto.WechatBindCaseDTO;
+import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO;
+import cn.huge.module.sys.dto.QueAddrBaseDTO;
+import cn.huge.module.sys.dto.QueAreaDTO;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author wangwh
+ * @version 1.0.0
+ * @title: 纠纷信息主表业务逻辑处理
+ * @Description 纠纷信息主表业务逻辑处理
+ * @company hugeinfo
+ * @Time 2024-08-27 10:00:57
+ */
+@Slf4j
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class AnalysisService extends ServiceImpl<AnalysisMapper, CaseInfo> {
+
+ @Autowired
+ private CaseInfoMapper mapper;
+
+ @Autowired
+ private UtilsClientImpl utilsClient;
+
+
+
+
+}
--
Gitblit v1.8.0