qushaowei
2025-06-13 4b27dd367eae2f24958c6bb857fb6959dcdb7a4a
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/FaultIntervalTimeController.java
@@ -199,7 +199,7 @@
      String startTime = (String)query.get("startTime");
      String endTime = (String)query.get("endTime");
      if(StringUtils.isBlank(startTime) && StringUtils.isBlank(endTime)){
         Date dayAfter = DateUtils.getDayAfter(new Date(), -3);
         Date dayAfter = DateUtils.getDayAfter(new Date(), -2);
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
         dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));// 设置北京时区
         query.put("startTime",dateFormat.format(dayAfter));
@@ -207,7 +207,6 @@
         String currentDateStr = DateUtils.getCurrentDateStr();
         query.put("endTime",currentDateStr);
      }
      List<Map<String, Object>> equipmentList = faultIntervalTimeService.getEquipmentList(query);
      List<FaultIntervalTime> faultIntervalTimeList = new ArrayList<>();
      for (Map<String, Object> map : equipmentList) {
@@ -227,43 +226,10 @@
            faultIntervalTime.setFaultTime(equipmentMTBF.get(0).get("faultTime").toString());
            faultIntervalTime.setFaultNumber(equipmentMTBF.get(0).get("faultNumber").toString());
            faultIntervalTime.setRepairTime(equipmentMTBF.get(0).get("repairTime").toString());
            //计算mttr  MTTR:故障修复时间/故障次数
            BigDecimal repairTime = new BigDecimal(equipmentMTBF.get(0).get("repairTime").toString());
            BigDecimal faultNumber = new BigDecimal(equipmentMTBF.get(0).get("faultNumber").toString());
            BigDecimal averageRepairTime;
            if(new BigDecimal(0).compareTo(faultNumber) == 0){
               averageRepairTime = new BigDecimal(0);
            }else{
               averageRepairTime = repairTime.divide(faultNumber, 2, RoundingMode.HALF_UP);
            }
            //计算mtbf
            //MTBF:无故障时间/故障次数
            BigDecimal averageFaultIntervalTime;
            BigDecimal totalAvailableTime = new BigDecimal(equipmentMTBF.get(0).get("totalAvailableTime").toString());
            BigDecimal faultTime = new BigDecimal(equipmentMTBF.get(0).get("faultTime").toString());
            BigDecimal noFaultTime = new BigDecimal(equipmentMTBF.get(0).get("noFaultTime").toString());
            if(new BigDecimal(0).compareTo(faultNumber) == 0){
               averageFaultIntervalTime = new BigDecimal(0);
            }else{
//               averageFaultIntervalTime = (noFaultTime.subtract(faultTime)).divide(faultNumber, 2, BigDecimal.ROUND_HALF_EVEN);
               averageFaultIntervalTime = noFaultTime.divide(faultNumber, 2, RoundingMode.HALF_UP);
            }
            //计算完好率  完好率:无故障时间/总可利用时间
//            BigDecimal totalDay = new BigDecimal(equipmentMTBF.get(0).get("totalDay").toString());
//            BigDecimal repairDay = new BigDecimal(equipmentMTBF.get(0).get("repairDay").toString());
//            BigDecimal serviceabilityRate = noFaultTime.divide(totalAvailableTime,2, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
            BigDecimal serviceabilityRate = noFaultTime.divide(totalAvailableTime,2,RoundingMode.HALF_EVEN).multiply(new BigDecimal(100));;
            //故障率
//            BigDecimal totalAvailableTime = new BigDecimal(equipmentMTBF.get(0).get("totalAvailableTime").toString());
//            BigDecimal repairTime = new BigDecimal(equipmentMTBF.get(0).get("repairTime").toString());
            BigDecimal startRate = faultTime.divide(totalAvailableTime,2, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
            faultIntervalTime.setAverageRepairTime(averageRepairTime.toString());
            faultIntervalTime.setAverageFaultIntervalTime(averageFaultIntervalTime.toString());
            faultIntervalTime.setServiceabilityRate(serviceabilityRate+"%");
            faultIntervalTime.setStartRate(startRate+"%");
            faultIntervalTime.setAverageRepairTime(equipmentMTBF.get(0).get("mttr").toString());
            faultIntervalTime.setAverageFaultIntervalTime(equipmentMTBF.get(0).get("mtbf").toString());
            faultIntervalTime.setServiceabilityRate(equipmentMTBF.get(0).get("serviceabilityRate").toString()+"%");
            faultIntervalTime.setStartRate(equipmentMTBF.get(0).get("startRate").toString()+"%");
            faultIntervalTimeList.add(faultIntervalTime);
         }else{
            List<Map<String, Object>> mtbfTotalAvailableTime = faultIntervalTimeService.getMTBFTotalAvailableTime(query);