Browse Source

考评优化

linjiawei 1 month ago
parent
commit
850ec22b41

+ 3 - 0
sql/zfjq_2024121801.sql

@@ -0,0 +1,3 @@
+alter table enforce_deduct_record ADD INDEX `enforce_org_id_IDX`(`enforce_org_id`) USING BTREE;
+alter table enforce_deduct_record_situation ADD INDEX `deduct_record_id_IDX`(`deduct_record_id`) USING BTREE;
+

+ 27 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/enforce/job/EnforceEvaluateQuery.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @ApiModel("执法检查考评查询条件")
 public class EnforceEvaluateQuery extends PageQuery {
@@ -12,10 +14,35 @@ public class EnforceEvaluateQuery extends PageQuery {
     @ApiModelProperty(value = "执法机构ID")
     private String enforceOrgId;
 
+    @ApiModelProperty(value = "执法机构ID")
+    private List<String> enforceOrgIds;
+
     @ApiModelProperty(value = "开始时间")
     private String startDate;
 
     @ApiModelProperty(value = "结束时间")
     private String endDate;
 
+
+    /**
+     * 10.10到10.31时间段
+     */
+    private String startDate1;
+    private String endDate1;
+
+    /**
+     * 12.17到11.1时间段
+     */
+    private String startDate2;
+    private String endDate2;
+
+    /**
+     * 大于17
+     */
+    private String endDate3;
+
+    private Boolean process;
+
+
+
 }

+ 64 - 8
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/controller/enforce/job/EnforceEvaluateController.java

@@ -5,18 +5,15 @@ import com.zfjg.common.core.domain.R;
 import com.zfjg.common.core.web.page.TableInfo;
 import com.zfjg.manage.api.dto.enforce.job.EnforceEvaluateDTO;
 import com.zfjg.manage.api.dto.enforce.job.EnforceEvaluateQuery;
-import com.zfjg.manage.api.dto.other.WReportQuery;
 import com.zfjg.manage.api.vo.enforce.job.WReportDeductVo;
-import com.zfjg.manage.api.vo.other.WReportVo;
 import com.zfjg.manage.service.enforce.job.IEnforceDeductRecordService;
-import com.zfjg.manage.service.other.WReportBizService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import java.util.ArrayList;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 import static com.zfjg.common.core.utils.PageUtils.startPage;
@@ -32,11 +29,12 @@ import static com.zfjg.common.core.utils.PageUtils.startPage;
 class EnforceEvaluateController {
     @Autowired
     private IEnforceDeductRecordService enforceDeductRecordService;
-    @ApiOperation(value="查询执法考评列表(不分页)")
+
+    @ApiOperation(value = "查询执法考评列表(不分页)")
     @GetMapping("/evaluate/list")
     public R<List<EnforceEvaluateDTO>> getList(EnforceEvaluateQuery query) {
-//        List<EnforceEvaluateDTO> list = enforceDeductRecordService.selectEvaluateList(query);
-        List<EnforceEvaluateDTO> list = new ArrayList<>();
+        getTime(query);
+        List<EnforceEvaluateDTO> list = enforceDeductRecordService.selectEvaluateList(query);
         return R.ok(list);
     }
 
@@ -49,6 +47,64 @@ class EnforceEvaluateController {
         return new TableInfo<>(wReportList);
     }
 
+    public static void main(String[] args) {
+        EnforceEvaluateQuery query = new EnforceEvaluateQuery();
+        query.setStartDate("2024-10-01 00:00:00");
+        query.setEndDate("2025-12-02 23:59:59");
+        getTime(query);
+    }
+    public static void getTime(EnforceEvaluateQuery query) {
+        // 定义时间格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        // 传递过来的两个时间段
+        LocalDateTime start = LocalDateTime.parse(query.getStartDate(), formatter);
+        LocalDateTime end = LocalDateTime.parse(query.getEndDate(), formatter);
+
+        LocalDateTime start1 = LocalDateTime.parse("2024-10-10 00:00:00",formatter);
+        LocalDateTime end1 = LocalDateTime.parse("2024-10-31 23:59:59", formatter);
+
+        //时间段早于2024-10-10,无过程记录
+        if (end.isBefore(start1)) {
+            query.setProcess(false);
+            return;
+        }
+        query.setProcess(true);
+
+        LocalDateTime start2 = LocalDateTime.parse("2024-11-01 23:59:59", formatter);
+        LocalDateTime  end2 = LocalDateTime.parse("2024-12-17 00:00:00",formatter);
+
+        //时间段大于2024-11-01
+        if (start.isAfter(end2)) {
+            query.setStartDate2(query.getStartDate());
+            query.setEndDate2(query.getEndDate());
+            return;
+        }
+        if (end.isAfter(end2)) {
+            query.setEndDate3(query.getEndDate());
+        }
+
+        // 计算交集
+        LocalDateTime intersectionStart1 = start.isAfter(start1) ? start : start1;
+        LocalDateTime intersectionEnd1 = end.isBefore(end1) ? end : end1;
+
+        LocalDateTime intersectionStart2 = start.isAfter(start2) ? start : start2;
+        LocalDateTime intersectionEnd2 = end.isBefore(end2) ? end : end2;
+
+        // 检查是否有交集
+        if (!intersectionStart1.isAfter(intersectionEnd1)) {
+            query.setStartDate1(intersectionStart1.format(formatter));
+            query.setEndDate1(intersectionEnd1.format(formatter));
+        }
+        if (!intersectionStart2.isAfter(intersectionEnd2)) {
+            query.setStartDate2(intersectionStart2.format(formatter));
+            query.setEndDate2(intersectionEnd2.format(formatter));
+        }
+
+        return;
+
+    }
+
 
 }
 

+ 16 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/mapper/enforce/job/EnforceDeductRecordMapper.java

@@ -20,6 +20,22 @@ import java.util.List;
  */
 public interface EnforceDeductRecordMapper extends BaseMapper<EnforceDeductRecord> {
   List<EnforceDeductRecordDTO> list(@Param("pm") EnforceDeductRecordQuery param);
+
+  /**
+   * 1、超期扣分
+   * 超期只扣除双随机和举报的检查任务,复查暂不扣除是因为有些复查任务检查人员通过国家局的系统进行
+   * 了录入没在我们系统录入,导致工作做了但是系统显示复查超期。
+   * 超期和双随机按照年度扣除,双随机、举报超期均以任务期限作为时间归到对应的考核年度。2、全过程无记录扣分
+   * 将任务结束时间作为统计时间点,归到对应的考核年度,
+   * 2024考核年度,只统计任务结束时间为2024.10.10(含)~2024.10.31(含)区间的无记录任务。。但是提供一定时间让其关联视频,即从2024.12.23(含)开始将未关联项目进行扣分
+   * 2025考核年度(部分),统计2024.11.1(含)~2024.12.17(含)区间的无记录任务。
+   * 。补充视频的截止时间为12.27(含),过了截止时间再补充视频也要被扣分。
+   * 2024.12.17(不含)以后生成的检查记录补充视频信息的时间为任务结束时间之日起10日内。
+   * 2024.12.17(不含)以前的排查检查结果为不检查的任务不扣分。
+   *
+   * @param param
+   * @return
+   */
   List<EnforceEvaluateDTO> selectEvaluateList(@Param("pm") EnforceEvaluateQuery param);
   List<WReportDeductVo> selectWreportList(@Param("pm") EnforceEvaluateQuery param);
 

+ 0 - 1
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/service/enforce/job/IEnforceDeductRecordService.java

@@ -7,7 +7,6 @@ import com.zfjg.manage.api.dto.enforce.job.EnforceDeductRecordQuery;
 import com.zfjg.manage.api.dto.enforce.job.EnforceEvaluateDTO;
 import com.zfjg.manage.api.dto.enforce.job.EnforceEvaluateQuery;
 import com.zfjg.manage.api.vo.enforce.job.WReportDeductVo;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 /**

+ 70 - 52
zfjg-modules/zfjg-manage/src/main/resources/mapper/enforce/job/EnforceDeductRecordMapper.xml

@@ -33,78 +33,96 @@
 
 
     <select id="selectEvaluateList" resultType="com.zfjg.manage.api.dto.enforce.job.EnforceEvaluateDTO">
-        select  enforce_org_id,enforce_org_name,(
-            SELECT
-            COUNT( 1 )
-            FROM
-            enforce_job ej
-            LEFT JOIN enforce_video ev ON ej.id = ev.enfore_job_id
-            AND ev.is_deleted = 0
-            WHERE
-            ej.enforce_org_id = eo.enforce_org_id
-            and ej.job_status = 'ARCHIVED'
-            AND ej.is_deleted = '0'
-            AND ev.enfore_job_id IS NULL;
-            <if test="pm.startDate != null and pm.startDate !=''">
-                AND ej.finish_time <![CDATA[ >= ]]> #{pm.startDate}
-            </if>
-            <if test="pm.endDate != null and pm.endDate !=''">
-                AND ej.finish_time <![CDATA[ <= ]]> #{pm.endDate}
-            </if>
-         ) noProcessCount,
-        (
-            SELECT
-            count( 1 )
-            FROM
-            enforce_job a
-            WHERE
-            a.enforce_org_id = eo.enforce_org_id
-            AND time_out = 1
-            AND job_type in ('REVIEW','NORMAL','REPORT')
-            AND a.is_deleted = 0
-            <if test="pm.startDate != null and pm.startDate !=''">
-                AND a.last_enforce_date <![CDATA[ >= ]]> #{pm.startDate}
-            </if>
-            <if test="pm.endDate != null and pm.endDate !=''">
-                AND a.last_enforce_date <![CDATA[ <= ]]> #{pm.endDate}
-            </if>
-        ) timeoutCount,
-        (
         SELECT
-        sum( a.times )
+        eo.enforce_org_id,
+        eo.enforce_org_name,
+        <if test="pm.process  != null  and pm.process == true ">
+            COALESCE ( ejv.noProcessCount, 0 ) AS noProcessCount,
+        </if>
+        COALESCE ( ej.timeoutCount, 0 ) AS timeoutCount,
+        COALESCE ( eds.deductCount, 0 ) AS deductCount,
+        COALESCE ( eds.deductScore, 0 ) AS deductScore
         FROM
-        enforce_deduct_record_situation a
-        LEFT JOIN enforce_deduct_record b ON a.deduct_record_id = b.id
+        enforce_organize eo
+        <if test="pm.process  != null  and pm.process == true ">
+        left join (
+        SELECT
+        ej.enforce_org_id,
+        COUNT( 1 ) noProcessCount
+        FROM
+        enforce_job ej
+        LEFT JOIN enforce_video ev ON ej.id = ev.enfore_job_id
+        AND ev.is_deleted = 0
+        WHERE ej.job_status = 'ARCHIVED'
+        AND ej.is_deleted = '0'
+        AND ev.enfore_job_id IS NULL
+        and (
+        <trim prefixOverrides="or">
+        <if test="pm.startDate1  != null  and pm.startDate1 != ''">
+        or ( ej.finish_time BETWEEN #{pm.startDate1} AND #{pm.endDate1} and ev.create_time <![CDATA[ <= ]]> '2024-12-23 23:59:59' )
+        </if>
+        <if test="pm.startDate2  != null  and pm.startDate2 != ''">
+            or ( ej.finish_time BETWEEN #{pm.startDate2} AND #{pm.endDate2} and ev.create_time<![CDATA[ <=  ]]> '2024-12-27 00:00:00' )
+        </if>
+        <if test="pm.endDate3  != null  and pm.endDate3 != ''">
+            or ( ej.finish_time BETWEEN '2024-12-18 00:00:00' AND #{pm.endDate3}  and ev.create_time <![CDATA[ <= ]]> DATE_ADD(ej.finish_time, INTERVAL 10 DAY) )
+            or ( ej.finish_time BETWEEN '2024-12-17 00:00:00' AND #{pm.endDate3} and ej.enforce_result = 'OVERPASS' )
+        </if>
+        </trim>
+        )
+        GROUP BY
+        ej.enforce_org_id
+        )ejv on  ejv.enforce_org_id = eo.enforce_org_id
+       </if>
+        LEFT JOIN (
+        SELECT
+        enforce_org_id,
+        COUNT( 1 ) AS timeoutCount
+        FROM
+        enforce_job
         WHERE
-        b.enforce_org_id = eo.enforce_org_id
+        time_out = 1
+        AND job_type IN ( 'NORMAL', 'REPORT' )
+        AND is_deleted = 0
         <if test="pm.startDate != null and pm.startDate !=''">
-            AND b.deduct_time <![CDATA[ >= ]]> #{pm.startDate}
+            AND finish_time <![CDATA[ >= ]]> #{pm.startDate}
         </if>
         <if test="pm.endDate != null and pm.endDate !=''">
-            AND b.deduct_time <![CDATA[ <= ]]> #{pm.endDate}
+            AND finish_time <![CDATA[ <= ]]> #{pm.endDate}
         </if>
-        ) deductCount,
-        (
+        GROUP BY
+        enforce_org_id
+        ) ej ON eo.enforce_org_id = ej.enforce_org_id
+        LEFT JOIN (
         SELECT
-        sum( a.total_deduct )
+        b.enforce_org_id,
+        SUM( a.times ) AS deductCount,
+        SUM( a.total_deduct ) AS deductScore
         FROM
         enforce_deduct_record_situation a
         LEFT JOIN enforce_deduct_record b ON a.deduct_record_id = b.id
-        WHERE
-        b.enforce_org_id = eo.enforce_org_id
         <if test="pm.startDate != null and pm.startDate !=''">
             AND b.deduct_time <![CDATA[ >= ]]> #{pm.startDate}
         </if>
         <if test="pm.endDate != null and pm.endDate !=''">
             AND b.deduct_time <![CDATA[ <= ]]> #{pm.endDate}
         </if>
-        ) deductScore
-        from enforce_organize eo
-        where eo.enforce_org_id  not in ('55c99876ec0f425aac6925a92cceeb17','256069491270746112')
+        GROUP BY
+        b.enforce_org_id
+        ) eds ON eo.enforce_org_id = eds.enforce_org_id
+        WHERE
+        eo.enforce_org_id NOT IN ( '55c99876ec0f425aac6925a92cceeb17', '256069491270746112' )
         <if test="pm.enforceOrgId  != null  and pm.enforceOrgId != ''">
             and eo.enforce_org_id = #{pm.enforceOrgId}
         </if>
-        order by eo.enforce_org_id
+        <if test="pm.enforceOrgIds !=null and pm.enforceOrgIds.size>0">
+            and eo.enforce_org_id in
+            <foreach item="item" index="i" collection="pm.enforceOrgIds" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        ORDER BY
+        eo.enforce_org_id;
     </select>