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