Răsfoiți Sursa

计算碳源投加 过程指标和结果 和配置的区间范围做判断处理

王苗苗 1 săptămână în urmă
părinte
comite
ff7b01985c

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

@@ -3,7 +3,6 @@ package com.slibra.business.service.impl;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
 
@@ -303,6 +302,62 @@ public class TXinyiMedicineParamServiceImpl implements ITXinyiMedicineParamServi
         BigDecimal sxps = tXinyiTytjParams.getSxps();
         BigDecimal yymd = tXinyiTytjParams.getYymd();
 
+        //2025年04月27日20:48:07 部分值采用后台配置的范围
+        BigDecimal minJsll = tXinyiTytjParams.getMinJsll();
+        //一号池进水流量
+        if(!Objects.isNull(jsLlOne)){
+            if(!Objects.isNull(minJsll) && jsLlOne.compareTo(minJsll) < 0){
+                log.info("******获取的进水流量一池小于配置的最小值,实时的流量是{},配置的最小流量是{}", jsLlOne, minJsll);
+                jsLlOne = minJsll;
+            }
+            BigDecimal maxJsll = tXinyiTytjParams.getMaxJsll();
+            if(!Objects.isNull(maxJsll) && jsLlOne.compareTo(maxJsll) > 0){
+                log.info("******获取的进水流量一池大于配置的最大值,实时的流量是{},配置的最大流量是{}", jsLlOne, maxJsll);
+                jsLlOne = maxJsll;
+            }
+        }
+        //二号池进水流量
+        if(!Objects.isNull(jsLlTwo)){
+            if(!Objects.isNull(minJsll) && jsLlTwo.compareTo(minJsll) < 0){
+                log.info("******获取的进水流量二池小于配置的最小值,实时的流量是{},配置的最小流量是{}", jsLlTwo, minJsll);
+                jsLlTwo = minJsll;
+            }
+            BigDecimal maxJsll = tXinyiTytjParams.getMaxJsll();
+            if(!Objects.isNull(maxJsll) && jsLlTwo.compareTo(maxJsll) > 0){
+                log.info("******获取的进水流量二池大于配置的最大值,实时的流量是{},配置的最大流量是{}", jsLlTwo, maxJsll);
+                jsLlTwo = maxJsll;
+            }
+        }
+        //一号池进水cod
+        if(!Objects.isNull(jsCodOne)){
+            BigDecimal minJsCod = tXinyiTytjParams.getMinJsCod();
+            if(!Objects.isNull(minJsCod) && jsCodOne.compareTo(minJsCod) < 0){
+                log.info("******获取的进水cod一池小于配置的最小值,实时的进水cod是{},配置的最小进水cod是{}", jsCodOne, minJsCod);
+                jsCodOne = minJsCod;
+            }
+            BigDecimal maxJsCod = tXinyiTytjParams.getMaxJsCod();
+            if(!Objects.isNull(maxJsCod) && jsCodOne.compareTo(maxJsCod) > 0){
+                log.info("******获取的进水cod一池大于配置的最大值,实时的进水cod是{},配置的最大进水cod是{}", jsCodOne, maxJsCod);
+                jsCodOne = maxJsCod;
+            }
+        }
+        //二号池进水cod
+        if(!Objects.isNull(jsCodTwo)){
+            BigDecimal minJsCod = tXinyiTytjParams.getMinJsCod();
+            if(!Objects.isNull(minJsCod) && jsCodTwo.compareTo(minJsCod) < 0){
+                log.info("******获取的进水cod二池小于配置的最小值,实时的进水cod是{},配置的最小进水cod是{}", jsCodTwo, minJsCod);
+                jsCodTwo = minJsCod;
+            }
+            BigDecimal maxJsCod = tXinyiTytjParams.getMaxJsCod();
+            if(!Objects.isNull(maxJsCod) && jsCodTwo.compareTo(maxJsCod) > 0){
+                log.info("******获取的进水cod二池大于配置的最大值,实时的进水cod是{},配置的最大进水cod是{}", jsCodTwo, maxJsCod);
+                jsCodTwo = maxJsCod;
+            }
+        }
+
+
+
+
 
         //计算
         if(!Objects.isNull(type)) {
@@ -316,9 +371,9 @@ public class TXinyiMedicineParamServiceImpl implements ITXinyiMedicineParamServi
                 return medicineRemote;
             }
             //计算1号池的值
