Lius
2 天以前 2d31ce3309c2396f8bd3e197715a23bebc7c03fb
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -198,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());
                    // 计算利用率百分比(转为long类型)
                    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);
@@ -286,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());
                    // 计算利用率百分比(转为long类型)
                    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);
@@ -361,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());
            // 计算利用率百分比(转为long类型)
            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; // 找到匹配项后立即退出循环,提升效率
                    }
                }
            }
        }
@@ -400,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());
            // 计算利用率百分比(转为long类型)
            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; // 找到匹配项后立即退出循环,提升效率
                    }
                }
            }
        }
@@ -546,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());
                    // 计算利用率百分比(转为long类型)
                    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);
@@ -634,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());
                    // 计算利用率百分比(转为long类型)
                    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);
@@ -708,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());
            // 计算利用率百分比(转为long类型)
            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; // 找到匹配项后立即退出循环,提升效率
                    }
                }
            }
        }
@@ -748,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());
            // 计算利用率百分比(转为long类型)
            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; // 找到匹配项后立即退出循环,提升效率
                    }
                }
            }
        }
@@ -917,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());
                    // 计算利用率百分比(转为long类型)
                    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);
@@ -1027,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());
                    // 计算利用率百分比(转为long类型)
                    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);
@@ -1101,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());
            // 计算利用率百分比(转为long类型)
            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; // 找到匹配项后立即退出循环,提升效率
                    }
                }
            }
        }
@@ -1141,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());
            // 计算利用率百分比(转为long类型)
            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; // 找到匹配项后立即退出循环,提升效率
                    }
                }
            }
        }
@@ -1173,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());
                    // 计算利用率百分比(转为long类型)
                    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; // 找到匹配项后立即退出循环,提升效率
                            }
                        }
                    }
                }
@@ -1193,6 +1388,7 @@
            for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
                if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) {
                    mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
                    break;
                }
            }
        }
@@ -1208,6 +1404,7 @@
            for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
                if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) {
                    mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
                    break;
                }
            }
        }
@@ -1766,11 +1963,25 @@
        } else {
            dto.setUtilizationRate(new BigDecimal("0"));
        }
        // 计算利用率百分比(转为long类型)
        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();
        long rate = dto.getUtilizationRate().multiply(new BigDecimal("100")).longValue();
        for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
            if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) {
                dto.setColor(mdcUtilizationRate.getRateParameterColor());
                // 简化条件判断:处于[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())) {
@@ -2149,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());
        // 计算利用率百分比(转为long类型)
        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())) {
@@ -2187,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());
                    // 计算利用率百分比(转为long类型)
                    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; // 找到匹配项后立即退出循环,提升效率
                            }
                        }
                    }
                }
@@ -2207,6 +2448,7 @@
            for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
                if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) {
                    mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
                    break;
                }
            }
        }
@@ -2222,6 +2464,7 @@
            for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
                if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) {
                    mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
                    break;
                }
            }
        }