| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jeecg.common.constant.CommonConstant; |
| | | import org.jeecg.common.util.DateUtils; |
| | | import org.jeecg.modules.eam.entity.Equipment; |
| | | import org.jeecg.modules.eam.entity.EquipmentReportRepair; |
| | | import org.jeecg.modules.eam.entity.RepairOrder; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.YearMonth; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | String endTime11 = ""; |
| | | String startTime12 = ""; |
| | | String endTime12 = ""; |
| | | YearMonth yearMonth = null; |
| | | if(StringUtils.isBlank(yearStr)){ |
| | | return equipmentAvailabilityVoList; |
| | | }else { |
| | | //根据年份获取本年度2月份有多少天 |
| | | yearMonth = YearMonth.of(Integer.parseInt(yearStr),2); |
| | | startTime1 = yearStr+"-01-01 00:00:00"; |
| | | endTime1 = yearStr+"-01-31 23:59:59"; |
| | | startTime2 = yearStr+"-02-01 00:00:00"; |
| | | endTime2 = yearStr+"-02-31 23:59:59"; |
| | | endTime2 = yearStr+"-02-"+String.valueOf(yearMonth.lengthOfMonth())+" 23:59:59"; |
| | | startTime3 = yearStr+"-03-01 00:00:00"; |
| | | endTime3 = yearStr+"-03-31 23:59:59"; |
| | | startTime4 = yearStr+"-04-01 00:00:00"; |
| | |
| | | Date endDate11 = sdf.parse(endTime11); |
| | | Date startDate12 = sdf.parse(startTime12); |
| | | Date endDate12 = sdf.parse(endTime12); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo1 = this.getFaultTime(startDate1,endDate1,"1"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo2 = this.getFaultTime(startDate2,endDate2,"2"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo3 = this.getFaultTime(startDate3,endDate3,"3"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo4 = this.getFaultTime(startDate4,endDate4,"4"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo5 = this.getFaultTime(startDate5,endDate5,"5"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo6 = this.getFaultTime(startDate6,endDate6,"6"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo7 = this.getFaultTime(startDate7,endDate7,"7"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo8 = this.getFaultTime(startDate8,endDate8,"8"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo9 = this.getFaultTime(startDate9,endDate9,"9"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo10 = this.getFaultTime(startDate10,endDate10,"10"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo11 = this.getFaultTime(startDate11,endDate11,"11"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo12 = this.getFaultTime(startDate12,endDate12,"12"); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo1 = this.getFaultTime(startDate1,endDate1,"1",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo2 = this.getFaultTime(startDate2,endDate2,"2",yearMonth.lengthOfMonth()); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo3 = this.getFaultTime(startDate3,endDate3,"3",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo4 = this.getFaultTime(startDate4,endDate4,"4",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo5 = this.getFaultTime(startDate5,endDate5,"5",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo6 = this.getFaultTime(startDate6,endDate6,"6",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo7 = this.getFaultTime(startDate7,endDate7,"7",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo8 = this.getFaultTime(startDate8,endDate8,"8",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo9 = this.getFaultTime(startDate9,endDate9,"9",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo10 = this.getFaultTime(startDate10,endDate10,"10",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo11 = this.getFaultTime(startDate11,endDate11,"11",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo12 = this.getFaultTime(startDate12,endDate12,"12",31); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo1); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo2); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo3); |
| | |
| | | return equipmentAvailabilityVoList; |
| | | } |
| | | |
| | | public EquipmentAvailabilityVo getFaultTime(Date startDate,Date endDate,String month) throws ParseException { |
| | | //查询A类设备台数,截止到1月底 |
| | | @Override |
| | | public List<EquipmentAvailabilityVo> getStartRate(Map<String, String> query) throws ParseException { |
| | | List<EquipmentAvailabilityVo> equipmentAvailabilityVoList = new ArrayList<>(); |
| | | String yearStr = query.get("year"); |
| | | String startTime1 = ""; |
| | | String endTime1 = ""; |
| | | String startTime2 = ""; |
| | | String endTime2 = ""; |
| | | String startTime3 = ""; |
| | | String endTime3 = ""; |
| | | String startTime4 = ""; |
| | | String endTime4 = ""; |
| | | String startTime5 = ""; |
| | | String endTime5 = ""; |
| | | String startTime6 = ""; |
| | | String endTime6 = ""; |
| | | String startTime7 = ""; |
| | | String endTime7 = ""; |
| | | String startTime8 = ""; |
| | | String endTime8 = ""; |
| | | String startTime9 = ""; |
| | | String endTime9 = ""; |
| | | String startTime10 = ""; |
| | | String endTime10 = ""; |
| | | String startTime11 = ""; |
| | | String endTime11 = ""; |
| | | String startTime12 = ""; |
| | | String endTime12 = ""; |
| | | YearMonth yearMonth = null; |
| | | if(StringUtils.isBlank(yearStr)){ |
| | | return equipmentAvailabilityVoList; |
| | | }else { |
| | | //根据年份获取本年度2月份有多少天 |
| | | yearMonth = YearMonth.of(Integer.parseInt(yearStr),2); |
| | | startTime1 = yearStr+"-01-01 00:00:00"; |
| | | endTime1 = yearStr+"-01-31 23:59:59"; |
| | | startTime2 = yearStr+"-02-01 00:00:00"; |
| | | endTime2 = yearStr+"-02-"+String.valueOf(yearMonth.lengthOfMonth())+" 23:59:59"; |
| | | startTime3 = yearStr+"-03-01 00:00:00"; |
| | | endTime3 = yearStr+"-03-31 23:59:59"; |
| | | startTime4 = yearStr+"-04-01 00:00:00"; |
| | | endTime4 = yearStr+"-04-30 23:59:59"; |
| | | startTime5 = yearStr+"-05-01 00:00:00"; |
| | | endTime5 = yearStr+"-05-31 23:59:59"; |
| | | startTime6 = yearStr+"-06-01 00:00:00"; |
| | | endTime6 = yearStr+"-06-30 23:59:59"; |
| | | startTime7 = yearStr+"-07-01 00:00:00"; |
| | | endTime7 = yearStr+"-07-31 23:59:59"; |
| | | startTime8 = yearStr+"-08-01 00:00:00"; |
| | | endTime8 = yearStr+"-08-31 23:59:59"; |
| | | startTime9 = yearStr+"-09-01 00:00:00"; |
| | | endTime9 = yearStr+"-09-30 23:59:59"; |
| | | startTime10 = yearStr+"-10-01 00:00:00"; |
| | | endTime10 = yearStr+"-10-31 23:59:59"; |
| | | startTime11 = yearStr+"-11-01 00:00:00"; |
| | | endTime11 = yearStr+"-11-30 23:59:59"; |
| | | startTime12 = yearStr+"-12-01 00:00:00"; |
| | | endTime12 = yearStr+"-12-31 23:59:59"; |
| | | } |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | Date startDate1 = sdf.parse(startTime1); |
| | | Date endDate1 = sdf.parse(endTime1); |
| | | Date startDate2 = sdf.parse(startTime2); |
| | | Date endDate2 = sdf.parse(endTime2); |
| | | Date startDate3 = sdf.parse(startTime3); |
| | | Date endDate3 = sdf.parse(endTime3); |
| | | Date startDate4 = sdf.parse(startTime4); |
| | | Date endDate4 = sdf.parse(endTime4); |
| | | Date startDate5 = sdf.parse(startTime5); |
| | | Date endDate5 = sdf.parse(endTime5); |
| | | Date startDate6 = sdf.parse(startTime6); |
| | | Date endDate6 = sdf.parse(endTime6); |
| | | Date startDate7 = sdf.parse(startTime7); |
| | | Date endDate7 = sdf.parse(endTime7); |
| | | Date startDate8 = sdf.parse(startTime8); |
| | | Date endDate8 = sdf.parse(endTime8); |
| | | Date startDate9 = sdf.parse(startTime9); |
| | | Date endDate9 = sdf.parse(endTime9); |
| | | Date startDate10 = sdf.parse(startTime10); |
| | | Date endDate10 = sdf.parse(endTime10); |
| | | Date startDate11 = sdf.parse(startTime11); |
| | | Date endDate11 = sdf.parse(endTime11); |
| | | Date startDate12 = sdf.parse(startTime12); |
| | | Date endDate12 = sdf.parse(endTime12); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo1 = this.getRepairTime(startDate1,endDate1,"1",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo2 = this.getRepairTime(startDate2,endDate2,"2",yearMonth.lengthOfMonth()); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo3 = this.getRepairTime(startDate3,endDate3,"3",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo4 = this.getRepairTime(startDate4,endDate4,"4",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo5 = this.getRepairTime(startDate5,endDate5,"5",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo6 = this.getRepairTime(startDate6,endDate6,"6",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo7 = this.getRepairTime(startDate7,endDate7,"7",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo8 = this.getRepairTime(startDate8,endDate8,"8",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo9 = this.getRepairTime(startDate9,endDate9,"9",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo10 = this.getRepairTime(startDate10,endDate10,"10",31); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo11 = this.getRepairTime(startDate11,endDate11,"11",30); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo12 = this.getRepairTime(startDate12,endDate12,"12",31); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo1); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo2); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo3); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo4); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo5); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo6); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo7); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo8); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo9); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo10); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo11); |
| | | equipmentAvailabilityVoList.add(equipmentAvailabilityVo12); |
| | | return equipmentAvailabilityVoList; |
| | | } |
| | | |
| | | public EquipmentAvailabilityVo getFaultTime(Date startDate,Date endDate,String month,int days) throws ParseException { |
| | | List<Equipment> equipmentList = equipmentService.lambdaQuery().eq(Equipment::getEquipmentImportanceId,"A").eq(Equipment::getDelFlag, CommonConstant.DEL_FLAG_0).lt(Equipment::getAcceptanceCheckDate,endDate).list(); |
| | | Integer countA = equipmentList.size(); |
| | | //A类设备台数 |
| | | int countA = equipmentList.size(); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo = new EquipmentAvailabilityVo(); |
| | | BigDecimal equipmentFaultTime = new BigDecimal("0"); |
| | | //故障台次 |
| | | int count = 0; |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | if(countA == 0){ |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber("0"); |
| | | equipmentAvailabilityVo.setFaultDuration(new BigDecimal("0")); |
| | | equipmentAvailabilityVo.setAvailability("0%"); |
| | | } |
| | | //查询一月份故障时间 |
| | | for(Equipment equipment : equipmentList){ |
| | | //查询设备是否有报修单 |
| | | List<EquipmentReportRepair> equipmentReportRepairList = equipmentReportRepairService.lambdaQuery().eq(EquipmentReportRepair::getEquipmentId,equipment.getId()) |
| | | .eq(EquipmentReportRepair::getDelFlag,CommonConstant.DEL_FLAG_0).list(); |
| | | if(CollectionUtils.isNotEmpty(equipmentReportRepairList)){ |
| | | //当前设备的故障时间集合,用于判断多次故障是否发生在同一天 |
| | | List<String> faultTimeList = new ArrayList<>(); |
| | | //一、查询故障时间 |
| | | for(EquipmentReportRepair equipmentReportRepair : equipmentReportRepairList){ |
| | | //1、如果报修时间不为空,并且在查询时间段内 |
| | |
| | | //2、验收时间在查询时间段内 |
| | | if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ |
| | | equipmentFaultTime = equipmentFaultTime.add(new BigDecimal(equipmentReportRepair.getFaultHour())); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(faultTimeList)){ |
| | | for(String faultTime : faultTimeList){ |
| | | if(faultTime.equals(sdf.format(equipmentReportRepair.getFaultTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | faultTimeList.add(sdf.format(equipmentReportRepair.getFaultTime())); |
| | | } |
| | | //3、验收时间大于查询结束时间 |
| | | }else { |
| | | long diff2 = endDate.getTime() - equipmentReportRepair.getFaultTime().getTime(); |
| | | BigDecimal faultTime1 = new BigDecimal(diff2) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentFaultTime = equipmentFaultTime.add(faultTime1); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(faultTimeList)){ |
| | | for(String faultTime : faultTimeList){ |
| | | if(faultTime.equals(sdf.format(equipmentReportRepair.getFaultTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | faultTimeList.add(sdf.format(equipmentReportRepair.getFaultTime())); |
| | | } |
| | | } |
| | | //4、报修时间在查询开始时间之前 |
| | | }else if(equipmentReportRepair.getFaultTime().compareTo(startDate) < 0 ){ |
| | |
| | | BigDecimal faultTime1 = new BigDecimal(diff2) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentFaultTime = equipmentFaultTime.add(faultTime1); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(faultTimeList)){ |
| | | for(String faultTime : faultTimeList){ |
| | | if(faultTime.equals(sdf.format(equipmentReportRepair.getFaultTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | faultTimeList.add(sdf.format(equipmentReportRepair.getFaultTime())); |
| | | } |
| | | //6、验收时间为空或验收时间在查询结束时间之后 |
| | | }else { |
| | | long diff2 = endDate.getTime() - startDate.getTime(); |
| | | BigDecimal faultTime1 = new BigDecimal(diff2) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentFaultTime = equipmentFaultTime.add(faultTime1); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(faultTimeList)){ |
| | | for(String faultTime : faultTimeList){ |
| | | if(faultTime.equals(sdf.format(equipmentReportRepair.getFaultTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | faultTimeList.add(sdf.format(equipmentReportRepair.getFaultTime())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | BigDecimal availability = new BigDecimal(countA).multiply(new BigDecimal(days)).subtract(new BigDecimal(count)).multiply(new BigDecimal(100)).divide(new BigDecimal(countA).multiply(new BigDecimal(days)),2,BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber(String.valueOf(count)); |
| | | equipmentAvailabilityVo.setFaultDuration(equipmentFaultTime); |
| | | equipmentAvailabilityVo.setAvailability(availability +"%"); |
| | | }else { |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber("0"); |
| | | equipmentAvailabilityVo.setFaultDuration(new BigDecimal("0")); |
| | | equipmentAvailabilityVo.setAvailability("100"); |
| | | equipmentAvailabilityVo.setAvailability("100%"); |
| | | } |
| | | } |
| | | return equipmentAvailabilityVo; |
| | | } |
| | | |
| | | public EquipmentAvailabilityVo getRepairTime(Date startDate,Date endDate,String month,int days) throws ParseException { |
| | | List<Equipment> equipmentList = equipmentService.lambdaQuery().eq(Equipment::getSpecificEquipment,"0").eq(Equipment::getDelFlag, CommonConstant.DEL_FLAG_0).lt(Equipment::getAcceptanceCheckDate,endDate).list(); |
| | | //关键设备台数 |
| | | int countA = equipmentList.size(); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo = new EquipmentAvailabilityVo(); |
| | | BigDecimal equipmentFaultTime = new BigDecimal("0"); |
| | | BigDecimal equipmentRepairTime = new BigDecimal("0"); |
| | | //维修台次 |
| | | int count = 0; |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | if(countA == 0){ |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber("0"); |
| | | equipmentAvailabilityVo.setFaultDuration(new BigDecimal("0")); |
| | | equipmentAvailabilityVo.setAvailability("0%"); |
| | | } |
| | | //查询一月份故障时间 |
| | | for(Equipment equipment : equipmentList){ |
| | | //查询设备是否有报修单 |
| | | List<EquipmentReportRepair> equipmentReportRepairList = equipmentReportRepairService.lambdaQuery().eq(EquipmentReportRepair::getEquipmentId,equipment.getId()) |
| | | .eq(EquipmentReportRepair::getDelFlag,CommonConstant.DEL_FLAG_0).list(); |
| | | if(CollectionUtils.isNotEmpty(equipmentReportRepairList)){ |
| | | //当前设备的开工时间集合,用于判断是否在同一天维修了同一个设备 |
| | | List<String> startTimeList = new ArrayList<>(); |
| | | //一、查询故障时间 |
| | | for(EquipmentReportRepair equipmentReportRepair : equipmentReportRepairList){ |
| | | //1、如果报修时间不为空,并且在查询时间段内 |
| | | if(equipmentReportRepair.getFaultTime() != null && equipmentReportRepair.getFaultTime().compareTo(endDate) < 0 && equipmentReportRepair.getFaultTime().compareTo(startDate) > 0){ |
| | | //2、验收时间在查询时间段内 |
| | | if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ |
| | | equipmentFaultTime = equipmentFaultTime.add(new BigDecimal(equipmentReportRepair.getFaultHour())); |
| | | //3、验收时间大于查询结束时间 |
| | | }else { |
| | | long diff2 = endDate.getTime() - equipmentReportRepair.getFaultTime().getTime(); |
| | | BigDecimal faultTime1 = new BigDecimal(diff2) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentFaultTime = equipmentFaultTime.add(faultTime1); |
| | | } |
| | | //4、报修时间在查询开始时间之前 |
| | | }else if(equipmentReportRepair.getFaultTime().compareTo(startDate) < 0 ){ |
| | | //5、验收时间在查询时间段内 |
| | | if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ |
| | | long diff2 = equipmentReportRepair.getAcceptTime().getTime() - startDate.getTime(); |
| | | BigDecimal faultTime1 = new BigDecimal(diff2) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentFaultTime = equipmentFaultTime.add(faultTime1); |
| | | //6、验收时间为空或验收时间在查询结束时间之后 |
| | | }else { |
| | | long diff2 = endDate.getTime() - startDate.getTime(); |
| | | BigDecimal faultTime1 = new BigDecimal(diff2) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentFaultTime = equipmentFaultTime.add(faultTime1); |
| | | } |
| | | } |
| | | |
| | | //二、查询修复时间 |
| | | //查询报修单是否已领取并开工 |
| | | List<RepairOrder> repairOrderList = this.lambdaQuery().eq(RepairOrder::getReportRepairId,equipmentReportRepair.getId()) |
| | | .eq(RepairOrder::getDelFlag,CommonConstant.DEL_FLAG_0).list(); |
| | | if(CollectionUtils.isNotEmpty(repairOrderList)){ |
| | | //1、开工时间在查询时间段内 |
| | | if(repairOrderList.get(0).getActualStartTime() != null && repairOrderList.get(0).getActualStartTime().compareTo(endDate) < 0 && repairOrderList.get(0).getActualStartTime().compareTo(startDate) > 0 ){ |
| | | //2、完工时间在查询时间段内 |
| | | if(repairOrderList.get(0).getActualEndTime() != null && repairOrderList.get(0).getActualEndTime().compareTo(endDate) < 0){ |
| | | equipmentRepairTime = equipmentRepairTime.add(repairOrderList.get(0).getActualHour()); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(startTimeList)){ |
| | | for(String faultTime : startTimeList){ |
| | | if(faultTime.equals(sdf.format(repairOrderList.get(0).getActualStartTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | startTimeList.add(sdf.format(repairOrderList.get(0).getActualStartTime())); |
| | | } |
| | | //3、完工时间大于查询结束时间 |
| | | }else { |
| | | long diff1 = endDate.getTime() - repairOrderList.get(0).getActualStartTime().getTime(); |
| | | BigDecimal repairTime1 = new BigDecimal(diff1) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentRepairTime = equipmentRepairTime.add(repairTime1); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(startTimeList)){ |
| | | for(String faultTime : startTimeList){ |
| | | if(faultTime.equals(sdf.format(repairOrderList.get(0).getActualStartTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | startTimeList.add(sdf.format(repairOrderList.get(0).getActualStartTime())); |
| | | } |
| | | } |
| | | //4、开工时间在查询开始时间之前 |
| | | }else if(repairOrderList.get(0).getActualStartTime() != null && repairOrderList.get(0).getActualStartTime().compareTo(startDate) < 0 ){ |
| | | //5、完工时间在查询时间段内 |
| | | if(repairOrderList.get(0).getActualEndTime() != null && repairOrderList.get(0).getActualEndTime().compareTo(endDate) < 0){ |
| | | long diff1 = repairOrderList.get(0).getActualEndTime().getTime() - startDate.getTime(); |
| | | BigDecimal repairTime1 = new BigDecimal(diff1) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentRepairTime = equipmentRepairTime.add(repairTime1); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(startTimeList)){ |
| | | for(String faultTime : startTimeList){ |
| | | if(faultTime.equals(sdf.format(repairOrderList.get(0).getActualStartTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | startTimeList.add(sdf.format(repairOrderList.get(0).getActualStartTime())); |
| | | } |
| | | //6、完工时间为空或完工时间在查询结束时间之后 |
| | | }else{ |
| | | long diff1 = endDate.getTime() - startDate.getTime(); |
| | | BigDecimal repairTime1 = new BigDecimal(diff1) |
| | | .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentRepairTime = equipmentRepairTime.add(repairTime1); |
| | | int flag = 0; |
| | | if(CollectionUtils.isNotEmpty(startTimeList)){ |
| | | for(String faultTime : startTimeList){ |
| | | if(faultTime.equals(sdf.format(repairOrderList.get(0).getActualStartTime()))){ |
| | | flag = 1; |
| | | } |
| | | } |
| | | } |
| | | if(flag == 0){ |
| | | count++; |
| | | startTimeList.add(sdf.format(repairOrderList.get(0).getActualStartTime())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | BigDecimal availability = new BigDecimal(countA).multiply(new BigDecimal(days)).subtract(new BigDecimal(count)).multiply(new BigDecimal(100)).divide(new BigDecimal(countA).multiply(new BigDecimal(days)),2,BigDecimal.ROUND_HALF_EVEN); |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber(String.valueOf(count)); |
| | | equipmentAvailabilityVo.setFaultDuration(equipmentFaultTime); |
| | | equipmentAvailabilityVo.setAvailability(availability +"%"); |
| | | }else { |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber("0"); |
| | | equipmentAvailabilityVo.setFaultDuration(new BigDecimal("0")); |
| | | equipmentAvailabilityVo.setAvailability("100%"); |
| | | } |
| | | } |
| | | return equipmentAvailabilityVo; |