From d6f915ecc8ee7efd5fcd3a205b57ef490b918fa5 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 21 八月 2024 14:27:59 +0800
Subject: [PATCH] feat:数据中心数字增加中文字段
---
ycl-server/src/main/java/com/ycl/task/ContractTask.java | 102 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 97 insertions(+), 5 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
index bb95a81..a07570c 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -1,12 +1,36 @@
package com.ycl.task;
-import com.ycl.platform.mapper.TContractMapper;
-import com.ycl.platform.mapper.TMonitorMapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mongodb.client.result.DeleteResult;
+import com.ycl.platform.domain.entity.ContractRuleRecord;
+import com.ycl.platform.domain.entity.Report;
+import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.entity.YwPoint;
+import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
+import com.ycl.platform.domain.result.UY.VideoOnlineResult;
+import com.ycl.platform.domain.vo.CalculateRuleVO;
+import com.ycl.platform.domain.vo.ContractVO;
+import com.ycl.platform.domain.vo.ReportVO;
+import com.ycl.platform.mapper.*;
+import com.ycl.utils.DateUtils;
+import constant.ApiConstants;
+import constant.RedisConstant;
+import enumeration.ContractRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.management.monitor.Monitor;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 鍚堝悓鑰冩牳瀹氭椂浠诲姟
@@ -17,20 +41,88 @@
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
+ private RedisTemplate redisTemplate;
+ @Autowired
private TMonitorMapper monitorMapper;
@Autowired
private TContractMapper contractMapper;
+ @Autowired
+ private YwPointMapper ywPointMapper;
+ @Autowired
+ private ReportMapper reportMapper;
+ @Autowired
+ private ContractRuleRecordMapper recordMapper;
+
+ private static final Integer Online = 1;
+ private static final Integer Offline = -1;
+ private static final String AuditStatus_Pass = "1";
/**
* 鍚堝悓鑰冩牳 鍦ㄧ嚎鐜囨瘡鏃ヤ换鍔℃娴�
* 鏌ョ敓鏁堢殑鍚堝悓鍏宠仈鐨勫叕鍙革紝鑾峰彇unitId闆嗗悎
* 鏍规嵁unitId鏌ヨ瀵瑰簲鐐逛綅鑾峰彇鍚勪釜鍏徃绠$悊鐨勮澶嘔ds
* 鏌ヨ涓夌璁惧鍦ㄧ嚎涓嶅湪绾挎儏鍐碉紝灏佽涓轰竴涓猰ap<鍥芥爣鐮�,鍦ㄧ嚎鐘舵��>
- * 璁$畻姣忔棩姣忓鍏徃鐨勫湪绾跨巼瀛樺叆redis
+ * 璁$畻姣忔棩姣忓鍏徃鐨勫湪绾跨巼瀛樺叆mysql
* 鏈堝簳璁$畻骞冲潎鍊硷紝鏍规嵁鍦ㄧ嚎鐜囧拰鍚堝悓鏍囧噯鎵e噺鍒嗘暟
*/
public void onlineCheck() {
-// contractMapper.selectByRuleName();
+ List<CalculateRuleVO> ruleVos = contractMapper.selectByRuleName(ContractRule.CONTRACT_RULE_Online.getName(), null, new Date());
+ List<Integer> unitIds = ruleVos.stream().map(CalculateRuleVO::getUnitId).collect(Collectors.toList());
+ List<YwPoint> ywPoints = ywPointMapper.selectList(new QueryWrapper<YwPoint>().in("unitId", unitIds));
+ //key鏄痷nitId value鏄澶囩紪鐮侀泦鍚�
+ Map<Long, List<String>> unitMap = ywPoints.stream()
+ .collect(Collectors.groupingBy(
+ YwPoint::getUnitId,
+ Collectors.mapping(
+ YwPoint::getSerialNumber,
+ Collectors.toList()
+ )
+ ));
+ Map<String, Integer> onlineStatusMap = new HashMap<>();
+ //鏌ongo鑾峰彇璁惧鍦ㄧ嚎鎯呭喌
+ Date date = DateUtils.getDay(2024, 7, 13);
+ //杞﹁締銆佷汉鑴�
+ Query query = new Query();
+ query.addCriteria(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
+ List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
+ for (SnapshotDataMonitorResult result : results) {
+ if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
+ onlineStatusMap.put(result.getExternalIndexCode(), Online);
+ } else {
+ onlineStatusMap.put(result.getExternalIndexCode(), Offline);
+ }
+ }
+ //瑙嗛
+ Query videoQuery = new Query(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
+ List<VideoOnlineResult> videoOnlineResults = mongoTemplate.find(videoQuery, VideoOnlineResult.class);
+ for (VideoOnlineResult videoOnlineResult : videoOnlineResults) {
+ onlineStatusMap.put(videoOnlineResult.getDeviceId(), videoOnlineResult.getStatus());
+ }
+ //鏌ヨ鎶ュ鍒楄〃
+ List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
+ //璁$畻姣忎釜鍏徃鐨勭偣浣嶅湪绾跨巼
+ List<ContractRuleRecord> ruleRecordList = new ArrayList<>();
+ unitMap.forEach((unitId, serialNumberList) -> {
+ int totalSite = 0;
+ int onlineSite = 0;
+ for (String number : serialNumberList) {
+ //鎶ュ杩囦笉绾冲叆璁$畻
+ if (!CollectionUtils.isEmpty(reportNumbers) && reportNumbers.contains(number)) continue;
+ Integer status = onlineStatusMap.get(number);
+ totalSite++;
+ if (Online.equals(status)) {
+ onlineSite++;
+ }
+ }
+ ContractRuleRecord contractRuleRecord = new ContractRuleRecord();
+ contractRuleRecord.setSiteOnline( onlineSite / totalSite);
+ contractRuleRecord.setCreateTime(new Date());
+ contractRuleRecord.setUnitId(unitId);
+ ruleRecordList.add(contractRuleRecord);
+ });
+ //瀛樺偍缁撴灉
+ recordMapper.insertBatch(ruleRecordList);
}
-
}
--
Gitblit v1.8.0