|
@@ -118,14 +118,14 @@ public class AsyncTask {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
//查询工业库同步任务失败的报警正在进行的数据
|
|
//查询工业库同步任务失败的报警正在进行的数据
|
|
- TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getCode()).status(0).build();
|
|
|
|
- List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);
|
|
|
|
|
|
+ /*TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getCode()).status(0).build();
|
|
|
|
+ List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);*/
|
|
int hours = DateUtils.differentHoursByMillisecond(nowDate, warningDate);
|
|
int hours = DateUtils.differentHoursByMillisecond(nowDate, warningDate);
|
|
if(hours == 0){
|
|
if(hours == 0){
|
|
//查看是否有正在进行的同步任务失败的报警
|
|
//查看是否有正在进行的同步任务失败的报警
|
|
- if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
|
|
|
+ /*if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
closeWarning(tXinyiWarningRecords.get(0));
|
|
closeWarning(tXinyiWarningRecords.get(0));
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
//正常的业务数据报警
|
|
//正常的业务数据报警
|
|
//水质报警
|
|
//水质报警
|
|
//2025年02月20日10:52:31 在具体的报警类型中增加新的判断 仪表故障 数据异常等
|
|
//2025年02月20日10:52:31 在具体的报警类型中增加新的判断 仪表故障 数据异常等
|
|
@@ -133,8 +133,11 @@ public class AsyncTask {
|
|
//2024年5月28日14:14:26 下面是新增的 生化报警处理
|
|
//2024年5月28日14:14:26 下面是新增的 生化报警处理
|
|
// this.handleSHWarning(tXinyiIndustry, normConfig, xinyiCalculate);
|
|
// this.handleSHWarning(tXinyiIndustry, normConfig, xinyiCalculate);
|
|
}else{
|
|
}else{
|
|
|
|
+ log.info("同步工业库任务获取最新的数据失败,无法处理报警信息。");
|
|
|
|
+ log.error("同步工业库任务获取最新的数据失败,无法处理报警信息。");
|
|
|
|
+ //todo 发送短信
|
|
//查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
|
|
//查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
|
|
- if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
|
|
|
+ /*if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
warningRecord.setType(0);
|
|
warningRecord.setType(0);
|
|
String msg = BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getMsg();
|
|
String msg = BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getMsg();
|
|
@@ -147,7 +150,7 @@ public class AsyncTask {
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
}else{
|
|
}else{
|
|
log.info("工业库报警的时候,发现同步工业库任务挂掉了,并且已经有该类型报警了,不做任何处理");
|
|
log.info("工业库报警的时候,发现同步工业库任务挂掉了,并且已经有该类型报警了,不做任何处理");
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
//将其他类型的报警全部关闭
|
|
//将其他类型的报警全部关闭
|
|
//2025年02月27日17:09:56 此场景不关闭其他报警
|
|
//2025年02月27日17:09:56 此场景不关闭其他报警
|
|
// closeOtherWarningsBySymbol(null);
|
|
// closeOtherWarningsBySymbol(null);
|
|
@@ -1447,7 +1450,7 @@ public class AsyncTask {
|
|
boolean jsSSExecute = true;
|
|
boolean jsSSExecute = true;
|
|
|
|
|
|
//出水cod超标报警
|
|
//出水cod超标报警
|
|
- WarningMoreExceed warningMoreExceed = handleXinYiWarningsCsMore(csCod, CS_COD.getCode());
|
|
|
|
|
|
+ WarningMoreExceed warningMoreExceed = handleXinYiWarningsCsMore(cscodBzz, csCod, cscodGkz, CS_COD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsCod(), jsslSjz, normConfig.getJscodSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -1459,7 +1462,7 @@ public class AsyncTask {
|
|
|
|
|
|
//出水总磷超标报警
|
|
//出水总磷超标报警
|
|
BigDecimal csTp = tXinyiIndustry.getCsTp();
|
|
BigDecimal csTp = tXinyiIndustry.getCsTp();
|
|
- warningMoreExceed = handleXinYiWarningsCsMore(csTp, BusinessEnum.WarningCategoryEnum.CS_ZL.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningsCsMore(cszlBzz, csTp, cszlGkz, BusinessEnum.WarningCategoryEnum.CS_ZL.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -1472,7 +1475,7 @@ public class AsyncTask {
|
|
|
|
|
|
//出水总氮超标报警
|
|
//出水总氮超标报警
|
|
BigDecimal csTn = tXinyiIndustry.getCsTn();
|
|
BigDecimal csTn = tXinyiIndustry.getCsTn();
|
|
- warningMoreExceed = handleXinYiWarningsCsMore(csTn, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningsCsMore(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.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());
|
|
@@ -1484,7 +1487,7 @@ public class AsyncTask {
|
|
|
|
|
|
//出水氨氮超标报警
|
|
//出水氨氮超标报警
|
|
BigDecimal csNh3 = tXinyiIndustry.getCsNh3();
|
|
BigDecimal csNh3 = tXinyiIndustry.getCsNh3();
|
|
- warningMoreExceed = handleXinYiWarningsCsMore(csNh3, BusinessEnum.WarningCategoryEnum.CS_AD.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningsCsMore(csadBzz, csNh3, csadGkz, BusinessEnum.WarningCategoryEnum.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());
|
|
@@ -1496,7 +1499,7 @@ public class AsyncTask {
|
|
|
|
|
|
//出水SS超标报警
|
|
//出水SS超标报警
|
|
BigDecimal csSS = tXinyiIndustry.getCsSs();
|
|
BigDecimal csSS = tXinyiIndustry.getCsSs();
|
|
- warningMoreExceed = handleXinYiWarningsCsMore(csSS, BusinessEnum.WarningCategoryEnum.CS_SS.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningsCsMore(csSSBzz, csSS, csssGkz, BusinessEnum.WarningCategoryEnum.CS_SS.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsSs(), jsslSjz, normConfig.getJsssSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -1510,7 +1513,7 @@ public class AsyncTask {
|
|
//进水相关报警
|
|
//进水相关报警
|
|
//进水总磷超标报警
|
|
//进水总磷超标报警
|
|
BigDecimal jsTp = tXinyiIndustry.getJsTp();
|
|
BigDecimal jsTp = tXinyiIndustry.getJsTp();
|
|
- warningMoreExceed = handleXinYiWarningRecordJSMore(jsTp, BusinessEnum.WarningCategoryEnum.JS_ZL.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordJSMore(jszlSjz, jsTp, BusinessEnum.WarningCategoryEnum.JS_ZL.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -1522,7 +1525,7 @@ public class AsyncTask {
|
|
|
|
|
|
//进水COD超标报警
|
|
//进水COD超标报警
|
|
BigDecimal jsCod = tXinyiIndustry.getJsCod();
|
|
BigDecimal jsCod = tXinyiIndustry.getJsCod();
|
|
- warningMoreExceed = handleXinYiWarningRecordJSMore(jsCod, BusinessEnum.WarningCategoryEnum.JS_COD.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordJSMore(jscodSjz, jsCod, BusinessEnum.WarningCategoryEnum.JS_COD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsCod(), jsslSjz, normConfig.getJscodSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -1534,7 +1537,7 @@ public class AsyncTask {
|
|
|
|
|
|
//进水总氮超标报警
|
|
//进水总氮超标报警
|
|
BigDecimal jsTn = tXinyiIndustry.getJsTn();
|
|
BigDecimal jsTn = tXinyiIndustry.getJsTn();
|
|
- warningMoreExceed = handleXinYiWarningRecordJSMore(jsTn, BusinessEnum.WarningCategoryEnum.JS_ZD.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordJSMore(jszdSjz, jsTn, BusinessEnum.WarningCategoryEnum.JS_ZD.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());
|
|
@@ -1546,7 +1549,7 @@ public class AsyncTask {
|
|
|
|
|
|
//进水氨氮超标报警
|
|
//进水氨氮超标报警
|
|
BigDecimal jsNh3 = tXinyiIndustry.getJsNh3();
|
|
BigDecimal jsNh3 = tXinyiIndustry.getJsNh3();
|
|
- warningMoreExceed = handleXinYiWarningRecordJSMore(jsNh3, BusinessEnum.WarningCategoryEnum.JS_AD.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordJSMore(jsadSjz, jsNh3, BusinessEnum.WarningCategoryEnum.JS_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());
|
|
@@ -1558,7 +1561,7 @@ public class AsyncTask {
|
|
|
|
|
|
//进水SS超标报警
|
|
//进水SS超标报警
|
|
BigDecimal jsSS = tXinyiIndustry.getJsSs();
|
|
BigDecimal jsSS = tXinyiIndustry.getJsSs();
|
|
- warningMoreExceed = handleXinYiWarningRecordJSMore(jsSS, BusinessEnum.WarningCategoryEnum.JS_SS.getCode());
|
|
|
|
|
|
+ warningMoreExceed = handleXinYiWarningRecordJSMore(jsSSSjz, jsSS, BusinessEnum.WarningCategoryEnum.JS_SS.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsSs(), jsslSjz, normConfig.getJsssSjz()));
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
if(warningMoreExceed.isBreakpoint()){
|
|
breakpointCount++;
|
|
breakpointCount++;
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
|
|
@@ -1655,10 +1658,37 @@ public class AsyncTask {
|
|
if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
//新增的断点的数据全部都报警
|
|
//新增的断点的数据全部都报警
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : breakPointList) {
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : breakPointList) {
|
|
|
|
+ String category = tXinyiWarningRecord.getCategory();
|
|
|
|
+ //判断那些指标不能再次执行
|
|
|
|
+ //额外判断当前的异常是哪个指标,并处理标识
|
|
|
|
+ if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
|
|
|
|
+ csCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
|
|
|
|
+ csZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
|
|
|
|
+ csZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
|
|
|
|
+ csADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
|
|
|
|
+ csSSExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
|
|
|
|
+ jsZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
|
|
|
|
+ jsCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
|
|
|
|
+ jsZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
|
|
|
|
+ jsADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
|
|
|
|
+ jsSSExecute = false;
|
|
|
|
+ }else{
|
|
|
|
+ log.error("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ }
|
|
//关闭该指标的其他类型的报警
|
|
//关闭该指标的其他类型的报警
|
|
- closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
|
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
- tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
|
|
|
|
|
|
+ tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
@@ -1672,11 +1702,38 @@ public class AsyncTask {
|
|
//插入新的报警
|
|
//插入新的报警
|
|
if(!CollectionUtils.isEmpty(breakPointListNew)){
|
|
if(!CollectionUtils.isEmpty(breakPointListNew)){
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : breakPointListNew) {
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : breakPointListNew) {
|
|
|
|
+ String category = tXinyiWarningRecord.getCategory();
|
|
|
|
+ //判断那些指标不能再次执行
|
|
|
|
+ //额外判断当前的异常是哪个指标,并处理标识
|
|
|
|
+ if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
|
|
|
|
+ csCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
|
|
|
|
+ csZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
|
|
|
|
+ csZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
|
|
|
|
+ csADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
|
|
|
|
+ csSSExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
|
|
|
|
+ jsZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
|
|
|
|
+ jsCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
|
|
|
|
+ jsZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
|
|
|
|
+ jsADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
|
|
|
|
+ jsSSExecute = false;
|
|
|
|
+ }else{
|
|
|
|
+ log.error("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ }
|
|
//关闭该指标的其他类型的报警
|
|
//关闭该指标的其他类型的报警
|
|
- closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
|
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
//新插入
|
|
//新插入
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
- tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
|
|
|
|
|
|
+ tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
@@ -1692,7 +1749,8 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//如果出现多指标问题,后续的报警不再处理
|
|
//如果出现多指标问题,后续的报警不再处理
|
|
- return;
|
|
|
|
|
|
+// return;
|
|
|
|
+ //2025年03月03日16:07:09 不是其他报警都不执行,只是出现异常的问题不再进行报警,其他的还需要再次报警
|
|
}
|
|
}
|
|
|
|
|
|
//连续不变
|
|
//连续不变
|
|
@@ -1779,10 +1837,37 @@ public class AsyncTask {
|
|
if(CollectionUtils.isEmpty(tXinyiWarningNoChangeMoreRecords)){
|
|
if(CollectionUtils.isEmpty(tXinyiWarningNoChangeMoreRecords)){
|
|
//新增的断点的数据全部都报警
|
|
//新增的断点的数据全部都报警
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : noChangeList) {
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : noChangeList) {
|
|
|
|
+ String category = tXinyiWarningRecord.getCategory();
|
|
|
|
+ //判断那些指标不能再次执行
|
|
|
|
+ //额外判断当前的异常是哪个指标,并处理标识
|
|
|
|
+ if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
|
|
|
|
+ csCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
|
|
|
|
+ csZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
|
|
|
|
+ csZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
|
|
|
|
+ csADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
|
|
|
|
+ csSSExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
|
|
|
|
+ jsZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
|
|
|
|
+ jsCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
|
|
|
|
+ jsZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
|
|
|
|
+ jsADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
|
|
|
|
+ jsSSExecute = false;
|
|
|
|
+ }else{
|
|
|
|
+ log.error("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ }
|
|
//关闭该指标的其他类型的报警
|
|
//关闭该指标的其他类型的报警
|
|
- closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
|
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
- tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
|
|
|
|
|
|
+ tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
@@ -1796,11 +1881,38 @@ public class AsyncTask {
|
|
//插入新的报警
|
|
//插入新的报警
|
|
if(!CollectionUtils.isEmpty(noChangeListNew)){
|
|
if(!CollectionUtils.isEmpty(noChangeListNew)){
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : noChangeListNew) {
|
|
for (TXinyiWarningRecord tXinyiWarningRecord : noChangeListNew) {
|
|
|
|
+ String category = tXinyiWarningRecord.getCategory();
|
|
|
|
+ //判断那些指标不能再次执行
|
|
|
|
+ //额外判断当前的异常是哪个指标,并处理标识
|
|
|
|
+ if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
|
|
|
|
+ csCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
|
|
|
|
+ csZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
|
|
|
|
+ csZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
|
|
|
|
+ csADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
|
|
|
|
+ csSSExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
|
|
|
|
+ jsZLExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
|
|
|
|
+ jsCodExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
|
|
|
|
+ jsZDExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
|
|
|
|
+ jsADExecute = false;
|
|
|
|
+ }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
|
|
|
|
+ jsSSExecute = false;
|
|
|
|
+ }else{
|
|
|
|
+ log.error("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
|
|
|
|
+ }
|
|
//关闭该指标的其他类型的报警
|
|
//关闭该指标的其他类型的报警
|
|
- closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
|
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
//新插入
|
|
//新插入
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
//原来集合里存放的都是单指标异常 下面2个值需要重新赋值
|
|
- tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
|
|
|
|
|
|
+ tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
@@ -1816,7 +1928,9 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//如果出现多指标问题,后续的报警不再处理
|
|
//如果出现多指标问题,后续的报警不再处理
|
|
- return;
|
|
|
|
|
|
+// return;
|
|
|
|
+ //2025年03月03日16:07:09 不是其他报警都不执行,只是出现异常的问题不再进行报警,其他的还需要再次报警
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
//开始走正常的水质报警 + 突变
|
|
//开始走正常的水质报警 + 突变
|
|
@@ -2410,7 +2524,7 @@ public class AsyncTask {
|
|
* 2025年02月20日11:15:05 返回map 分别是是否断点 是否连续不变
|
|
* 2025年02月20日11:15:05 返回map 分别是是否断点 是否连续不变
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private WarningMoreExceed handleXinYiWarningsCsMore(BigDecimal currentVal, String category) {
|
|
|
|
|
|
+ private WarningMoreExceed handleXinYiWarningsCsMore(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
|
|
WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
|
|
WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
|
|
boolean breakpoint = false;
|
|
boolean breakpoint = false;
|
|
boolean noChange = false;
|
|
boolean noChange = false;
|
|
@@ -2434,8 +2548,7 @@ public class AsyncTask {
|
|
breakpoint = true;
|
|
breakpoint = true;
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode()).status(0).build();
|
|
TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode()).status(0).build();
|
|
- warningRecord.setType(0);
|
|
|
|
- warningRecord.setCategory(category);
|
|
|
|
|
|
+
|
|
warningRecord.setTime(nowDate);
|
|
warningRecord.setTime(nowDate);
|
|
warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
|
|
warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
|
|
warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
@@ -2443,6 +2556,12 @@ public class AsyncTask {
|
|
warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecord.setCreateTime(nowDate);
|
|
warningRecord.setCreateTime(nowDate);
|
|
warningRecord.setWarningVal(currentVal);
|
|
warningRecord.setWarningVal(currentVal);
|
|
|
|
+ warningRecord.setDesignVal(csBzz);
|
|
|
|
+ warningRecord.setControlVal(csGkz);
|
|
|
|
+ warningRecord.setCwrwfhz(cwrwfhz);
|
|
|
|
+ warningRecord.setRemark(ZERO_SZ_WARNING.getCode());
|
|
|
|
+ warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, false));//根据当前值和类型以及是否超标处理
|
|
|
|
+ //存放起来
|
|
warningMoreExceed.setBreakPointWarningRecord(warningRecord);
|
|
warningMoreExceed.setBreakPointWarningRecord(warningRecord);
|
|
//这里不报警 需要根据优先级报警
|
|
//这里不报警 需要根据优先级报警
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
@@ -2464,8 +2583,6 @@ public class AsyncTask {
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
//该类型的连续不变报警
|
|
//该类型的连续不变报警
|
|
TXinyiWarningRecord warningRecordNoChangeSingle = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getCode()).status(0).build();
|
|
TXinyiWarningRecord warningRecordNoChangeSingle = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getCode()).status(0).build();
|
|
- warningRecordNoChangeSingle.setType(0);
|
|
|
|
- warningRecordNoChangeSingle.setCategory(category);
|
|
|
|
warningRecordNoChangeSingle.setTime(nowDate);
|
|
warningRecordNoChangeSingle.setTime(nowDate);
|
|
warningRecordNoChangeSingle.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getMsg());
|
|
warningRecordNoChangeSingle.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getMsg());
|
|
warningRecordNoChangeSingle.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
warningRecordNoChangeSingle.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
@@ -2473,6 +2590,12 @@ public class AsyncTask {
|
|
warningRecordNoChangeSingle.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordNoChangeSingle.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordNoChangeSingle.setCreateTime(nowDate);
|
|
warningRecordNoChangeSingle.setCreateTime(nowDate);
|
|
warningRecordNoChangeSingle.setWarningVal(currentVal);
|
|
warningRecordNoChangeSingle.setWarningVal(currentVal);
|
|
|
|
+ warningRecordNoChangeSingle.setDesignVal(csBzz);
|
|
|
|
+ warningRecordNoChangeSingle.setControlVal(csGkz);
|
|
|
|
+ warningRecordNoChangeSingle.setCwrwfhz(cwrwfhz);
|
|
|
|
+ warningRecordNoChangeSingle.setRemark(ZERO_SZ_WARNING.getCode());
|
|
|
|
+ warningRecordNoChangeSingle.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, false));//根据当前值和类型以及是否超标处理
|
|
|
|
+ //存放起来
|
|
warningMoreExceed.setNoChangeWarningRecord(warningRecordNoChangeSingle);
|
|
warningMoreExceed.setNoChangeWarningRecord(warningRecordNoChangeSingle);
|
|
//
|
|
//
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordNoChangeSingle);
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordNoChangeSingle);
|
|
@@ -2529,8 +2652,6 @@ public class AsyncTask {
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
- warningRecordYCSG.setType(0);
|
|
|
|
- warningRecordYCSG.setCategory(category);
|
|
|
|
warningRecordYCSG.setTime(nowDate);
|
|
warningRecordYCSG.setTime(nowDate);
|
|
warningRecordYCSG.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
|
|
warningRecordYCSG.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
|
|
warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
@@ -2538,13 +2659,18 @@ public class AsyncTask {
|
|
warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordYCSG.setCreateTime(nowDate);
|
|
warningRecordYCSG.setCreateTime(nowDate);
|
|
warningRecordYCSG.setWarningVal(currentVal);
|
|
warningRecordYCSG.setWarningVal(currentVal);
|
|
|
|
+ warningRecordYCSG.setDesignVal(csBzz);
|
|
|
|
+ warningRecordYCSG.setControlVal(csGkz);
|
|
|
|
+ warningRecordYCSG.setRemark(ZERO_SZ_WARNING.getCode());
|
|
|
|
+ warningRecordYCSG.setCwrwfhz(cwrwfhz);
|
|
|
|
+ warningRecordYCSG.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
|
|
addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
|
|
}else{
|
|
}else{
|
|
log.info("工业库报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
|
|
log.info("工业库报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
|
|
}
|
|
}
|
|
- log.info("工业库报警的时候,发现存在异常升高的报警,后续同指标报警不再处理");
|
|
|
|
|
|
+ log.info("工业库报警的时候,发现存在{}异常升高的报警,后续同指标报警不再处理", category);
|
|
return;
|
|
return;
|
|
}else{//不存在 查看历史是否有报警,有的话关闭
|
|
}else{//不存在 查看历史是否有报警,有的话关闭
|
|
if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
@@ -2554,41 +2680,42 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
|
|
|
|
//单点突变-异常偏低报警
|
|
//单点突变-异常偏低报警
|
|
- TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
|
|
|
|
- List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
|
|
|
|
- //是否存在异常偏低的问题
|
|
|
|
- if(!Objects.isNull(tXinyiIndustry1)){
|
|
|
|
- //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
|
|
|
|
- BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, csBzz);
|
|
|
|
- if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
|
- //关闭同类型的其他报警
|
|
|
|
- closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
- //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
- if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
- //插入该类型报警
|
|
|
|
- warningRecordYCPD.setType(0);
|
|
|
|
- warningRecordYCPD.setCategory(category);
|
|
|
|
- warningRecordYCPD.setTime(nowDate);
|
|
|
|
- warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
|
|
|
|
- warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
|
|
- warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
- warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
- warningRecordYCPD.setCreateTime(nowDate);
|
|
|
|
- warningRecordYCPD.setWarningVal(currentVal);
|
|
|
|
- this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
|
|
|
|
- //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
- addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
|
|
|
|
- }else{
|
|
|
|
- log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
|
- }
|
|
|
|
- log.info("工业库报警的时候,发现存在异常偏低的报警,后续同指标报警不再处理");
|
|
|
|
- return;
|
|
|
|
- }else{//不存在 查看历史是否有报警,有的话关闭
|
|
|
|
- if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
- closeWarning(tXinyiNoChangeYCPDRecords.get(0));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //2025年03月03日15:00:55 异常偏低的报警暂时不需要了
|
|
|
|
+// TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
|
|
|
|
+// List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
|
|
|
|
+// //是否存在异常偏低的问题
|
|
|
|
+// if(!Objects.isNull(tXinyiIndustry1)){
|
|
|
|
+// //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
|
|
|
|
+// BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, csBzz);
|
|
|
|
+// if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
|
+// //关闭同类型的其他报警
|
|
|
|
+// closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
+// //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
+// if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
+// //插入该类型报警
|
|
|
|
+// warningRecordYCPD.setType(0);
|
|
|
|
+// warningRecordYCPD.setCategory(category);
|
|
|
|
+// warningRecordYCPD.setTime(nowDate);
|
|
|
|
+// warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
|
|
|
|
+// warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
|
|
+// warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
+// warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
+// warningRecordYCPD.setCreateTime(nowDate);
|
|
|
|
+// warningRecordYCPD.setWarningVal(currentVal);
|
|
|
|
+// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
|
|
|
|
+// //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
+// addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
|
|
|
|
+// }else{
|
|
|
|
+// log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
|
+// }
|
|
|
|
+// log.info("工业库报警的时候,发现存在{}异常偏低的报警,后续同指标报警不再处理", category);
|
|
|
|
+// return;
|
|
|
|
+// }else{//不存在 查看历史是否有报警,有的话关闭
|
|
|
|
+// if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
+// closeWarning(tXinyiNoChangeYCPDRecords.get(0));
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
|
|
//下面是最原始的处理 超标准 超管控报警
|
|
//下面是最原始的处理 超标准 超管控报警
|
|
BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
|
|
BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
|
|
@@ -2772,7 +2899,7 @@ public class AsyncTask {
|
|
* @param category
|
|
* @param category
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private WarningMoreExceed handleXinYiWarningRecordJSMore(BigDecimal currentVal, String category) {
|
|
|
|
|
|
+ private WarningMoreExceed handleXinYiWarningRecordJSMore(BigDecimal jsBzz, BigDecimal currentVal, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
|
|
WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
|
|
WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
|
|
boolean breakpoint = false;
|
|
boolean breakpoint = false;
|
|
boolean noChange = false;
|
|
boolean noChange = false;
|
|
@@ -2797,8 +2924,6 @@ public class AsyncTask {
|
|
breakpoint = true;
|
|
breakpoint = true;
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
- warningRecord.setType(0);
|
|
|
|
- warningRecord.setCategory(category);
|
|
|
|
warningRecord.setTime(nowDate);
|
|
warningRecord.setTime(nowDate);
|
|
warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
|
|
warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
|
|
warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
|
|
warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
|
|
@@ -2806,6 +2931,11 @@ public class AsyncTask {
|
|
warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecord.setCreateTime(nowDate);
|
|
warningRecord.setCreateTime(nowDate);
|
|
warningRecord.setWarningVal(currentVal);
|
|
warningRecord.setWarningVal(currentVal);
|
|
|
|
+ warningRecord.setDesignVal(jsBzz);
|
|
|
|
+ warningRecord.setRemark(ZERO_SZ_WARNING.getCode());
|
|
|
|
+ warningRecord.setCwrwfhz(cwrwfhz);
|
|
|
|
+ warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
|
|
|
|
+ //存起来
|
|
warningMoreExceed.setBreakPointWarningRecord(warningRecord);
|
|
warningMoreExceed.setBreakPointWarningRecord(warningRecord);
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
@@ -2834,6 +2964,11 @@ public class AsyncTask {
|
|
warningRecordNoChangeSingle.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordNoChangeSingle.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordNoChangeSingle.setCreateTime(nowDate);
|
|
warningRecordNoChangeSingle.setCreateTime(nowDate);
|
|
warningRecordNoChangeSingle.setWarningVal(currentVal);
|
|
warningRecordNoChangeSingle.setWarningVal(currentVal);
|
|
|
|
+ warningRecord.setDesignVal(jsBzz);
|
|
|
|
+ warningRecord.setRemark(ZERO_SZ_WARNING.getCode());
|
|
|
|
+ warningRecord.setCwrwfhz(cwrwfhz);
|
|
|
|
+ warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
|
|
|
|
+ //存起来
|
|
warningMoreExceed.setNoChangeWarningRecord(warningRecordNoChangeSingle);
|
|
warningMoreExceed.setNoChangeWarningRecord(warningRecordNoChangeSingle);
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordNoChangeSingle);
|
|
// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordNoChangeSingle);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
@@ -2936,8 +3071,6 @@ public class AsyncTask {
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
- warningRecordYCSG.setType(0);
|
|
|
|
- warningRecordYCSG.setCategory(category);
|
|
|
|
warningRecordYCSG.setTime(nowDate);
|
|
warningRecordYCSG.setTime(nowDate);
|
|
warningRecordYCSG.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
|
|
warningRecordYCSG.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
|
|
warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
|
|
warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
|
|
@@ -2945,12 +3078,19 @@ public class AsyncTask {
|
|
warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
warningRecordYCSG.setCreateTime(nowDate);
|
|
warningRecordYCSG.setCreateTime(nowDate);
|
|
warningRecordYCSG.setWarningVal(currentVal);
|
|
warningRecordYCSG.setWarningVal(currentVal);
|
|
|
|
+ warningRecordYCSG.setDesignVal(jsBzz);
|
|
|
|
+ warningRecordYCSG.setRemark(ZERO_SZ_WARNING.getCode());
|
|
|
|
+ warningRecordYCSG.setCwrwfhz(cwrwfhz);
|
|
|
|
+ warningRecordYCSG.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
|
|
addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
|
|
}else{
|
|
}else{
|
|
log.info("工业库报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
|
|
log.info("工业库报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
|
|
}
|
|
}
|
|
|
|
+ //后续的报警不再进行
|
|
|
|
+ log.info("工业库报警的时候,发现存在{}异常升高的报警,后续报警不再处理", category);
|
|
|
|
+ return;
|
|
}else{//不存在 查看历史是否有报警,有的话关闭
|
|
}else{//不存在 查看历史是否有报警,有的话关闭
|
|
if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCSGRecords.get(0);
|
|
TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCSGRecords.get(0);
|
|
@@ -2964,44 +3104,47 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
|
|
|
|
//单点突变-异常偏低报警
|
|
//单点突变-异常偏低报警
|
|
- TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
|
|
|
|
- List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
|
|
|
|
- //是否存在异常偏低的问题
|
|
|
|
- if(!Objects.isNull(tXinyiIndustry1)){
|
|
|
|
- //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
|
|
|
|
- BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, jsBzz);
|
|
|
|
- if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
|
- //关闭同类型的其他报警
|
|
|
|
- closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
- //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
- if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
- //插入该类型报警
|
|
|
|
- warningRecordYCPD.setType(0);
|
|
|
|
- warningRecordYCPD.setCategory(category);
|
|
|
|
- warningRecordYCPD.setTime(nowDate);
|
|
|
|
- warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
|
|
|
|
- warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
|
|
|
|
- warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
- warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
- warningRecordYCPD.setCreateTime(nowDate);
|
|
|
|
- warningRecordYCPD.setWarningVal(currentVal);
|
|
|
|
- this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
|
|
|
|
- //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
- addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
|
|
|
|
- }else{
|
|
|
|
- log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
|
- }
|
|
|
|
- }else{//不存在 查看历史是否有报警,有的话关闭
|
|
|
|
- if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
- TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCPDRecords.get(0);
|
|
|
|
- warningRecordExists.setStatus(2);
|
|
|
|
- warningRecordExists.setOffTime(nowDate);
|
|
|
|
- warningRecordExists.setUpdateTime(nowDate);
|
|
|
|
- warningRecordExists.setUpdateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
- this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(warningRecordExists);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //2025年03月03日15:00:55 异常偏低的报警暂时不需要了
|
|
|
|
+// TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
|
|
|
|
+// List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
|
|
|
|
+// //是否存在异常偏低的问题
|
|
|
|
+// if(!Objects.isNull(tXinyiIndustry1)){
|
|
|
|
+// //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
|
|
|
|
+// BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, jsBzz);
|
|
|
|
+// if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
|
+// //关闭同类型的其他报警
|
|
|
|
+// closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
+// //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
+// if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
+// //插入该类型报警
|
|
|
|
+// warningRecordYCPD.setType(0);
|
|
|
|
+// warningRecordYCPD.setCategory(category);
|
|
|
|
+// warningRecordYCPD.setTime(nowDate);
|
|
|
|
+// warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
|
|
|
|
+// warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
|
|
|
|
+// warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
+// warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
+// warningRecordYCPD.setCreateTime(nowDate);
|
|
|
|
+// warningRecordYCPD.setWarningVal(currentVal);
|
|
|
|
+// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
|
|
|
|
+// //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
+// addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
|
|
|
|
+// }else{
|
|
|
|
+// log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
|
+// }
|
|
|
|
+// //后续的报警不再进行
|
|
|
|
+// return;
|
|
|
|
+// }else{//不存在 查看历史是否有报警,有的话关闭
|
|
|
|
+// if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
+// TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCPDRecords.get(0);
|
|
|
|
+// warningRecordExists.setStatus(2);
|
|
|
|
+// warningRecordExists.setOffTime(nowDate);
|
|
|
|
+// warningRecordExists.setUpdateTime(nowDate);
|
|
|
|
+// warningRecordExists.setUpdateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
+// this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(warningRecordExists);
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
|
|
|
|
|
|
BigDecimal multiply = jsBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
|
|
BigDecimal multiply = jsBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
|
|
@@ -4088,19 +4231,23 @@ public class AsyncTask {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
//查询工业库同步任务失败的报警正在进行的数据
|
|
//查询工业库同步任务失败的报警正在进行的数据
|
|
- TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getCode()).status(0).build();
|
|
|
|
- List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);
|
|
|
|
|
|
+ //2025年03月03日15:05:21 同步任务的报警不需要展示 后期考虑短信或者其他方式报警
|
|
|
|
+ /*TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getCode()).status(0).build();
|
|
|
|
+ List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);*/
|
|
int hours = DateUtils.differentHoursByMillisecond(nowDate, warningDate);
|
|
int hours = DateUtils.differentHoursByMillisecond(nowDate, warningDate);
|
|
if(hours == 0){
|
|
if(hours == 0){
|
|
//查看是否有正在进行的同步任务失败的报警
|
|
//查看是否有正在进行的同步任务失败的报警
|
|
- if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
|
|
|
+ /*if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
closeWarning(tXinyiWarningRecords.get(0));
|
|
closeWarning(tXinyiWarningRecords.get(0));
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
//正常的业务数据报警
|
|
//正常的业务数据报警
|
|
robotWarningDetail(tXinyiRobot, normConfig, tXinyiIndustry);
|
|
robotWarningDetail(tXinyiRobot, normConfig, tXinyiIndustry);
|
|
}else{
|
|
}else{
|
|
|
|
+ log.info("同步化验室任务获取最新的数据失败,无法处理报警信息。");
|
|
|
|
+ log.error("同步化验室任务获取最新的数据失败,无法处理报警信息。");
|
|
|
|
+ //todo 发送短信
|
|
//查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
|
|
//查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
|
|
- if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
|
|
|
+ /*if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
//插入该类型报警
|
|
//插入该类型报警
|
|
warningRecord.setType(0);
|
|
warningRecord.setType(0);
|
|
String msg = BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getMsg();
|
|
String msg = BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getMsg();
|
|
@@ -4113,7 +4260,7 @@ public class AsyncTask {
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
|
|
}else{
|
|
}else{
|
|
log.info("化验室报警的时候,发现同步化验室同步定时任务挂掉了,并且已经有该类型报警了,不做任何处理");
|
|
log.info("化验室报警的时候,发现同步化验室同步定时任务挂掉了,并且已经有该类型报警了,不做任何处理");
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
//将其他类型的报警全部关闭
|
|
//将其他类型的报警全部关闭
|
|
//2025年02月27日17:35:37 此场景不关闭其他报警
|
|
//2025年02月27日17:35:37 此场景不关闭其他报警
|
|
// closeOtherWarningsBySymbol(null);
|
|
// closeOtherWarningsBySymbol(null);
|
|
@@ -4489,41 +4636,42 @@ public class AsyncTask {
|
|
}
|
|
}
|
|
|
|
|
|
//单点突变-异常偏低报警
|
|
//单点突变-异常偏低报警
|
|
- TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
|
|
|
|
- List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
|
|
|
|
- //是否存在异常偏低的问题
|
|
|
|
- if(!Objects.isNull(tXinyiRobot1)){
|
|
|
|
- //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
|
|
|
|
- BigDecimal exceedVal = existsRobotYCPD(currentVal, category, tXinyiRobot1, csBzz);
|
|
|
|
- if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
|
- //关闭同类型的其他报警
|
|
|
|
- closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
- //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
- if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
- //插入该类型报警
|
|
|
|
- warningRecordYCPD.setType(0);
|
|
|
|
- warningRecordYCPD.setCategory(category);
|
|
|
|
- warningRecordYCPD.setTime(nowDate);
|
|
|
|
- warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
|
|
|
|
- warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
|
|
- warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
- warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
- warningRecordYCPD.setCreateTime(nowDate);
|
|
|
|
- warningRecordYCPD.setWarningVal(currentVal);
|
|
|
|
- this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
|
|
|
|
- //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
- addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
|
|
|
|
- }else{
|
|
|
|
- log.info("化验室报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
|
- }
|
|
|
|
- log.info("化验室报警的时候,发现存在异常偏低的报警,后续同指标报警不再处理");
|
|
|
|
- return;
|
|
|
|
- }else{//不存在 查看历史是否有报警,有的话关闭
|
|
|
|
- if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
- closeWarning(tXinyiNoChangeYCPDRecords.get(0));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //2025年03月03日15:00:55 异常偏低的报警暂时不需要了
|
|
|
|
+// TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
|
|
|
|
+// List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
|
|
|
|
+// //是否存在异常偏低的问题
|
|
|
|
+// if(!Objects.isNull(tXinyiRobot1)){
|
|
|
|
+// //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
|
|
|
|
+// BigDecimal exceedVal = existsRobotYCPD(currentVal, category, tXinyiRobot1, csBzz);
|
|
|
|
+// if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
|
+// //关闭同类型的其他报警
|
|
|
|
+// closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
+// //触发报警 并且模拟大模型返回决策问答数据
|
|
|
|
+// if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
+// //插入该类型报警
|
|
|
|
+// warningRecordYCPD.setType(0);
|
|
|
|
+// warningRecordYCPD.setCategory(category);
|
|
|
|
+// warningRecordYCPD.setTime(nowDate);
|
|
|
|
+// warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
|
|
|
|
+// warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
|
|
|
|
+// warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
|
|
|
|
+// warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
|
+// warningRecordYCPD.setCreateTime(nowDate);
|
|
|
|
+// warningRecordYCPD.setWarningVal(currentVal);
|
|
|
|
+// this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
|
|
|
|
+// //同时处理决策 不用调用大模型,本地处理问答
|
|
|
|
+// addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
|
|
|
|
+// }else{
|
|
|
|
+// log.info("化验室报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
|
+// }
|
|
|
|
+// log.info("化验室报警的时候,发现存在异常偏低的报警,后续同指标报警不再处理");
|
|
|
|
+// return;
|
|
|
|
+// }else{//不存在 查看历史是否有报警,有的话关闭
|
|
|
|
+// if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|
|
|
|
+// closeWarning(tXinyiNoChangeYCPDRecords.get(0));
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
|
|
//下面是最原始的处理 超标准 超管控报警
|
|
//下面是最原始的处理 超标准 超管控报警
|
|
BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
|
|
BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
|