From 29d3c47cc6c903c09b386649fabaebc81cbeca27 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 05 六月 2025 10:43:39 +0800
Subject: [PATCH] 报错日志添加

---
 ycl-server/src/main/java/com/ycl/task/ContractTask.java |  145 ++++++++++++++++++++++++++++++------------------
 1 files changed, 90 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 c7e7eac..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;
@@ -365,65 +366,87 @@
      * 娴峰悍鍙栦汉鑴歌溅杈�
      */
     public void randomDeductPic() {
-        log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�");
-        //杩欎釜鏈堥殢鏈烘娊鍙栦竴澶�
-        Date date = getRandomDate();
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-        //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
-        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 + "鏃堕棿锛�" + format.format(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("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
     }
 
 
@@ -432,6 +455,7 @@
      * 浼樹簯鍙栧綍鍍�
      */
     public void randomDeductVideo() {
+        try{
         log.info("寮�濮嬫娊鏌ュ綍鍍忓畬鏁寸姸鎬�");
         //杩欎釜鏈堥殢鏈烘娊鍙栦竴澶�
         Date date = getRandomDate();
@@ -503,6 +527,17 @@
             });
         }
         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