空指针bug修复

This commit is contained in:
黎润豪 2024-10-24 11:38:28 +08:00
parent dca0e3201c
commit c42364cd9b
2 changed files with 27 additions and 21 deletions

View File

@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -275,7 +276,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
processRaterDate.put("id", "processRate");
processRaterDate.put("name", "故障处理率(已确认)");
processRaterDate.put("value", total.compareTo(BigDecimal.valueOf(0)) > 0 ? (resolved.multiply(BigDecimal.valueOf(100))
.divide(total, 2, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(total, 2, RoundingMode.HALF_UP) + "%") : 0);
//已解决+待确认 故障处理率
@ -283,7 +284,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
confirmedProcessRaterDate.put("id", "confirmedProcessRate");
confirmedProcessRaterDate.put("name", "故障处理率(已确认+待确认)");
confirmedProcessRaterDate.put("value", total.compareTo(BigDecimal.valueOf(0)) > 0 ? (resolved.add(confirmed).multiply(BigDecimal.valueOf(100))
.divide(total, 2, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(total, 2, RoundingMode.HALF_UP) + "%") : 0);
//处理故障数量
@ -301,7 +302,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
oneRate.put("id", "oneSuccessRate");
oneRate.put("name", "处理故障1次成功率");
oneRate.put("value", handleTotal.compareTo(BigDecimal.valueOf(0)) > 0 ? (oneSuccess.multiply(BigDecimal.valueOf(100))
.divide(handleTotal, 2, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(handleTotal, 2, RoundingMode.HALF_UP) + "%") : 0);
Map<String, Object> two = new LinkedHashMap<>();
@ -313,7 +314,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
twoRate.put("id", "twoSuccessRate");
twoRate.put("name", "处理故障2次成功率");
twoRate.put("value", handleTotal.compareTo(BigDecimal.valueOf(0)) > 0 ? (twoSuccess.multiply(BigDecimal.valueOf(100))
.divide(handleTotal, 2, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(handleTotal, 2, RoundingMode.HALF_UP) + "%") : 0);
Map<String, Object> three = new LinkedHashMap<>();
@ -325,23 +326,27 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
threeRate.put("id", "threeSuccessRate");
threeRate.put("name", "处理故障3次及以上成功率");
threeRate.put("value", handleTotal.compareTo(BigDecimal.valueOf(0)) > 0 ? (threeSuccess.multiply(BigDecimal.valueOf(100))
.divide(handleTotal, 2, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(handleTotal, 2, RoundingMode.HALF_UP) + "%") : 0);
Map<String, Object> avgResolvedMap = repairHandleMapper.getAvgResolvedTime(query);
Map<String, Object> avgResolvedTime = new LinkedHashMap<>();
BigDecimal resolvedHour = (BigDecimal) avgResolvedMap.get("resolvedHour");
BigDecimal resolvedNumber = (BigDecimal) avgResolvedMap.get("resolvedNumber");
Object resolvedHourObj = avgResolvedMap.get("resolvedHour");
Object resolvedNumberObj = avgResolvedMap.get("resolvedNumber");
BigDecimal resolvedHour = new BigDecimal(resolvedHourObj != null ? resolvedHourObj.toString() : "0");
BigDecimal resolvedNumber = new BigDecimal(resolvedNumberObj != null ? resolvedNumberObj.toString() : "0");
avgResolvedTime.put("id", "avgResolvedTime");
avgResolvedTime.put("name", "故障平均解决时长");
avgResolvedTime.put("value", resolvedNumber.compareTo(BigDecimal.valueOf(0)) > 0 ? (resolvedHour.divide(resolvedNumber, 2, BigDecimal.ROUND_HALF_UP)) + " 小时" : 0);
avgResolvedTime.put("value", resolvedNumber.compareTo(BigDecimal.valueOf(0)) > 0 ? (resolvedHour.divide(resolvedNumber, 2, RoundingMode.HALF_UP)) + " 小时" : 0);
Map<String, Object> avgFeedbackMap = repairHandleMapper.getAvgFeedbackTime(query);
Map<String, Object> avgFeedbackTime = new LinkedHashMap<>();
BigDecimal feedbackHour = (BigDecimal) avgFeedbackMap.get("feedbackHour");
BigDecimal feedbackNumber = (BigDecimal) avgFeedbackMap.get("feedbackNumber");
Object feedbackHourObj = avgFeedbackMap.get("feedbackHour");
Object feedbackNumberObj = avgFeedbackMap.get("feedbackNumber");
BigDecimal feedbackHour = new BigDecimal(feedbackHourObj != null ? feedbackHourObj.toString() : "0");
BigDecimal feedbackNumber = new BigDecimal(feedbackNumberObj != null ? feedbackNumberObj.toString() : "0");
avgFeedbackTime.put("id", "avgFeedbackTime");
avgFeedbackTime.put("name", "故障平均处理时长");
avgFeedbackTime.put("value", feedbackNumber.compareTo(BigDecimal.valueOf(0)) > 0 ? (feedbackHour.divide(feedbackNumber, 2, BigDecimal.ROUND_HALF_UP)) + " 小时" : 0);
avgFeedbackTime.put("value", feedbackNumber.compareTo(BigDecimal.valueOf(0)) > 0 ? (feedbackHour.divide(feedbackNumber, 2, RoundingMode.HALF_UP)) + " 小时" : 0);
list.add(totalData);
list.add(feedbackData);
@ -373,7 +378,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
}
for (Map<String, Object> map : labelList) {
String name = (String) map.get("name");
BigDecimal num = (BigDecimal) map.get("num");
BigDecimal num = new BigDecimal(map.get("num").toString());
Map<String, Object> data = new LinkedHashMap<>();
data.put("id", labelType + name);
data.put("name", name);

View File

@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -51,26 +52,26 @@ public class StatisticServiceImpl {
Map<String, Object> map = new LinkedHashMap<>();
query.setOrg(org);
Map<String, Object> data = repairTodoMapper.getWhole(query);
BigDecimal total = (BigDecimal) data.get("total");
BigDecimal resolved = (BigDecimal) data.get("resolved");
BigDecimal feedback = (BigDecimal) data.get("feedback");
BigDecimal unresolved = (BigDecimal) data.get("unresolved");
BigDecimal handleAndDeclare = (BigDecimal) data.get("handleAndDeclare");
BigDecimal total = new BigDecimal(data.get("total").toString());
BigDecimal resolved = new BigDecimal(data.get("resolved").toString());
BigDecimal feedback = new BigDecimal(data.get("feedback").toString());
BigDecimal unresolved = new BigDecimal(data.get("unresolved").toString());
BigDecimal handleAndDeclare = new BigDecimal(data.get("handleAndDeclare").toString());
map.put("no", i + 1);
map.put("name", org);
map.put("total", total);
map.put("resolved", resolved);
map.put("resolvedRate", total.compareTo(BigDecimal.valueOf(0)) > 0 ? (resolved.multiply(BigDecimal.valueOf(100))
.divide(total, 1, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(total, 1, RoundingMode.HALF_UP) + "%") : 0);
map.put("feedback", feedback);
map.put("feedbackRate", total.compareTo(BigDecimal.valueOf(0)) > 0 ? (feedback.multiply(BigDecimal.valueOf(100))
.divide(total, 1, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(total, 1, RoundingMode.HALF_UP) + "%") : 0);
map.put("unresolved", unresolved);
map.put("unresolvedRate", total.compareTo(BigDecimal.valueOf(0)) > 0 ? (unresolved.multiply(BigDecimal.valueOf(100))
.divide(total, 1, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(total, 1, RoundingMode.HALF_UP) + "%") : 0);
map.put("handleAndDeclare", handleAndDeclare);
map.put("handleAndDeclareRate", total.compareTo(BigDecimal.valueOf(0)) > 0 ? (handleAndDeclare.multiply(BigDecimal.valueOf(100))
.divide(total, 1, BigDecimal.ROUND_HALF_UP) + "%") : 0);
.divide(total, 1, RoundingMode.HALF_UP) + "%") : 0);
list.add(map);
}
return list;