瀏覽代碼

质量月报 - S1301、S2002、S2400、S6107、S4501后台计算方法优化

wangggziwen 1 年之前
父節點
當前提交
57c3b8367e

+ 73 - 29
master/src/main/java/com/ruoyi/project/production/controller/TMonthlyQualityReportS1301Controller.java

@@ -51,15 +51,15 @@ public class TMonthlyQualityReportS1301Controller extends BaseController
         // 获取list第一个元素
         TMonthlyQualityReportS1301 firstValue = tMonthlyQualityReportS1301s.get(0);
         // 最大值
-        BigDecimal temperatureInMax = new BigDecimal(firstValue.getTemperatureIn());
-        BigDecimal temperatureRaiseMax = new BigDecimal(firstValue.getTemperatureRaise());
-        BigDecimal styreneMax = new BigDecimal(firstValue.getStyrene());
-        BigDecimal dieneValueMax = new BigDecimal(firstValue.getDieneValue());
+        BigDecimal temperatureInMax = new BigDecimal(firstValue.getTemperatureIn() == null ? "0" : firstValue.getTemperatureIn());
+        BigDecimal temperatureRaiseMax = new BigDecimal(firstValue.getTemperatureRaise() == null ? "0" : firstValue.getTemperatureRaise());
+        BigDecimal styreneMax = new BigDecimal(firstValue.getStyrene() == null ? "0" : firstValue.getStyrene());
+        BigDecimal dieneValueMax = new BigDecimal(firstValue.getDieneValue() == null ? "0" : firstValue.getDieneValue());
         // 最小值
-        BigDecimal temperatureInMin = new BigDecimal(firstValue.getTemperatureIn());
-        BigDecimal temperatureRaiseMin = new BigDecimal(firstValue.getTemperatureRaise());
-        BigDecimal styreneMin = new BigDecimal(firstValue.getStyrene());
-        BigDecimal dieneValueMin = new BigDecimal(firstValue.getDieneValue());
+        BigDecimal temperatureInMin = new BigDecimal(firstValue.getTemperatureIn() == null ? "0" : firstValue.getTemperatureIn());
+        BigDecimal temperatureRaiseMin = new BigDecimal(firstValue.getTemperatureRaise() == null ? "0" : firstValue.getTemperatureRaise());
+        BigDecimal styreneMin = new BigDecimal(firstValue.getStyrene() == null ? "0" : firstValue.getStyrene());
+        BigDecimal dieneValueMin = new BigDecimal(firstValue.getDieneValue() == null ? "0" : firstValue.getDieneValue());
         // 平均值
         BigDecimal temperatureInAvg = new BigDecimal(BigInteger.ZERO);
         BigDecimal temperatureRaiseAvg = new BigDecimal(BigInteger.ZERO);
@@ -70,29 +70,73 @@ public class TMonthlyQualityReportS1301Controller extends BaseController
         BigDecimal temperatureRaiseSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal styreneSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal dieneValueSum = new BigDecimal(BigInteger.ZERO);
