From c6976365d5bfb39a32db8b541b1fe3ceb30c7826 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 14 二月 2025 10:03:17 +0800 Subject: [PATCH] Merge branch 'dev' --- ycl-server/src/main/java/com/ycl/task/ContractTask.java | 315 +++++++++++++++++++++++++++------------------------- 1 files changed, 162 insertions(+), 153 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 1d637c2..c7e7eac 100644 --- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java +++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java @@ -32,6 +32,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; @@ -65,7 +66,6 @@ private static final Integer Offline = -1; private static final String AuditStatus_Pass = "1"; private static final String Remark = "绯荤粺鐢熸垚"; - private static final Integer randomSize = 30; /** * 鍚堝悓鑰冩牳 鍦ㄧ嚎鐜囨瘡鏃ヤ换鍔℃娴� @@ -80,11 +80,11 @@ .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_Online.getName().equals(calculateRuleVO.getRuleName())) .collect(Collectors.toList()); List<Integer> unitIds = ruleVos.stream().map(CalculateRuleVO::getUnitId).collect(Collectors.toList()); - List<YwPoint> ywPoints = ywPointMapper.selectList(new QueryWrapper<YwPoint>().in("unit_id", unitIds).eq("examine_status",1)); + List<YwPoint> ywPoints = ywPointMapper.selectList(new QueryWrapper<YwPoint>().in("unit_id", unitIds).eq("examine_status", 1)); //key鏄痷nitId value鏄澶囩紪鐮侀泦鍚� Map<Long, List<YwPoint>> unitMap = ywPoints.stream().filter(point -> point.getUnitId() != null) .collect(Collectors.groupingBy( - YwPoint::getUnitId + YwPoint::getUnitId ) ); //鏌ヨ鎶ュ鍒楄〃 @@ -200,7 +200,7 @@ deductErrorType.add(ErrorType.ABNORMAL_PIC.getValue()); deductErrorType.add(ErrorType.POINT_INFO_ERROR.getValue()); deductErrorType.add(ErrorType.CLOCK_SKEW.getValue()); - List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(),deductErrorType,"瀹℃牳閫氳繃"); + List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(), deductErrorType, "瀹℃牳閫氳繃"); //瀛樺湪鏈変袱绉嶆墸鍒嗙殑鏁呴殰 鍙墸鍑忕涓�涓晠闅� Map<String, WorkOrderVO> map = workOrders.stream() .collect(Collectors.toMap( @@ -270,12 +270,12 @@ double diffTime = (double) (passTime.getTime() - createTime.getTime() - auditDuration) / (1000 * 60 * 60); //鎵惧埌瀵瑰簲瑙勫垯銆侀�夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 for (CalculateRuleVO rule : rules) { - if(ErrorType.OSD_ERROR.getValue().equals(errorType)){ - if(!rule.getRuleCondition().equals("OSD鏍囪瘑")) continue; - }else if(ErrorType.CLOCK_SKEW.getValue().equals(errorType)){ - if(!rule.getRuleCondition().equals("鏃堕挓鍚屾")) continue; - }else if( ErrorType.POINT_INFO_ERROR.getValue().equals(errorType)){ - if(!rule.getRuleCondition().equals("涓�鏈轰竴妗�")) continue; + if (ErrorType.OSD_ERROR.getValue().equals(errorType)) { + if (!rule.getRuleCondition().equals("OSD鏍囪瘑")) continue; + } else if (ErrorType.CLOCK_SKEW.getValue().equals(errorType)) { + if (!rule.getRuleCondition().equals("鏃堕挓鍚屾")) continue; + } else if (ErrorType.POINT_INFO_ERROR.getValue().equals(errorType)) { + if (!rule.getRuleCondition().equals("涓�鏈轰竴妗�")) continue; } if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { @@ -304,7 +304,7 @@ long auditDuration = getAuditDuration(auditTimes, handleTimes); //瀹℃牳閫氳繃鏃堕棿 Date passTime = Collections.max(auditTimes); - double diffTime = (double) (passTime.getTime() - createTime.getTime() -auditDuration) / (1000 * 60 * 60); + double diffTime = (double) (passTime.getTime() - createTime.getTime() - auditDuration) / (1000 * 60 * 60); //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 for (CalculateRuleVO rule : rules) { if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { @@ -346,7 +346,7 @@ Date nearestHandleTime = null; long minDifference = Long.MAX_VALUE; for (Date handleTime : handleTimes) { - if(handleTime.before(auditTime)) { + if (handleTime.before(auditTime)) { long difference = Math.abs(auditTime.getTime() - handleTime.getTime()); if (difference < minDifference) { minDifference = difference; @@ -354,7 +354,7 @@ } } } - auditDuration += auditTime.getTime()-nearestHandleTime.getTime(); + auditDuration += auditTime.getTime() - nearestHandleTime.getTime(); } return auditDuration; } @@ -362,169 +362,178 @@ /** * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎 - * 姣忓ぉ涓�娆¢殢鏈烘暟鍒ゆ柇鎴愬姛灏辨墽琛� * 娴峰悍鍙栦汉鑴歌溅杈� */ public void randomDeductPic() { - Random random = new Random(); - 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 = new Date(); - //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇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)); + 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)); - //鍒ゆ柇杞﹁締銆佷汉鑴稿浘鐗囨槸鍚﹀彲鐢� - 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; - } + //鍒ゆ柇杞﹁締銆佷汉鑴稿浘鐗囨槸鍚﹀彲鐢� + 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); - } - }); - } - contractScoreService.saveBatch(contractScoreList); - log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��"); + } + 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("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��"); } /** * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎 - * 姣忓ぉ涓�娆¢殢鏈烘暟鍒ゆ柇鎴愬姛灏辨墽琛� * 浼樹簯鍙栧綍鍍� */ public void randomDeductVideo() { - Random random = new Random(); - //缁欏畾闅忔満鑼冨洿 - 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 = new Date(); - //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇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)); + 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<>(); + //鏌ヨ鎶ュ鍒楄〃 + 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_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() - .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId, - Collectors.mapping( - YwPoint::getSerialNumber, - Collectors.toList()))); - 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); - } + //鍙栧綍鍍忔暟鎹� + 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() + .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId, + Collectors.mapping( + YwPoint::getSerialNumber, + Collectors.toList()))); + 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) { - 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); - } + } + 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 +"鎶芥煡鏃堕棿"+format.format(date)+"瀛樺湪"+ calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�"); + contractScoreList.add(contractScore); } - }); - } - contractScoreService.saveBatch(contractScoreList); - log.info("缁撴潫鎶芥煡褰曞儚瀹屾暣鐘舵��"); + } + }); } + contractScoreService.saveBatch(contractScoreList); + } + + private Date getRandomDate() { + // 鑾峰彇褰撳墠鏃ュ巻瀹炰緥 + Calendar calendar = Calendar.getInstance(); + + // 鑾峰彇褰撳墠鏃ユ湡 + Date now = calendar.getTime(); + + // 璁剧疆涓哄綋鍓嶆湀浠界殑绗竴澶� + calendar.setTime(now); + calendar.set(Calendar.DAY_OF_MONTH, 1); + Date firstDayOfMonth = calendar.getTime(); + + // 璁剧疆涓哄綋鍓嶆湀浠界殑鏈�鍚庝竴澶╋紙涓嬩釜鏈堢殑绗竴澶╁噺涓�锛� + calendar.add(Calendar.MONTH, 1); + calendar.set(Calendar.DAY_OF_MONTH, 0); // Calendar.DAY_OF_MONTH璁句负0琛ㄧず涓婁釜鏈堟渶鍚庝竴澶╋紝浣嗚繖閲屾槸涓轰簡寰楀埌鏈湀鏈�鍚庝竴澶╋紝鎵�浠ュ厛鍔犱竴鏈� + Date lastDayOfMonth = calendar.getTime(); + log.info("鏈�鍚庝竴澶�" + lastDayOfMonth); + // 璁$畻澶╂暟宸紙鍔�1鍥犱负鍖呭惈璧峰鍜岀粨鏉熸棩鏈燂級 + long daysBetween = (lastDayOfMonth.getTime() - firstDayOfMonth.getTime()) / (1000 * 60 * 60 * 24) + 1; + + // 鐢熸垚闅忔満鏁� + Random random = new Random(); + int randomDayIndex = random.nextInt((int) daysBetween); + + // 鑾峰彇闅忔満鏃ユ湡 + calendar.setTime(firstDayOfMonth); + calendar.add(Calendar.DAY_OF_MONTH, randomDayIndex); + Date randomDate = calendar.getTime(); + return randomDate; } private boolean checkRange(Double min, Double max, BigDecimal index) { -- Gitblit v1.8.0