From f6593a5f6f1138abf09a0ee69fc5119fdce412c9 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期六, 07 十二月 2024 17:52:07 +0800 Subject: [PATCH] 标签bug --- ycl-server/src/main/java/com/ycl/task/ContractTask.java | 185 ++++++++++++++++++++++------------------------ 1 files changed, 88 insertions(+), 97 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 1753fb6..60eb9b8 100644 --- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java +++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java @@ -3,42 +3,38 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.mongodb.client.result.DeleteResult; -import com.ycl.platform.domain.entity.*; +import com.ycl.platform.domain.entity.ContractRuleRecord; +import com.ycl.platform.domain.entity.ContractScore; +import com.ycl.platform.domain.entity.WorkOrder; +import com.ycl.platform.domain.entity.YwPoint; import com.ycl.platform.domain.result.HK.PicAccessResult; -import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; +import com.ycl.platform.domain.result.SYS.TMonitorResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; -import com.ycl.platform.domain.result.UY.VideoOnlineResult; import com.ycl.platform.domain.vo.CalculateRuleVO; -import com.ycl.platform.domain.vo.ContractVO; -import com.ycl.platform.domain.vo.ReportVO; import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.mapper.*; import com.ycl.platform.service.IContractScoreService; +import com.ycl.system.mapper.SysConfigMapper; import com.ycl.utils.DateUtils; +import com.ycl.utils.StringUtils; import constant.ApiConstants; -import constant.RedisConstant; import enumeration.ContractRule; import enumeration.ErrorType; import enumeration.general.AuditingStatus; -import enumeration.general.ErrorTypeEnum; -import enumeration.general.RuleDeductCategoryEnum; import enumeration.general.WorkOrderStatusEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import javax.management.monitor.Monitor; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @@ -47,6 +43,7 @@ */ @Slf4j @Component("contractTask") +//TODO:閲嶆柊鐪嬩笅閫昏緫 public class ContractTask { @Autowired private MongoTemplate mongoTemplate; @@ -62,18 +59,18 @@ private IContractScoreService contractScoreService; @Autowired private WorkOrderMapper workOrderMapper; - + @Autowired + private SysConfigMapper sysConfigMapper; private static final Integer Online = 1; private static final Integer Offline = -1; private static final String AuditStatus_Pass = "1"; private static final String Remark = "绯荤粺鐢熸垚"; - private static final Integer randomSize = 1; + private static final Integer randomSize = 30; /** * 鍚堝悓鑰冩牳 鍦ㄧ嚎鐜囨瘡鏃ヤ换鍔℃娴� * 鏌ョ敓鏁堢殑鍚堝悓鍏宠仈鐨勫叕鍙革紝鑾峰彇unitId闆嗗悎 * 鏍规嵁unitId鏌ヨ瀵瑰簲鐐逛綅鑾峰彇鍚勪釜鍏徃绠$悊鐨勮澶嘔ds - * 鏌ヨ涓夌璁惧鍦ㄧ嚎涓嶅湪绾挎儏鍐碉紝灏佽涓轰竴涓猰ap<鍥芥爣鐮�,鍦ㄧ嚎鐘舵��> * 璁$畻姣忔棩姣忓鍏徃鐨勫湪绾跨巼瀛樺叆mysql * 鏈堝簳璁$畻骞冲潎鍊硷紝鏍规嵁鍦ㄧ嚎鐜囧拰鍚堝悓鏍囧噯鎵e噺鍒嗘暟 */ @@ -85,53 +82,31 @@ 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鏄澶囩紪鐮侀泦鍚� - Map<Long, List<String>> unitMap = ywPoints.stream() + Map<Long, List<YwPoint>> unitMap = ywPoints.stream().filter(point -> point.getUnitId() != null) .collect(Collectors.groupingBy( - YwPoint::getUnitId, - Collectors.mapping( - YwPoint::getSerialNumber, - Collectors.toList() + YwPoint::getUnitId ) - )); - Map<String, Integer> onlineStatusMap = new HashMap<>(); - //鏌ongo鑾峰彇璁惧鍦ㄧ嚎鎯呭喌 - Date date = DateUtils.getDay(2024, 7, 13); - //杞﹁締銆佷汉鑴� - Query query = new Query(); - query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); - List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class); - for (SnapshotDataMonitorResult result : results) { - if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) { - onlineStatusMap.put(result.getExternalIndexCode(), Online); - } else { - onlineStatusMap.put(result.getExternalIndexCode(), Offline); - } - } - //瑙嗛 - Query videoQuery = new Query(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); - List<VideoOnlineResult> videoOnlineResults = mongoTemplate.find(videoQuery, VideoOnlineResult.class); - for (VideoOnlineResult videoOnlineResult : videoOnlineResults) { - onlineStatusMap.put(videoOnlineResult.getDeviceId(), videoOnlineResult.getStatus()); - } + ); //鏌ヨ鎶ュ鍒楄〃 List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); //璁$畻姣忎釜鍏徃鐨勭偣浣嶅湪绾跨巼 List<ContractRuleRecord> ruleRecordList = new ArrayList<>(); - unitMap.forEach((unitId, serialNumberList) -> { + unitMap.forEach((unitId, pointList) -> { int totalSite = 0; int onlineSite = 0; - for (String number : serialNumberList) { + for (YwPoint point : pointList) { //鎶ュ杩囦笉绾冲叆璁$畻 - if (!CollectionUtils.isEmpty(reportNumbers) && reportNumbers.contains(number)) continue; - Integer status = onlineStatusMap.get(number); + if (!CollectionUtils.isEmpty(reportNumbers) && reportNumbers.contains(point.getSerialNumber())) + continue; totalSite++; - if (Online.equals(status)) { + if (ApiConstants.UY_OnlineSite_Online.equals(point.getOnline())) { onlineSite++; } } - BigDecimal online = new BigDecimal(onlineSite).divide(new BigDecimal(totalSite), 2, RoundingMode.DOWN); + BigDecimal online = BigDecimal.ONE; + if (totalSite != 0) { + online = new BigDecimal(onlineSite).divide(new BigDecimal(totalSite), 2, RoundingMode.DOWN); + } ContractRuleRecord contractRuleRecord = new ContractRuleRecord(); contractRuleRecord.setSiteOnline(online); contractRuleRecord.setCreateTime(new Date()); @@ -145,17 +120,16 @@ //鏈堝簳璁$畻鍦ㄧ嚎鐜囧垎鏁� public void calculateOnlineScore() { + //TODO:妫�鏌ヨ〃 log.info("寮�濮嬭绠楀悎鍚岀偣浣嶅湪绾跨巼鍒嗘暟"); - //濡傛灉鏄湀搴曪紝闇�瑕佺粺璁″钩鍧囧湪绾跨巼鐒跺悗杩涜绉垎鎵i櫎 -// String now = DateUtils.getDate(); + //鏈堝簳闇�瑕佺粺璁″钩鍧囧湪绾跨巼鐒跺悗杩涜绉垎鎵i櫎 String mouthStart = DateUtils.getMouthStart(new Date()); String mouthEnd = DateUtils.getMouthEnd(new Date()); -// if (now.equals(mouthEnd)) { //鏌ヤ竴涓湀鐨勮褰� List<ContractRuleRecord> ruleMonthRecords = recordMapper.selectMonth(mouthStart, mouthEnd); - //閫氳繃unitId鍒嗗崟浣� + //閫氳繃unitId鍒嗗崟浣嶏紝鑾峰彇褰撴湀鏁版嵁map Map<Long, List<ContractRuleRecord>> unitMap = ruleMonthRecords.stream().collect(Collectors.groupingBy(ContractRuleRecord::getUnitId)); - //鏌ュ湪绾跨巼瑙勫垯 鑾峰彇key涓哄悎鍚宨d锛寁alue涓哄湪绾跨巼瑙勫垯鐨刴ap + //鏌ュ湪绾跨巼瑙勫垯 鑾峰彇key涓哄悎鍚宨d锛寁alue涓哄湪绾跨巼瑙勫垯闆嗗悎 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)); @@ -167,7 +141,7 @@ CalculateRuleVO calculateRuleVO = ruleList.get(0); Integer unitId = calculateRuleVO.getUnitId(); List<ContractRuleRecord> ruleRecordList = unitMap.get(Long.parseLong(unitId + "")); - if (!CollectionUtils.isEmpty(ruleMonthRecords)) { + if (!CollectionUtils.isEmpty(ruleRecordList)) { 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) { @@ -183,7 +157,6 @@ } } }); -// } contractScoreService.saveBatch(contractScoreList); log.info("缁撴潫璁$畻鍚堝悓鐐逛綅鍦ㄧ嚎鐜囧垎鏁�"); } @@ -211,8 +184,8 @@ )); //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱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()); + //瀛樺偍鏁呴殰锛�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()); //鏌ヨ鎶ュ鍒楄〃 @@ -226,35 +199,35 @@ for (WorkOrderVO workOrder : workOrders) { //妫�娴嬫槸鍚︽姤澶囪繃 if (!CollectionUtils.isEmpty(reportNumbers)) { - if(reportNumbers.contains(workOrder.getSerialNumber())) continue; + if (reportNumbers.contains(workOrder.getSerialNumber())) continue; } String errorType = workOrder.getErrorType(); - //瀛樺偍鏁呴殰 褰曞儚鎴栧浘鐗囪闂紓甯� - if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) { - if (!CollectionUtils.isEmpty(storeRuleMap)) { - storeRuleMap.forEach((contractId, rules) -> { - Integer unitId = rules.get(0).getUnitId(); - //鎵惧埌瀵瑰簲鐨勮鍒� - if (workOrder.getUnitId().equals(unitId)) { - //宸ュ崟涓嬪彂鏃堕棿 - Date createTime = workOrder.getDistributeTime(); - Date auditTime = workOrder.getAuditTime(); - double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); - //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 - for (CalculateRuleVO rule : rules) { - if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { - double deductScore = rule.getCalcFraction() * Math.ceil(diffTime); - ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�"); - contractScoreList.add(contractScore); - workOrderList.add(workOrder.getWorkOrderNo()); - } - } - } - }); - } - } + //瀛樺偍鏁呴殰 褰曞儚鎴栧浘鐗囪闂紓甯� 锛堟敼鎴愭墜鍔ㄦ墦鍒嗕簡锛� +// if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) { +// if (!CollectionUtils.isEmpty(storeRuleMap)) { +// storeRuleMap.forEach((contractId, rules) -> { +// Integer unitId = rules.get(0).getUnitId(); +// //鎵惧埌瀵瑰簲鐨勮鍒� +// if (workOrder.getUnitId().equals(unitId)) { +// //宸ュ崟涓嬪彂鏃堕棿 +// Date createTime = workOrder.getDistributeTime(); +// Date auditTime = workOrder.getAuditTime(); +// double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); +// //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 +// for (CalculateRuleVO rule : rules) { +// if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { +// double deductScore = rule.getCalcFraction() * Math.ceil(diffTime); +// ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�"); +// contractScoreList.add(contractScore); +// workOrderList.add(workOrder.getWorkOrderNo()); +// } +// } +// } +// }); +// } +// } //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱SD瑙勫垯銆佷竴鏈轰竴妗h鍒欙級 - if (ErrorType.MONITOR_UNQUALIFY.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) { + if (ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType) || ErrorType.CLOCK_RIGHT.getValue().equals(errorType)) { if (!CollectionUtils.isEmpty(monitorRuleMap)) { monitorRuleMap.forEach((contractId, rules) -> { Integer unitId = rules.get(0).getUnitId(); @@ -278,7 +251,7 @@ } } //鐐逛綅寮傚父鎯呭喌澶勭悊锛堥暅澶村紓甯搞�佹憚鍍忓ご閬尅绛夛級 - if (ErrorType.SCREEN_COLOR_DEVIATION.getValue().equals(errorType) || ErrorType.SNOW_STORM.getValue().equals(errorType) || ErrorType.STRIPE_INTERFERENCE.getValue().equals(errorType) || ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType) || ErrorType.ABNORMAL_CLARITY.getValue().equals(errorType) || ErrorType.ABNORMAL_BRIGHTNESS.getValue().equals(errorType)) { + if (ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType)) { if (!CollectionUtils.isEmpty(monitorRuleMap)) { siteRuleMap.forEach((contractId, rules) -> { Integer unitId = rules.get(0).getUnitId(); @@ -292,7 +265,7 @@ for (CalculateRuleVO rule : rules) { if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { double deductScore = 0d; - if (ContractRule.CONTRACT_RULE_Store_48H.getName().equals(rule.getRuleCondition())) { + if (ContractRule.CONTRACT_RULE_Site_Error48.getName().equals(rule.getRuleCondition())) { //璁$畻瓒呮椂澶╂暟 int day = (int) ((diffTime - 48) / 24 + 1); deductScore = rule.getCalcFraction() * (day); @@ -329,8 +302,16 @@ */ public void randomDeductPic() { Random random = new Random(); + Integer num = randomSize; //缁欏畾闅忔満鑼冨洿 - int number = random.nextInt(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("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�"); //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚� @@ -352,7 +333,7 @@ queryWrapper.in("serial_number", serialNumbers); //鑾峰彇鍏徃鎵�杩愮淮鐨勮澶囬泦鍚堬紝key涓簎nitId value涓鸿澶囧浗鏍囩爜闆嗗悎 Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream() - .collect(Collectors.groupingBy(YwPoint::getUnitId, + .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId, Collectors.mapping( YwPoint::getSerialNumber, Collectors.toList()))); @@ -367,12 +348,12 @@ for (PicAccessResult picAccessResult : picAccessResults) { //鍒ゆ柇鏄惁鎶ュ杩� if (!CollectionUtils.isEmpty(reportNumbers)) { - if(reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue; + if (reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue; } //鍒ゆ柇鏄惁鏄鍏徃杩愮淮 if (monitorList.contains(picAccessResult.getExternalIndexCode())) { - //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑� - if (picAccessResult.getBigDisableCount() > 0) { + //瀛樺湪鍥剧墖璁块棶寮傚父鏁版嵁閲忥紝闇�瑕佹墸鍑� + if (picAccessResult.getExpCount() > 0) { deduct = true; serialNumber = picAccessResult.getExternalIndexCode(); break; @@ -401,13 +382,23 @@ public void randomDeductVideo() { Random random = new Random(); //缁欏畾闅忔満鑼冨洿 - int number = random.nextInt(randomSize); + 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()); + //TODO:娴嬭瘯鏃ユ湡 Date date = DateUtils.getDay(2024, 7, 13); //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream() @@ -423,7 +414,7 @@ queryWrapper.in("serial_number", serialNumbers); //鑾峰彇鍏徃鎵�杩愮淮鐨勮澶囬泦鍚堬紝key涓簎nitId value涓鸿澶囧浗鏍囩爜闆嗗悎 Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream() - .collect(Collectors.groupingBy(YwPoint::getUnitId, + .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId, Collectors.mapping( YwPoint::getSerialNumber, Collectors.toList()))); @@ -436,7 +427,7 @@ for (RecordMetaDSumResult result : recordMetaDSumResults) { //鍒ゆ柇鏄惁鎶ュ杩� if (!CollectionUtils.isEmpty(reportNumbers)) { - if(reportNumbers.contains(result.getDeviceId())) continue; + if (reportNumbers.contains(result.getDeviceId())) continue; } //鍒ゆ柇鏄惁鏄鍏徃杩愮淮 if (monitorList.contains(result.getDeviceId())) { @@ -445,8 +436,8 @@ for (CalculateRuleVO calculateRuleVO : ruleList) { Double max = calculateRuleVO.getMax(); Double min = calculateRuleVO.getMin(); - //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� //TODO:鍒ゆ柇鍗曚綅 - if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) { + //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� 鍗曚綅鏄皬鏃惰浆鎹负鍒嗛挓 + if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration() * 60))) { if (calculateRuleVO.getNum() == null) { calculateRuleVO.setNum(1); } else { @@ -458,7 +449,7 @@ } } for (CalculateRuleVO calculateRuleVO : ruleList) { - if (calculateRuleVO.getNum()!=null && calculateRuleVO.getNum() > 0) { + if (calculateRuleVO.getNum() != null && calculateRuleVO.getNum() > 0) { //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥� double deductScore = calculateRuleVO.getCalcFraction() * calculateRuleVO.getNum(); ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark + calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�"); -- Gitblit v1.8.0