+        // 计数
+        int temperatureInCount = 0;
+        int temperatureRaiseCount = 0;
+        int styreneCount = 0;
+        int dieneValueCount = 0;
         for (TMonthlyQualityReportS1301 monthlyQualityReportS1301 : tMonthlyQualityReportS1301s) {
-            BigDecimal temperatureIn = new BigDecimal(monthlyQualityReportS1301.getTemperatureIn());
-            BigDecimal temperatureRaise = new BigDecimal(monthlyQualityReportS1301.getTemperatureRaise());
-            BigDecimal styrene = new BigDecimal(monthlyQualityReportS1301.getStyrene());
-            BigDecimal dieneValue = new BigDecimal(monthlyQualityReportS1301.getDieneValue());
-            if (temperatureIn.compareTo(temperatureInMax) > 0) { temperatureInMax = temperatureIn; }
-            if (temperatureRaise.compareTo(temperatureRaiseMax) > 0) { temperatureRaiseMax = temperatureRaise; }
-            if (styrene.compareTo(styreneMax) > 0) { styreneMax = styrene; }
-            if (dieneValue.compareTo(dieneValueMax) > 0) { dieneValueMax = dieneValue; }
-            if (temperatureIn.compareTo(temperatureInMin) < 0) { temperatureInMin = temperatureIn; }
-            if (temperatureRaise.compareTo(temperatureRaiseMin) < 0) { temperatureRaiseMin = temperatureRaise; }
-            if (styrene.compareTo(styreneMin) < 0) { styreneMin = styrene; }
-            if (dieneValue.compareTo(dieneValueMin) < 0) { dieneValueMin = dieneValue; }
-            temperatureInSum = temperatureInSum.add(temperatureIn);
-            temperatureRaiseSum = temperatureRaiseSum.add(temperatureRaise);
-            styreneSum = styreneSum.add(styrene);
-            dieneValueSum = dieneValueSum.add(dieneValue);
+            String temperatureIn1 = monthlyQualityReportS1301.getTemperatureIn();
+            if (temperatureIn1 != null) {
+                BigDecimal temperatureIn = new BigDecimal(temperatureIn1);
+                if (temperatureIn.compareTo(temperatureInMax) > 0) {
+                    temperatureInMax = temperatureIn;
+                }
+                if (temperatureIn.compareTo(temperatureInMin) < 0) {
+                    temperatureInMin = temperatureIn;
+                }
+                temperatureInSum = temperatureInSum.add(temperatureIn);
+                temperatureInCount++;
+            }
+            String temperatureRaise1 = monthlyQualityReportS1301.getTemperatureRaise();
+            if (temperatureRaise1 != null) {
+                BigDecimal temperatureRaise = new BigDecimal(temperatureRaise1);
+                if (temperatureRaise.compareTo(temperatureRaiseMax) > 0) {
+                    temperatureRaiseMax = temperatureRaise;
+                }
+                if (temperatureRaise.compareTo(temperatureRaiseMin) < 0) {
+                    temperatureRaiseMin = temperatureRaise;
+                }
+                temperatureRaiseSum = temperatureRaiseSum.add(temperatureRaise);
+                temperatureRaiseCount++;
+            }
+            String styrene1 = monthlyQualityReportS1301.getStyrene();
+            if (styrene1 != null) {
+                BigDecimal styrene = new BigDecimal(styrene1);
+                if (styrene.compareTo(styreneMax) > 0) {
+                    styreneMax = styrene;
+                }
+                if (styrene.compareTo(styreneMin) < 0) {
+                    styreneMin = styrene;
+                }
+                styreneSum = styreneSum.add(styrene);
+                styreneCount++;
+            }
+            String dieneValue1 = monthlyQualityReportS1301.getDieneValue();
+            if (dieneValue1 != null) {
+                BigDecimal dieneValue = new BigDecimal(dieneValue1);
+                if (dieneValue.compareTo(dieneValueMax) > 0) {
+                    dieneValueMax = dieneValue;
+                }
+                if (dieneValue.compareTo(dieneValueMin) < 0) {
+                    dieneValueMin = dieneValue;
+                }
+                dieneValueSum = dieneValueSum.add(dieneValue);
+                dieneValueCount++;
+            }
+        }
+        if (temperatureInCount != 0) {
+            temperatureInAvg = temperatureInSum.divide(new BigDecimal(temperatureInCount), 2, RoundingMode.HALF_UP);
+        }
+        if (temperatureRaiseCount != 0) {
+            temperatureRaiseAvg = temperatureRaiseSum.divide(new BigDecimal(temperatureRaiseCount), 2, RoundingMode.HALF_UP);
+        }
+        if (styreneCount != 0) {
+            styreneAvg = styreneSum.divide(new BigDecimal(styreneCount), 2, RoundingMode.HALF_UP);
+        }
+        if (dieneValueCount != 0) {
+            dieneValueAvg = dieneValueSum.divide(new BigDecimal(dieneValueCount), 2, RoundingMode.HALF_UP);
         }
-        BigDecimal count = new BigDecimal(tMonthlyQualityReportS1301s.size());
-        temperatureInAvg = temperatureInSum.divide(count, 2, RoundingMode.HALF_UP);
-        temperatureRaiseAvg = temperatureRaiseSum.divide(count, 2, RoundingMode.HALF_UP);
-        styreneAvg = styreneSum.divide(count, 2, RoundingMode.HALF_UP);
-        dieneValueAvg = dieneValueSum.divide(count, 2, RoundingMode.HALF_UP);
         StringBuffer description = new StringBuffer();
         description.append("temperatureIn(max)="+ temperatureInMax.toString() + "\t");
         description.append("temperatureRaise(max)="+ temperatureRaiseMax.toString() + "\t");

