| | |
| | | List<MdcEquipment> equipmentList = mdcEquipmentService.list(); |
| | | for (MdcEquipment mdcEquipment : equipmentList) { |
| | | String equipmentId = mdcEquipment.getEquipmentId(); |
| | | // 查询班次分类 |
| | | List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate); |
| | | // 故障停机时长统计(分钟) |
| | | BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); |
| | | // 换型调试时长统计(分钟) |
| | | BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); |
| | | // 物料短缺时长统计(分钟) |
| | | BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); |
| | | // 计划等任务时长统计(分钟) |
| | | BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); |
| | | // 检验时长统计(分钟) |
| | | BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); |
| | | // 其他时长统计(分钟) |
| | | BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); |
| | | // 计划保养时长统计(分钟) |
| | | BigDecimal plannedMaintenanceDuration = new BigDecimal("0"); |
| | | // 会议/培训时长统计(分钟) |
| | | BigDecimal conferenceTrainingDuration = new BigDecimal("0"); |
| | | // 其它休息时长统计(分钟) |
| | | BigDecimal otherRestDuration = new BigDecimal("0"); |
| | | if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) { |
| | | for (String shiftSubId : shiftSubIdList) { |
| | | |
| | | MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency(); |
| | | // 时间开动率计算 |
| | | mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId); |
| | | mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName()); |
| | | mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel()); |
| | | mdcOverallEquipmentEfficiency.setValidDate(validDate); |
| | | // 班次 班次时间 |
| | | mdcOverallEquipmentEfficiency.setShiftSubId(shiftSubId); |
| | | BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(shiftSubId, equipmentId, validDate); |
| | | |
| | | // 查询班制分类 |
| | | List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate); |
| | | if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) { |
| | | String shift = String.join(",", shiftSubIdList); |
| | | mdcOverallEquipmentEfficiency.setShift(shift); |
| | | } |
| | | |
| | | BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(equipmentId, validDate); |
| | | mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount); |
| | | |
| | | // 计算加班时间 |
| | | BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(shiftSubId, equipmentId, validDate); |
| | | BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(equipmentId, validDate); |
| | | mdcOverallEquipmentEfficiency.setOvertime(overtime); |
| | | |
| | | // 计算实际班产天数 |
| | | BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(shiftSubId, equipmentId, validDate); |
| | | BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(equipmentId, validDate); |
| | | mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount); |
| | | |
| | | // 月度实际班产总时间(分钟) |
| | | mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime)); |
| | | |
| | | // 故障停机时长统计(分钟) |
| | | BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); |
| | | mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); |
| | | // 换型调试时长统计(分钟) |
| | | BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); |
| | | mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); |
| | | // 物料短缺时长统计(分钟) |
| | | BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); |
| | | mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); |
| | | // 计划等任务时长统计(分钟) |
| | | BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); |
| | | mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); |
| | | // 检验时长统计(分钟) |
| | | BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); |
| | | mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); |
| | | // 其他时长统计(分钟) |
| | | BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); |
| | | mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); |
| | | // 计划保养时长统计(分钟) |
| | | BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE); |
| | | mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); |
| | | // 会议/培训时长统计(分钟) |
| | | BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING); |
| | | mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); |
| | | // 其它休息时长统计(分钟) |
| | | BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST); |
| | | mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); |
| | | /* |
| | | 负荷时间(小时) = 工作日历时间 - 计划停机时间 |
| | |
| | | |
| | | // 性能开动率 = 主轴运行时间/负荷时间 |
| | | // 查询主轴运行时间(分钟) |
| | | BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate, shiftSubId); |
| | | BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); |
| | | if (loadTime.compareTo(BigDecimal.ZERO) != 0) { |
| | | mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); |
| | | } else { |
| | |
| | | mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); |
| | | } |
| | | result.add(mdcOverallEquipmentEfficiency); |
| | | } |
| | | } |
| | | |
| | | } |
| | | super.saveBatch(result); |
| | | } |