31442ef8 张雷

fix(equipment): 修复设备健康等级计算异常

- 增加对设备使用年限、原始价值和安装日期的空值检查- 如果上述字段为空,则将健康等级设为"wfjs"(未计算)
- 优化了健康等级计算逻辑,增加了空值处理
- 在设备列表中添加健康等级状态的字典文本显示
1 个父辈 d75c962f
......@@ -526,6 +526,7 @@ public class EquipmentController {
Map<String, String> equipmentStatusVal2KeyMap = EquipmentUtils.convertFunc("equipmentStatus", false);
Map<String, String> maintenanceCycleUnitVal2KeyMap = key2ValueService.dictKey2Val("loop_unit", false);
Map<String, String> installVal2KeyMap = key2ValueService.dictKey2Val("equipment-installWay", false);
Map<String, String> healthVal2KeyMap = key2ValueService.dictKey2Val("equipment_health_status", false);
// 封装结果
Page<Map<String, Map<String, Object>>> resPage = new Page<>(equipmentDTO.getPageNo(), equipmentDTO.getPageSize());
resPage.setTotal(mapPage.getTotal());
......@@ -557,6 +558,8 @@ public class EquipmentController {
resMap.get(keys[0]).put(keys[1] + "_dictText", maintenanceCycleUnitVal2KeyMap.get(ConvertUtils.getString(value)));
} else if ("installWay".equals(keys[1])) {
resMap.get(keys[0]).put(keys[1] + "_dictText", installVal2KeyMap.get(ConvertUtils.getString(value)));
} else if ("equipmentHealthStatus".equals(keys[1])) {
resMap.get(keys[0]).put(keys[1] + "_dictText", healthVal2KeyMap.get(ConvertUtils.getString(value)));
}
}
resPage.getRecords().add(resMap);
......
......@@ -43,29 +43,36 @@ public class EquipHealthLevelJob implements Job {
//workingLife 使用年限、originalValue 购置价格、installDate 安装日期
List<EquipmentInfo> list = equipmentInfoService.getEquipmentList();
for (EquipmentInfo equipmentInfo : list){
double performanceScore = 100.00;//性能得分
double faultScore = 100.00;//故障得分
double maintainScore = 100.00;//维护得分
double useYearScore = 100.00;//使用年限得分
//性能分数
if(ConvertUtils.isNotEmpty(equipmentInfo.getPerformanceScore())){
performanceScore = Double.valueOf(equipmentInfo.getPerformanceScore());
if(ConvertUtils.isEmpty(equipmentInfo.getWorkingLife())||
ConvertUtils.isEmpty(equipmentInfo.getOriginalValue())||
ConvertUtils.isEmpty(equipmentInfo.getInstallDate())){
equipmentInfo.setEquipmentHealthLevel("");
equipmentInfo.setEquipmentHealthStatus("wfjs");
}else{
double performanceScore = 100.00;//性能得分
double faultScore = 100.00;//故障得分
double maintainScore = 100.00;//维护得分
double useYearScore = 100.00;//使用年限得分
//性能分数
if(ConvertUtils.isNotEmpty(equipmentInfo.getPerformanceScore())){
performanceScore = Double.valueOf(equipmentInfo.getPerformanceScore());
}
performanceScore = DoubleOperaUtils.bigDecimalRound(qzMap.get("xnzb")/100.00 * performanceScore,2);
//故障分数
faultScore = getFaultScore(equipmentInfo.getGzCount(),qzMap.get("gzl")/100.00);
//维护分数
maintainScore = getMaintainScore(equipmentInfo.getMaintenanceCost(), equipmentInfo.getOriginalValue(),qzMap.get("whcb")/100.00);
//使用年限分数
useYearScore = getUseYearScore(equipmentInfo.getWorkingLife(),equipmentInfo.getInstallDate(),today,qzMap.get("synx")/100.00);
//计算总分
double score = DoubleOperaUtils.bigDecimalRound(performanceScore + faultScore + maintainScore + useYearScore,2);
equipmentInfo.setEquipmentHealthLevel(String.valueOf(score));
//判断score在statusValueMap的key值的哪个区间,返回对应的value
String statusValue = getEquipmentHealthStatus(score,statusValueMap);
equipmentInfo.setEquipmentHealthStatus(statusValue);
}
performanceScore = DoubleOperaUtils.bigDecimalRound(qzMap.get("xnzb")/100.00 * performanceScore,2);
//故障分数
faultScore = getFaultScore(equipmentInfo.getGzCount(),qzMap.get("gzl")/100.00);
//维护分数
maintainScore = getMaintainScore(equipmentInfo.getMaintenanceCost(), equipmentInfo.getOriginalValue(),qzMap.get("whcb")/100.00);
//使用年限分数
useYearScore = getUseYearScore(equipmentInfo.getWorkingLife(),equipmentInfo.getInstallDate(),today,qzMap.get("synx")/100.00);
//计算总分
double score = performanceScore + faultScore + maintainScore + useYearScore;
equipmentInfo.setEquipmentHealthLevel(String.valueOf(score));
//判断score在statusValueMap的key值的哪个区间,返回对应的value
String statusValue = getEquipmentHealthStatus(score,statusValueMap);
equipmentInfo.setEquipmentHealthStatus(statusValue);
equipmentInfoService.updateById(equipmentInfo);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!