+ 29 - 15
master/src/main/java/com/ruoyi/project/production/controller/TMonthlyQualityReportS2002Controller.java

@@ -51,30 +51,44 @@ public class TMonthlyQualityReportS2002Controller extends BaseController
         // 获取list第一个元素
         TMonthlyQualityReportS2002 firstValue = tMonthlyQualityReportS2002s.get(0);
         // 最大值
-        BigDecimal codMax = new BigDecimal(firstValue.getCod());
-        BigDecimal phMax = new BigDecimal(firstValue.getPh());
+        BigDecimal codMax = new BigDecimal(firstValue.getCod() == null ? "0" : firstValue.getCod());
+        BigDecimal phMax = new BigDecimal(firstValue.getPh() == null ? "0" : firstValue.getPh());
         // 最小值
-        BigDecimal codMin = new BigDecimal(firstValue.getCod());
-        BigDecimal phMin = new BigDecimal(firstValue.getPh());
+        BigDecimal codMin = new BigDecimal(firstValue.getCod() == null ? "0" : firstValue.getCod());
+        BigDecimal phMin = new BigDecimal(firstValue.getPh() == null ? "0" : firstValue.getPh());
         // 平均值
         BigDecimal codAvg = new BigDecimal(BigInteger.ZERO);
         BigDecimal phAvg = new BigDecimal(BigInteger.ZERO);
         // 总和
         BigDecimal codSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal phSum = new BigDecimal(BigInteger.ZERO);
+        // 计数
+        int codCount = 0;
+        int phCount = 0;
         for (TMonthlyQualityReportS2002 monthlyQualityReportS2002 : tMonthlyQualityReportS2002s) {
-            BigDecimal cod = new BigDecimal(monthlyQualityReportS2002.getCod());
-            BigDecimal ph = new BigDecimal(monthlyQualityReportS2002.getPh());
-            if (cod.compareTo(codMax) > 0) { codMax = cod; }
-            if (ph.compareTo(phMax) > 0) { phMax = ph; }
-            if (cod.compareTo(codMin) < 0) { codMin = cod; }
-            if (ph.compareTo(phMin) < 0) { phMin = ph; }
-            codSum = codSum.add(cod);
-            phSum = phSum.add(ph);
+            String cod1 = monthlyQualityReportS2002.getCod();
+            if (cod1 != null) {
+                BigDecimal cod = new BigDecimal(cod1);
+                if (cod.compareTo(codMax) > 0) { codMax = cod; }
+                if (cod.compareTo(codMin) < 0) { codMin = cod; }
+                codSum = codSum.add(cod);
+                codCount++;
+            }
+            String ph1 = monthlyQualityReportS2002.getPh();
+            if (ph1 != null) {
+                BigDecimal ph = new BigDecimal(ph1);
+                if (ph.compareTo(phMax) > 0) { phMax = ph; }
+                if (ph.compareTo(phMin) < 0) { phMin = ph; }
+                phSum = phSum.add(ph);
+                phCount++;
+            }
+        }
+        if (codCount != 0) {
+            codAvg = codSum.divide(new BigDecimal(codCount), 2, RoundingMode.HALF_UP);
+        }
+        if (phCount != 0) {
+            phAvg = phSum.divide(new BigDecimal(phCount), 2, RoundingMode.HALF_UP);
         }
-        BigDecimal count = new BigDecimal(tMonthlyQualityReportS2002s.size());
-        codAvg = codSum.divide(count, 2, RoundingMode.HALF_UP);
-        phAvg = phSum.divide(count, 2, RoundingMode.HALF_UP);
         StringBuffer description = new StringBuffer();
         description.append("cod(max)="+ codMax.toString() + "\t");
         description.append("ph(max)="+ phMax.toString() + "\t");

+ 29 - 15
master/src/main/java/com/ruoyi/project/production/controller/TMonthlyQualityReportS2400Controller.java

@@ -51,30 +51,44 @@ public class TMonthlyQualityReportS2400Controller extends BaseController
         // 获取list第一个元素
         TMonthlyQualityReportS2400 firstValue = tMonthlyQualityReportS2400s.get(0);
         // 最大值
-        BigDecimal codMax = new BigDecimal(firstValue.getCod());
-        BigDecimal phMax = new BigDecimal(firstValue.getPh());
+        BigDecimal codMax = new BigDecimal(firstValue.getCod() == null ? "0" : firstValue.getCod());
+        BigDecimal phMax = new BigDecimal(firstValue.getPh() == null ? "0" : firstValue.getPh());
         // 最小值
