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