From 8f2e8522daf081ad4da027c39a776fdd9483b97e Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 15 九月 2025 15:20:51 +0800
Subject: [PATCH] 新需求

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java         |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java             |   27 +++++++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java             |    2 
 ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml                        |   11 +++
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java               |    7 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java |    6 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java  |   18 +++++
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                      |    3 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java   |   52 +++++++++++++++++
 9 files changed, 120 insertions(+), 8 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
index 94b02f6..c3e06c5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
@@ -12,7 +12,7 @@
 import java.util.List;
 
 /**
- * 鑰冩牳绉垎鏄庣粏瀵硅薄 t_check_score
+ * 鑰冩牳绉垎鏄庣粏瀵硅薄
  *
  * @author ruoyi
  * @date 2024-04-22
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
index e8b6847..cd80c88 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
@@ -44,7 +44,7 @@
     private Integer num;
 
     /**
-     * 鍒嗘暟
+     *
      */
     @ExcelProperty({"鑷础甯傚叕鍏辫棰戠洃鎺х郴缁熺画缁村悎鍚�", "鍒嗘暟"})
     private BigDecimal score;
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java
index 6edf28e..4f269a2 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java
@@ -40,4 +40,11 @@
      * 鏁版嵁绫诲瀷1/2 绱鏁版嵁/姣忔棩鏁版嵁
      */
     private Integer category;
+
+    /**
+     *
+     * 鍖哄煙
+     */
+    private String area;
+
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
index 2b76634..a825fc7 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
@@ -1,11 +1,14 @@
 package com.ycl.platform.domain.query;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.platform.base.AbsQuery;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -44,5 +47,29 @@
     @ApiModelProperty("鏁呴殰绫诲瀷")
     private List<String> errorTypeList;
 