-        BigDecimal codMin = new BigDecimal(firstValue.getCod());
-        BigDecimal phMin = new BigDecimal(firstValue.getPh());
+        BigDecimal codMin = new BigDecimal(firstValue.getCod() == null ? "0" : firstValue.getCod());
+        BigDecimal phMin = new BigDecimal(firstValue.getPh() == null ? "0" : firstValue.getPh());
         // 平均值
         BigDecimal codAvg = new BigDecimal(BigInteger.ZERO);
         BigDecimal phAvg = new BigDecimal(BigInteger.ZERO);
         // 总和
         BigDecimal codSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal phSum = new BigDecimal(BigInteger.ZERO);
+        // 计数
+        int codCount = 0;
+        int phCount = 0;
         for (TMonthlyQualityReportS2400 monthlyQualityReportS2400 : tMonthlyQualityReportS2400s) {
-            BigDecimal cod = new BigDecimal(monthlyQualityReportS2400.getCod());
-            BigDecimal ph = new BigDecimal(monthlyQualityReportS2400.getPh());
-            if (cod.compareTo(codMax) > 0) { codMax = cod; }
-            if (ph.compareTo(phMax) > 0) { phMax = ph; }
-            if (cod.compareTo(codMin) < 0) { codMin = cod; }
-            if (ph.compareTo(phMin) < 0) { phMin = ph; }
-            codSum = codSum.add(cod);
-            phSum = phSum.add(ph);
+            String cod1 = monthlyQualityReportS2400.getCod();
+            if (cod1 != null) {
+                BigDecimal cod = new BigDecimal(cod1);
+                if (cod.compareTo(codMax) > 0) { codMax = cod; }
+                if (cod.compareTo(codMin) < 0) { codMin = cod; }
+                codSum = codSum.add(cod);
+                codCount++;
+            }
+            String ph1 = monthlyQualityReportS2400.getPh();
+            if (ph1 != null) {
+                BigDecimal ph = new BigDecimal(ph1);
+                if (ph.compareTo(phMax) > 0) { phMax = ph; }
+                if (ph.compareTo(phMin) < 0) { phMin = ph; }
+                phSum = phSum.add(ph);
+                phCount++;
+            }
+        }
+        if (codCount != 0) {
+            codAvg = codSum.divide(new BigDecimal(codCount), 2, RoundingMode.HALF_UP);
+        }
+        if (phCount != 0) {
+            phAvg = phSum.divide(new BigDecimal(phCount), 2, RoundingMode.HALF_UP);
         }
-        BigDecimal count = new BigDecimal(tMonthlyQualityReportS2400s.size());
-        codAvg = codSum.divide(count, 2, RoundingMode.HALF_UP);
-        phAvg = phSum.divide(count, 2, RoundingMode.HALF_UP);
         StringBuffer description = new StringBuffer();
         description.append("cod(max)="+ codMax.toString() + "\t");
         description.append("ph(max)="+ phMax.toString() + "\t");

+ 72 - 36
master/src/main/java/com/ruoyi/project/production/controller/TMonthlyQualityReportS4501Controller.java

@@ -51,17 +51,17 @@ public class TMonthlyQualityReportS4501Controller extends BaseController
         // 获取list第一个元素
         TMonthlyQualityReportS4501 firstValue = tMonthlyQualityReportS4501s.get(0);
         // 最大值
-        BigDecimal temperatureInMax = new BigDecimal(firstValue.getTemperatureIn());
-        BigDecimal temperatureRaiseMax = new BigDecimal(firstValue.getTemperatureRaise());
-        BigDecimal pressureDiffMax = new BigDecimal(firstValue.getPressureDiff());
-        BigDecimal c6C8NaMax = new BigDecimal(firstValue.getC6C8Na());
-        BigDecimal brNumberMax = new BigDecimal(firstValue.getBrIndex());
+        BigDecimal temperatureInMax = new BigDecimal(firstValue.getTemperatureIn() == null ? "0" : firstValue.getTemperatureIn());
+        BigDecimal temperatureRaiseMax = new BigDecimal(firstValue.getTemperatureRaise() == null ? "0" : firstValue.getTemperatureRaise());
+        BigDecimal pressureDiffMax = new BigDecimal(firstValue.getPressureDiff() == null ? "0" : firstValue.getPressureDiff());
+        BigDecimal c6C8NaMax = new BigDecimal(firstValue.getC6C8Na() == null ? "0" : firstValue.getC6C8Na());
+        BigDecimal brNumberMax = new BigDecimal(firstValue.getBrIndex() == null ? "0" : firstValue.getBrIndex());
         // 最小值
