From cb415813de667096290d6bd0f924f5b523104117 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 10 十一月 2025 17:41:04 +0800
Subject: [PATCH] 报备工单bug修改,定时任务在线问题修改新增导出扣分明细功能
---
ycl-server/src/main/java/com/ycl/task/ContractTask.java | 152 ++++++++++++++++++++++++++++++++------------------
1 files changed, 97 insertions(+), 55 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 0aaf6e6..8e898c8 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -24,6 +24,7 @@
import enumeration.general.WorkOrderStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@@ -32,6 +33,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
@@ -364,64 +366,87 @@
* 娴峰悍鍙栦汉鑴歌溅杈�
*/
public void randomDeductPic() {
- log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�");
- //杩欎釜鏈堥殢鏈烘娊鍙栦竴澶�
- Date date = getRandomDate();
- //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
- List<ContractScore> contractScoreList = new ArrayList<>();
- //鏌ヨ鎶ュ鍒楄〃
- List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
- //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇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));
+ try {
+ log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�");
+ //杩欎釜鏈堥殢鏈烘娊鍙栦竴澶�
+// Date date = getRandomDate();
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.MONTH, -1); // 涓婁釜鏈�
+ calendar.set(Calendar.DAY_OF_MONTH, 1); // 璁剧疆涓�1鍙�
- //鍒ゆ柇杞﹁締銆佷汉鑴稿浘鐗囨槸鍚﹀彲鐢�
- 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()
- .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId,
- Collectors.mapping(
- YwPoint::getSerialNumber,
- Collectors.toList())));
- 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.getExpCount() > 0) {
- deduct = true;
- serialNumber = picAccessResult.getExternalIndexCode();
- break;
+ int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ Random random = new Random();
+ int randomDay = random.nextInt(lastDay) + 1;
+
+ calendar.set(Calendar.DAY_OF_MONTH, randomDay);
+ Date date = calendar.getTime();
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
+ List<ContractScore> contractScoreList = new ArrayList<>();
+ //鏌ヨ鎶ュ鍒楄〃 閫氳繃瀹℃牳骞朵笖鍒涘缓鏃堕棿鍦ㄥ綋鍓嶆棩鏈熺殑鎶ュid鍒楄〃
+ List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
+ //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇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()
+ .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId,
+ Collectors.mapping(
+ YwPoint::getSerialNumber,
+ Collectors.toList())));
+ 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.getExpCount() > 0) {
+ deduct = true;
+ serialNumber = picAccessResult.getExternalIndexCode();
+ break;
+ }
}
}
- }
- if (deduct) {
- //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
- Double deductScore = ruleVO.getCalcFraction();
- ContractScore contractScore = getContractScore(ruleVO, deductScore, "1", Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�");
- contractScoreList.add(contractScore);
- }
- });
+ if (deduct) {
+ //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
+ Double deductScore = ruleVO.getCalcFraction();
+ ContractScore contractScore = getContractScore(ruleVO, deductScore, "1", Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + format.format(date) + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�");
+ contractScoreList.add(contractScore);
+ }
+ });
+ }
+ contractScoreService.saveBatch(contractScoreList);
+ log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
+ }catch (NullPointerException e) {
+ log.error("绌烘寚閽堝紓甯革紝鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�: {}", e.getMessage(), e);
+ } catch (DataAccessException e) {
+ log.error("鏁版嵁搴撹闂紓甯革紝鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�: {}", e.getMessage(), e);
+ } catch (IllegalArgumentException e) {
+ log.error("鍙傛暟涓嶅悎娉曞紓甯革紝鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�: {}", e.getMessage(), e);
+ } catch (Exception e) {
+ log.error("鏈煡寮傚父锛屾娊鏌ュ浘鐗囧畬鏁寸姸鎬佸け璐�: ", e); // 娉ㄦ剰杩欓噷浣跨敤閫楀彿鑰屼笉鏄�+锛屽彲浠ユ墦鍗板畬鏁村爢鏍�
+ // 濡傛灉闇�瑕佸彲浠ユ姏鍑鸿繍琛屾椂寮傚父
+ throw new RuntimeException("鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�", e);
}
- contractScoreService.saveBatch(contractScoreList);
- log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
}
@@ -430,9 +455,15 @@
* 浼樹簯鍙栧綍鍍�
*/
public void randomDeductVideo() {
+ try{
log.info("寮�濮嬫娊鏌ュ綍鍍忓畬鏁寸姸鎬�");
//杩欎釜鏈堥殢鏈烘娊鍙栦竴澶�
Date date = getRandomDate();
+// Calendar instance = Calendar.getInstance();
+// // 璁惧畾骞淬�佹湀銆佹棩锛堟敞鎰忔湀浠戒粠0寮�濮嬶紝鍗�0浠h〃1鏈堬紝11浠h〃12鏈堬級
+// instance.set(2024, 10, 1);
+// Date date = instance.getTime();
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
List<ContractScore> contractScoreList = new ArrayList<>();
//鏌ヨ鎶ュ鍒楄〃
@@ -489,13 +520,24 @@
if (calculateRuleVO.getNum() != null && calculateRuleVO.getNum() > 0) {
//闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
double deductScore = calculateRuleVO.getCalcFraction() * calculateRuleVO.getNum();
- ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark + calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�");
+ ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark +"鎶芥煡鏃堕棿"+format.format(date)+"瀛樺湪"+ calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�");
contractScoreList.add(contractScore);
}
}
});
}
contractScoreService.saveBatch(contractScoreList);
+ }catch (NullPointerException e) {
+ log.error("绌烘寚閽堝紓甯革紝鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�: {}", e.getMessage(), e);
+ } catch (DataAccessException e) {
+ log.error("鏁版嵁搴撹闂紓甯革紝鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�: {}", e.getMessage(), e);
+ } catch (IllegalArgumentException e) {
+ log.error("鍙傛暟涓嶅悎娉曞紓甯革紝鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�: {}", e.getMessage(), e);
+ } catch (Exception e) {
+ log.error("鏈煡寮傚父锛屾娊鏌ュ浘鐗囧畬鏁寸姸鎬佸け璐�: ", e); // 娉ㄦ剰杩欓噷浣跨敤閫楀彿鑰屼笉鏄�+锛屽彲浠ユ墦鍗板畬鏁村爢鏍�
+ // 濡傛灉闇�瑕佸彲浠ユ姏鍑鸿繍琛屾椂寮傚父
+ throw new RuntimeException("鎶芥煡鍥剧墖瀹屾暣鐘舵�佸け璐�", e);
+ }
}
private Date getRandomDate() {
--
Gitblit v1.8.0