From 70f7f9d6f3a431662722f76e4da93cd3b4823857 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 22 八月 2024 18:51:00 +0800
Subject: [PATCH] 不定期抽检图片和录像完整
---
ycl-server/src/main/java/com/ycl/task/ContractTask.java | 176 +++++++++++++++++++++++++++++++++++++++++--
ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 14 +-
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java | 2
3 files changed, 176 insertions(+), 16 deletions(-)
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
index a1344e8..40c03b5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
@@ -59,4 +59,6 @@
private Integer deleted;
private Integer unitId;
+ //杩濊璺暟銆佷釜鏁�
+ private Integer num;
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
index e229e82..61c7f20 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -88,18 +88,18 @@
setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","OSD鏍囪瘑",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","涓�鏈轰竴妗�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
- setTemplateRule(list,3,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,鍗曟鏁呴殰鏃堕暱鍦�24灏忔椂浠ュ唴鐨�",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
- setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�24灏忔椂浠ヤ笂銆�",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
+ setTemplateRule(list,3,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�24灏忔椂浠ュ唴",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
+ setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�48灏忔椂浠ュ唴",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,2.0);
setTemplateRule(list,4,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,24灏忔椂鍚庢湭淇鐨�",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
setTemplateRule(list,null,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,48灏忔椂鍚庢湭淇鐨�",null,48D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
- setTemplateRule(list,5,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","姣忚矾瑙嗛绱涓㈠け10鍒嗛挓浠ュ唴",10D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.2);
- setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け10-60 鍒嗛挓",60D,10D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
- setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け1 灏忔椂-4 灏忔椂锛堝惈锛�",240D,60D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
- setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け4 灏忔椂-12 灏忔椂锛堝惈锛�",720D,240D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.5);
- setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け12 灏忔椂浠ヤ笂",null,720D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,2.0);
+ setTemplateRule(list,5,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","姣忚矾瑙嗛绱涓㈠け10鍒嗛挓锛堝惈锛変互鍐�",10D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.2);
+ setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け10-60 鍒嗛挓锛堝惈锛�",60D,9D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
+ setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け1 灏忔椂-4 灏忔椂锛堝惈锛�",240D,59D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
+ setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け4 灏忔椂-12 灏忔椂锛堝惈锛�",720D,539D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.5);
+ setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け12 灏忔椂浠ヤ笂",null,719D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,2.0);
setTemplateRule(list,6,"纭繚鍥剧墖瀹屾暣涓嶅畾鏈熷鎵�鏈変汉鑴歌溅杈嗕互鍙婃櫤鑳藉墠绔姄鎷嶇殑鍥剧墖瀹屾暣鎬ф娊鏌�","鍙戠幇鍚庡彴瀛樺偍涓嶈兘璋冨彇鍓嶇璁惧鍥剧墖",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,2.0);
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 654000d..ac7cb70 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -4,7 +4,9 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mongodb.client.result.DeleteResult;
import com.ycl.platform.domain.entity.*;
+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;
@@ -60,6 +62,7 @@
private static final Integer Offline = -1;
private static final String AuditStatus_Pass = "1";
private static final String Remark = "绯荤粺鐢熸垚";
+ private static final Integer randomSize = 50;
/**
* 鍚堝悓鑰冩牳 鍦ㄧ嚎鐜囨瘡鏃ヤ换鍔℃娴�
@@ -208,11 +211,11 @@
}
/**
- * 妫�娴嬪伐鍗曡〃 杩涜鍚堝悓绉垎鎵i櫎
- * 鏌ュ嚭宸ュ崟闇�瑕佹墸鍒嗙殑鎵�鏈夎鍒�
- * 鏌ュ嚭鏈墸鍒嗕笖宸茬粡瀹℃牳瀹屾垚浜嗙殑宸ュ崟缁勬垚map<unitId,List<WorkOrder>> 宸ュ崟闇�瑕佽繛宸ュ崟鏁呴殰琛ㄦ煡鍑哄涓晠闅滅被鍨�
- * 寰幆宸ュ崟map锛屾瘡涓伐鍗曟晠闅滅被鍨嬫煡瀵瑰簲鐨勮鍒欙紝鏍规嵁瑙勫垯鍜屽伐鍗曞垱寤烘椂闂村拰瀹℃牳閫氳繃鏃堕棿杩涜鎵e垎
- * 鎻掑叆鍚堝悓绉垎琛紝淇敼宸ュ崟鐘舵�佷负宸叉墸鍒�
+ * 妫�娴嬪伐鍗曡〃 杩涜鍚堝悓绉垎鎵i櫎
+ * 鏌ュ嚭宸ュ崟闇�瑕佹墸鍒嗙殑鎵�鏈夎鍒�
+ * 鏌ュ嚭鏈墸鍒嗕笖宸茬粡瀹℃牳瀹屾垚浜嗙殑宸ュ崟缁勬垚map<unitId,List<WorkOrder>> 宸ュ崟闇�瑕佽繛宸ュ崟鏁呴殰琛ㄦ煡鍑哄涓晠闅滅被鍨�
+ * 寰幆宸ュ崟map锛屾瘡涓伐鍗曟晠闅滅被鍨嬫煡瀵瑰簲鐨勮鍒欙紝鏍规嵁瑙勫垯鍜屽伐鍗曞垱寤烘椂闂村拰瀹℃牳閫氳繃鏃堕棿杩涜鎵e垎
+ * 鎻掑叆鍚堝悓绉垎琛紝淇敼宸ュ崟鐘舵�佷负宸叉墸鍒�
*/
public void workOrderDeduct() {
//鏌ヨ鐢熸晥鍚堝悓瀵瑰簲鎵�鏈夌殑瑙勫垯
@@ -232,11 +235,166 @@
Map<Integer, List<CalculateRuleVO>> siteRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Site.getName());
}
- /**
- * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎
- */
- public void randomDeduct() {
+ /**
+ * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎
+ * 姣忓ぉ涓�娆¢殢鏈烘暟鍒ゆ柇鎴愬姛灏辨墽琛�
+ * 娴峰悍鍙栦汉鑴歌溅杈�
+ */
+ public void randomDeductPic() {
+ Random random = new Random();
+ //缁欏畾闅忔満鑼冨洿
+ int number = random.nextInt(randomSize);
+ if (number == 0) {
+ log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�");
+ //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
+ List<ContractScore> contractScoreList = new ArrayList<>();
+
+ Date date = DateUtils.getDay(2024, 7, 13);
+ //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
+ Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream()
+ .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_PicComplete.getName().equals(calculateRuleVO.getRuleName()))
+ .collect(Collectors.groupingBy(CalculateRuleVO::getContractId));
+
+ //鍒ゆ柇杞﹁締銆佷汉鑴稿浘鐗囨槸鍚﹀彲鐢�
+ Query query = new Query(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
+ List<PicAccessResult> picAccessResults = mongoTemplate.find(query, PicAccessResult.class);
+ List<String> serialNumbers = picAccessResults.stream().map(PicAccessResult::getExternalIndexCode).collect(Collectors.toList());
+ QueryWrapper<YwPoint> queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("serial_number", serialNumbers);
+ //鑾峰彇鍏徃鎵�杩愮淮鐨勮澶囬泦鍚堬紝key涓簎nitId value涓鸿澶囧浗鏍囩爜闆嗗悎
+ Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream()
+ .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 (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);
+ }
+ });
+ contractScoreService.saveBatch(contractScoreList);
+ log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
+ }
}
+
+ /**
+ * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎
+ * 姣忓ぉ涓�娆¢殢鏈烘暟鍒ゆ柇鎴愬姛灏辨墽琛�
+ * 浼樹簯鍙栧綍鍍�
+ */
+ public void randomDeductVideo() {
+ Random random = new Random();
+ //缁欏畾闅忔満鑼冨洿
+ int number = random.nextInt(randomSize);
+ if (number == 0) {
+ log.info("寮�濮嬫娊鏌ュ綍鍍忓畬鏁寸姸鎬�");
+ //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
+ List<ContractScore> contractScoreList = new ArrayList<>();
+
+ Date date = DateUtils.getDay(2024, 7, 13);
+ //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
+ Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream()
+ .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_VideoRecord.getName().equals(calculateRuleVO.getRuleName()))
+ .collect(Collectors.groupingBy(CalculateRuleVO::getContractId));
+
+ //鍙栧綍鍍忔暟鎹�
+ Query query = new Query(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
+ List<RecordMetaDSumResult> recordMetaDSumResults = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ List<String> serialNumbers = recordMetaDSumResults.stream().map(RecordMetaDSumResult::getDeviceId).collect(Collectors.toList());
+ QueryWrapper<YwPoint> queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("serial_number", serialNumbers);
+ //鑾峰彇鍏徃鎵�杩愮淮鐨勮澶囬泦鍚堬紝key涓簎nitId value涓鸿澶囧浗鏍囩爜闆嗗悎
+ Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream()
+ .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);
+ }
+ }
+ }
+ }
+ }
+ }
+ 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);
+ }
+ });
+ contractScoreService.saveBatch(contractScoreList);
+ log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
+ }
+ }
}
--
Gitblit v1.8.0