|
@@ -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;
|
|
|
}
|
|
|
|