diff --git a/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/RepairServiceImpl.java b/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/RepairServiceImpl.java index 0ba4325..35f0b82 100644 --- a/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/RepairServiceImpl.java +++ b/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/RepairServiceImpl.java @@ -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 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 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 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 two = new LinkedHashMap<>(); @@ -313,7 +314,7 @@ public class RepairServiceImpl extends ServiceImpl 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 three = new LinkedHashMap<>(); @@ -325,23 +326,27 @@ public class RepairServiceImpl extends ServiceImpl 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 avgResolvedMap = repairHandleMapper.getAvgResolvedTime(query); Map 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 avgFeedbackMap = repairHandleMapper.getAvgFeedbackTime(query); Map 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 impleme } for (Map map : labelList) { String name = (String) map.get("name"); - BigDecimal num = (BigDecimal) map.get("num"); + BigDecimal num = new BigDecimal(map.get("num").toString()); Map data = new LinkedHashMap<>(); data.put("id", labelType + name); data.put("name", name); diff --git a/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/StatisticServiceImpl.java b/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/StatisticServiceImpl.java index 1279c5f..4280f95 100644 --- a/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/StatisticServiceImpl.java +++ b/src/main/java/com/chinaweal/youfool/devops/repair/service/impl/StatisticServiceImpl.java @@ -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 map = new LinkedHashMap<>(); query.setOrg(org); Map 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;