From 50904787dcb3ea277f6956fcbc09f9efefece2ce Mon Sep 17 00:00:00 2001
From: “linengliang” <vanSuperEnergy@163.com>
Date: 星期二, 02 一月 2024 16:03:48 +0800
Subject: [PATCH] 提交
---
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java | 185 ++++++++++++++++++++++-----------------------
1 files changed, 91 insertions(+), 94 deletions(-)
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
index 62ec94a..60c496c 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
@@ -76,117 +76,114 @@
List<MdcEquipment> equipmentList = mdcEquipmentService.list();
for (MdcEquipment mdcEquipment : equipmentList) {
String equipmentId = mdcEquipment.getEquipmentId();
- // 鏌ヨ鐝鍒嗙被
+
+ MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency();
+ // 鏃堕棿寮�鍔ㄧ巼璁$畻
+ mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId);
+ mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName());
+ mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel());
+ mdcOverallEquipmentEfficiency.setValidDate(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(equipmentId, validDate);
+ mdcOverallEquipmentEfficiency.setOvertime(overtime);
+
+ // 璁$畻瀹為檯鐝骇澶╂暟
+ 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 = new BigDecimal("0");
+ BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE);
+ mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration);
// 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓)
- BigDecimal conferenceTrainingDuration = new BigDecimal("0");
+ BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING);
+ mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration);
// 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓)
- 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);
- mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount);
- // 璁$畻鍔犵彮鏃堕棿
- BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(shiftSubId, equipmentId, validDate);
- mdcOverallEquipmentEfficiency.setOvertime(overtime);
- // 璁$畻瀹為檯鐝骇澶╂暟
- BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(shiftSubId, equipmentId, validDate);
- mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount);
- // 鏈堝害瀹為檯鐝骇鎬绘椂闂�(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime));
- // 鏁呴殰鍋滄満鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration);
- // 鎹㈠瀷璋冭瘯鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration);
- // 鐗╂枡鐭己鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration);
- // 璁″垝绛変换鍔℃椂闀跨粺璁�(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration);
- // 妫�楠屾椂闀跨粺璁�(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration);
- // 鍏朵粬鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration);
- // 璁″垝淇濆吇鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration);
- // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration);
- // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓)
- mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration);
- /*
- 璐熻嵎鏃堕棿(灏忔椂) = 宸ヤ綔鏃ュ巻鏃堕棿 - 璁″垝鍋滄満鏃堕棿
- 宸ヤ綔鏃ュ巻鏃堕棿 = 鏃ュ巻鏃堕棿 - 娉曞畾鍋囨棩 - 鍙屼紤鏃� + 鍔犵彮鏃堕棿
- 璁″垝鍋滄満鏃堕棿 = 璁″垝淇濆吇鏃堕暱 + 浼氳/鍩硅鏃堕暱 + 浼氳/鍩硅鏃堕暱
- */
- // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration
- // 璐熻嵎鏃堕棿(鍒嗛挓)
- BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
- mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));
- // 鏃堕棿寮�鍔ㄧ巼
- BigDecimal timeActuationRate = BigDecimal.ZERO;
- if (loadTime.compareTo(BigDecimal.ZERO) == 0) {
- mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO);
- } else {
- timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP);
- mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate);
- }
- // 鍔犲伐闆朵欢鏁�(浠�) processQuantity
- BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate);
- mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity);
- // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)
- MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId));
- if (mdcStandardProcessDuration != null) {
- mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity));
- } else {
- mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO);
- }
-
- // 鎬ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
- // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓)
- BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate, shiftSubId);
- if (loadTime.compareTo(BigDecimal.ZERO) != 0) {
- mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP));
- } else {
- mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
- }
- // 搴熷搧鏁� unqualifiedQuantity
- BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate);
- mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity);
- // 鍚堟牸鐜�
- if (processQuantity.compareTo(BigDecimal.ZERO) == 0) {
- mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE);
- } else {
- mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP));
- }
- // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼
- mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()));
- if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
- mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE);
- }
- result.add(mdcOverallEquipmentEfficiency);
- }
+ BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST);
+ mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration);
+ /*
+ 璐熻嵎鏃堕棿(灏忔椂) = 宸ヤ綔鏃ュ巻鏃堕棿 - 璁″垝鍋滄満鏃堕棿
+ 宸ヤ綔鏃ュ巻鏃堕棿 = 鏃ュ巻鏃堕棿 - 娉曞畾鍋囨棩 - 鍙屼紤鏃� + 鍔犵彮鏃堕棿
+ 璁″垝鍋滄満鏃堕棿 = 璁″垝淇濆吇鏃堕暱 + 浼氳/鍩硅鏃堕暱 + 浼氳/鍩硅鏃堕暱
+ */
+ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration
+ // 璐熻嵎鏃堕棿(鍒嗛挓)
+ BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration);
+ mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));
+ // 鏃堕棿寮�鍔ㄧ巼
+ BigDecimal timeActuationRate = BigDecimal.ZERO;
+ if (loadTime.compareTo(BigDecimal.ZERO) == 0) {
+ mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO);
+ } else {
+ timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP);
+ mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate);
}
+ // 鍔犲伐闆朵欢鏁�(浠�) processQuantity
+ BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate);
+ mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity);
+ // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)
+ MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId));
+ if (mdcStandardProcessDuration != null) {
+ mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity));
+ } else {
+ mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO);
+ }
+
+ // 鎬ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿
+ // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓)
+ BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate);
+ if (loadTime.compareTo(BigDecimal.ZERO) != 0) {
+ mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP));
+ } else {
+ mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO);
+ }
+ // 搴熷搧鏁� unqualifiedQuantity
+ BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate);
+ mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity);
+ // 鍚堟牸鐜�
+ if (processQuantity.compareTo(BigDecimal.ZERO) == 0) {
+ mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE);
+ } else {
+ mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP));
+ }
+ // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼
+ mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()));
+ if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) {
+ mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE);
+ }
+ result.add(mdcOverallEquipmentEfficiency);
+
}
super.saveBatch(result);
}
--
Gitblit v1.9.3