Browse Source

/*picAnalyseRetNotify算法结果返回接口增加说明方便理解*/

master
htjcAdmin 8 months ago
parent
commit
3fc324e3c1
3 changed files with 70 additions and 30 deletions
  1. +15
    -1
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResPoint.java
  2. +5
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResult.java
  3. +50
    -29
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java

+ 15
- 1
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResPoint.java View File

@ -19,7 +19,21 @@ public class AnalyseResPoint implements Serializable {
private String desc;
private List<Pos> pos;
public boolean checkSuccess() {
// public boolean checkSuccess() {
// return "2000".equals(this.code) && "1".equals(this.value);
// }
/**
* 根据电力57号协议规定
* code定义如下
* 2000 - 正确
* 2001 - 图像数据错误
* 2002 - 算法分析失败
* value定义如下
* 0 - 无缺陷
* 1 - 有缺陷
* @return
*/
public boolean isDefect() {
return "2000".equals(this.code) && "1".equals(this.value);
}


+ 5
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResult.java View File

@ -18,6 +18,7 @@ public class AnalyseResult implements Serializable {
private String taskPatrolId;
private String filter = "0";
private String result = "1";
private boolean isTest = false;
public void setResultsList(List<AnalyseResItem> resultsList) {
this.resultsList = resultsList;
@ -68,6 +69,10 @@ public class AnalyseResult implements Serializable {
this.result = result;
}
public void setTest(boolean test) {
this.isTest = test;
}
@Override
public boolean equals(Object object) {
if (this == object) return true;


+ 50
- 29
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java View File

@ -64,39 +64,60 @@ public class AnalysisServiceImpl implements IAnalysisService {
@Override
public void picAnalyseRetNotify(AnalyseResult analyseResult) {
log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start ######" + Color.END);
log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start, isTest={} ######" + Color.END, analyseResult.isTest());
String requestId = analyseResult.getRequestId();
if (!redisService.hasKey(AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId))) {
log.error("picAnalyseRetNotify NO REQUEST_ID={} in REDIS!", requestId);
} else {
String patrolTaskIdObj = redisService.getCacheObject(AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId));
analyseResult.setTaskPatrolId(patrolTaskIdObj);
String key = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId;
if (redisService.hasKey(key)) {
analyseResult.setFilter("1");
AnalyseRequest analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(key);
AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0);
boolean bSuccess = analyseResPoint.checkSuccess();
log.info("picAnalyseRetNotify bSuccess={}, type={}", bSuccess, analyseResPoint.getType());
analyseResult.reloadReq(analyseRequest);
if (!bSuccess && !"meter".equals(analyseResPoint.getType())) {
log.info("picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", requestId);
} else {
analyseResult.setResult("0");
log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId);
ispAlgorithmRequestService.sendRequest(analyseRequest);
}
} else {
log.info("picAnalyseRetNotify BIG_MODEL CALLBACK REQUEST_ID={}", requestId);
String keyId = AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId);
if (!redisService.hasKey(keyId)) {
log.error("picAnalyseRetNotify isTest: {}, NO keyId={}, REQUEST_ID={} in REDIS!", analyseResult.isTest(), keyId, requestId);
if(!analyseResult.isTest()) {
return;
}
redisService.setCacheObject(keyId, "123456789");
}
//qinyl
analysisLogService.log(new AnalyseLog(analyseResult.toString(), "1", analyseResult.getTaskPatrolId(), analyseResult.getFilter(), requestId));
//analysis(analyseResult);
doAlgorithmAnalysis(analyseResult);
//calculateProcess(analyseResult);
log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END);
String patrolTaskIdObj = redisService.getCacheObject(keyId);
log.info("picAnalyseRetNotify keyId={}, requestId={}, patrolTaskIdObj={}", keyId, requestId, patrolTaskIdObj);
analyseResult.setTaskPatrolId(patrolTaskIdObj);
String keyFilterRequest = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId;
log.info("picAnalyseRetNotify keyFilterRequest={}", keyFilterRequest);
if (redisService.hasKey(keyFilterRequest)) { // 初筛结果
analyseResult.setFilter("1"); // 设置初筛标志
AnalyseRequest analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(keyFilterRequest);
AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0);
boolean bDefect = analyseResPoint.isDefect(); // code=2000代表初筛结果返回正常value=1代表有缺陷
log.info("picAnalyseRetNotify FILTER bDefect={}, algorithmType={}", bDefect, analyseResPoint.getType());
analyseResult.reloadReq(analyseRequest);
/*
*大致两种情况1. 算法是表计(meter); 2. 算法不是表计(meter)
* 1. 算法不是表计(meter)
* 1.1 初筛结果有缺陷继续发给大模型处理
* 1.2 初筛结果无缺陷不用调用大模型流程就此结束
* 2. 算法是表计(meter)
* 不论初筛结果有没有缺陷都要继续调用大模型因为大模型调用了表计(meter)识别算法
*/
if (bDefect || "meter".equals(analyseResPoint.getType())) {
/*
* 先检查结果有缺无缺陷如果有缺陷不用判断算法直接调用大模型*
* 如果无缺陷再去判断算法如果算法是meter就继续调用大模型*
*/
analyseResult.setResult("0");
log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId);
ispAlgorithmRequestService.sendRequest(analyseRequest);
} else {
//初筛结果无缺陷并且非表计算法不用调用大模型流程就此结束
log.info("picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", requestId);
}
} else {
// 大模型结果
log.info("picAnalyseRetNotify BIG_MODEL CALLBACK REQUEST_ID={}", requestId);
}
//qinyl
analysisLogService.log(new AnalyseLog(analyseResult.toString(), "1", analyseResult.getTaskPatrolId(), analyseResult.getFilter(), requestId));
//analysis(analyseResult);
doAlgorithmAnalysis(analyseResult);
//calculateProcess(analyseResult);
log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END);
}
public void doAlgorithmAnalysis(AnalyseResult analyseResult) {


Loading…
Cancel
Save