Browse Source

前端获取计算接口 和 定时任务计算 都采用同一个方法

王苗苗 1 month ago
parent
commit
0aaf0685cb

+ 176 - 171
slibra-quartz/src/main/java/com/slibra/quartz/task/RyTask.java

@@ -19,6 +19,7 @@ import com.slibra.business.res.ShowValueChartBasic;
 import com.slibra.business.res.SmartAdd;
 import com.slibra.business.service.IFrontService;
 import com.slibra.business.service.ITXinyiForecastComparisonService;
+import com.slibra.business.service.impl.TXinyiMedicineParamServiceImpl;
 import com.slibra.common.DecimalUtils;
 import com.slibra.common.config.BigModelConfig;
 import com.slibra.common.constant.MyConstants;
@@ -137,6 +138,9 @@ public class RyTask
     @Autowired
     private TPredictConfMapper tpredictConfMapper;
 
+    @Autowired
+    private TXinyiMedicineParamServiceImpl xinyiMedicineParamServiceImpl;
+
     /** 使用的是哪个环境 */
     @Value("${spring.profiles.active}")
     private String environment;
@@ -1028,181 +1032,182 @@ public class RyTask
         //获取最新的配置信息
         TXinyiMedicineParam latestRecord = this.xinyiMedicineParamMapper.getLatestRecord();
         if(!Objects.isNull(latestRecord)){
-            return this.calculateMedicineByLastRecord(latestRecord);
-        }
-        return null;
-    }
-
-    private BigDecimal calculateMedicineByLastRecord(TXinyiMedicineParam param) {
-        if (Objects.isNull(param)) {
-            return null;
-        }
-        //计算用到的值
-        Integer hycXsyType = param.getHycXsyType();
-        BigDecimal hycXsyOne = param.getHycXsyOne();
-        BigDecimal hycXsyTwo = param.getHycXsyTwo();
-
-        BigDecimal htfksd = param.getHtfksd();
-
-        Integer qycAdType = param.getQycAdType();
-        BigDecimal qycAdOne = param.getQycAdOne();
-        BigDecimal qycAdTwo = param.getQycAdTwo();
-
-        Integer qycYxyType = param.getQycYxyType();
-        BigDecimal qycYxyOne = param.getQycYxyOne();
-        BigDecimal qycYxyTwo = param.getQycYxyTwo();
-
-        BigDecimal xzxs = param.getXzxs();
-
-        BigDecimal jzxs = param.getJzxs();
-
-        Integer jsLlType = param.getJsLlType();
-        BigDecimal jsLlOne = param.getJsLlOne();
-        BigDecimal jsLlTwo = param.getJsLlTwo();
-
-        BigDecimal slfpxs = param.getSlfpxs();
-
-        BigDecimal kzxs = param.getKzxs();
-
-        Integer jsCodType = param.getJsCodType();
-        BigDecimal jsCodOne = param.getJsCodOne();
-        BigDecimal jsCodTwo = param.getJsCodTwo();
-
-        BigDecimal zhxs = param.getZhxs();
-
-        BigDecimal tydl = param.getTydl();
-
-        BigDecimal medicineAmount = param.getMedicineAmount();//手动需要
-
-        Integer type = param.getType();//0自动 1一号池 2二号池 3人工投放
-
-        BigDecimal yymd = param.getYymd();
-
-        BigDecimal sxps = param.getSxps();
-
-        //计算
-        if(!Objects.isNull(type)) {
-            if(3 == type){
-                return medicineAmount;
-            }
-            //计算1号池的值
-            BigDecimal oneResult = this.getResultByDiff(hycXsyType, hycXsyOne, htfksd, qycAdType, qycAdOne, qycYxyType, qycYxyOne, xzxs, jzxs, jsLlType, jsLlOne, slfpxs, kzxs, jsCodType, jsCodOne, zhxs, tydl, "one", yymd, sxps);
-            //计算二号池的值
-            BigDecimal twoResult = this.getResultByDiff(hycXsyType, hycXsyTwo, htfksd, qycAdType, qycAdTwo, qycYxyType, qycYxyTwo, xzxs, jzxs, jsLlType, jsLlTwo, slfpxs, kzxs, jsCodType, jsCodTwo, zhxs, tydl, "two", yymd, sxps);
-            //判断,返回值
-            if(0 == type){
-                if(!Objects.isNull(oneResult) && !Objects.isNull(twoResult)){
-                    return oneResult.compareTo(twoResult) > 0 ? oneResult : twoResult;
-                }
-            }
-            else if(1 == type) {
-                return oneResult;
-            }else if(2 == type)
-                return twoResult;
-            else {
-                return null;//错误的配置
-            }
+//            return this.calculateMedicineByLastRecord(latestRecord);
+            return this.xinyiMedicineParamServiceImpl.calculateMedicineByLastRecord(latestRecord);
         }
         return null;
     }
 
