|
@@ -44,6 +44,7 @@ import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.slibra.common.constant.MyConstants.*;
|
|
import static com.slibra.common.constant.MyConstants.*;
|
|
|
|
+import static com.slibra.common.constant.MyConstants.INDEX_5;
|
|
import static com.slibra.common.enums.BusinessEnum.BigModelWarningTypeRemarkEnum.*;
|
|
import static com.slibra.common.enums.BusinessEnum.BigModelWarningTypeRemarkEnum.*;
|
|
import static com.slibra.common.enums.BusinessEnum.WarningCategoryEnum.*;
|
|
import static com.slibra.common.enums.BusinessEnum.WarningCategoryEnum.*;
|
|
|
|
|
|
@@ -3991,6 +3992,113 @@ public class AsyncTask {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 2025年04月21日16:07:55 化验室的设备故障报警逻辑调整: 触发条件:连续6小时以上数值,发生无数据、数据为0、数据相同 -- 出水氨氮
|
|
|
|
+ * [化验室]通过输入的值 生成对应类型的报警对象(进水)
|
|
|
|
+ * 化验室只有断点报警,没有连续不变报警(因为化验室数据本身就是4-8个小时一轮 是重复的)
|
|
|
|
+ * @param tenVals
|
|
|
|
+ * @param category
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private WarningMoreExceed handleXinYiWarningRecordRobotMoreAD(BigDecimal csBzz, List<BigDecimal> tenVals, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
|
|
|
|
+ WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
|
|
|
|
+ boolean breakpoint = false;
|
|
|
|
+
|
|
|
|
+ //最新一个小时的值
|
|
|
|
+ BigDecimal currentVal = tenVals.get(0);
|
|
|
|
+
|
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
|
+
|
|
|
|
+ //2025年02月21日10:32:42 在这里处理额外的其他报警项
|
|
|
|
+ //该类型的断点历史报警
|
|
|
|
+ TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode()).status(0).build();
|
|
|
|
+ //是否存在断点 判断是否存在 硝酸盐设备故障
|
|
|
|
+ if(existsRobotDeviceErrorAD(category, tenVals)){
|
|
|
|
+ //关闭同类型的其他报警
|
|
|
|
+ //2025年02月25日14:45:09 不用在此关闭,因为在后续处理的时候,判断是单一报警还是多指标表报警的时候,都做了对应的关闭。
|
|
|
|
+// closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode());
|
|
|
|
+ breakpoint = true;
|
|
|
|
+ //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
+ //插入该类型报警
|
|
|
|
+ warningRecord.setTime(nowDate);
|
|
|
|
+ warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
|
|
|
|
+ warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
|
|
+ warningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode());
|
|
|
|
+ warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
+ warningRecord.setCreateTime(nowDate);
|
|
|
|
+ warningRecord.setWarningVal(currentVal);
|
|
|
|
+ warningRecord.setDesignVal(csBzz);
|
|
|
|
+ warningRecord.setControlVal(csGkz);
|
|
|
|
+ warningRecord.setRemark(THREE_HYS_WARNING.getCode());//化验室
|
|
|
|
+ warningRecord.setCwrwfhz(cwrwfhz);//2025年02月14日10:42:53 具体指标具体计算,由上游传过来。
|
|
|
|
+ warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, false));//根据当前值和类型以及是否超标处理
|
|
|
|
+ //存起来
|
|
|
|
+ warningMoreExceed.setBreakPointWarningRecord(warningRecord);
|
|
|
|
+// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
|
|
+ //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
+// addChatRecordByBreakPointsSingle(warningRecord, tXinyiIndustry, normConfig, category);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ warningMoreExceed.setBreakpoint(breakpoint);
|
|
|
|
+ return warningMoreExceed;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 2025年04月21日16:07:55 化验室的设备故障报警逻辑调整: 触发条件:连续6小时以上数值,发生无数据、数据为0、数据相同 -- 好氧池硝酸盐
|
|
|
|
+ * [化验室]通过输入的值 生成对应类型的报警对象(进水)
|
|
|
|
+ * 化验室只有断点报警,没有连续不变报警(因为化验室数据本身就是4-8个小时一轮 是重复的)
|
|
|
|
+ * @param currentVal
|
|
|
|
+ * @param category
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private WarningMoreExceed handleXinYiWarningRecordRobotMoreXsy(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
|
|
|
|
+ WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
|
|
|
|
+ boolean breakpoint = false;
|
|
|
|
+
|
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
|
+ List<TXinyiRobot> tXinyiRobots = this.xinyiRobotMapper.selectNRobot(INT_6);
|
|
|
|
+ if(CollectionUtils.isEmpty(tXinyiRobots) || tXinyiRobots.size() < INT_6){
|
|
|
|
+ log.error("处理连续检测报警时,获取最近的6条化验数据失败~~~~~~~");
|
|
|
|
+ return new WarningMoreExceed();
|
|
|
|
+ }
|
|
|
|
+ //2025年02月21日10:32:42 在这里处理额外的其他报警项
|
|
|
|
+ //该类型的断点历史报警
|
|
|
|
+ TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode()).status(0).build();
|
|
|
|
+ //是否存在断点 判断是否存在 硝酸盐设备故障
|
|
|
|
+ if(existsRobotDeviceErrorXsy(category, tXinyiRobots)){
|
|
|
|
+ //关闭同类型的其他报警
|
|
|
|
+ //2025年02月25日14:45:09 不用在此关闭,因为在后续处理的时候,判断是单一报警还是多指标表报警的时候,都做了对应的关闭。
|
|
|
|
+// closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode());
|
|
|
|
+ breakpoint = true;
|
|
|
|
+ //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
+ //插入该类型报警
|
|
|
|
+ warningRecord.setTime(nowDate);
|
|
|
|
+ warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
|
|
|
|
+ warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
|
|
+ warningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode());
|
|
|
|
+ warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
+ warningRecord.setCreateTime(nowDate);
|
|
|
|
+ warningRecord.setWarningVal(currentVal);
|
|
|
|
+ warningRecord.setDesignVal(csBzz);
|
|
|
|
+ warningRecord.setControlVal(csGkz);
|
|
|
|
+ warningRecord.setRemark(THREE_HYS_WARNING.getCode());//化验室
|
|
|
|
+ warningRecord.setCwrwfhz(cwrwfhz);//2025年02月14日10:42:53 具体指标具体计算,由上游传过来。
|
|
|
|
+ warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, false));//根据当前值和类型以及是否超标处理
|
|
|
|
+ //存起来
|
|
|
|
+ warningMoreExceed.setBreakPointWarningRecord(warningRecord);
|
|
|
|
+// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
|
|
+ //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
+// addChatRecordByBreakPointsSingle(warningRecord, tXinyiIndustry, normConfig, category);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ warningMoreExceed.setBreakpoint(breakpoint);
|
|
|
|
+ return warningMoreExceed;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* [化验室]通过输入的值 生成对应类型的报警对象(进水)
|
|
* [化验室]通过输入的值 生成对应类型的报警对象(进水)
|
|
* 化验室只有断点报警,没有连续不变报警(因为化验室数据本身就是4-8个小时一轮 是重复的)
|
|
* 化验室只有断点报警,没有连续不变报警(因为化验室数据本身就是4-8个小时一轮 是重复的)
|
|
@@ -5888,6 +5996,105 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ *2025年04月21日16:17:57 判断好氧硝酸盐是否存在设备故障
|
|
|
|
+ * 触发条件:连续6小时以上数值,发生无数据、数据为0、数据相同
|
|
|
|
+ * 判断当前时间和上个时间段的值是否存在断点
|
|
|
|
+ * @param category
|
|
|
|
+ * @param tXinyiRobotList
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private boolean existsRobotDeviceErrorAD(String category, List<BigDecimal> tXinyiRobotList) {
|
|
|
|
+ BigDecimal val0 = tXinyiRobotList.get(INDEX_0);
|
|
|
|
+ BigDecimal val1 = tXinyiRobotList.get(INDEX_1);
|
|
|
|
+ BigDecimal val2 = tXinyiRobotList.get(INDEX_2);
|
|
|
|
+ BigDecimal val3 = tXinyiRobotList.get(INDEX_3);
|
|
|
|
+ BigDecimal val4 = tXinyiRobotList.get(INDEX_4);
|
|
|
|
+ BigDecimal val5 = tXinyiRobotList.get(INDEX_5);
|
|
|
|
+ BigDecimal val6 = tXinyiRobotList.get(INDEX_6);
|
|
|
|
+ BigDecimal val7 = tXinyiRobotList.get(INDEX_7);
|
|
|
|
+ BigDecimal val8 = tXinyiRobotList.get(INDEX_8);
|
|
|
|
+ BigDecimal val9 = tXinyiRobotList.get(INDEX_9);
|
|
|
|
+ if ((Objects.isNull(val0) || BigDecimal.ZERO.compareTo(val0) == 0)
|
|
|
|
+ && (Objects.isNull(val1) || BigDecimal.ZERO.compareTo(val1) == 0)
|
|
|
|
+ && (Objects.isNull(val2) || BigDecimal.ZERO.compareTo(val2) == 0)
|
|
|
|
+ && (Objects.isNull(val3) || BigDecimal.ZERO.compareTo(val3) == 0)
|
|
|
|
+ && (Objects.isNull(val4) || BigDecimal.ZERO.compareTo(val4) == 0)
|
|
|
|
+ && (Objects.isNull(val5) || BigDecimal.ZERO.compareTo(val5) == 0)
|
|
|
|
+ && (Objects.isNull(val6) || BigDecimal.ZERO.compareTo(val6) == 0)
|
|
|
|
+ && (Objects.isNull(val7) || BigDecimal.ZERO.compareTo(val7) == 0)
|
|
|
|
+ && (Objects.isNull(val8) || BigDecimal.ZERO.compareTo(val8) == 0)
|
|
|
|
+ && (Objects.isNull(val9) || BigDecimal.ZERO.compareTo(val9) == 0)
|
|
|
|
+ )
|
|
|
|
+ return true;
|
|
|
|
+ if(!Objects.isNull(val0) && !Objects.isNull(val1) && !Objects.isNull(val2)
|
|
|
|
+ && !Objects.isNull(val3) && !Objects.isNull(val4) && !Objects.isNull(val5)
|
|
|
|
+ && !Objects.isNull(val6) && !Objects.isNull(val7) && !Objects.isNull(val8) && !Objects.isNull(val9)
|
|
|
|
+ && val0.compareTo(val1) == 0 && val0.compareTo(val2) == 0 && val0.compareTo(val3) == 0
|
|
|
|
+ && val0.compareTo(val4) == 0 && val0.compareTo(val5) == 0 && val0.compareTo(val6) == 0
|
|
|
|
+ && val0.compareTo(val7) == 0 && val0.compareTo(val8) == 0 && val0.compareTo(val9) == 0
|
|
|
|
+ )
|
|
|
|
+ return true;
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ *2025年04月21日16:17:57 判断好氧硝酸盐是否存在设备故障
|
|
|
|
+ * 触发条件:连续6小时以上数值,发生无数据、数据为0、数据相同
|
|
|
|
+ * 判断当前时间和上个时间段的值是否存在断点
|
|
|
|
+ * @param category
|
|
|
|
+ * @param tXinyiRobotList
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private boolean existsRobotDeviceErrorXsy(String category, List<TXinyiRobot> tXinyiRobotList) {
|
|
|
|
+ if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_1.getCode().equals(category)){
|
|
|
|
+ BigDecimal no3Hlj1Jqr0 = tXinyiRobotList.get(INDEX_0).getNo3Hlj1Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr1 = tXinyiRobotList.get(INDEX_1).getNo3Hlj1Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr2 = tXinyiRobotList.get(INDEX_2).getNo3Hlj1Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr3 = tXinyiRobotList.get(INDEX_3).getNo3Hlj1Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr4 = tXinyiRobotList.get(INDEX_4).getNo3Hlj1Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr5 = tXinyiRobotList.get(INDEX_5).getNo3Hlj1Jqr();
|
|
|
|
+ if ((Objects.isNull(no3Hlj1Jqr0) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr0) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr1) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr1) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr2) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr2) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr3) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr3) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr4) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr4) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr5) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr5) == 0))
|
|
|
|
+ return true;
|
|
|
|
+ if(!Objects.isNull(no3Hlj1Jqr0) && !Objects.isNull(no3Hlj1Jqr1) && !Objects.isNull(no3Hlj1Jqr2)
|
|
|
|
+ && !Objects.isNull(no3Hlj1Jqr3) && !Objects.isNull(no3Hlj1Jqr4) && !Objects.isNull(no3Hlj1Jqr5)
|
|
|
|
+ && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr1) == 0 && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr2) == 0 && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr3) == 0
|
|
|
|
+ && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr4) == 0 && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr5) == 0)
|
|
|
|
+ return true;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_2.getCode().equals(category)){
|
|
|
|
+ BigDecimal no3Hlj1Jqr0 = tXinyiRobotList.get(INDEX_0).getNo3Hlj2Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr1 = tXinyiRobotList.get(INDEX_1).getNo3Hlj2Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr2 = tXinyiRobotList.get(INDEX_2).getNo3Hlj2Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr3 = tXinyiRobotList.get(INDEX_3).getNo3Hlj2Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr4 = tXinyiRobotList.get(INDEX_4).getNo3Hlj2Jqr();
|
|
|
|
+ BigDecimal no3Hlj1Jqr5 = tXinyiRobotList.get(INDEX_5).getNo3Hlj2Jqr();
|
|
|
|
+ if ((Objects.isNull(no3Hlj1Jqr0) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr0) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr1) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr1) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr2) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr2) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr3) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr3) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr4) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr4) == 0)
|
|
|
|
+ && (Objects.isNull(no3Hlj1Jqr5) || BigDecimal.ZERO.compareTo(no3Hlj1Jqr5) == 0))
|
|
|
|
+ return true;
|
|
|
|
+ if(!Objects.isNull(no3Hlj1Jqr0) && !Objects.isNull(no3Hlj1Jqr1) && !Objects.isNull(no3Hlj1Jqr2)
|
|
|
|
+ && !Objects.isNull(no3Hlj1Jqr3) && !Objects.isNull(no3Hlj1Jqr4) && !Objects.isNull(no3Hlj1Jqr5)
|
|
|
|
+ && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr1) == 0 && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr2) == 0 && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr3) == 0
|
|
|
|
+ && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr4) == 0 && no3Hlj1Jqr0.compareTo(no3Hlj1Jqr5) == 0)
|
|
|
|
+ return true;
|
|
|
|
+ }else{
|
|
|
|
+ log.error("化验室暂时还不支持的报警类型~~~~");
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
*
|
|
*
|
|
* 判断当前时间和上个时间段的值是否存在断点
|
|
* 判断当前时间和上个时间段的值是否存在断点
|
|
@@ -6680,7 +6887,7 @@ public class AsyncTask {
|
|
boolean csADExecute = true;
|
|
boolean csADExecute = true;
|
|
|
|
|
|
//#1好氧硝酸盐
|
|
//#1好氧硝酸盐
|
|
- BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
|
|
|
|
|
|
+ /*BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
|
|
//#2好氧硝酸盐
|
|
//#2好氧硝酸盐
|
|
BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
|
|
BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
|
|
//1#缺氧出-硝酸盐
|
|
//1#缺氧出-硝酸盐
|
|
@@ -6688,7 +6895,7 @@ public class AsyncTask {
|
|
BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
|
|
BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
|
|
//2#缺氧出-硝酸盐
|
|
//2#缺氧出-硝酸盐
|
|
BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
|
|
BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
|
|
- BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
|
|
|
|
|
|
+ BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();*/
|
|
|
|
|
|
//总氮的标准值和管控值
|
|
//总氮的标准值和管控值
|
|
BigDecimal cszzBzz = normConfig.getCszzBzz();
|
|
BigDecimal cszzBzz = normConfig.getCszzBzz();
|
|
@@ -6702,7 +6909,7 @@ public class AsyncTask {
|
|
|
|
|
|
WarningMoreExceed warningMoreExceed = null;
|
|
WarningMoreExceed warningMoreExceed = null;
|
|
if(!Objects.isNull(no3Hlj1Jqr)){
|
|
if(!Objects.isNull(no3Hlj1Jqr)){
|
|
- warningMoreExceed = handleXinYiWarningRecordRobotMore(cszzBzz, no3Hlj1Jqr, cszzGkz, ROBOT_XSY_1.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordRobotMoreXsy(cszzBzz, no3Hlj1Jqr, cszzGkz, ROBOT_XSY_1.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -6711,7 +6918,7 @@ public class AsyncTask {
|
|
|
|
|
|
|
|
|
|
if(!Objects.isNull(no3Hlj2Jqr)){
|
|
if(!Objects.isNull(no3Hlj2Jqr)){
|
|
- warningMoreExceed = handleXinYiWarningRecordRobotMore(cszzBzz, no3Hlj2Jqr, cszzGkz, ROBOT_XSY_2.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordRobotMoreXsy(cszzBzz, no3Hlj2Jqr, cszzGkz, ROBOT_XSY_2.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -6719,25 +6926,47 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- //判断 增加容错
|
|
|
|
- if(Objects.isNull(no3Qyc1Jqr))
|
|
|
|
- no3Qyc1Jqr = BigDecimal.ZERO;
|
|
|
|
- if(Objects.isNull(nh31Jqr))
|
|
|
|
- nh31Jqr = BigDecimal.ZERO;
|
|
|
|
- if(Objects.isNull(no3Hlj1Jqr))
|
|
|
|
- no3Hlj1Jqr = BigDecimal.ZERO;
|
|
|
|
- BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
|
|
|
|
|
|
+ //2025年04月21日17:04:28 逻辑调整,需要取最近的十条数据,计算获取到十个值
|
|
|
|
+ List<BigDecimal> tenVals = new ArrayList<>(10);
|
|
|
|
+ List<TXinyiRobot> tXinyiRobots = this.xinyiRobotMapper.selectNRobot(INT_10);
|
|
|
|
+ if(!CollectionUtils.isEmpty(tXinyiRobots) && tXinyiRobots.size() == INT_10){
|
|
|
|
+ for (TXinyiRobot xinyiRobot : tXinyiRobots) {
|
|
|
|
+ //判断 增加容错
|
|
|
|
+ BigDecimal no3Hlj1JqrTemp = tXinyiRobot.getNo3Hlj1Jqr();
|
|
|
|
+ //#2好氧硝酸盐
|
|
|
|
+ BigDecimal no3Hlj2JqrTemp = tXinyiRobot.getNo3Hlj2Jqr();
|
|
|
|
+ //1#缺氧出-硝酸盐
|
|
|
|
+ BigDecimal no3Qyc1JqrTemp = tXinyiRobot.getNo3Qyc1Jqr();
|
|
|
|
+ BigDecimal nh31JqrTemp = tXinyiRobot.getNh31Jqr();
|
|
|
|
+ //2#缺氧出-硝酸盐
|
|
|
|
+ BigDecimal no3Qyc2JqrTemp = tXinyiRobot.getNo3Qyc2Jqr();
|
|
|
|
+ BigDecimal nh32JqrTemp = tXinyiRobot.getNh32Jqr();
|
|
|
|
+ if(Objects.isNull(no3Qyc1JqrTemp))
|
|
|
|
+ no3Qyc1JqrTemp = BigDecimal.ZERO;
|
|
|
|
+ if(Objects.isNull(nh31JqrTemp))
|
|
|
|
+ nh31JqrTemp = BigDecimal.ZERO;
|
|
|
|
+ if(Objects.isNull(no3Hlj1JqrTemp))
|
|
|
|
+ no3Hlj1JqrTemp = BigDecimal.ZERO;
|
|
|
|
+ BigDecimal anDan1 = no3Qyc1JqrTemp.add(nh31JqrTemp).subtract(no3Hlj1JqrTemp);
|
|
|
|
+
|
|
|
|
+ //判断 增加容错
|
|
|
|
+ if(Objects.isNull(no3Qyc2JqrTemp))
|
|
|
|
+ no3Qyc2JqrTemp = BigDecimal.ZERO;
|
|
|
|
+ if(Objects.isNull(nh32JqrTemp))
|
|
|
|
+ nh32JqrTemp = BigDecimal.ZERO;
|
|
|
|
+ if(Objects.isNull(no3Hlj2JqrTemp))
|
|
|
|
+ no3Hlj2JqrTemp = BigDecimal.ZERO;
|
|
|
|
+ BigDecimal anDan2 = no3Qyc2JqrTemp.add(nh32JqrTemp).subtract(no3Hlj2JqrTemp);
|
|
|
|
+ BigDecimal divide = anDan1.add(anDan2).divide(DECIMAL_2, INT_2, RoundingMode.HALF_UP);
|
|
|
|
+ //2025年04月21日17:22:30 如果计算结果小于0,当0处理
|
|
|
|
+ if(divide.compareTo(BigDecimal.ZERO) < 0)
|
|
|
|
+ divide = BigDecimal.ZERO;
|
|
|
|
+ tenVals.add(divide);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- //判断 增加容错
|
|
|
|
- if(Objects.isNull(no3Qyc2Jqr))
|
|
|
|
- no3Qyc2Jqr = BigDecimal.ZERO;
|
|
|
|
- if(Objects.isNull(nh32Jqr))
|
|
|
|
- nh32Jqr = BigDecimal.ZERO;
|
|
|
|
- if(Objects.isNull(no3Hlj2Jqr))
|
|
|
|
- no3Hlj2Jqr = BigDecimal.ZERO;
|
|
|
|
- BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
|
|
|
|
- BigDecimal divide = anDan1.add(anDan2).divide(DECIMAL_2, INT_2, RoundingMode.HALF_UP);
|
|
|
|
- warningMoreExceed = handleXinYiWarningRecordRobotMore(csadBzz, divide, csadGkz, ROBOT_CS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
|
|
|
|
|
|
+
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordRobotMoreAD(csadBzz, tenVals, csadGkz, ROBOT_CS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|