From f37bacfd573715e20dcd003e2b4000f9713aceff Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 22 八月 2024 16:28:33 +0800 Subject: [PATCH] 工单增加扣除积分状态 --- ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java | 4 + ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml | 9 -- ycl-server/src/main/java/com/ycl/task/ContractTask.java | 124 ++++++++++++++++++++++++++-------------- ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml | 1 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 2 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java | 4 + ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java | 2 ycl-common/src/main/java/enumeration/ContractRule.java | 25 ++++---- 8 files changed, 105 insertions(+), 66 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/ContractRule.java b/ycl-common/src/main/java/enumeration/ContractRule.java index 0ee418a..367d6d0 100644 --- a/ycl-common/src/main/java/enumeration/ContractRule.java +++ b/ycl-common/src/main/java/enumeration/ContractRule.java @@ -14,22 +14,23 @@ CONTRACT_RULE_Online(1,"璁惧骞冲潎鍦ㄧ嚎鐜�", 0), - CONTRACT_RULE_2(2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�", 0), - CONTRACT_RULE_Time(3,"鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級", 2), - CONTRACT_RULE_OSD(4,"OSD鏍囪瘑", 2), - CONTRACT_RULE_OneFile(5,"涓�鏈轰竴妗�", 2), + CONTRACT_RULE_Monitor(2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�", 0), + CONTRACT_RULE_Monitor_Time(null,"鏃堕挓鍚屾", 2), + CONTRACT_RULE_Monitor_OSD(null,"OSD鏍囪瘑", 2), + CONTRACT_RULE_Monitor_OneFile(null,"涓�鏈轰竴妗�", 2), - CONTRACT_RULE_6(6,"瀛樺偍鏁呴殰", 0), - CONTRACT_RULE_7(7,"鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍忥紝椤诲湪24灏忔椂鎺掗櫎鏁呴殰", 6), - CONTRACT_RULE_8(8,"鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�", 6), + CONTRACT_RULE_Store(3,"瀛樺偍鏁呴殰", 0), + CONTRACT_RULE_Store_24H(null,"鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍忥紝椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�24灏忔椂浠ュ唴", 3), + CONTRACT_RULE_Store_48H(null,"鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍忥紝椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�48灏忔椂浠ュ唴", 3), + CONTRACT_RULE_Store_Important(null,"鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�", 3), - CONTRACT_RULE_9(9,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�", 0), - CONTRACT_RULE_10(10,"闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�", 9), + CONTRACT_RULE_Site(4,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�", 0), + CONTRACT_RULE_Site_Error(null,"闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�", 4), - CONTRACT_RULE_13(13,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�", 0), + CONTRACT_RULE_VideoRecord(5,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�", 0), - CONTRACT_RULE_19(19,"纭繚鍥剧墖瀹屾暣涓嶅畾鏈熷鎵�鏈変汉鑴歌溅杈嗕互鍙婃櫤鑳藉墠绔姄鎷嶇殑鍥剧墖瀹屾暣鎬ф娊鏌�", 0), - CONTRACT_RULE_20(20,"鍙戠幇鍚庡彴瀛樺偍涓嶈兘璋冨彇鍓嶇璁惧鍥剧墖", 19), + CONTRACT_RULE_PicComplete(6,"纭繚鍥剧墖瀹屾暣涓嶅畾鏈熷鎵�鏈変汉鑴歌溅杈嗕互鍙婃櫤鑳藉墠绔姄鎷嶇殑鍥剧墖瀹屾暣鎬ф娊鏌�", 0), + CONTRACT_RULE_PicComplete_PicUnuseful(null,"鍙戠幇鍚庡彴瀛樺偍涓嶈兘璋冨彇鍓嶇璁惧鍥剧墖", 6), ; private final Integer id; diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java index 48d9220..33fd914 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java @@ -77,4 +77,8 @@ @ApiModelProperty("鏄惁瓒呮椂锛�0娌℃湁 1璀﹀憡 2瓒呮椂") @TableField("overtime") private Integer overtime; + + @ApiModelProperty("鏄惁鎵h繃绉垎") + @TableField("deduct") + private Boolean deduct; } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java index c33a62c..0f1824c 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java @@ -83,6 +83,10 @@ /** 涓嬪彂浜� */ private String realName; + /** + * 鏄惁鎵h繃绉垎 + */ + private Boolean deduct; public static WorkOrderVO getVoByEntity(@NonNull WorkOrder entity, WorkOrderVO vo) { if(vo == null) { vo = new WorkOrderVO(); diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java index 1ac8104..8dee69e 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java @@ -23,5 +23,5 @@ IPage<ContractVO> getPage(IPage page, @Param("query") ContractQuery query); - List<CalculateRuleVO> selectByRuleName(String ruleName, String ruleCondition, Date date); + List<CalculateRuleVO> getCalculateRule(Date date); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java index 03bc5de..e229e82 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java @@ -84,7 +84,7 @@ setTemplateRule(list,null,"璁惧骞冲潎鍦ㄧ嚎鐜�","90%鈮よ澶囧钩鍧囧湪绾跨巼锛�95%",94D,90D,RuleDeductCategoryEnum.DEDUCT_POINTS,10.00); setTemplateRule(list,null,"璁惧骞冲潎鍦ㄧ嚎鐜�","锛�90%",89D,null,RuleDeductCategoryEnum.DEDUCT_POINTS,20.00); - setTemplateRule(list,2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); + setTemplateRule(list,2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","鏃堕挓鍚屾",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","OSD鏍囪瘑",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","涓�鏈轰竴妗�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); 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() { + + } + } diff --git a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml index b2ff105..215d217 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml @@ -36,19 +36,12 @@ order by create_time desc </select> - <select id="selectByRuleName" resultType="com.ycl.platform.domain.vo.CalculateRuleVO"> + <select id="getCalculateRule" resultType="com.ycl.platform.domain.vo.CalculateRuleVO"> select tc.unit_id ,tcr.* from t_contract tc left join t_calculate_rule tcr on tc.id = tcr.contract_id <where> tc.deleted =0 and #{date} between tc.start_time and tc.end_time - <if test="ruleName !=null and ruleName!=''"> - and tcr.rule_name = #{ruleName} - </if> - <if test="ruleCondition !=null and ruleCondition!=''"> - and tcr.rule_condition = #{ruleCondition} - </if> </where> - </select> </mapper> diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml index a77527e..a8335db 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml @@ -14,6 +14,7 @@ <result column="yw_condition" property="ywCondition"/> <result column="yw_check_result" property="ywCheckResult"/> <result column="overtime" property="overtime"/> + <result column="deduct" property="deduct"/> </resultMap> <select id="page" resultType="com.ycl.platform.domain.vo.WorkOrderVO"> -- Gitblit v1.8.0