-    private BigDecimal getResultByDiff(Integer hycXsyType, BigDecimal hycXsyVal, BigDecimal htfksd, Integer qycAdType, BigDecimal qycAdVal, Integer qycYxyType,
-                                       BigDecimal qycYxyVal, BigDecimal xzxs, BigDecimal jzxs, Integer jsLlType, BigDecimal jsLlVal, BigDecimal slfpxs, BigDecimal kzxs, Integer jsCodType,
-                                       BigDecimal jsCodVal, BigDecimal zhxs, BigDecimal tydl, String whichCZ, BigDecimal yymd, BigDecimal sxps) {
-        //2024年09月14日10:26:11  不同池子,根据不同类型,获取最新的数据,计算碳源投加量
-        //获取最新的实时数据
-        SmartAdd smartAdd = this.frontService.smartAddDataInfo();
-        if(!Objects.isNull(smartAdd)){
-            if("one".equals(whichCZ)){//一池
-                if(!Objects.isNull(hycXsyType)){
-                    if(1 == hycXsyType){//化验
-                        hycXsyVal = smartAdd.getHyXsyHYOne();
-                    }else if(2 == hycXsyType){//预测
-                        hycXsyVal = smartAdd.getHyXsyYCOne();
-                    }
-                }
-                if(!Objects.isNull(qycAdType) && 1 == qycAdType){//化验
-                    qycAdVal = smartAdd.getQyAdHYOne();
-                }
-                if(!Objects.isNull(qycYxyType) && 1 == qycYxyType){//化验
-                    qycYxyVal = smartAdd.getQyXsyHYOne();
-                }
-                if(!Objects.isNull(jsCodType)){
-                    if(1 == jsCodType){//仪表
-                        jsCodVal = smartAdd.getJsCodYB();
-                    }else if(2 == jsCodType){//化验
-                        jsCodVal = smartAdd.getJsCodHY();
-                    }
-                }
-                if(!Objects.isNull(jsLlType) && 1 == jsLlType){//仪表
-                    jsLlVal = smartAdd.getJslYB();
-                }
-            }else {//二池
-                if(!Objects.isNull(hycXsyType)){
-                    if(1 == hycXsyType){//化验
-                        hycXsyVal = smartAdd.getHyXsyHYTwo();
-                    }else if(2 == hycXsyType){//预测
-                        hycXsyVal = smartAdd.getHyXsyYCTwo();
-                    }
-                }
-                if(!Objects.isNull(qycAdType) && 1 == qycAdType){//化验
-                    qycAdVal = smartAdd.getQyAdHYTwo();
-                }
-                if(!Objects.isNull(qycYxyType) && 1 == qycYxyType){//化验
-                    qycYxyVal = smartAdd.getQyXsyHYTwo();
-                }
-                if(!Objects.isNull(jsCodType)){
-                    if(1 == jsCodType){//仪表
-                        jsCodVal = smartAdd.getJsCodYB();
-                    }else if(2 == jsCodType){//化验
-                        jsCodVal = smartAdd.getJsCodHY();
-                    }
-                }
-                if(!Objects.isNull(jsLlType) && 1 == jsLlType){//仪表
-                    jsLlVal = smartAdd.getJslYB();
-                }
-            }
-        }
-
-
-        //兜底处理
-        if(Objects.isNull(hycXsyVal))
-            hycXsyVal = BigDecimal.ZERO;
-        if(Objects.isNull(htfksd))
-            htfksd = BigDecimal.ZERO;
-        if(Objects.isNull(qycAdVal))
-            qycAdVal = BigDecimal.ZERO;
-        if(Objects.isNull(qycYxyVal))
-            qycYxyVal = BigDecimal.ZERO;
-        if(Objects.isNull(xzxs))
-            xzxs = BigDecimal.ZERO;
-        if(Objects.isNull(jzxs))
-            jzxs = BigDecimal.ZERO;
-        if(Objects.isNull(jsLlVal))
-            jsLlVal = BigDecimal.ZERO;
-        if(Objects.isNull(slfpxs))
-            slfpxs = BigDecimal.ZERO;
-        if(Objects.isNull(kzxs))
-            kzxs = BigDecimal.ZERO;
-        if(Objects.isNull(jsCodVal))
-            jsCodVal = BigDecimal.ZERO;
-        if(Objects.isNull(zhxs))
-            zhxs = BigDecimal.ZERO;
-        if(Objects.isNull(tydl))
-            tydl = BigDecimal.ZERO;
-        if(Objects.isNull(yymd) || yymd.compareTo(BigDecimal.ZERO) <= 0)
-            return null;//除数不能为0
-        if(Objects.isNull(sxps)){
-            sxps = BigDecimal.ZERO;
-        }
-        //1)计算挟走量
-        BigDecimal xzl = (((BigDecimal_2.multiply(hycXsyVal).subtract(htfksd)).add(((qycAdVal.add(qycYxyVal)).multiply(xzxs).subtract(htfksd)))).multiply((jzxs.subtract(BigDecimal_1)))).multiply((jsLlVal.multiply(slfpxs))).divide(BigDecimal_1000, NUMBER_SCALE_4, RoundingMode.HALF_UP);
-        //2)计算碳源投加总量
-        BigDecimal total = (xzl.multiply(kzxs).subtract((jsLlVal.multiply(slfpxs).multiply(jsCodVal).multiply(zhxs).divide(BigDecimal_1000, NUMBER_SCALE_4, RoundingMode.HALF_UP)))).divide(tydl, NUMBER_SCALE_4, RoundingMode.HALF_UP);
-        //2024年09月14日15:33:37 计算出来的结果太大,是几千,把第三步公式也加上
-        //计算加药流量
-        return DecimalUtils.getNLengthHalfUp(total.divide(yymd, NUMBER_SCALE_10, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_10, RoundingMode.HALF_UP).multiply(sxps), INT_3);
-    }
+//    private BigDecimal calculateMedicineByLastRecord(TXinyiMedicineParam param) {
+//        if (Objects.isNull(param)) {
+//            return null;
+//        }
+//        //计算用到的值
+//        Integer hycXsyType = param.getHycXsyType();
+//        BigDecimal hycXsyOne = param.getHycXsyOne();
+//        BigDecimal hycXsyTwo = param.getHycXsyTwo();
+//
+//        BigDecimal htfksd = param.getHtfksd();
+//
+//        Integer qycAdType = param.getQycAdType();
+//        BigDecimal qycAdOne = param.getQycAdOne();
+//        BigDecimal qycAdTwo = param.getQycAdTwo();
+//
+//        Integer qycYxyType = param.getQycYxyType();
+//        BigDecimal qycYxyOne = param.getQycYxyOne();
+//        BigDecimal qycYxyTwo = param.getQycYxyTwo();
+//
+//        BigDecimal xzxs = param.getXzxs();
+//
+//        BigDecimal jzxs = param.getJzxs();
+//
+//        Integer jsLlType = param.getJsLlType();
+//        BigDecimal jsLlOne = param.getJsLlOne();
+//        BigDecimal jsLlTwo = param.getJsLlTwo();
+//
+//        BigDecimal slfpxs = param.getSlfpxs();
+//
+//        BigDecimal kzxs = param.getKzxs();
+//
+//        Integer jsCodType = param.getJsCodType();
+//        BigDecimal jsCodOne = param.getJsCodOne();
+//        BigDecimal jsCodTwo = param.getJsCodTwo();
+//
+//        BigDecimal zhxs = param.getZhxs();
+//
+//        BigDecimal tydl = param.getTydl();
+//
+//        BigDecimal medicineAmount = param.getMedicineAmount();//手动需要
+//
+//        Integer type = param.getType();//0自动 1一号池 2二号池 3人工投放
+//
+//        BigDecimal yymd = param.getYymd();
+//
+//        BigDecimal sxps = param.getSxps();
+//
+//        //计算
+//        if(!Objects.isNull(type)) {
+//            if(3 == type){
+//                return medicineAmount;
+//            }
+//            //计算1号池的值
+//            BigDecimal oneResult = this.getResultByDiff(hycXsyType, hycXsyOne, htfksd, qycAdType, qycAdOne, qycYxyType, qycYxyOne, xzxs, jzxs, jsLlType, jsLlOne, slfpxs, kzxs, jsCodType, jsCodOne, zhxs, tydl, "one", yymd, sxps);
+//            //计算二号池的值
+//            BigDecimal twoResult = this.getResultByDiff(hycXsyType, hycXsyTwo, htfksd, qycAdType, qycAdTwo, qycYxyType, qycYxyTwo, xzxs, jzxs, jsLlType, jsLlTwo, slfpxs, kzxs, jsCodType, jsCodTwo, zhxs, tydl, "two", yymd, sxps);
+//            //判断,返回值
+//            if(0 == type){
+//                if(!Objects.isNull(oneResult) && !Objects.isNull(twoResult)){
+//                    return oneResult.compareTo(twoResult) > 0 ? oneResult : twoResult;
+//                }
+//            }
+//            else if(1 == type) {
+//                return oneResult;
+//            }else if(2 == type)
+//                return twoResult;
+//            else {
+//                return null;//错误的配置
+//            }
+//        }
+//        return null;
+//    }
+//
+//    private BigDecimal getResultByDiff(Integer hycXsyType, BigDecimal hycXsyVal, BigDecimal htfksd, Integer qycAdType, BigDecimal qycAdVal, Integer qycYxyType,
+//                                       BigDecimal qycYxyVal, BigDecimal xzxs, BigDecimal jzxs, Integer jsLlType, BigDecimal jsLlVal, BigDecimal slfpxs, BigDecimal kzxs, Integer jsCodType,
+//                                       BigDecimal jsCodVal, BigDecimal zhxs, BigDecimal tydl, String whichCZ, BigDecimal yymd, BigDecimal sxps) {
+//        //2024年09月14日10:26:11  不同池子,根据不同类型,获取最新的数据,计算碳源投加量
+//        //获取最新的实时数据
+//        SmartAdd smartAdd = this.frontService.smartAddDataInfo();
+//        if(!Objects.isNull(smartAdd)){
+//            if("one".equals(whichCZ)){//一池
+//                if(!Objects.isNull(hycXsyType)){
+//                    if(1 == hycXsyType){//化验
+//                        hycXsyVal = smartAdd.getHyXsyHYOne();
+//                    }else if(2 == hycXsyType){//预测
+//                        hycXsyVal = smartAdd.getHyXsyYCOne();
+//                    }
+//                }
+//                if(!Objects.isNull(qycAdType) && 1 == qycAdType){//化验
+//                    qycAdVal = smartAdd.getQyAdHYOne();
+//                }
+//                if(!Objects.isNull(qycYxyType) && 1 == qycYxyType){//化验
+//                    qycYxyVal = smartAdd.getQyXsyHYOne();
+//                }
+//                if(!Objects.isNull(jsCodType)){
+//                    if(1 == jsCodType){//仪表
+//                        jsCodVal = smartAdd.getJsCodYB();
+//                    }else if(2 == jsCodType){//化验
+//                        jsCodVal = smartAdd.getJsCodHY();
+//                    }
+//                }
+//                if(!Objects.isNull(jsLlType) && 1 == jsLlType){//仪表
+//                    jsLlVal = smartAdd.getJslYB();
+//                }
+//            }else {//二池
+//                if(!Objects.isNull(hycXsyType)){
+//                    if(1 == hycXsyType){//化验
+//                        hycXsyVal = smartAdd.getHyXsyHYTwo();
+//                    }else if(2 == hycXsyType){//预测
+//                        hycXsyVal = smartAdd.getHyXsyYCTwo();
+//                    }
+//                }
+//                if(!Objects.isNull(qycAdType) && 1 == qycAdType){//化验
+//                    qycAdVal = smartAdd.getQyAdHYTwo();
+//                }
+//                if(!Objects.isNull(qycYxyType) && 1 == qycYxyType){//化验
+//                    qycYxyVal = smartAdd.getQyXsyHYTwo();
+//                }
+//                if(!Objects.isNull(jsCodType)){
+//                    if(1 == jsCodType){//仪表
+//                        jsCodVal = smartAdd.getJsCodYB();
+//                    }else if(2 == jsCodType){//化验
+//                        jsCodVal = smartAdd.getJsCodHY();
+//                    }
+//                }
+//                if(!Objects.isNull(jsLlType) && 1 == jsLlType){//仪表
+//                    jsLlVal = smartAdd.getJslYB();
+//                }
+//            }
+//        }
+//
+//
+//        //兜底处理
+//        if(Objects.isNull(hycXsyVal))
+//            hycXsyVal = BigDecimal.ZERO;
+//        if(Objects.isNull(htfksd))
+//            htfksd = BigDecimal.ZERO;
+//        if(Objects.isNull(qycAdVal))
+//            qycAdVal = BigDecimal.ZERO;
+//        if(Objects.isNull(qycYxyVal))
+//            qycYxyVal = BigDecimal.ZERO;
+//        if(Objects.isNull(xzxs))
+//            xzxs = BigDecimal.ZERO;
+//        if(Objects.isNull(jzxs))
+//            jzxs = BigDecimal.ZERO;
+//        if(Objects.isNull(jsLlVal))
+//            jsLlVal = BigDecimal.ZERO;
+//        if(Objects.isNull(slfpxs))
+//            slfpxs = BigDecimal.ZERO;
+//        if(Objects.isNull(kzxs))
+//            kzxs = BigDecimal.ZERO;
+//        if(Objects.isNull(jsCodVal))
+//            jsCodVal = BigDecimal.ZERO;
+//        if(Objects.isNull(zhxs))
+//            zhxs = BigDecimal.ZERO;
+//        if(Objects.isNull(tydl))
+//            tydl = BigDecimal.ZERO;
+//        if(Objects.isNull(yymd) || yymd.compareTo(BigDecimal.ZERO) <= 0)
+//            return null;//除数不能为0
+//        if(Objects.isNull(sxps)){
+//            sxps = BigDecimal.ZERO;
+//        }
+//        //1)计算挟走量
+//        BigDecimal xzl = (((BigDecimal_2.multiply(hycXsyVal).subtract(htfksd)).add(((qycAdVal.add(qycYxyVal)).multiply(xzxs).subtract(htfksd)))).multiply((jzxs.subtract(BigDecimal_1)))).multiply((jsLlVal.multiply(slfpxs))).divide(BigDecimal_1000, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+//        //2)计算碳源投加总量
+//        BigDecimal total = (xzl.multiply(kzxs).subtract((jsLlVal.multiply(slfpxs).multiply(jsCodVal).multiply(zhxs).divide(BigDecimal_1000, NUMBER_SCALE_4, RoundingMode.HALF_UP)))).divide(tydl, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+//        //2024年09月14日15:33:37 计算出来的结果太大,是几千,把第三步公式也加上
+//        //计算加药流量
+//        return DecimalUtils.getNLengthHalfUp(total.divide(yymd, NUMBER_SCALE_10, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_10, RoundingMode.HALF_UP).multiply(sxps), INT_3);
+//    }
 
 
     public String formatList(List<BigDecimal> list) {

+ 1 - 1
slibra-system/src/main/java/com/slibra/business/service/impl/TXinyiMedicineParamServiceImpl.java

@@ -204,7 +204,7 @@ public class TXinyiMedicineParamServiceImpl implements ITXinyiMedicineParamServi
     }
 
 
-    private BigDecimal calculateMedicineByLastRecord(TXinyiMedicineParam param) {
+    public BigDecimal calculateMedicineByLastRecord(TXinyiMedicineParam param) {
         if (Objects.isNull(param)) {
             return null;
         }