From 1e17cb5f4890dabbb23966a4a48ea921411fe811 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 22 八月 2024 16:38:34 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/task/ContractTask.java | 124 ++++++++++++++++++++++++++-------------- 1 files changed, 80 insertions(+), 44 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 c7e3875..654000d 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.util.*; import java.util.stream.Collectors; + /** * 鍚堝悓鑰冩牳瀹氭椂浠诲姟 */ @@ -70,7 +71,9 @@ */ public void onlineCheck() { log.info("寮�濮嬭绠楀悎鍚岀偣浣嶅湪绾跨巼"); - List<CalculateRuleVO> ruleVos = contractMapper.selectByRuleName(ContractRule.CONTRACT_RULE_Online.getName(), null, new Date()); + List<CalculateRuleVO> ruleVos = contractMapper.getCalculateRule(new Date()).stream() + .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)); //key鏄痷nitId value鏄澶囩紪鐮侀泦鍚� @@ -140,51 +143,52 @@ String mouthStart = DateUtils.getMouthStart(new Date()); String mouthEnd = DateUtils.getMouthEnd(new Date()); // if (now.equals(mouthEnd)) { - //鏌ヤ竴涓湀鐨勮褰� - List<ContractRuleRecord> ruleMonthRecords = recordMapper.selectMonth(mouthStart, mouthEnd); - //閫氳繃unitId鍒嗗崟浣� - Map<Long, List<ContractRuleRecord>> unitMap = ruleMonthRecords.stream().collect(Collectors.groupingBy(ContractRuleRecord::getUnitId)); - //鏌ュ湪绾跨巼瑙勫垯 - List<CalculateRuleVO> ruleVos = contractMapper.selectByRuleName(ContractRule.CONTRACT_RULE_Online.getName(), null, new Date()); - //鑾峰彇key涓哄悎鍚宨d锛寁alue涓哄湪绾跨巼瑙勫垯鐨刴ap - Map<Integer, List<CalculateRuleVO>> contractMap = ruleVos.stream().collect(Collectors.groupingBy(CalculateRuleVO::getContractId)); - //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚� - List<ContractScore> contractScoreList = new ArrayList<>(); - contractMap.forEach((contractId, ruleList) -> { - //涓�涓悎鍚屽搴斾竴涓崟浣嶏紝鍥犳unitId閮界浉鍚� - CalculateRuleVO calculateRuleVO = ruleList.get(0); - Integer unitId = calculateRuleVO.getUnitId(); - List<ContractRuleRecord> ruleRecordList = unitMap.get(Long.parseLong(unitId + "")); - if (!CollectionUtils.isEmpty(ruleMonthRecords)) { - BigDecimal siteOnlineTotal = ruleRecordList.stream().map(ContractRuleRecord::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal siteOnline = siteOnlineTotal.divide(new BigDecimal(ruleRecordList.size()), 2, RoundingMode.DOWN); - for (CalculateRuleVO ruleVO : ruleList) { - Double max = ruleVO.getMax(); - Double min = ruleVO.getMin(); - //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� - 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); - contractScoreList.add(contractScore); - } + //鏌ヤ竴涓湀鐨勮褰� + List<ContractRuleRecord> ruleMonthRecords = recordMapper.selectMonth(mouthStart, mouthEnd); + //閫氳繃unitId鍒嗗崟浣� + Map<Long, List<ContractRuleRecord>> unitMap = ruleMonthRecords.stream().collect(Collectors.groupingBy(ContractRuleRecord::getUnitId)); + //鏌ュ湪绾跨巼瑙勫垯 鑾峰彇key涓哄悎鍚宨d锛寁alue涓哄湪绾跨巼瑙勫垯鐨刴ap + Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream() + .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_Online.getName().equals(calculateRuleVO.getRuleName())) + .collect(Collectors.groupingBy(CalculateRuleVO::getContractId)); + + //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚� + List<ContractScore> contractScoreList = new ArrayList<>(); + contractMap.forEach((contractId, ruleList) -> { + //涓�涓悎鍚屽搴斾竴涓崟浣嶏紝鍥犳unitId閮界浉鍚� + CalculateRuleVO calculateRuleVO = ruleList.get(0); + Integer unitId = calculateRuleVO.getUnitId(); + List<ContractRuleRecord> ruleRecordList = unitMap.get(Long.parseLong(unitId + "")); + if (!CollectionUtils.isEmpty(ruleMonthRecords)) { + BigDecimal siteOnlineTotal = ruleRecordList.stream().map(ContractRuleRecord::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal siteOnline = siteOnlineTotal.divide(new BigDecimal(ruleRecordList.size()), 2, RoundingMode.DOWN); + for (CalculateRuleVO ruleVO : ruleList) { + Double max = ruleVO.getMax(); + Double min = ruleVO.getMin(); + //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� + 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); + contractScoreList.add(contractScore); } } - }); + } + }); // } contractScoreService.saveBatch(contractScoreList); log.info("缁撴潫璁$畻鍚堝悓鐐逛綅鍦ㄧ嚎鐜囧垎鏁�"); @@ -203,4 +207,36 @@ return true; } + /** + * 妫�娴嬪伐鍗曡〃 杩涜鍚堝悓绉垎鎵i櫎 + * 鏌ュ嚭宸ュ崟闇�瑕佹墸鍒嗙殑鎵�鏈夎鍒� + * 鏌ュ嚭鏈墸鍒嗕笖宸茬粡瀹℃牳瀹屾垚浜嗙殑宸ュ崟缁勬垚map<unitId,List<WorkOrder>> 宸ュ崟闇�瑕佽繛宸ュ崟鏁呴殰琛ㄦ煡鍑哄涓晠闅滅被鍨� + * 寰幆宸ュ崟map锛屾瘡涓伐鍗曟晠闅滅被鍨嬫煡瀵瑰簲鐨勮鍒欙紝鏍规嵁瑙勫垯鍜屽伐鍗曞垱寤烘椂闂村拰瀹℃牳閫氳繃鏃堕棿杩涜鎵e垎 + * 鎻掑叆鍚堝悓绉垎琛紝淇敼宸ュ崟鐘舵�佷负宸叉墸鍒� + */ + public void workOrderDeduct() { + //鏌ヨ鐢熸晥鍚堝悓瀵瑰簲鎵�鏈夌殑瑙勫垯 + List<CalculateRuleVO> calculateRules = contractMapper.getCalculateRule(new Date()); + Map<String, Map<Integer, List<CalculateRuleVO>>> ruleMap = calculateRules.stream() + .collect(Collectors.groupingBy( + CalculateRuleVO::getRuleName, // 鎸夎鍒欏悕绉板垎缁� + Collectors.groupingBy( + CalculateRuleVO::getContractId // 姣忎釜瑙勫垯鍚嶇О鍐呴儴鍐嶆寜鍚堝悓ID鍒嗙粍,value涓鸿鍒欓泦鍚� + ) + )); + //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱SD瑙勫垯銆佷竴鏈轰竴妗h鍒欙級 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map + Map<Integer, List<CalculateRuleVO>> monitorRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Monitor.getName()); + //瀛樺偍鏁呴殰锛�24灏忔椂浠ュ唴锛�48灏忔椂浠ュ唴锛� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map + 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()); + + } + /** + * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎 + */ + public void randomDeduct() { + + } + } -- Gitblit v1.8.0