| | |
| | | package org.jeecg.modules.eam.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | 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.modules.eam.entity.Equipment; |
| | | import org.jeecg.modules.eam.entity.EquipmentReportRepair; |
| | | import org.jeecg.modules.eam.entity.RepairOrder; |
| | | import org.jeecg.modules.eam.entity.RepairOrderDetail; |
| | | import org.jeecg.modules.eam.mapper.*; |
| | | import org.jeecg.modules.eam.service.IEamEquipmentService; |
| | | import org.jeecg.modules.eam.service.IEquipmentReportRepairService; |
| | | import org.jeecg.modules.eam.service.IRepairOrderDetailService; |
| | | import org.jeecg.modules.eam.service.IRepairOrderService; |
| | | import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; |
| | | import org.jeecg.modules.system.entity.SysUser; |
| | | import org.jeecg.modules.system.mapper.SysUserMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private EquipmentDocumentMapper equipmentDocumentMapper; |
| | | @Autowired |
| | | private SysUserMapper sysUserMapper; |
| | | @Autowired |
| | | private IEamEquipmentService equipmentService; |
| | | @Autowired |
| | | private IEquipmentReportRepairService equipmentReportRepairService; |
| | | |
| | | |
| | | |
| | |
| | | return super.baseMapper.getMaterialSpareList(pageData,num,status); |
| | | } |
| | | |
| | | @Override |
| | | public List<EquipmentAvailabilityVo> equipmentAvailability(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 = ""; |
| | | if(StringUtils.isBlank(yearStr)){ |
| | | return equipmentAvailabilityVoList; |
| | | }else { |
| | | 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"; |
| | | 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.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"); |
| | | 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) throws ParseException { |
| | | //查询A类设备台数,截止到1月底 |
| | | 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(); |
| | | EquipmentAvailabilityVo equipmentAvailabilityVo = new EquipmentAvailabilityVo(); |
| | | BigDecimal equipmentFaultTime = new BigDecimal("0"); |
| | | int count = 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)){ |
| | | //一、查询故障时间 |
| | | 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())); |
| | | count++; |
| | | //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); |
| | | count++; |
| | | } |
| | | //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); |
| | | count++; |
| | | //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); |
| | | count++; |
| | | } |
| | | } |
| | | } |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber(String.valueOf(count)); |
| | | equipmentAvailabilityVo.setFaultDuration(equipmentFaultTime); |
| | | }else { |
| | | equipmentAvailabilityVo.setMonth(month); |
| | | equipmentAvailabilityVo.setCountA(countA); |
| | | equipmentAvailabilityVo.setFaultNumber("0"); |
| | | equipmentAvailabilityVo.setFaultDuration(new BigDecimal("0")); |
| | | equipmentAvailabilityVo.setAvailability("100"); |
| | | } |
| | | } |
| | | return equipmentAvailabilityVo; |
| | | } |
| | | |
| | | |
| | | } |