|
@@ -6435,12 +6435,14 @@ public class AsyncTask {
|
|
|
|
|
|
/**
|
|
|
* 化验室报警:设备故障-本地决策-新 需要展示多个值
|
|
|
+ *
|
|
|
* @param warningRecord
|
|
|
* @param tXinyiIndustry
|
|
|
* @param normConfig
|
|
|
* @param category
|
|
|
+ * @param finalStr
|
|
|
*/
|
|
|
- private void addChatRecordByBreakPointsSingleNew(TXinyiWarningRecord warningRecord, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, String category) {
|
|
|
+ private void robotDeviceErrorJCNew(TXinyiWarningRecord warningRecord, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, String category, String finalStr) {
|
|
|
ChatReq chatReq = new ChatReq();
|
|
|
//保存聊天记录
|
|
|
//将问答更新到数据库中
|
|
@@ -6454,8 +6456,7 @@ public class AsyncTask {
|
|
|
chatReq.setShowVal(showVal);//前端展示的数据和提问的数据不一致
|
|
|
chatReq.setQuestion(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());//本地问题
|
|
|
// chatReq.setAnswer(SINGLE_BREAKPOINT_ANSWER_PREFIX + category + SINGLE_BREAKPOINT_ANSWER_SUFFIX);
|
|
|
- //todo 改成真实值
|
|
|
- chatReq.setAnswer(ROBOT_SJYC_ANSWER_REPLACE.replaceAll("@@@0", category).replaceAll("@@@1", "xxx"));
|
|
|
+ chatReq.setAnswer(ROBOT_SJYC_ANSWER_REPLACE.replaceAll("@@@0", category).replaceAll("@@@1", finalStr));
|
|
|
chatReq.setWarningId(String.valueOf(warningRecord.getId()));
|
|
|
chatReq.setCounts(1);//问答次数
|
|
|
|
|
@@ -6578,6 +6579,40 @@ public class AsyncTask {
|
|
|
this.xinyiChatRecordMapper.insertTXinyiChatRecord(chatReq);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 化验室报警-多指标设备异常-本地决策处理
|
|
|
+ *
|
|
|
+ * @param warningRecord
|
|
|
+ * @param tXinyiIndustry
|
|
|
+ * @param normConfig
|
|
|
+ * @param category
|
|
|
+ * @param finalStr
|
|
|
+ */
|
|
|
+ private void robotDeviceErrorMore(TXinyiWarningRecord warningRecord, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, String category, String finalStr) {
|
|
|
+ ChatReq chatReq = new ChatReq();
|
|
|
+ //保存聊天记录
|
|
|
+ //将问答更新到数据库中
|
|
|
+ chatReq.setSessionId(IdUtils.simpleUUID());
|
|
|
+ chatReq.setType(1);//0问答 1决策 2本地 3仿真预测
|
|
|
+ chatReq.setModule(3);
|
|
|
+ /*String userId = SecurityUtils.getUserId().toString();
|
|
|
+ String username = SecurityUtils.getUsername();*/
|
|
|
+ chatReq.setUserId(WARNING_DEFAULT_CREATE);
|
|
|
+ String showVal = this.buildShowValue(warningRecord, tXinyiIndustry, normConfig, DateUtils.getNowDate());
|
|
|
+ chatReq.setShowVal(showVal);//前端展示的数据和提问的数据不一致
|
|
|
+ chatReq.setQuestion(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());//本地问题
|
|
|
+// chatReq.setAnswer(MORE_BREAKPOINT_ANSWER);
|
|
|
+ chatReq.setAnswer(ROBOT_SJYC_ANSWER_REPLACE.replaceAll("@@@0", category).replaceAll("@@@1", finalStr));
|
|
|
+ chatReq.setWarningId(String.valueOf(warningRecord.getId()));
|
|
|
+ chatReq.setCounts(1);//问答次数
|
|
|
+
|
|
|
+ chatReq.setCreateBy(WARNING_DEFAULT_CREATE);
|
|
|
+ chatReq.setCreateTime(DateUtils.getNowDate());
|
|
|
+ this.xinyiChatRecordMapper.insertTXinyiChatRecord(chatReq);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void addChatRecordByBreakPointsMore(TXinyiWarningRecord tXinyiWarningRecord, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig) {
|
|
|
ChatReq chatReq = new ChatReq();
|
|
|
//保存聊天记录
|
|
@@ -7030,7 +7065,9 @@ public class AsyncTask {
|
|
|
}
|
|
|
|
|
|
String anDan10Str = getBigDecimalList(tenVals);
|
|
|
-
|
|
|
+ String hyXsy1Str = getBigDecimalList(tXinyiRobots6Lst.stream().map(TXinyiRobot::getNo3Hlj1Jqr).collect(Collectors.toList()));
|
|
|
+ String hyXsy2Str = getBigDecimalList(tXinyiRobots6Lst.stream().map(TXinyiRobot::getNo3Hlj2Jqr).collect(Collectors.toList()));
|
|
|
+
|
|
|
Date nowDate = DateUtils.getNowDate();
|
|
|
//下面是处理多个指标的 【断点】报警
|
|
|
//断点
|
|
@@ -7051,11 +7088,13 @@ public class AsyncTask {
|
|
|
//关闭同类型的其他报警
|
|
|
closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode());
|
|
|
//触发报警 并且模拟大模型返回决策问答数据
|
|
|
+ //最终传递过去的N条数据
|
|
|
+ String finalStr = getStrByCategory(category, anDan10Str, hyXsy1Str, hyXsy2Str);
|
|
|
if(CollectionUtils.isEmpty(tXinyiBreakPointSingleWarningRecords)){
|
|
|
//插入该类型报警
|
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordBreakPointOne);
|
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
|
- addChatRecordByBreakPointsSingleNew(warningRecordBreakPointOne, tXinyiIndustry, normConfig, category);
|
|
|
+ robotDeviceErrorJCNew(warningRecordBreakPointOne, tXinyiIndustry, normConfig, category, finalStr);
|
|
|
}else{
|
|
|
log.info("化验室报警的时候,发现存在仪表故障(断点不变单个指标)的报警,并且已经有该类型报警了,不做任何处理");
|
|
|
//2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
|
|
@@ -7069,7 +7108,7 @@ public class AsyncTask {
|
|
|
//更新数据库
|
|
|
this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(xinyiWarningRecord);
|
|
|
//继续调用决策【本地模拟的决策】
|
|
|
- addChatRecordByBreakPointsSingleNew(xinyiWarningRecord, tXinyiIndustry, normConfig, category);
|
|
|
+ robotDeviceErrorJCNew(xinyiWarningRecord, tXinyiIndustry, normConfig, category, finalStr);
|
|
|
}
|
|
|
//如果出现单指标报警 标识后续同指标是否可以继续报警
|
|
|
if(ROBOT_XSY_1.getCode().equals(category))
|
|
@@ -7104,8 +7143,10 @@ public class AsyncTask {
|
|
|
tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_HYS.getMsg());
|
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_HYS.getCode());
|
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
|
+ //最终传递过去的N条数据
|
|
|
+ String finalStr = getStrByCategory(category, anDan10Str, hyXsy1Str, hyXsy2Str);
|
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
|
- addChatRecordByBreakPointsMore(tXinyiWarningRecord, tXinyiIndustry, normConfig);
|
|
|
+ robotDeviceErrorMore(tXinyiWarningRecord, tXinyiIndustry, normConfig, category, finalStr);
|
|
|
}
|
|
|
}else{//之前存在报警了 所以需要2个集合数据进行匹配,如果新的和原来的一样则不用做任何操作【持续报警】;如果不一样,则新的要报警,老报警要关闭
|
|
|
List<TXinyiWarningRecord> breakPointListNew = new ArrayList<>(breakPointList);//断点集合[需要新增的]
|
|
@@ -7131,8 +7172,10 @@ public class AsyncTask {
|
|
|
tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_HYS.getMsg());
|
|
|
tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_HYS.getCode());
|
|
|
this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
|
|
|
+ //最终传递过去的N条数据
|
|
|
+ String finalStr = getStrByCategory(category, anDan10Str, hyXsy1Str, hyXsy2Str);
|
|
|
//同时处理决策 不用调用大模型,本地处理问答
|
|
|
- addChatRecordByBreakPointsMore(tXinyiWarningRecord, tXinyiIndustry, normConfig);
|
|
|
+ robotDeviceErrorMore(tXinyiWarningRecord, tXinyiIndustry, normConfig, category, finalStr);
|
|
|
}
|
|
|
}
|
|
|
//关闭老的报警
|
|
@@ -7164,8 +7207,10 @@ public class AsyncTask {
|
|
|
// tXinyiWarningRecord.setReason(tXinyiWarningRecordContinue.getReason());
|
|
|
//更新数据库
|
|
|
this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(tXinyiWarningRecord);
|
|
|
+ //最终传递过去的N条数据
|
|
|
+ String finalStr = getStrByCategory(category, anDan10Str, hyXsy1Str, hyXsy2Str);
|
|
|
//继续调用决策【本地模拟的决策】
|
|
|
- addChatRecordByBreakPointsMore(tXinyiWarningRecord, tXinyiIndustry, normConfig);
|
|
|
+ robotDeviceErrorMore(tXinyiWarningRecord, tXinyiIndustry, normConfig, category, finalStr);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -7198,6 +7243,18 @@ public class AsyncTask {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private String getStrByCategory(String category, String anDan10Str, String hyXsy1Str, String hyXsy2Str) {
|
|
|
+ if(ROBOT_CS_AD.getCode().equals(category))
|
|
|
+ return anDan10Str;
|
|
|
+ else if(ROBOT_XSY_1.getCode().equals(category))
|
|
|
+ return hyXsy1Str;
|
|
|
+ else if(ROBOT_XSY_2.getCode().equals(category))
|
|
|
+ return hyXsy2Str;
|
|
|
+ else{
|
|
|
+ log.info("获取化验室报警,通过分类处理N条展示数据的时候,没有匹配到对应的类型");
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|