From eadaad85fc5fed59c34a0145c2f99a1022581458 Mon Sep 17 00:00:00 2001 From: cuijian <cuijian@xalxzn.com> Date: 星期二, 21 十一月 2023 20:57:25 +0800 Subject: [PATCH] 生产时间间隔报表逻辑、设备完好率报表逻辑 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java | 185 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 185 insertions(+), 0 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java index 07dd294..aebfa46 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java @@ -1,14 +1,21 @@ 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; @@ -16,6 +23,9 @@ 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.*; /** @@ -45,6 +55,10 @@ private EquipmentDocumentMapper equipmentDocumentMapper; @Autowired private SysUserMapper sysUserMapper; + @Autowired + private IEamEquipmentService equipmentService; + @Autowired + private IEquipmentReportRepairService equipmentReportRepairService; @@ -115,5 +129,176 @@ 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; + } + } -- Gitblit v1.9.3