From 7a7acc33c5658643a54c42bfd6f70ed3881a3248 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期六, 31 八月 2024 19:24:44 +0800
Subject: [PATCH] 点位新增部级标签、点位导入导出优化

---
 ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java |   50 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 32 insertions(+), 18 deletions(-)

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..644bf8b 100644
--- a/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java
@@ -1,16 +1,17 @@
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -29,19 +30,20 @@
     private final CheckIndexVideoMapper checkIndexVideoMapper;
     private final ImageResourceSecurityDetailMapper imageResourceSecurityDetailMapper;
 
-    @PostConstruct
+    private static final BigDecimal NUM = new BigDecimal("0.15");
+
+    /**
+     * 姣忓ぉ鏅氫笂1鐐规墽琛�
+     */
+    @Transactional
+    @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 +51,27 @@
             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++;
+                }
+            }
+            imageResourceSecurity.setWeakPassword(BigDecimal.valueOf(score));
+            // 鑾峰彇瀛楀吀鍊�-鎬绘暟
+            int onlineAssetsTotal = Integer.parseInt(DictUtils.getDictValue("online_assets_total", checkIndexVideo.getDeptName()));
+            imageResourceSecurity.setRiskProperty(BigDecimal.valueOf(count / onlineAssetsTotal));
+            imageResourceSecurity.setCreateTime(DateUtils.getNowDate());
             imageResourceSecurities.add(imageResourceSecurity);
-        });
+            // 鏇存柊鎸囨爣鏁版嵁
+            checkIndexVideo.setImageResourceSecurity(imageResourceSecurity.getPlatformOnline().add(imageResourceSecurity.getPropertyAccuracy().add(imageResourceSecurity.getWeakPassword().add(imageResourceSecurity.getRiskProperty()))).multiply(NUM));
+            checkIndexVideoMapper.updateById(checkIndexVideo);
+        }
         imageResourceSecurityService.saveBatch(imageResourceSecurities);
 
     }

--
Gitblit v1.8.0