linjiawei 1 月之前
父节点
当前提交
6225f6f582

+ 22 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/enforce/job/EnforcementJobProcessQuery.java

@@ -35,4 +35,26 @@ public class EnforcementJobProcessQuery extends PageQuery {
     @ApiModelProperty(value = "结束时间")
     private String endDate;
 
+    @ApiModelProperty(value = "全过程记录跳转入口(考评:evaluate)")
+    private String entrace;
+
+    /**
+     * 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;
+
 }

+ 65 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/controller/enforce/job/EnforceSuperviseController.java

@@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -62,6 +64,9 @@ public class EnforceSuperviseController {
     @GetMapping("/enforcement/process/joblist")
     public TableInfo<EnforcementJobProcessDTO> getEnforcementJobProcessList(EnforcementJobProcessQuery query) {
         getOrgIds(query);
+        if (!getTime(query)) {//执法全过程无记录数量
+            return new TableInfo<>(new ArrayList<>());
+        }
         startPage();
         List<EnforcementJobProcessDTO> list = enforceSuperviseMapper.getEnforcementJobProcessList(query);
         return new TableInfo<>(list);
@@ -71,6 +76,9 @@ public class EnforceSuperviseController {
     @GetMapping(value = "/enforcement/process/joblist/export")
     public void getEnforcementJobProcessListExport(HttpServletResponse response, EnforcementJobProcessQuery query) {
         getOrgIds(query);
+        if (!getTime(query)) {//执法全过程无记录数量
+            return;
+        }
         List<EnforcementJobProcessDTO> list = enforceSuperviseMapper.getEnforcementJobProcessList(query);
         if (com.zfjg.common.core.utils.StringUtils.isEmpty(list)) {
             return;
@@ -255,6 +263,63 @@ public class EnforceSuperviseController {
         query.setEnforceOrgId(null);
     }
 
+
+    public static boolean getTime(EnforcementJobProcessQuery query) {
+        if (Objects.equals("evaluate", query.getEntrace())) {
+        // 定义时间格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String startDate = query.getStartDate();
+        String endDate = query.getEndDate();
+        // 传递过来的两个时间段
+        LocalDateTime start = LocalDateTime.parse(startDate, formatter);
+        LocalDateTime end = LocalDateTime.parse(endDate, 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)) {
+            return false;
+        }
+        query.setProcess(true);
+        if (ObjectUtils.isNotEmpty(query.getRelate())) {
+            query.setRelate(false);//未关联
+        }
+
+        query.setStartDate(null);
+        query.setEndDate(null);
+        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(startDate);
+            query.setEndDate2(endDate);
+            return true;
+        }
+        if (end.isAfter(end2)) {
+            query.setEndDate3(endDate);
+        }
+
+        // 计算交集
+        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 true;
+    }
+
     public void getTypeName(EnforcementJobProcessQuery query){
         if (ObjectUtils.isNotEmpty(query.getJobType())) {
             switch (query.getJobType()) {

+ 29 - 11
zfjg-modules/zfjg-manage/src/main/resources/mapper/enforce/job/EnforceSuperviseMapper.xml

@@ -80,10 +80,10 @@
             </foreach>
         </if>
         <if test="pm.startDate != null and pm.startDate !=''">
-            AND 检查期限 <![CDATA[ >= ]]> #{pm.startDate}
+            AND 结束执行任务时间 <![CDATA[ >= ]]> #{pm.startDate}
         </if>
         <if test="pm.endDate != null and pm.endDate !=''">
-            AND 检查期限 <![CDATA[ <= ]]> #{pm.endDate}
+            AND 结束执行任务时间 <![CDATA[ <= ]]> #{pm.endDate}
         </if>
         AND 状态 = '已归档'
         ) r
@@ -94,7 +94,7 @@
 
     <select id="getEnforcementJobProcessList" resultType="com.zfjg.manage.api.dto.enforce.job.EnforcementJobProcessDTO">
         SELECT
-            *
+            *,count(evid) videoNum
         FROM
             (
                 SELECT
@@ -109,9 +109,10 @@
                     ej.enforce_obj_name,
                     ej.enforce_org_id,
                     ej.enforce_org_name,
-                    ( SELECT count( 1 ) FROM enforce_video ev WHERE ev.is_deleted = 0 AND ev.enfore_job_id = ej.id ) videoNum
+                    ev.id evid
                 FROM
                     enforce_job ej
+                    left join enforce_video ev on ej.id = ev.enfore_job_id and ev.is_deleted=0
                 WHERE
                     ej.is_deleted = 0 AND ej.job_status = 'ARCHIVED'
                     AND ej.enforce_org_id not in ('55c99876ec0f425aac6925a92cceeb17','256069491270746112')
@@ -130,20 +131,37 @@
             <if test="pm.jobType  != null  and pm.jobType != ''">
                 and ej.job_type = #{pm.jobType}
             </if>
+            <if test="pm.process  != null  and pm.process == true ">
+                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>
+                )
+            </if>
             <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>
+            <if test="pm.relate  != null and pm.relate == true">
+                AND ev.id is not null
+            </if>
+            <if test="pm.relate  != null and pm.relate == false">
+                AND ev.id is null
+            </if>
             ) t
-        <if test="pm.relate  != null and pm.relate == true">
-            where t.videoNum > 0
-        </if>
-        <if test="pm.relate  != null and pm.relate == false">
-            where t.videoNum = 0
-        </if>
-        order by t.videoNum,finish_time desc
+        group by id
+        order by videoNum,finish_time desc
     </select>
 
     <select id="selectEnforceTimeout" resultType="com.zfjg.manage.api.dto.enforce.job.EnforceOrgTimeoutDto">