-        BigDecimal temperatureInMin = new BigDecimal(firstValue.getTemperatureIn());
-        BigDecimal temperatureRaiseMin = new BigDecimal(firstValue.getTemperatureRaise());
-        BigDecimal pressureDiffMin = new BigDecimal(firstValue.getPressureDiff());
-        BigDecimal c6C8NaMin = new BigDecimal(firstValue.getC6C8Na());
-        BigDecimal brNumberMin = new BigDecimal(firstValue.getBrIndex());
+        BigDecimal temperatureInMin = new BigDecimal(firstValue.getTemperatureIn() == null ? "0" : firstValue.getTemperatureIn());
+        BigDecimal temperatureRaiseMin = new BigDecimal(firstValue.getTemperatureRaise() == null ? "0" : firstValue.getTemperatureRaise());
+        BigDecimal pressureDiffMin = new BigDecimal(firstValue.getPressureDiff() == null ? "0" : firstValue.getPressureDiff());
+        BigDecimal c6C8NaMin = new BigDecimal(firstValue.getC6C8Na() == null ? "0" : firstValue.getC6C8Na());
+        BigDecimal brNumberMin = new BigDecimal(firstValue.getBrIndex() == null ? "0" : firstValue.getBrIndex());
         // 平均值
         BigDecimal temperatureInAvg = new BigDecimal(BigInteger.ZERO);
         BigDecimal temperatureRaiseAvg = new BigDecimal(BigInteger.ZERO);
@@ -74,34 +74,70 @@ public class TMonthlyQualityReportS4501Controller extends BaseController
         BigDecimal pressureDiffSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal c6C8NaSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal brNumberSum = new BigDecimal(BigInteger.ZERO);
