| | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | /** |
| | | * 合同考核定时任务 |
| | | */ |
| | |
| | | */ |
| | | 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是unitId value是设备编码集合 |
| | |
| | | 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为合同id,value为在线率规则的map |
| | | Map<Integer, List<CalculateRuleVO>> contractMap = ruleVos.stream().collect(Collectors.groupingBy(CalculateRuleVO::getContractId)); |
| | | //查在线率规则 获取key为合同id,value为在线率规则的map |
| | | 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) -> { |
| | |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 检测工单表 进行合同积分扣除 |
| | | * 查出工单需要扣分的所有规则 |
| | | * 查出未扣分且已经审核完成了的工单组成map<unitId,List<WorkOrder>> 工单需要连工单故障表查出多个故障类型 |
| | | * 循环工单map,每个工单故障类型查对应的规则,根据规则和工单创建时间和审核通过时间进行扣分 |
| | | * 插入合同积分表,修改工单状态为已扣分 |
| | | */ |
| | | 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为规则集合 |
| | | ) |
| | | )); |
| | | //前端感知源治理工作(时钟同步规则、OSD规则、一机一档规则) 获取key为合同id,value为规则的map |
| | | Map<Integer, List<CalculateRuleVO>> monitorRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Monitor.getName()); |
| | | //存储故障(24小时以内,48小时以内) 获取key为合同id,value为规则的map |
| | | Map<Integer, List<CalculateRuleVO>> storeRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Store.getName()); |
| | | //点位异常情况处理 获取key为合同id,value为规则的map |
| | | Map<Integer, List<CalculateRuleVO>> siteRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Site.getName()); |
| | | |
| | | } |
| | | /** |
| | | * 不定期检查数据 扣除积分 |
| | | */ |
| | | public void randomDeduct() { |
| | | |
| | | } |
| | | |
| | | } |