-            BigDecimal oneResult = this.getResultByDiff(hycXsyType, hycXsyOne, htfksd1, qycAdType, qycAdOne, qycYxyType, qycYxyOne, xzxs, jzxs, jsLlType, jsLlOne, slfpxs, kzxs1, jsCodType, jsCodOne, zhxs, tydl, "one", yymd, sxps);
+            BigDecimal oneResult = this.getResultByDiff(hycXsyType, hycXsyOne, htfksd1, qycAdType, qycAdOne, qycYxyType, qycYxyOne, xzxs, jzxs, jsLlType, jsLlOne, slfpxs, kzxs1, jsCodType, jsCodOne, zhxs, tydl, "one", yymd, sxps, tXinyiTytjParams);
             //计算二号池的值
-            BigDecimal twoResult = this.getResultByDiff(hycXsyType, hycXsyTwo, htfksd2, qycAdType, qycAdTwo, qycYxyType, qycYxyTwo, xzxs, jzxs, jsLlType, jsLlTwo, slfpxs, kzxs2, jsCodType, jsCodTwo, zhxs, tydl, "two", yymd, sxps);
+            BigDecimal twoResult = this.getResultByDiff(hycXsyType, hycXsyTwo, htfksd2, qycAdType, qycAdTwo, qycYxyType, qycYxyTwo, xzxs, jzxs, jsLlType, jsLlTwo, slfpxs, kzxs2, jsCodType, jsCodTwo, zhxs, tydl, "two", yymd, sxps, tXinyiTytjParams);
             //判断,返回值
             if(0 == type){
                 medicineRemote.setChoosePool(2);
@@ -362,7 +417,7 @@ public class TXinyiMedicineParamServiceImpl implements ITXinyiMedicineParamServi
 
     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) {
+                                       BigDecimal jsCodVal, BigDecimal zhxs, BigDecimal tydl, String whichCZ, BigDecimal yymd, BigDecimal sxps, TXinyiTytjParams tXinyiTytjParams) {
         //2024年09月14日10:26:11  不同池子,根据不同类型,获取最新的数据,计算碳源投加量
         //获取最新的实时数据
         SmartAdd smartAdd = this.frontService.smartAddDataInfo();
@@ -459,6 +514,19 @@ public class TXinyiMedicineParamServiceImpl implements ITXinyiMedicineParamServi
         //计算加药流量
         BigDecimal result = DecimalUtils.getNLengthHalfUp(total.divide(yymd, NUMBER_SCALE_10, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_10, RoundingMode.HALF_UP).multiply(sxps), INT_3);
         log.info("最终的加药流量是{}", result);
+        //计算结果也要根据配置范围,做判断处理
+        if(!Objects.isNull(result)){
+            BigDecimal minAddAmount = tXinyiTytjParams.getMinAddAmount();
+            if(!Objects.isNull(minAddAmount) && result.compareTo(minAddAmount) < 0){
+                log.info("&&&&&&1池通过手动配置得到的碳源投加量为{},比配置的最小值还低,配置的最小值为{}", result, minAddAmount);
+                result = minAddAmount;
+            }
+            BigDecimal maxAddAmount = tXinyiTytjParams.getMaxAddAmount();
+            if(!Objects.isNull(maxAddAmount) && result.compareTo(maxAddAmount) > 0){
+                log.info("&&&&&&1池通过手动配置得到的碳源投加量为{},比配置的最大值还高,配置的最大值为{}", result, maxAddAmount);
+                result = maxAddAmount;
+            }
+        }
         return result;
     }