|
@@ -116,11 +116,6 @@ public class AsyncTask {
|
|
|
log.error("将工业库的化验时间转换date类型异常");
|
|
|
throw new RuntimeException(e.getMessage());
|
|
|
}
|
|
|
- //2025年02月21日09:53:28 再额外增加一个逻辑:因为定时任务支持手动执行,需要先同步数据再报警,假如没有同步到数据就先执行了报警,也就是报警时间【工业库数据的最后一天时间】 > 当前时间
|
|
|
- if(!tXinyiIndustry.getCreatedTime().before(nowDate)){
|
|
|
- log.error("执行工业库报警失败,手动执行的时候,必须先要同步工业库数据才可以再执行报警任务");
|
|
|
- throw new ServiceException("执行工业库报警失败,手动执行的时候,必须先要同步工业库数据才可以再执行报警任务");
|
|
|
- }
|
|
|
//查询工业库同步任务失败的报警正在进行的数据
|
|
|
TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getCode()).status(0).build();
|
|
|
List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);
|
|
@@ -157,11 +152,48 @@ public class AsyncTask {
|
|
|
}else{
|
|
|
log.info("工业库报警的时候,发现同步工业库任务挂掉了,并且已经有该类型报警了,不做任何处理");
|
|
|
}
|
|
|
+ //将其他类型的报警全部关闭
|
|
|
+ closeOtherWarningsBySymbol(null);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 将不是此报警类型的报警全部关闭
|
|
|
+ * @param symbol
|
|
|
+ */
|
|
|
+ private void closeOtherWarningsBySymbol(Integer symbol) {
|
|
|
+ List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.getOtherWarningsBySymbol(symbol);
|
|
|
+ if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
+ for (TXinyiWarningRecord tXinyiWarningRecord : tXinyiWarningRecords) {
|
|
|
+ this.closeWarning(tXinyiWarningRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将此化验类型的其他的报警全部关闭
|
|
|
+ * @param category
|
|
|
+ */
|
|
|
+ private void closeOtherWarningsByCategory(String category, Integer symbol) {
|
|
|
+ List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.getOtherWarningsByCategory(category, symbol);
|
|
|
+ if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
+ for (TXinyiWarningRecord tXinyiWarningRecord : tXinyiWarningRecords) {
|
|
|
+ this.closeWarning(tXinyiWarningRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void closeWarning(TXinyiWarningRecord tXinyiWarningRecord) {
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
+ tXinyiWarningRecord.setStatus(2);
|
|
|
+ tXinyiWarningRecord.setOffTime(nowDate);
|
|
|
+ tXinyiWarningRecord.setUpdateTime(nowDate);
|
|
|
+ tXinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
|
|
|
+ this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(tXinyiWarningRecord);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
public void addBigTable(TXinyiIndustry tXinyiIndustry, TXinyiCalculate xinyiCalculate) {
|
|
@@ -1549,7 +1581,7 @@ public class AsyncTask {
|
|
|
Date nowDate = DateUtils.getNowDate();
|
|
|
TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE.getCode()).status(0).build();
|
|
|
List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);
|
|
|
- if(breakpointCount <=1){//不需要连续不变报警 新增
|
|
|
+ if(breakpointCount <=1){//恢复正常 关闭多个断点报警
|
|
|
if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
TXinyiWarningRecord warningRecordExists = tXinyiWarningRecords.get(0);
|
|
|
warningRecordExists.setStatus(2);
|
|
@@ -1559,6 +1591,9 @@ public class AsyncTask {
|
|
|
this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(warningRecordExists);
|
|
|
}
|
|
|
}else{
|
|
|
+ //将其他类型的报警全部关闭
|
|
|
+ closeOtherWarningsBySymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE.getCode());
|
|
|
+ //再新增新的类型的报警
|
|
|
if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
|
|
|
//插入该类型报警
|
|
|
warningRecord.setType(0);
|
|
@@ -1580,7 +1615,7 @@ public class AsyncTask {
|
|
|
//连续不变
|
|
|
TXinyiWarningRecord warningRecordNoChangeMore = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode()).status(0).build();
|
|
|
List<TXinyiWarningRecord> tXinyiWarningNoChangeMoreRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordNoChangeMore);
|
|
|
- if(noChange <=1){//不需要连续不变报警 新增
|
|
|
+ if(noChange <=1){//恢复正常,关闭多个连续不变报警
|
|
|
if(!CollectionUtils.isEmpty(tXinyiWarningNoChangeMoreRecords)){
|
|
|
TXinyiWarningRecord warningRecordExists = tXinyiWarningNoChangeMoreRecords.get(0);
|
|
|
warningRecordExists.setStatus(2);
|
|
@@ -1590,6 +1625,9 @@ public class AsyncTask {
|
|
|
this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(warningRecordExists);
|
|
|
}
|
|
|
}else{
|
|
|
+ //将其他类型的报警全部关闭
|
|
|
+ closeOtherWarningsBySymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
|
|
|
+ //触发 多个连续不变报警
|
|
|
if(CollectionUtils.isEmpty(tXinyiWarningNoChangeMoreRecords)){
|
|
|
//插入该类型报警
|
|
|
warningRecordNoChangeMore.setType(0);
|
|
@@ -2262,6 +2300,8 @@ public class AsyncTask {
|
|
|
//是否存在断点
|
|
|
if(!Objects.isNull(tXinyiIndustry1)){
|
|
|
if(existsBreakPoints(currentVal, category, tXinyiIndustry1)){
|
|
|
+ //关闭同类型的其他报警
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode());
|
|
|
breakpoint = true;
|
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
|
if(CollectionUtils.isEmpty(tXinyiWarningRecordsBK)){
|
|
@@ -2300,6 +2340,8 @@ public class AsyncTask {
|
|
|
if(!CollectionUtils.isEmpty(tXinyiIndustries) && tXinyiIndustries.size() == INT_3){
|
|
|
//2025年02月21日14:20:41 这里要改成当前值和上个小时比较 上个小时和上上个小时比较
|
|
|
if(existsNoChange(currentVal, category, tXinyiIndustries)){
|
|
|
+ //关闭同类型的其他报警
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getCode());
|
|
|
noChange = true;
|
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeSingleWarningRecords)){
|
|
@@ -2339,6 +2381,8 @@ public class AsyncTask {
|
|
|
//2025年02月21日14:33:37 这里要改成当前值和上个小时比较 上个小时和上上个小时比较
|
|
|
BigDecimal exceedVal = existsYCSG(currentVal, category, tXinyiIndustries);
|
|
|
if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
|
|
|
+ //关闭同类型的其他报警
|
|
|
+ closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getCode());
|
|
|
noChange = true;
|
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
|
|
@@ -2378,6 +2422,8 @@ public class AsyncTask {
|
|
|
//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());
|
|
|
noChange = true;
|
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
|
if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
|