Prechádzať zdrojové kódy

预测对比新增误差值计算处理

wangmiaomiao 9 mesiacov pred
rodič
commit
4ffe082b27

+ 150 - 60
slibra-quartz/src/main/java/com/slibra/quartz/task/AsyncTask.java

@@ -230,19 +230,31 @@ public class AsyncTask {
                 if("cod".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealOne(csCod);
                     if(!Objects.isNull(csCod) && csCod.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastOne))
-                            tXinyiForecastComparison.setHsErrorRateOne((csCod.subtract(hsForecastOne)).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastOne))
-                            tXinyiForecastComparison.setYyErrorRateOne((csCod.subtract(yyForecastOne)).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = csCod.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = csCod.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 if("ss".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealOne(csSs);
                     if(!Objects.isNull(csSs) && csSs.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastOne))
-                            tXinyiForecastComparison.setHsErrorRateOne((csSs.subtract(hsForecastOne)).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastOne))
-                            tXinyiForecastComparison.setYyErrorRateOne((csSs.subtract(yyForecastOne)).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = csSs.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = csSs.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 //2024年6月21日16:28:56 tn总氮的预测用xsy1和xsy2计算 并从化验库获取
@@ -266,10 +278,16 @@ public class AsyncTask {
                 if("nh3".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealOne(csNh3);
                     if(!Objects.isNull(csNh3) && csNh3.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastOne))
-                            tXinyiForecastComparison.setHsErrorRateOne((csNh3.subtract(hsForecastOne)).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastOne))
-                            tXinyiForecastComparison.setYyErrorRateOne((csNh3.subtract(yyForecastOne)).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = csNh3.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = csNh3.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
@@ -284,19 +302,31 @@ public class AsyncTask {
                 if("cod".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealTwo(csCod);
                     if(!Objects.isNull(csCod) && csCod.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastTwo))
-                            tXinyiForecastComparison.setHsErrorRateTwo((csCod.subtract(hsForecastTwo)).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastTwo))
-                            tXinyiForecastComparison.setYyErrorRateTwo((csCod.subtract(yyForecastTwo)).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = csCod.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = csCod.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 if("ss".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealTwo(csSs);
                     if(!Objects.isNull(csSs) && csSs.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastTwo))
-                            tXinyiForecastComparison.setHsErrorRateTwo((csSs.subtract(hsForecastTwo)).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastTwo))
-                            tXinyiForecastComparison.setYyErrorRateTwo((csSs.subtract(yyForecastTwo)).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = csSs.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = csSs.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 /*if("tn".equals(tXinyiForecastComparison.getCategory())){
@@ -319,10 +349,16 @@ public class AsyncTask {
                 if("nh3".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealTwo(csNh3);
                     if(!Objects.isNull(csNh3) && csNh3.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastTwo))
-                            tXinyiForecastComparison.setHsErrorRateTwo((csNh3.subtract(hsForecastTwo)).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastTwo))
-                            tXinyiForecastComparison.setYyErrorRateTwo((csNh3.subtract(yyForecastTwo)).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = csNh3.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = csNh3.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
@@ -337,19 +373,31 @@ public class AsyncTask {
                 if("cod".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealThree(csCod);
                     if(!Objects.isNull(csCod) && csCod.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastThree))
-                            tXinyiForecastComparison.setHsErrorRateThree((csCod.subtract(hsForecastThree)).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastThree))
-                            tXinyiForecastComparison.setYyErrorRateThree((csCod.subtract(yyForecastThree)).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = csCod.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = csCod.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(csCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 if("ss".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealThree(csSs);
                     if(!Objects.isNull(csSs) && csSs.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastThree))
-                            tXinyiForecastComparison.setHsErrorRateThree((csSs.subtract(hsForecastThree)).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastThree))
-                            tXinyiForecastComparison.setYyErrorRateThree((csSs.subtract(yyForecastThree)).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = csSs.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = csSs.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(csSs, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 /*if("tn".equals(tXinyiForecastComparison.getCategory())){
@@ -372,10 +420,16 @@ public class AsyncTask {
                 if("nh3".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealThree(csNh3);
                     if(!Objects.isNull(csNh3) && csNh3.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastThree))
-                            tXinyiForecastComparison.setHsErrorRateThree((csNh3.subtract(hsForecastThree)).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastThree))
-                            tXinyiForecastComparison.setYyErrorRateThree((csNh3.subtract(yyForecastThree)).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = csNh3.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = csNh3.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(csNh3, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
@@ -433,10 +487,16 @@ public class AsyncTask {
                 if("tn".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealOne(csTn);
                     if(!Objects.isNull(csTn) && csTn.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastOne))
-                            tXinyiForecastComparison.setHsErrorRateOne((csTn.subtract(hsForecastOne)).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastOne))
-                            tXinyiForecastComparison.setYyErrorRateOne((csTn.subtract(yyForecastOne)).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = csTn.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = csTn.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
 
@@ -444,10 +504,16 @@ public class AsyncTask {
                 if("tp".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealOne(csTp);
                     if(!Objects.isNull(csTp) && csTp.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastOne))
-                            tXinyiForecastComparison.setHsErrorRateOne((csTp.subtract(hsForecastOne)).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastOne))
-                            tXinyiForecastComparison.setYyErrorRateOne((csTp.subtract(yyForecastOne)).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = csTp.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = csTp.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
@@ -481,10 +547,16 @@ public class AsyncTask {
                 if("tn".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealTwo(csTn);
                     if(!Objects.isNull(csTn) && csTn.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastTwo))
-                            tXinyiForecastComparison.setHsErrorRateTwo((csTn.subtract(hsForecastTwo)).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastTwo))
-                            tXinyiForecastComparison.setYyErrorRateTwo((csTn.subtract(yyForecastTwo)).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = csTn.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = csTn.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
 
@@ -492,10 +564,16 @@ public class AsyncTask {
                 if("tp".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealTwo(csTp);
                     if(!Objects.isNull(csTp) && csTp.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastTwo))
-                            tXinyiForecastComparison.setHsErrorRateTwo((csTp.subtract(hsForecastTwo)).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastTwo))
-                            tXinyiForecastComparison.setYyErrorRateTwo((csTp.subtract(yyForecastTwo)).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = csTp.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = csTp.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
@@ -529,10 +607,16 @@ public class AsyncTask {
                 if("tn".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealThree(csTn);
                     if(!Objects.isNull(csTn) && csTn.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastThree))
-                            tXinyiForecastComparison.setHsErrorRateThree((csTn.subtract(hsForecastThree)).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastThree))
-                            tXinyiForecastComparison.setYyErrorRateThree((csTn.subtract(yyForecastThree)).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = csTn.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = csTn.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(csTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
 
@@ -540,10 +624,16 @@ public class AsyncTask {
                 if("tp".equals(tXinyiForecastComparison.getCategory())){
                     tXinyiForecastComparison.setRealThree(csTp);
                     if(!Objects.isNull(csTp) && csTp.compareTo(BigDecimal.ZERO) > 0){
-                        if(!Objects.isNull(hsForecastThree))
-                            tXinyiForecastComparison.setHsErrorRateThree((csTp.subtract(hsForecastThree)).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
-                        if(!Objects.isNull(yyForecastThree))
-                            tXinyiForecastComparison.setYyErrorRateThree((csTp.subtract(yyForecastThree)).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = csTp.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = csTp.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(csTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
                     }
                 }
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);