+        // 计数
+        int temperatureInCount = 0;
+        int temperatureRaiseCount = 0;
+        int pressureDiffCount = 0;
+        int c6C8NaCount = 0;
+        int brNumberCount = 0;
         for (TMonthlyQualityReportS4501 monthlyQualityReportS4501 : tMonthlyQualityReportS4501s) {
-            BigDecimal temperatureIn = new BigDecimal(monthlyQualityReportS4501.getTemperatureIn());
-            BigDecimal temperatureRaise = new BigDecimal(monthlyQualityReportS4501.getTemperatureRaise());
-            BigDecimal pressureDiff = new BigDecimal(monthlyQualityReportS4501.getPressureDiff());
-            BigDecimal c6C8Na = new BigDecimal(monthlyQualityReportS4501.getC6C8Na());
-            BigDecimal brNumber = new BigDecimal(monthlyQualityReportS4501.getBrIndex());
-            if (temperatureIn.compareTo(temperatureInMax) > 0) { temperatureInMax = temperatureIn; }
-            if (temperatureRaise.compareTo(temperatureRaiseMax) > 0) { temperatureRaiseMax = temperatureRaise; }
-            if (pressureDiff.compareTo(pressureDiffMax) > 0) { pressureDiffMax = pressureDiff; }
-            if (c6C8Na.compareTo(c6C8NaMax) > 0) { c6C8NaMax = c6C8Na; }
-            if (brNumber.compareTo(brNumberMax) > 0) { brNumberMax = brNumber; }
-            if (temperatureIn.compareTo(temperatureInMin) < 0) { temperatureInMin = temperatureIn; }
-            if (temperatureRaise.compareTo(temperatureRaiseMin) < 0) { temperatureRaiseMin = temperatureRaise; }
-            if (pressureDiff.compareTo(pressureDiffMin) < 0) { pressureDiffMin = pressureDiff; }
-            if (c6C8Na.compareTo(c6C8NaMin) < 0) { c6C8NaMin = c6C8Na; }
-            if (brNumber.compareTo(brNumberMin) < 0) { brNumberMin = brNumber; }
-            temperatureInSum = temperatureInSum.add(temperatureIn);
-            temperatureRaiseSum = temperatureRaiseSum.add(temperatureRaise);
-            pressureDiffSum = pressureDiffSum.add(pressureDiff);
-            c6C8NaSum = c6C8NaSum.add(c6C8Na);
-            brNumberSum = brNumberSum.add(brNumber);
+            String temperatureIn1 = monthlyQualityReportS4501.getTemperatureIn();
+            if (temperatureIn1 != null) {
+                BigDecimal temperatureIn = new BigDecimal(temperatureIn1);
+                if (temperatureIn.compareTo(temperatureInMax) > 0) { temperatureInMax = temperatureIn; }
+                if (temperatureIn.compareTo(temperatureInMin) < 0) { temperatureInMin = temperatureIn; }
+                temperatureInSum = temperatureInSum.add(temperatureIn);
+                temperatureInCount++;
+            }
+            String temperatureRaise1 = monthlyQualityReportS4501.getTemperatureRaise();
+            if (temperatureRaise1 != null) {
+                BigDecimal temperatureRaise = new BigDecimal(temperatureRaise1);
+                if (temperatureRaise.compareTo(temperatureRaiseMax) > 0) { temperatureRaiseMax = temperatureRaise; }
+                if (temperatureRaise.compareTo(temperatureRaiseMin) < 0) { temperatureRaiseMin = temperatureRaise; }
+                temperatureRaiseSum = temperatureRaiseSum.add(temperatureRaise);
+                temperatureRaiseCount++;
+            }
+            String pressureDiff1 = monthlyQualityReportS4501.getPressureDiff();
+            if (pressureDiff1 != null) {
+                BigDecimal pressureDiff = new BigDecimal(pressureDiff1);
+                if (pressureDiff.compareTo(pressureDiffMax) > 0) { pressureDiffMax = pressureDiff; }
+                if (pressureDiff.compareTo(pressureDiffMin) < 0) { pressureDiffMin = pressureDiff; }
+                pressureDiffSum = pressureDiffSum.add(pressureDiff);
+                pressureDiffCount++;
+            }
+
+            String c6C8Na1 = monthlyQualityReportS4501.getC6C8Na();
+            if (c6C8Na1 != null) {
+                BigDecimal c6C8Na = new BigDecimal(c6C8Na1);
+                if (c6C8Na.compareTo(c6C8NaMax) > 0) { c6C8NaMax = c6C8Na; }
+                if (c6C8Na.compareTo(c6C8NaMin) < 0) { c6C8NaMin = c6C8Na; }
+                c6C8NaSum = c6C8NaSum.add(c6C8Na);
+                c6C8NaCount++;
+            }
+            String brIndex = monthlyQualityReportS4501.getBrIndex();
+            if (brIndex != null) {
+                BigDecimal brNumber = new BigDecimal(brIndex);
+                if (brNumber.compareTo(brNumberMax) > 0) { brNumberMax = brNumber; }
+                if (brNumber.compareTo(brNumberMin) < 0) { brNumberMin = brNumber; }
+                brNumberSum = brNumberSum.add(brNumber);
+                brNumberCount++;
+            }
+        }
+        if (temperatureInCount != 0) {
+            temperatureInAvg = temperatureInSum.divide(new BigDecimal(temperatureInCount), 2, RoundingMode.HALF_UP);
+        }
+        if (temperatureRaiseCount != 0) {
+            temperatureRaiseAvg = temperatureRaiseSum.divide(new BigDecimal(temperatureRaiseCount), 2, RoundingMode.HALF_UP);
+        }
+        if (pressureDiffCount != 0) {
+            pressureDiffAvg = pressureDiffSum.divide(new BigDecimal(pressureDiffCount), 2, RoundingMode.HALF_UP);
+        }
+        if (c6C8NaCount != 0) {
+            c6C8NaAvg = c6C8NaSum.divide(new BigDecimal(c6C8NaCount), 2, RoundingMode.HALF_UP);
+        }
+        if (brNumberCount != 0) {
+            brNumberAvg = brNumberSum.divide(new BigDecimal(brNumberCount), 2, RoundingMode.HALF_UP);
         }
