From fea89b769738f7db06281f244bc81135fc34ce76 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 27 八月 2024 11:33:10 +0800
Subject: [PATCH] feat:图像资源计算定时任务完善

---
 ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml   |    2 
 ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java        |   41 ++++++++++++--------
 ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java |    6 +++
 ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml         |   24 ++++++++++++
 4 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java
index ec27a1d..2743448 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java
@@ -70,4 +70,10 @@
      * @return 鏁版嵁
      */
     CheckIndexVideo dashboard(DashboardQuery dashboardQuery);
+
+    /**
+     * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁甯︿笂閮ㄩ棬鍚嶇О
+     * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁闆嗗悎
+     */
+    List<CheckIndexVideo> selectAndDeptName();
 }
diff --git a/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java b/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java
index 514a042..0d20d78 100644
--- a/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java
@@ -1,15 +1,15 @@
 package com.ycl.task;
 
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import com.ycl.platform.base.CheckIndex;
 import com.ycl.platform.domain.entity.CheckIndexVideo;
 import com.ycl.platform.domain.entity.ImageResourceSecurity;
 import com.ycl.platform.domain.entity.ImageResourceSecurityDetail;
 import com.ycl.platform.mapper.CheckIndexVideoMapper;
 import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
 import com.ycl.platform.service.IImageResourceSecurityService;
-import jakarta.annotation.PostConstruct;
+import com.ycl.utils.DateUtils;
+import com.ycl.utils.DictUtils;
 import lombok.RequiredArgsConstructor;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
@@ -29,19 +29,17 @@
     private final CheckIndexVideoMapper checkIndexVideoMapper;
     private final ImageResourceSecurityDetailMapper imageResourceSecurityDetailMapper;
 
-    @PostConstruct
+    /**
+     * 姣忓ぉ鏅氫笂1鐐规墽琛�
+     */
+    @Scheduled(cron = "0 0 1 * * ?")
     public void calc() {
         ArrayList<ImageResourceSecurity> imageResourceSecurities = new ArrayList<>();
-        List<CheckIndexVideo> list = new LambdaQueryChainWrapper<>(checkIndexVideoMapper)
-                .select(CheckIndexVideo::getPlatformOnline, CheckIndexVideo::getMonitorQualification, CheckIndexVideo::getDeptId)
-                // .eq(CheckIndex::getCreateTime, LocalDate.now().minusDays(1))
-                .orderByDesc(CheckIndex::getCreateTime)
-                .last("limit 7")
-                .list();
+        List<CheckIndexVideo> list = checkIndexVideoMapper.selectAndDeptName();
         List<ImageResourceSecurityDetail> detail = imageResourceSecurityDetailMapper.getList();
 
-        // 姣忎釜閮ㄩ棬寰幆涓�娆�
-        list.forEach(checkIndexVideo -> {
+        // 姣忎釜閮ㄩ棬寰幆涓�娆¤绠楁暟鎹�
+        for (CheckIndexVideo checkIndexVideo : list) {
             ImageResourceSecurity imageResourceSecurity = new ImageResourceSecurity();
             imageResourceSecurity.setDeptId(checkIndexVideo.getDeptId());
             // 鐩存帴鍙栨寚鏍�
@@ -49,15 +47,24 @@
             imageResourceSecurity.setPropertyAccuracy(checkIndexVideo.getMonitorQualification());
             // 鑾峰彇褰撳墠閮ㄩ棬鐨刣etail杩涜璁$畻
             List<ImageResourceSecurityDetail> detailList = detail.stream().filter(imageResourceSecurityDetail -> Objects.equals(imageResourceSecurityDetail.getDeptId(), checkIndexVideo.getDeptId())).toList();
+            int score = 100;
+            int count = 0;
             // 寰幆detail璁$畻
-            detailList.forEach(imageResourceSecurityDetail -> {
-                int score = 100;
+            for (ImageResourceSecurityDetail imageResourceSecurityDetail : detailList) {
+                // 鎵i櫎鍒嗘暟
                 score -= imageResourceSecurityDetail.getAlarmCategory().getScore();
                 imageResourceSecurity.setWeakPassword(BigDecimal.valueOf(score));
-            });
-            // TODO 宸竴涓�
+                // 缁熻鏁伴噺
+                if (Integer.parseInt(imageResourceSecurityDetail.getAlarmLevel().getValue()) > 1) {
+                    count++;
+                }
+            }
+            // 鑾峰彇瀛楀吀鍊�-鎬绘暟
+            int onlineAssetsTotal = Integer.parseInt(DictUtils.getDictValue("online_assets_total", checkIndexVideo.getDeptName()));
+            imageResourceSecurity.setRiskProperty(BigDecimal.valueOf((count * 100L) / onlineAssetsTotal));
+            imageResourceSecurity.setCreateTime(DateUtils.getNowDate());
             imageResourceSecurities.add(imageResourceSecurity);
-        });
+        }
         imageResourceSecurityService.saveBatch(imageResourceSecurities);
 
     }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
index ce044f0..1c42656 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
@@ -181,4 +181,28 @@
             LIMIT 1
         </if>
     </select>
+
+    <select id="selectAndDeptName" resultType="com.ycl.platform.domain.entity.CheckIndexVideo">
+        WITH temp AS (
+            SELECT
+                r.dept_id,
+                r.platform_online,
+                r.monitor_qualification,
+                d.area,
+                ROW_NUMBER() OVER(PARTITION BY r.dept_id ORDER BY r.create_time DESC) AS rn
+            FROM
+                t_check_index_video r
+                    JOIN
+                sys_dept d ON r.dept_id = d.dept_id
+        )
+        SELECT
+            dept_id,
+            area as deptName,
+            platform_online,
+            monitor_qualification
+        FROM
+            temp
+        WHERE
+            rn = 1;
+    </select>
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml
index 64ce52b..58327b0 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml
@@ -71,7 +71,7 @@
     <insert id="saveBatch">
         insert into t_image_resource_security (dept_id, platform_online, property_accuracy, weak_password, risk_property, boundary_integrity, create_time) VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.deptId}, #{item.platformOnline}, #{item.propertyAccuracy}, #{item.weakPassword}, #{item.riskProperty}, #{item.boundaryIntegrity}, NOW())
+            (#{item.deptId}, #{item.platformOnline}, #{item.propertyAccuracy}, #{item.weakPassword}, #{item.riskProperty}, #{item.boundaryIntegrity}, #{item.createTime})
         </foreach>
     </insert>
 

--
Gitblit v1.8.0