+    /**
+     * 鎶ュ寮�濮嬫椂鏃�
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date reportTimeStart;
+    /**
+     *  鎶ュ缁撴潫鏃堕棿
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date reportTimeEnd;
+    /**
+     * 鏈夋晥寮�濮嬫椂闂�
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date effectTimeStart;
+    /**
+     *  鏈夋晥缁撴潫鏃堕棿
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date effectTimeEnd;
 }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
index 7e514d4..bf361f3 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -179,7 +179,7 @@
             }
         }
         //鍒嗘暟淇濈暀涓�浣嶅皬鏁�
-        checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
+        checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(3, RoundingMode.HALF_UP)));
         Map<Long, List<CheckScore>> map = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
         for (Map.Entry<Long, List<CheckScore>> entry : map.entrySet()) {
             List<CheckScore> tempList = getCheckScores(entry);
@@ -205,13 +205,13 @@
         if (!hasCar){
             CheckScore car = new CheckScore();
             car.setExamineCategory((short) 2);
-            car.setScore(new BigDecimal("0.0"));
+            car.setScore(new BigDecimal("0.00"));
             tempList.add(car);
         }
         if (!hasFace){
             CheckScore face = new CheckScore();
             face.setExamineCategory((short) 3);
-            face.setScore(new BigDecimal("0.0"));
+            face.setScore(new BigDecimal("0.00"));
             tempList.add(face);
         }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index e450615..625dd78 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -71,6 +71,7 @@
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.function.Function;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -1269,6 +1270,7 @@
     @Override
     public Map<String, Object> videoHome(HomeQuery monitorQuery) throws ParseException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
         List<HomeVideoVO> results = new ArrayList<>();
+
         String month = monitorQuery.getDate();
         if (StringUtils.isEmpty(month)) {
             //濡傛灉涓虹┖鏌ユ湰鏈堢殑鏁版嵁
@@ -1295,13 +1297,30 @@
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
         Integer examineTag = monitorQuery.getExamineTag();
+        String arealayerno = monitorQuery.getArea();
         Document matchConditions = new Document("statTime", new Document("$gte", startDate).append("$lte", endDate));
         // 鏍规嵁examineTag鐨勫�煎姩鎬佹坊鍔犻澶栫殑鏉′欢
         if (examineTag != null && examineTag.equals(1)) {
             matchConditions.append("provinceTag", true);
         } else if (examineTag != null && examineTag.equals(2)) {
             matchConditions.append("deptTag", true);
+        } else if(StringUtils.isNotBlank(arealayerno)){
+            matchConditions.append("arealayerno",
+                    new Document("$regex", "^" + arealayerno));
         }
+        Document noExpr = new Document("$and", Arrays.asList(
+                new Document("$gte", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+                new Document("$ne", Arrays.asList(
+                        new Document("$substrCP", Arrays.asList(
+                                "$no",
+                                new Document("$subtract", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+                                1
+                        )),
+                        "3"
+                ))
+        ));
+// 姝g‘娣诲姞$expr鏉′欢锛堥敭涓�"$expr"锛屽�间负涓婇潰瀹氫箟鐨勬潯浠讹級
+        matchConditions.append("$expr", noExpr);
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> pipeline = Arrays.asList(
                 new Document("$match", matchConditions),
@@ -1337,6 +1356,7 @@
             homeVideoVO.setIntegrityNum(doc.getInteger("normalCount"));
             homeVideoVO.setLoseNum(doc.getInteger("loseCount"));
             homeVideoVO.setErrNum(doc.getInteger("errCount"));
+
             results.add(homeVideoVO);
         }
 
@@ -1350,8 +1370,24 @@
             onlineMatch.add(new Document("provinceTag", true));
         } else if (examineTag != null && examineTag.equals(2)) {
             onlineMatch.add(new Document("deptTag", true));
-        }
+        } else if(StringUtils.isNotBlank(arealayerno)){
+            Document noStartsWith = new Document("no", new Document("$regex", "^" + arealayerno));
 
+            // 鏋勫缓鍊掓暟绗笁浣嶄笉鏄�3鐨勬潯浠�
+            Document noThirdLastNot3 = new Document("$expr", new Document("$and", Arrays.asList(
+                    new Document("$gte", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+                    new Document("$ne", Arrays.asList(
+                            new Document("$substrCP", Arrays.asList(
+                                    "$no",
+                                    new Document("$subtract", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+                                    1
+                            )),
+                            "3"
+                    ))
+            )));
+            // 灏嗕袱涓潯浠剁敤$and缁勫悎鍚庢坊鍔犲埌鏉′欢鍒楄〃
+            onlineMatch.add(new Document("$and", Arrays.asList(noStartsWith, noThirdLastNot3)));
+        }
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> onlinePipeline = Arrays.asList(
                 new Document("$match", new Document("$and", onlineMatch)),
@@ -1365,6 +1401,10 @@
                         ))
                 )
         );
+        //鎺掗櫎鍗″彛闆嗗悎
+
+
+
         // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
         AggregateIterable<Document> onlineResult = onlineCollection.aggregate(onlinePipeline);
         for (Document doc : onlineResult) {
@@ -1496,10 +1536,13 @@
         Integer examineTag = monitorQuery.getExamineTag();
         // 鏋勫缓鍩烘湰鐨�$match鏉′欢
         List<Document> matchConditions = new ArrayList<>();
+        String arealayerno = monitorQuery.getArea();
         matchConditions.add(new Document("mongoCreateTime", new Document("$gte", startDate).append("$lte", endDate)));
         matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
         if (examineTag != null && examineTag.equals(1)) {
             matchConditions.add(new Document("provinceTag", true));
+        }else if(StringUtils.isNotBlank(arealayerno)){
+            matchConditions.add(new Document("orgCode",new Document("$eq", arealayerno)));
         }
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> pipeline = Arrays.asList(
@@ -1524,6 +1567,8 @@
         onlineMatch.add(new Document("monitorType", new Document("$regex", "2")));
         if (examineTag != null && examineTag.equals(1)) {
             onlineMatch.add(new Document("provinceTag", true));
+        }else if(StringUtils.isNotBlank(arealayerno)){
+            onlineMatch.add(new Document("no", new Document("$regex", "^" + arealayerno)));
         }
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> onlinePipeline = Arrays.asList(
@@ -1602,6 +1647,7 @@
         calendar.add(Calendar.DAY_OF_MONTH, -1);
         // 鑾峰彇鏈堜唤鏈�鍚庝竴澶╃殑Date
         Date endDate = calendar.getTime();
+        String arealayerno = monitorQuery.getArea();
         //mongo鏌ユ姄鎷嶉噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
@@ -1612,6 +1658,8 @@
         matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
         if (examineTag != null && examineTag.equals(1)) {
             matchConditions.add(new Document("provinceTag", true));
+        }else if(StringUtils.isNotBlank(arealayerno)){
+            matchConditions.add(new Document("orgCode",new Document("$eq", arealayerno)));
         }
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> pipeline = Arrays.asList(
@@ -1638,6 +1686,8 @@
         onlineMatch.add(new Document("monitorType", new Document("$regex", "3")));
         if (examineTag != null && examineTag.equals(1)) {
             onlineMatch.add(new Document("provinceTag", true));
+        }else if(StringUtils.isNotBlank(arealayerno)){
+            onlineMatch.add(new Document("no", new Document("$regex", "^" + arealayerno)));
         }
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> onlinePipeline = Arrays.asList(
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index cf248f7..a138de8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -119,7 +119,14 @@
         WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class);
         return self.batchAddWorkOrder(workOrderList);
     }
-
+    private boolean isSameDay(Date date1, Date date2) {
+        if (date1 == null || date2 == null) {
+            return false;
+        }
+        LocalDate localDate1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate localDate2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        return localDate1.isEqual(localDate2);
+    }
     @Transactional(rollbackFor = Exception.class)
     public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList) {
         int total = workOrderList.size();
@@ -164,6 +171,15 @@
         for (WorkOrder workOrder : workOrderList) {
             WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
             if (Objects.nonNull(databaseWorkOrder)) {
+                //鍒ゆ柇鏄惁鏄粖澶╃殑宸ュ崟
+                if (!isSameDay(databaseWorkOrder.getCreateTime(), now)) {
+                    // 鑻ヤ负鍓嶄竴澶╃殑宸ュ崟锛屼笉鏇存柊锛岀洿鎺ュ綋浣滄柊宸ュ崟鏂板
+                    workOrder.setCreateTime(now);
+                    workOrder.setUpdateTime(now);
+                    waitAddList.add(workOrder);
+                    continue; // 璺宠繃鍚庣画鐨勬洿鏂伴�昏緫
+                }
+
                 List<String> errorNameList = databaseWorkOrder.getErrorTypeList();
                 List<String> errorTypes = workOrder.getErrorTypeList();
                 if (errorNameList.containsAll(errorTypes)) {
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index 92adff2..814d354 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -37,7 +37,7 @@
         LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0
         INNER JOIN t_report_error_type ret ON ret.report_id = r.id and ret.deleted = 0 <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
         AND ret.error_type in <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
-    </if>
+        </if>
         WHERE
         r.deleted = 0
         <if test="query.reportType != null and query.reportType != ''">
@@ -52,6 +52,15 @@
         <if test="query.keyword != null and query.keyword != ''">
             AND (pt.point_name like concat('%', #{query.keyword}, '%') OR p.yw_person_name like concat('%', #{query.keyword}, '%'))
         </if>
+        <if test="query.reportTimeStart != null and query.reportTimeEnd != null">
+            AND r.create_time BETWEEN #{query.reportTimeStart} AND #{query.reportTimeEnd}
+        </if>
+        <if test="query.effectTimeStart != null">
+            AND r.begin_create_time >= #{query.effectTimeStart}
+        </if>
+        <if test="query.effectTimeEnd != null">
+            AND r.end_create_time &lt;= #{query.effectTimeEnd}
+        </if>
         GROUP BY
             r.id, r.report_materials, r.create_time, r.report_type, r.report_content, r.status, r.serial_number,
             r.begin_create_time,
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 946e9e9..4d3f316 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -414,6 +414,9 @@
             <if test="deptTag!=null">
                 and p.dept_tag = #{deptTag}
             </if>
+            <if test="address != null">
+                and p.dept_id = #{address}
+            </if>
             ${params.dataScope}
         </where>
     </select>

--
Gitblit v1.8.0