-        BigDecimal count = new BigDecimal(tMonthlyQualityReportS4501s.size());
-        temperatureInAvg = temperatureInSum.divide(count, 2, RoundingMode.HALF_UP);
-        temperatureRaiseAvg = temperatureRaiseSum.divide(count, 2, RoundingMode.HALF_UP);
-        pressureDiffAvg = pressureDiffSum.divide(count, 2, RoundingMode.HALF_UP);
-        c6C8NaAvg = c6C8NaSum.divide(count, 2, RoundingMode.HALF_UP);
-        brNumberAvg = brNumberSum.divide(count, 2, RoundingMode.HALF_UP);
         StringBuffer description = new StringBuffer();
         description.append("temperatureIn(max)="+ temperatureInMax.toString() + "\t");
         description.append("temperatureRaise(max)="+ temperatureRaiseMax.toString() + "\t");

+ 29 - 15
master/src/main/java/com/ruoyi/project/production/controller/TMonthlyQualityReportS6107Controller.java

@@ -52,30 +52,44 @@ public class TMonthlyQualityReportS6107Controller extends BaseController
         // 获取list第一个元素
         TMonthlyQualityReportS6107 firstValue = tMonthlyQualityReportS6107s.get(0);
         // 最大值
-        BigDecimal codMax = new BigDecimal(firstValue.getCod());
-        BigDecimal phMax = new BigDecimal(firstValue.getPh());
+        BigDecimal codMax = new BigDecimal(firstValue.getCod() == null ? "0" : firstValue.getCod());
+        BigDecimal phMax = new BigDecimal(firstValue.getPh() == null ? "0" : firstValue.getPh());
         // 最小值
-        BigDecimal codMin = new BigDecimal(firstValue.getCod());
-        BigDecimal phMin = new BigDecimal(firstValue.getPh());
+        BigDecimal codMin = new BigDecimal(firstValue.getCod() == null ? "0" : firstValue.getCod());
+        BigDecimal phMin = new BigDecimal(firstValue.getPh() == null ? "0" : firstValue.getPh());
         // 平均值
         BigDecimal codAvg = new BigDecimal(BigInteger.ZERO);
         BigDecimal phAvg = new BigDecimal(BigInteger.ZERO);
         // 总和
         BigDecimal codSum = new BigDecimal(BigInteger.ZERO);
         BigDecimal phSum = new BigDecimal(BigInteger.ZERO);
+        // 计数
+        int codCount = 0;
+        int phCount = 0;
         for (TMonthlyQualityReportS6107 monthlyQualityReportS6107 : tMonthlyQualityReportS6107s) {
-            BigDecimal cod = new BigDecimal(monthlyQualityReportS6107.getCod());
-            BigDecimal ph = new BigDecimal(monthlyQualityReportS6107.getPh());
-            if (cod.compareTo(codMax) > 0) { codMax = cod; }
-            if (ph.compareTo(phMax) > 0) { phMax = ph; }
-            if (cod.compareTo(codMin) < 0) { codMin = cod; }
-            if (ph.compareTo(phMin) < 0) { phMin = ph; }
-            codSum = codSum.add(cod);
-            phSum = phSum.add(ph);
+            String cod1 = monthlyQualityReportS6107.getCod();
+            if (cod1 != null) {
+                BigDecimal cod = new BigDecimal(cod1);
+                if (cod.compareTo(codMax) > 0) { codMax = cod; }
+                if (cod.compareTo(codMin) < 0) { codMin = cod; }
+                codSum = codSum.add(cod);
+                codCount++;
+            }
+            String ph1 = monthlyQualityReportS6107.getPh();
+            if (ph1 != null) {
+                BigDecimal ph = new BigDecimal(ph1);
+                if (ph.compareTo(phMax) > 0) { phMax = ph; }
+                if (ph.compareTo(phMin) < 0) { phMin = ph; }
+                phSum = phSum.add(ph);
+                phCount++;
+            }
+        }
+        if (codCount != 0) {
+            codAvg = codSum.divide(new BigDecimal(codCount), 2, RoundingMode.HALF_UP);
+        }
+        if (phCount != 0) {
+            phAvg = phSum.divide(new BigDecimal(phCount), 2, RoundingMode.HALF_UP);
         }
-        BigDecimal count = new BigDecimal(tMonthlyQualityReportS6107s.size());
-        codAvg = codSum.divide(count, 2, RoundingMode.HALF_UP);
-        phAvg = phSum.divide(count, 2, RoundingMode.HALF_UP);
         StringBuffer description = new StringBuffer();
         description.append("cod(max)="+ codMax.toString() + "\t");
         description.append("ph(max)="+ phMax.toString() + "\t");