From 9b55891e6dd57bc244e6c5654434b32e05c83496 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 25 九月 2024 15:10:25 +0800
Subject: [PATCH] 异常监控排除已经审核过的工单作为状态
---
ycl-server/src/main/java/com/ycl/task/ContractTask.java | 379 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 251 insertions(+), 128 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 ac7cb70..26c75e0 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -2,35 +2,38 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.mongodb.client.result.DeleteResult;
-import com.ycl.platform.domain.entity.*;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.ycl.platform.domain.entity.ContractRuleRecord;
+import com.ycl.platform.domain.entity.ContractScore;
+import com.ycl.platform.domain.entity.WorkOrder;
+import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.result.HK.PicAccessResult;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
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.domain.vo.WorkOrderVO;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.IContractScoreService;
+import com.ycl.system.mapper.SysConfigMapper;
import com.ycl.utils.DateUtils;
+import com.ycl.utils.StringUtils;
import constant.ApiConstants;
-import constant.RedisConstant;
import enumeration.ContractRule;
+import enumeration.ErrorType;
import enumeration.general.AuditingStatus;
-import enumeration.general.RuleDeductCategoryEnum;
+import enumeration.general.WorkOrderStatusEnum;
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.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -44,10 +47,6 @@
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
- private RedisTemplate redisTemplate;
- @Autowired
- private TMonitorMapper monitorMapper;
- @Autowired
private TContractMapper contractMapper;
@Autowired
private YwPointMapper ywPointMapper;
@@ -57,12 +56,15 @@
private ContractRuleRecordMapper recordMapper;
@Autowired
private IContractScoreService contractScoreService;
-
+ @Autowired
+ private WorkOrderMapper workOrderMapper;
+ @Autowired
+ private SysConfigMapper sysConfigMapper;
private static final Integer Online = 1;
private static final Integer Offline = -1;
private static final String AuditStatus_Pass = "1";
private static final String Remark = "绯荤粺鐢熸垚";
- private static final Integer randomSize = 50;
+ private static final Integer randomSize = 30;
/**
* 鍚堝悓鑰冩牳 鍦ㄧ嚎鐜囨瘡鏃ヤ换鍔℃娴�
@@ -89,7 +91,7 @@
)
));
Map<String, Integer> onlineStatusMap = new HashMap<>();
- //鏌ongo鑾峰彇璁惧鍦ㄧ嚎鎯呭喌
+ //TODO 鍦ㄧ嚎鐜囦慨鏀癸紝鏌ongo鑾峰彇璁惧鍦ㄧ嚎鎯呭喌
Date date = DateUtils.getDay(2024, 7, 13);
//杞﹁締銆佷汉鑴�
Query query = new Query();
@@ -172,21 +174,7 @@
if (checkRange(min, max, siteOnline.multiply(new BigDecimal(100)))) {
//闇�瑕佹墸闄ょ殑鍒嗘暟
Double deductScore = ruleVO.getCalcFraction();
- ContractScore contractScore = new ContractScore();
- contractScore.setContractId(Long.parseLong(contractId + ""));
- contractScore.setAuditingStatus(AuditingStatus.PASS);
- contractScore.setAuditingTime(new Date());
- contractScore.setAuditingUser(Remark);
- contractScore.setUnitId(Long.parseLong(unitId + ""));
- contractScore.setRuleId(Long.parseLong(ruleVO.getId() + ""));
- contractScore.setRuleIds("0," + ruleVO.getId());
- contractScore.setNum(siteOnline + "");
- contractScore.setDeductCategory(ruleVO.getDeductCategory().getDesc());
- contractScore.setScore(new BigDecimal(deductScore));
- contractScore.setRuleName(ruleVO.getRuleName() + "/" + ruleVO.getRuleCondition());
- contractScore.setCreateTime(new Date());
- contractScore.setUpdateTime(new Date());
- contractScore.setRemark(Remark);
+ ContractScore contractScore = getContractScore(ruleVO, deductScore, siteOnline + "", Remark);
contractScoreList.add(contractScore);
}
}
@@ -197,19 +185,6 @@
log.info("缁撴潫璁$畻鍚堝悓鐐逛綅鍦ㄧ嚎鐜囧垎鏁�");
}
- private boolean checkRange(Double min, Double max, BigDecimal siteOnline) {
- if (siteOnline == null) {
- return false;
- }
- if (max != null && siteOnline.compareTo(new BigDecimal(max)) > 0) {
- return false;
- }
- if (min != null && siteOnline.compareTo(new BigDecimal(min)) < 0) {
- return false;
- }
- return true;
- }
-
/**
* 妫�娴嬪伐鍗曡〃 杩涜鍚堝悓绉垎鎵i櫎
* 鏌ュ嚭宸ュ崟闇�瑕佹墸鍒嗙殑鎵�鏈夎鍒�
@@ -218,6 +193,10 @@
* 鎻掑叆鍚堝悓绉垎琛紝淇敼宸ュ崟鐘舵�佷负宸叉墸鍒�
*/
public void workOrderDeduct() {
+ log.info("寮�濮嬫壂鎻忓伐鍗曟墸鍒�");
+ //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
+ List<ContractScore> contractScoreList = new ArrayList<>();
+ List<String> workOrderList = new ArrayList<>();
//鏌ヨ鐢熸晥鍚堝悓瀵瑰簲鎵�鏈夌殑瑙勫垯
List<CalculateRuleVO> calculateRules = contractMapper.getCalculateRule(new Date());
Map<String, Map<Integer, List<CalculateRuleVO>>> ruleMap = calculateRules.stream()
@@ -233,8 +212,112 @@
Map<Integer, List<CalculateRuleVO>> storeRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Store.getName());
//鐐逛綅寮傚父鎯呭喌澶勭悊 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
Map<Integer, List<CalculateRuleVO>> siteRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Site.getName());
+ //鏌ヨ鎶ュ鍒楄〃
+ List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
+ //鏌ヨ30澶╁唴鎵�鏈夋湭鎵e垎銆佸鏍搁�氳繃鐨勫伐鍗�
+ // 鑾峰彇褰撳墠鏃ユ湡
+ LocalDateTime endTime = LocalDateTime.now();
+ // 璁$畻30澶╁墠鐨勬棩鏈�
+ LocalDateTime startTime = endTime.minusDays(30);
+ List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(), "瀹℃牳閫氳繃");
+ for (WorkOrderVO workOrder : workOrders) {
+ //妫�娴嬫槸鍚︽姤澶囪繃
+ if (!CollectionUtils.isEmpty(reportNumbers)) {
+ if (reportNumbers.contains(workOrder.getSerialNumber())) continue;
+ }
+ String errorType = workOrder.getErrorType();
+ //瀛樺偍鏁呴殰 褰曞儚鎴栧浘鐗囪闂紓甯�
+ if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) {
+ if (!CollectionUtils.isEmpty(storeRuleMap)) {
+ storeRuleMap.forEach((contractId, rules) -> {
+ Integer unitId = rules.get(0).getUnitId();
+ //鎵惧埌瀵瑰簲鐨勮鍒�
+ if (workOrder.getUnitId().equals(unitId)) {
+ //宸ュ崟涓嬪彂鏃堕棿
+ Date createTime = workOrder.getDistributeTime();
+ Date auditTime = workOrder.getAuditTime();
+ double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+ //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+ for (CalculateRuleVO rule : rules) {
+ if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+ double deductScore = rule.getCalcFraction() * Math.ceil(diffTime);
+ ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+ contractScoreList.add(contractScore);
+ workOrderList.add(workOrder.getWorkOrderNo());
+ }
+ }
+ }
+ });
+ }
+ }
+ //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱SD瑙勫垯銆佷竴鏈轰竴妗h鍒欙級
+ if (ErrorType.MONITOR_UNQUALIFY.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) {
+ if (!CollectionUtils.isEmpty(monitorRuleMap)) {
+ monitorRuleMap.forEach((contractId, rules) -> {
+ Integer unitId = rules.get(0).getUnitId();
+ //鎵惧埌瀵瑰簲鐨勮鍒�
+ if (workOrder.getUnitId().equals(unitId)) {
+ //宸ュ崟涓嬪彂鏃堕棿
+ Date createTime = workOrder.getDistributeTime();
+ Date auditTime = workOrder.getAuditTime();
+ double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+ //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+ for (CalculateRuleVO rule : rules) {
+ if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+ double deductScore = rule.getCalcFraction();
+ ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+ contractScoreList.add(contractScore);
+ workOrderList.add(workOrder.getWorkOrderNo());
+ }
+ }
+ }
+ });
+ }
+ }
+ //鐐逛綅寮傚父鎯呭喌澶勭悊锛堥暅澶村紓甯搞�佹憚鍍忓ご閬尅绛夛級
+ if (ErrorType.SCREEN_COLOR_DEVIATION.getValue().equals(errorType) || ErrorType.SNOW_STORM.getValue().equals(errorType) || ErrorType.STRIPE_INTERFERENCE.getValue().equals(errorType) || ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType) || ErrorType.ABNORMAL_CLARITY.getValue().equals(errorType) || ErrorType.ABNORMAL_BRIGHTNESS.getValue().equals(errorType)) {
+ if (!CollectionUtils.isEmpty(monitorRuleMap)) {
+ siteRuleMap.forEach((contractId, rules) -> {
+ Integer unitId = rules.get(0).getUnitId();
+ //璁惧鏄惁鏄鍏徃杩愮淮
+ if (workOrder.getUnitId().equals(unitId)) {
+ //宸ュ崟涓嬪彂鏃堕棿
+ Date createTime = workOrder.getDistributeTime();
+ Date auditTime = workOrder.getAuditTime();
+ double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+ //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+ for (CalculateRuleVO rule : rules) {
+ if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+ double deductScore = 0d;
+ if (ContractRule.CONTRACT_RULE_Store_48H.getName().equals(rule.getRuleCondition())) {
+ //璁$畻瓒呮椂澶╂暟
+ int day = (int) ((diffTime - 48) / 24 + 1);
+ deductScore = rule.getCalcFraction() * (day);
+ } else {
+ deductScore = rule.getCalcFraction();
+ }
+ ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+ contractScoreList.add(contractScore);
+ workOrderList.add(workOrder.getWorkOrderNo());
+ }
+ }
+ }
+ });
+ }
+ }
+ }
+ contractScoreService.saveBatch(contractScoreList);
+ if (!CollectionUtils.isEmpty(workOrderList)) {
+ //淇敼宸ュ崟鎵e垎鐘舵�佷负宸叉墸鍒�
+ UpdateWrapper<WorkOrder> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("work_order_no", workOrderList);
+ updateWrapper.set("deduct", 1);
+ workOrderMapper.update(null, updateWrapper);
+ }
+ log.info("缁撴潫鎵ц宸ュ崟鎵e垎");
}
+
/**
* 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎
@@ -243,13 +326,22 @@
*/
public void randomDeductPic() {
Random random = new Random();
+ Integer num = randomSize;
//缁欏畾闅忔満鑼冨洿
- int number = random.nextInt(randomSize);
+ String count = sysConfigMapper.checkConfigKeyUnique("check.contract.sample").getConfigValue();
+ if (!StringUtils.isEmpty(count)) {
+ Integer temp = Integer.valueOf(count);
+ if (temp > 0) {
+ num = temp;
+ }
+ }
+ int number = random.nextInt(num);
if (number == 0) {
log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�");
//鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
List<ContractScore> contractScoreList = new ArrayList<>();
-
+ //鏌ヨ鎶ュ鍒楄〃
+ List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
Date date = DateUtils.getDay(2024, 7, 13);
//鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream()
@@ -265,49 +357,41 @@
queryWrapper.in("serial_number", serialNumbers);
//鑾峰彇鍏徃鎵�杩愮淮鐨勮澶囬泦鍚堬紝key涓簎nitId value涓鸿澶囧浗鏍囩爜闆嗗悎
Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream()
- .collect(Collectors.groupingBy(YwPoint::getUnitId,
+ .filter(ywPoint -> ywPoint.getUnitId()!=null).collect(Collectors.groupingBy(YwPoint::getUnitId,
Collectors.mapping(
YwPoint::getSerialNumber,
Collectors.toList())));
- contractMap.forEach((contractId, ruleList) -> {
- boolean deduct = false;
- String serialNumber = null;
- //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
- CalculateRuleVO ruleVO = ruleList.get(0);
- Integer unitId = ruleVO.getUnitId();
- List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
- for (PicAccessResult picAccessResult : picAccessResults) {
- //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
- if (monitorList.contains(picAccessResult.getExternalIndexCode())) {
- //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑�
- if (picAccessResult.getBigDisableCount() > 0) {
- deduct = true;
- serialNumber = picAccessResult.getExternalIndexCode();
- break;
+ if (!CollectionUtils.isEmpty(contractMap)) {
+ contractMap.forEach((contractId, ruleList) -> {
+ boolean deduct = false;
+ String serialNumber = null;
+ //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
+ CalculateRuleVO ruleVO = ruleList.get(0);
+ Integer unitId = ruleVO.getUnitId();
+ List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
+ for (PicAccessResult picAccessResult : picAccessResults) {
+ //鍒ゆ柇鏄惁鎶ュ杩�
+ if (!CollectionUtils.isEmpty(reportNumbers)) {
+ if (reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue;
+ }
+ //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
+ if (monitorList.contains(picAccessResult.getExternalIndexCode())) {
+ //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑�
+ if (picAccessResult.getBigDisableCount() > 0) {
+ deduct = true;
+ serialNumber = picAccessResult.getExternalIndexCode();
+ break;
+ }
}
}
- }
- if (deduct) {
- //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
- Double deductScore = ruleVO.getCalcFraction();
- ContractScore contractScore = new ContractScore();
- contractScore.setContractId(Long.parseLong(contractId + ""));
- contractScore.setAuditingStatus(AuditingStatus.PASS);
- contractScore.setAuditingTime(new Date());
- contractScore.setAuditingUser(Remark);
- contractScore.setUnitId(Long.parseLong(ruleVO.getUnitId() + ""));
- contractScore.setRuleId(Long.parseLong(ruleVO.getId() + ""));
- contractScore.setRuleIds("0," + ruleVO.getId());
- contractScore.setNum(1 + "");
- contractScore.setDeductCategory(ruleVO.getDeductCategory().getDesc());
- contractScore.setScore(new BigDecimal(deductScore));
- contractScore.setRuleName(ruleVO.getRuleName() + "/" + ruleVO.getRuleCondition());
- contractScore.setCreateTime(new Date());
- contractScore.setUpdateTime(new Date());
- contractScore.setRemark(Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�");
- contractScoreList.add(contractScore);
- }
- });
+ if (deduct) {
+ //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
+ Double deductScore = ruleVO.getCalcFraction();
+ ContractScore contractScore = getContractScore(ruleVO, deductScore, "1", Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�");
+ contractScoreList.add(contractScore);
+ }
+ });
+ }
contractScoreService.saveBatch(contractScoreList);
log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
}
@@ -322,12 +406,22 @@
public void randomDeductVideo() {
Random random = new Random();
//缁欏畾闅忔満鑼冨洿
- int number = random.nextInt(randomSize);
+ Integer num = randomSize;
+ //缁欏畾闅忔満鑼冨洿
+ String count = sysConfigMapper.checkConfigKeyUnique("check.contract.sample").getConfigValue();
+ if (!StringUtils.isEmpty(count)) {
+ Integer temp = Integer.valueOf(count);
+ if (temp > 0) {
+ num = temp;
+ }
+ }
+ int number = random.nextInt(num);
if (number == 0) {
log.info("寮�濮嬫娊鏌ュ綍鍍忓畬鏁寸姸鎬�");
//鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
List<ContractScore> contractScoreList = new ArrayList<>();
-
+ //鏌ヨ鎶ュ鍒楄〃
+ List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
Date date = DateUtils.getDay(2024, 7, 13);
//鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream()
@@ -343,58 +437,87 @@
queryWrapper.in("serial_number", serialNumbers);
//鑾峰彇鍏徃鎵�杩愮淮鐨勮澶囬泦鍚堬紝key涓簎nitId value涓鸿澶囧浗鏍囩爜闆嗗悎
Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream()
- .collect(Collectors.groupingBy(YwPoint::getUnitId,
+ .filter(ywPoint -> ywPoint.getUnitId()!=null).collect(Collectors.groupingBy(YwPoint::getUnitId,
Collectors.mapping(
YwPoint::getSerialNumber,
Collectors.toList())));
- contractMap.forEach((contractId, ruleList) -> {
- //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
- CalculateRuleVO ruleVO = ruleList.get(0);
- Integer unitId = ruleVO.getUnitId();
- List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
- for (RecordMetaDSumResult result : recordMetaDSumResults) {
- //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
- if (monitorList.contains(result.getDeviceId())) {
- //褰曞儚鐘舵�佷笉瀹屾暣
- if (!Objects.equals(result.getRecordStatus(), ApiConstants.UY_RecordStatus_Integrity)) {
- for (CalculateRuleVO calculateRuleVO : ruleList) {
- Double max = calculateRuleVO.getMax();
- Double min = calculateRuleVO.getMin();
- //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂�
- if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) {
- if(calculateRuleVO.getNum() == null){
- calculateRuleVO.setNum(1);
- }else {
- calculateRuleVO.setNum(calculateRuleVO.getNum()+1);
+ if (!CollectionUtils.isEmpty(contractMap)) {
+ contractMap.forEach((contractId, ruleList) -> {
+ //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
+ CalculateRuleVO ruleVO = ruleList.get(0);
+ Integer unitId = ruleVO.getUnitId();
+ List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
+ for (RecordMetaDSumResult result : recordMetaDSumResults) {
+ //鍒ゆ柇鏄惁鎶ュ杩�
+ if (!CollectionUtils.isEmpty(reportNumbers)) {
+ if (reportNumbers.contains(result.getDeviceId())) continue;
+ }
+ //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
+ if (monitorList.contains(result.getDeviceId())) {
+ //褰曞儚鐘舵�佷笉瀹屾暣
+ if (!Objects.equals(result.getRecordStatus(), ApiConstants.UY_RecordStatus_Integrity)) {
+ for (CalculateRuleVO calculateRuleVO : ruleList) {
+ Double max = calculateRuleVO.getMax();
+ Double min = calculateRuleVO.getMin();
+ //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� 鍗曚綅鏄皬鏃惰浆鎹负鍒嗛挓
+ if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration() * 60))) {
+ if (calculateRuleVO.getNum() == null) {
+ calculateRuleVO.setNum(1);
+ } else {
+ calculateRuleVO.setNum(calculateRuleVO.getNum() + 1);
+ }
}
}
}
}
}
- }
- for (CalculateRuleVO calculateRuleVO : ruleList) {
- //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
- double deductScore = calculateRuleVO.getCalcFraction()*calculateRuleVO.getNum();
- ContractScore contractScore = new ContractScore();
- contractScore.setContractId(Long.parseLong(contractId + ""));
- contractScore.setAuditingStatus(AuditingStatus.PASS);
- contractScore.setAuditingTime(new Date());
- contractScore.setAuditingUser(Remark);
- contractScore.setUnitId(Long.parseLong(calculateRuleVO.getUnitId() + ""));
- contractScore.setRuleId(Long.parseLong(calculateRuleVO.getId() + ""));
- contractScore.setRuleIds("0," + calculateRuleVO.getId());
- contractScore.setNum(calculateRuleVO.getNum() + "");
- contractScore.setDeductCategory(calculateRuleVO.getDeductCategory().getDesc());
- contractScore.setScore(new BigDecimal(deductScore));
- contractScore.setRuleName(calculateRuleVO.getRuleName() + "/" + calculateRuleVO.getRuleCondition());
- contractScore.setCreateTime(new Date());
- contractScore.setUpdateTime(new Date());
- contractScore.setRemark(Remark+calculateRuleVO.getNum()+"璺澶囪繚鍙嶈鍒�");
- contractScoreList.add(contractScore);
- }
- });
+ for (CalculateRuleVO calculateRuleVO : ruleList) {
+ if (calculateRuleVO.getNum() != null && calculateRuleVO.getNum() > 0) {
+ //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
+ double deductScore = calculateRuleVO.getCalcFraction() * calculateRuleVO.getNum();
+ ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark + calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�");
+ contractScoreList.add(contractScore);
+ }
+ }
+ });
+ }
contractScoreService.saveBatch(contractScoreList);
- log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
+ log.info("缁撴潫鎶芥煡褰曞儚瀹屾暣鐘舵��");
}
}
+
+ private boolean checkRange(Double min, Double max, BigDecimal index) {
+ if (index == null) {
+ return false;
+ }
+ if (max == null && min == null) {
+ return false;
+ }
+ if (max != null && index.setScale(0, RoundingMode.DOWN).compareTo(new BigDecimal(max)) > 0) {
+ return false;
+ }
+ if (min != null && index.setScale(0, RoundingMode.UP).compareTo(new BigDecimal(min)) < 0) {
+ return false;
+ }
+ return true;
+ }
+
+ private ContractScore getContractScore(CalculateRuleVO rule, double deductScore, String num, String remark) {
+ ContractScore contractScore = new ContractScore();
+ contractScore.setContractId(Long.parseLong(rule.getContractId() + ""));
+ contractScore.setAuditingStatus(AuditingStatus.PASS);
+ contractScore.setAuditingTime(new Date());
+ contractScore.setAuditingUser(Remark);
+ contractScore.setUnitId(Long.parseLong(rule.getUnitId() + ""));
+ contractScore.setRuleId(Long.parseLong(rule.getId() + ""));
+ contractScore.setRuleIds("0," + rule.getId());
+ contractScore.setNum(num);
+ contractScore.setDeductCategory(rule.getDeductCategory().getDesc());
+ contractScore.setScore(new BigDecimal(deductScore));
+ contractScore.setRuleName(rule.getRuleName() + "/" + rule.getRuleCondition());
+ contractScore.setCreateTime(new Date());
+ contractScore.setUpdateTime(new Date());
+ contractScore.setRemark(remark);
+ return contractScore;
+ }
}
--
Gitblit v1.8.0