From 2d31ce3309c2396f8bd3e197715a23bebc7c03fb Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期一, 01 九月 2025 21:47:35 +0800 Subject: [PATCH] 处理利用率范围区间问题 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java | 446 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 365 insertions(+), 81 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java index 631c938..99105f7 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java @@ -17,7 +17,6 @@ import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysDepartService; import org.jeecg.modules.system.service.ISysDictService; -import org.jeecg.modules.system.vo.MdcProOptionsVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -60,6 +59,9 @@ @Resource private ISysDictService sysDictService; + + @Resource + private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService; /** * 鍒╃敤鐜囨姤琛� @@ -196,11 +198,26 @@ mdcEfficiencyResultDto.setWaitLong(mdcEfficiencyResultDto.getWaitLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto1.setCloseLong(mdcEfficiencyResultDto.getCloseLong()); mdcEfficiencyResultDto.setCloseLong(mdcEfficiencyResultDto.getCloseLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - mdcEfficiencyResultDto1.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + mdcEfficiencyResultDto1.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } list.add(mdcEfficiencyResultDto1); @@ -284,11 +301,26 @@ mdcEfficiencyResultDto.setWaitLong(mdcEfficiencyResultDto.getWaitLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto1.setCloseLong(mdcEfficiencyResultDto.getCloseLong()); mdcEfficiencyResultDto.setCloseLong(mdcEfficiencyResultDto.getCloseLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - mdcEfficiencyResultDto1.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + mdcEfficiencyResultDto1.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } list.add(mdcEfficiencyResultDto1); @@ -359,10 +391,25 @@ mdcEfficiencyResultDto.setWaitLong(mdcEfficiencyResultDto.getWaitLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setOpenLong(mdcEfficiencyResultDto.getOpenLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setProcessLong(mdcEfficiencyResultDto.getProcessLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -398,10 +445,25 @@ mdcEfficiencyResultDto.setUtilizationRate(mdcEfficiencyResultDto.getUtilizationRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setOpenRate(mdcEfficiencyResultDto.getOpenRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setStartRate(mdcEfficiencyResultDto.getStartRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -544,11 +606,26 @@ mdcEfficiencyResultDto.setWaitLong(mdcEfficiencyResultDto.getWaitLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto1.setCloseLong(mdcEfficiencyResultDto.getCloseLong()); mdcEfficiencyResultDto.setCloseLong(mdcEfficiencyResultDto.getCloseLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getStartRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - mdcEfficiencyResultDto1.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + mdcEfficiencyResultDto1.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } list.add(mdcEfficiencyResultDto1); @@ -632,11 +709,26 @@ mdcEfficiencyResultDto.setWaitLong(mdcEfficiencyResultDto.getWaitLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto1.setCloseLong(mdcEfficiencyResultDto.getCloseLong()); mdcEfficiencyResultDto.setCloseLong(mdcEfficiencyResultDto.getCloseLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getStartRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - mdcEfficiencyResultDto1.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + mdcEfficiencyResultDto1.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } list.add(mdcEfficiencyResultDto1); @@ -706,10 +798,25 @@ mdcEfficiencyResultDto.setWaitLong(mdcEfficiencyResultDto.getWaitLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setOpenLong(mdcEfficiencyResultDto.getOpenLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setProcessLong(mdcEfficiencyResultDto.getProcessLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getStartRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -746,10 +853,25 @@ mdcEfficiencyResultDto.setUtilizationRate(mdcEfficiencyResultDto.getUtilizationRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setOpenRate(mdcEfficiencyResultDto.getOpenRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); mdcEfficiencyResultDto.setStartRate(mdcEfficiencyResultDto.getStartRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyResultDto.getStartRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -915,11 +1037,26 @@ mdcEfficiencyShiftResultDto.setWaitLong(mdcEfficiencyShiftResultDto.getWaitLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyShiftResultDto1.setCloseLong(mdcEfficiencyShiftResultDto.getCloseLong()); mdcEfficiencyShiftResultDto.setCloseLong(mdcEfficiencyShiftResultDto.getCloseLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - mdcEfficiencyShiftResultDto1.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyShiftResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyShiftResultDto.setColor(rateInfo.getRateParameterColor()); + mdcEfficiencyShiftResultDto1.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } list.add(mdcEfficiencyShiftResultDto1); @@ -1025,11 +1162,26 @@ mdcEfficiencyShiftResultDto.setWaitLong(mdcEfficiencyShiftResultDto.getWaitLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyShiftResultDto1.setCloseLong(mdcEfficiencyShiftResultDto.getCloseLong()); mdcEfficiencyShiftResultDto.setCloseLong(mdcEfficiencyShiftResultDto.getCloseLong().divide(new BigDecimal(dates.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - mdcEfficiencyShiftResultDto1.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyShiftResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyShiftResultDto.setColor(rateInfo.getRateParameterColor()); + mdcEfficiencyShiftResultDto1.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } list.add(mdcEfficiencyShiftResultDto1); @@ -1099,10 +1251,25 @@ mdcEfficiencyShiftResultDto.setWaitLong(mdcEfficiencyShiftResultDto.getWaitLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyShiftResultDto.setOpenLong(mdcEfficiencyShiftResultDto.getOpenLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); mdcEfficiencyShiftResultDto.setProcessLong(mdcEfficiencyShiftResultDto.getProcessLong().divide(new BigDecimal(mdcEfficiencyList.size()), 0, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyShiftResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyShiftResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -1139,10 +1306,25 @@ mdcEfficiencyShiftResultDto.setUtilizationRate(mdcEfficiencyShiftResultDto.getUtilizationRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); mdcEfficiencyShiftResultDto.setOpenRate(mdcEfficiencyShiftResultDto.getOpenRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); mdcEfficiencyShiftResultDto.setStartRate(mdcEfficiencyShiftResultDto.getStartRate().divide(new BigDecimal(mdcEfficiencyList.size()), 4, RoundingMode.HALF_UP)); - long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyShiftResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyShiftResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -1171,10 +1353,25 @@ } else { mdcEfficiencyShiftResultDto.setOpenRate(equipmentStatisticalShiftInfo.getOpenLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, RoundingMode.HALF_UP)); } - long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = mdcEfficiencyShiftResultDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyShiftResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -1191,6 +1388,7 @@ for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + break; } } } @@ -1206,6 +1404,7 @@ for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + break; } } } @@ -1611,10 +1810,17 @@ mdcUtilizationRateListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); // List<MdcUtilizationResultDto> list = new ArrayList<>(); + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findMdcEquipmentStatisticalInfo(mdcEquDepDto.getEquipmentId(), dateList.get(0), dateList.get(dateList.size() - 1)); + Map<String, MdcEquipmentStatisticalInfo> map = mdcEquipmentStatisticalInfo.stream() + .collect(Collectors.toMap(MdcEquipmentStatisticalInfo::getTheDate, m -> m)); for (String date : dateList) { - Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL); - Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL); - list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + if ("00:00".equals(startString) && "23:59".equals(endString)) { + list.add(this.utilizationRateTrend(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), date, mdcUtilizationRateList, map)); + } else { + Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL); + Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL); + list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + } } mdcUtilizationRateListDto.setDataList(list); listDtos.add(mdcUtilizationRateListDto); @@ -1631,10 +1837,17 @@ mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); // List<MdcUtilizationResultDto> list = new ArrayList<>(); + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findMdcEquipmentStatisticalInfo(mdcEquProDto.getEquipmentId(), dateList.get(0), dateList.get(dateList.size() - 1)); + Map<String, MdcEquipmentStatisticalInfo> map = mdcEquipmentStatisticalInfo.stream() + .collect(Collectors.toMap(MdcEquipmentStatisticalInfo::getTheDate, m -> m)); for (String date : dateList) { - Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL); - Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL); - list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + if ("00:00".equals(startString) && "23:59".equals(endString)) { + list.add(this.utilizationRateTrend(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), date, mdcUtilizationRateList, map)); + } else { + Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL); + Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL); + list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + } } mdcEfficiencyListDto.setDataList(list); listDtos.add(mdcEfficiencyListDto); @@ -1702,11 +1915,11 @@ mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); List<MdcUtilizationResultDto> list = new ArrayList<>(); + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findMdcEquipmentStatisticalInfo(mdcEquDepDto.getEquipmentId(), dateList.get(0), dateList.get(dateList.size() - 1)); + Map<String, MdcEquipmentStatisticalInfo> map = mdcEquipmentStatisticalInfo.stream() + .collect(Collectors.toMap(MdcEquipmentStatisticalInfo::getTheDate, m -> m)); for (String date : dateList) { - Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); - Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); - endTime = DateUtils.addDays(endTime, 1); - list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + list.add(this.utilizationRateTrend(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), date, mdcUtilizationRateList, map)); } mdcEfficiencyListDto.setDataList(list); listDtos.add(mdcEfficiencyListDto); @@ -1722,11 +1935,11 @@ mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName()); mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); List<MdcUtilizationResultDto> list = new ArrayList<>(); + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findMdcEquipmentStatisticalInfo(mdcEquProDto.getEquipmentId(), dateList.get(0), dateList.get(dateList.size() - 1)); + Map<String, MdcEquipmentStatisticalInfo> map = mdcEquipmentStatisticalInfo.stream() + .collect(Collectors.toMap(MdcEquipmentStatisticalInfo::getTheDate, m -> m)); for (String date : dateList) { - Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); - Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); - endTime = DateUtils.addDays(endTime, 1); - list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + list.add(this.utilizationRateTrend(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), date, mdcUtilizationRateList, map)); } mdcEfficiencyListDto.setDataList(list); listDtos.add(mdcEfficiencyListDto); @@ -1736,6 +1949,45 @@ } return result; + } + + private MdcUtilizationResultDto utilizationRateTrend(String equipmentId, String equipmentName, String equipmentType, String date, List<MdcUtilizationRate> mdcUtilizationRateList, Map<String, MdcEquipmentStatisticalInfo> map) { + MdcUtilizationResultDto dto = new MdcUtilizationResultDto(); + dto.setEquipmentId(equipmentId); + dto.setEquipmentName(equipmentName); + dto.setEquipmentType(equipmentType); + dto.setTheDate(date); + if (map.containsKey(date.replaceAll("-", ""))) { + MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = map.get(date.replaceAll("-", "")); + dto.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("86400"), 6, RoundingMode.HALF_UP)); + } else { + dto.setUtilizationRate(new BigDecimal("0")); + } + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = dto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + dto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } + } + } + if (StringUtils.isBlank(dto.getColor())) { + dto.setColor(mdcUtilizationRateList.get(mdcUtilizationRateList.size() - 1).getRateParameterColor()); + } + return dto; } @Override @@ -2108,10 +2360,25 @@ } else { dto.setUtilizationRate(new BigDecimal("0")); } - long rate = dto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - dto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = dto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + dto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } if (StringUtils.isBlank(dto.getColor())) { @@ -2146,10 +2413,25 @@ mdcEfficiencyResultDto.setOpenLong(efficiencyDto.getOpenLong()); mdcEfficiencyResultDto.setWaitLong(efficiencyDto.getWaitLong()); mdcEfficiencyResultDto.setCloseLong(efficiencyDto.getCloseLong()); - long rate = efficiencyDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + // 璁$畻鍒╃敤鐜囩櫨鍒嗘瘮锛堣浆涓簂ong绫诲瀷锛� + long utilizationRatePercent = efficiencyDto.getUtilizationRate() + .multiply(new BigDecimal("100")) + .longValue(); + // 澧炲姞绌烘寚閽堝垽鏂紝閬垮厤NPE + if (mdcUtilizationRateList != null) { + for (MdcUtilizationRate rateInfo : mdcUtilizationRateList) { + long minRange = rateInfo.getMinimumRange(); + long maxRange = rateInfo.getMaximumRange(); + + // 绠�鍖栨潯浠跺垽鏂細澶勪簬[min, max)鍖洪棿锛屾垨鍒氬ソ鏄�100%鐨勭壒娈婃儏鍐� + boolean isInRange = utilizationRatePercent >= minRange + && (utilizationRatePercent < maxRange + || (maxRange == 100 && utilizationRatePercent == maxRange)); + + if (isInRange) { + mdcEfficiencyResultDto.setColor(rateInfo.getRateParameterColor()); + break; // 鎵惧埌鍖归厤椤瑰悗绔嬪嵆閫�鍑哄惊鐜紝鎻愬崌鏁堢巼 + } } } } @@ -2166,6 +2448,7 @@ for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + break; } } } @@ -2181,6 +2464,7 @@ for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + break; } } } -- Gitblit v1.9.3