Browse Source

feat: 华软无机人算法分析结果描述包装

master
yinhuaiwei 2 weeks ago
parent
commit
1a9644dc79
4 changed files with 83 additions and 26 deletions
  1. +5
    -8
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java
  2. +71
    -13
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java
  3. +4
    -2
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java
  4. +3
    -3
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java

+ 5
- 8
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java View File

@ -780,11 +780,11 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService {
StringJoiner validJoiner = new StringJoiner(StringUtils.COMMA); StringJoiner validJoiner = new StringJoiner(StringUtils.COMMA);
List<AnalyseResPoint> analyseResPointList = resItem.getResults(); List<AnalyseResPoint> analyseResPointList = resItem.getResults();
if(!resItem.getResults().isEmpty()) {
if (!resItem.getResults().isEmpty()) {
AnalyseResPoint analyseResPoint = resItem.getResults().get(0); AnalyseResPoint analyseResPoint = resItem.getResults().get(0);
String algType = analyseResPoint.getType(); String algType = analyseResPoint.getType();
log.info("RESULT_MERGE algType: {}, analyseResPoint: {}", algType, analyseResPoint); log.info("RESULT_MERGE algType: {}, analyseResPoint: {}", algType, analyseResPoint);
if("switch".equals(algType)) {
if ("switch".equals(algType)) {
analyseResPointList = mergeAnalyseResItem(analyseResPointList); analyseResPointList = mergeAnalyseResItem(analyseResPointList);
log.info("RESULT_MERGE algType: {}, analyseResPointList: {}", algType, analyseResPointList); log.info("RESULT_MERGE algType: {}, analyseResPointList: {}", algType, analyseResPointList);
} }
@ -895,13 +895,10 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService {
resultAnalysis.setResPos(analyseResPoint.getPos() == null ? StringUtils.EMPTY : JSONObject.toJSONString(analyseResPoint.getPos())); resultAnalysis.setResPos(analyseResPoint.getPos() == null ? StringUtils.EMPTY : JSONObject.toJSONString(analyseResPoint.getPos()));
String value = analyseResPoint.getValue(); String value = analyseResPoint.getValue();
resultAnalysis.setFilter(analyseResult.getFilter()); resultAnalysis.setFilter(analyseResult.getFilter());
// if (resultAnalysis.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc())) {
// AlgValue algValue = selectAlgMap(objectId, analyseResPoint.getType());
// resultAnalysis.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc());
// }
// 兼容判断纠偏算法的code值
// 处理正常结果以及兼容处理无机人表计gis_meter2纠偏correction的异常结果
if (resultAnalysisUtils.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc(), resultAnalysis) if (resultAnalysisUtils.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc(), resultAnalysis)
|| ("correction".equals(analyseResPoint.getType()) && Arrays.asList("2001", "2002", "2003").contains(analyseResPoint.getCode()) )) {
|| (AlgConstants.GIS_METER_2.equals(analyseResPoint.getType()))
|| ("correction".equals(analyseResPoint.getType()) && Arrays.asList("2001", "2002", "2003").contains(analyseResPoint.getCode()) )) {
AlgValue algValue = selectAlgMap(objectId, analyseResPoint.getType()); AlgValue algValue = selectAlgMap(objectId, analyseResPoint.getType());
resultAnalysisUtils.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc(), resultAnalysis); resultAnalysisUtils.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc(), resultAnalysis);
} }


+ 71
- 13
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java View File

@ -5,11 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.inspect.analysis.constant.AnalyseConstants; import com.inspect.analysis.constant.AnalyseConstants;
import com.inspect.analysis.domain.AlgValue; import com.inspect.analysis.domain.AlgValue;
import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.domain.ResultAnalysis;
import com.inspect.base.core.constant.AlgConstants;
import com.inspect.base.core.utils.StringUtils; import com.inspect.base.core.utils.StringUtils;
import com.inspect.message.MessageUtils; import com.inspect.message.MessageUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -24,6 +23,10 @@ public class ResultAnalysisUtils {
@Autowired @Autowired
private MessageUtils messageUtils; private MessageUtils messageUtils;
/**
* 检查返回结果
* code除了2000,其他值均为异常
*/
public boolean checkCode(String code, String desc, ResultAnalysis resultAnalysis) { public boolean checkCode(String code, String desc, ResultAnalysis resultAnalysis) {
if (AnalyseConstants.ANALYSE_OK.equals(code)) { if (AnalyseConstants.ANALYSE_OK.equals(code)) {
resultAnalysis.setCreateTime(new Date()); resultAnalysis.setCreateTime(new Date());
@ -31,7 +34,6 @@ public class ResultAnalysisUtils {
resultAnalysis.setResStatus("0"); resultAnalysis.setResStatus("0");
return true; return true;
} }
if (AnalyseConstants.ANALYSE_FAIL_NO_FILE.equals(code) if (AnalyseConstants.ANALYSE_FAIL_NO_FILE.equals(code)
|| AnalyseConstants.ANALYSE_FAIL_FILE_EXCEPT.equals(code) || AnalyseConstants.ANALYSE_FAIL_FILE_EXCEPT.equals(code)
|| AnalyseConstants.ANALYSE_FAIL_FILE_INCOMPATIBLE.equals(code)) { || AnalyseConstants.ANALYSE_FAIL_FILE_INCOMPATIBLE.equals(code)) {
@ -50,6 +52,12 @@ public class ResultAnalysisUtils {
return false; return false;
} }
/**
* 解析算法结果
* pointStatus点位状态: 0-异常 1-正常 2-待人工确认
* resultType分析结果: 0-缺陷 1-正常 2-异常
* resStatus告警确认状态: 0-未确认 1-已确认 2-已撤销
*/
public void parseAlg(String algType, AlgValue algValue, String value, String defaultDesc, ResultAnalysis resultAnalysis) { public void parseAlg(String algType, AlgValue algValue, String value, String defaultDesc, ResultAnalysis resultAnalysis) {
log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc);
@ -75,6 +83,7 @@ public class ResultAnalysisUtils {
} }
final String correctionValue = value; final String correctionValue = value;
// 读取字符串中的整数或浮点数注意集合下只取第一个值有坑原值使用correctionValue
value = algValue.formatValue(value); value = algValue.formatValue(value);
// 这个不知道为什么加上 // 这个不知道为什么加上
if ("1".equals(resultAnalysis.getFilter())) { if ("1".equals(resultAnalysis.getFilter())) {
@ -184,6 +193,55 @@ public class ResultAnalysisUtils {
} }
} }
} }
} else if (algType.equals(AlgConstants.GIS_METER_2)) {
// 华软无机人表计算法
log.info("parseAlg : gis_meter2 correctionValue: {} code: {}", correctionValue, resultAnalysis.getResCode());
// 异常
boolean hasDefect = false;
boolean hasAbnormal = false;
try {
ObjectMapper mapper = new ObjectMapper();
// 1. 解析 JSON
List<String> originalList = mapper.readValue(correctionValue, new TypeReference<List<String>>() {
});
// 2. 转换非空 "正常"空值 "读数失败"超限 "表计超限"
List<String> descList = new ArrayList<>(originalList.size());
for (String item : originalList) {
if (StringUtils.isEmpty(item)) {
hasAbnormal = true;
descList.add("读数失败");
} else {
if (algValue.isAlarm(item)) {
hasDefect = true;
descList.add("表计超限");
} else {
descList.add("正常");
}
}
}
String descStr = mapper.writeValueAsString(descList);
if (hasDefect) {
resultAnalysis.setPointStatus("0");
resultAnalysis.setResStatus("0");
resultAnalysis.setResultType("0");
defaultDesc = descStr;
} else {
if (hasAbnormal) {
resultAnalysis.setPointStatus("0");
resultAnalysis.setResStatus("0");
resultAnalysis.setResultType("2");
defaultDesc = descStr;
} else {
resultAnalysis.setPointStatus("1");
resultAnalysis.setResStatus("0");
resultAnalysis.setResultType("1");
defaultDesc = messageUtils.get("正常");
}
}
} catch (Exception e) {
log.error("PARSE_ALG_GIS_METER_2_ERROR correctionValue: {}", correctionValue, e);
defaultDesc = "解析异常";
}
} else if (algType.equals("sound")) { } else if (algType.equals("sound")) {
if (value.equals("1")) { if (value.equals("1")) {
resultAnalysis.setResStatus("1"); resultAnalysis.setResStatus("1");
@ -264,11 +322,11 @@ public class ResultAnalysisUtils {
} }
} else if (algType.equals("correction")) { } else if (algType.equals("correction")) {
log.info("parseAlg algType correction 2000 resCode: {}, correctionValue: {}", resultAnalysis.getResCode(), correctionValue); log.info("parseAlg algType correction 2000 resCode: {}, correctionValue: {}", resultAnalysis.getResCode(), correctionValue);
if("2000".equals(resultAnalysis.getResCode())) {
if ("2000".equals(resultAnalysis.getResCode())) {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
List<List<Double>> list; List<List<Double>> list;
try { try {
log.info("parseAlg algType correction 2000 correctionValue: {}", correctionValue);
log.info("parseAlg algType correction 2000 correctionValue: {}", correctionValue);
list = mapper.readValue(correctionValue, new TypeReference<List<List<Double>>>() { list = mapper.readValue(correctionValue, new TypeReference<List<List<Double>>>() {
}); });
log.info("parseAlg algType correction 2000 correctionValue: {}", list); log.info("parseAlg algType correction 2000 correctionValue: {}", list);
@ -277,7 +335,7 @@ public class ResultAnalysisUtils {
list = new ArrayList<>(); list = new ArrayList<>();
} }
if(list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) {
if (list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) {
final double EPSILON = 1e-8; final double EPSILON = 1e-8;
double value0 = list.get(0).get(0); double value0 = list.get(0).get(0);
double value1 = list.get(0).get(1); double value1 = list.get(0).get(1);
@ -291,8 +349,8 @@ public class ResultAnalysisUtils {
resultAnalysis.setPointStatus("1"); resultAnalysis.setPointStatus("1");
resultAnalysis.setResultType("1"); resultAnalysis.setResultType("1");
resultAnalysis.setResStatus("2"); resultAnalysis.setResStatus("2");
resultAnalysis.setResValue("");
defaultDesc = messageUtils.get("正常"); defaultDesc = messageUtils.get("正常");
resultAnalysis.setResDesc(defaultDesc);
} else { } else {
log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3);
resultAnalysis.setPointStatus("1"); resultAnalysis.setPointStatus("1");
@ -300,6 +358,7 @@ public class ResultAnalysisUtils {
//resultAnalysis.setResStatus("3"); //resultAnalysis.setResStatus("3");
//defaultDesc = "请进行纠偏"; //defaultDesc = "请进行纠偏";
resultAnalysis.setResStatus("2"); resultAnalysis.setResStatus("2");
resultAnalysis.setResValue("");
defaultDesc = "正常"; defaultDesc = "正常";
} }
} else { } else {
@ -309,11 +368,11 @@ public class ResultAnalysisUtils {
resultAnalysis.setResStatus("0"); resultAnalysis.setResStatus("0");
defaultDesc = "纠偏结果异常"; defaultDesc = "纠偏结果异常";
} }
} else if("2001".equals(resultAnalysis.getResCode())) {
} else if ("2001".equals(resultAnalysis.getResCode())) {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
List<List<Double>> list; List<List<Double>> list;
try { try {
log.info("parseAlg algType correction 2001 correctionValue: {}", correctionValue);
log.info("parseAlg algType correction 2001 correctionValue: {}", correctionValue);
list = mapper.readValue(correctionValue, new TypeReference<List<List<Double>>>() { list = mapper.readValue(correctionValue, new TypeReference<List<List<Double>>>() {
}); });
log.info("parseAlg algType correction 2001 correctionValue: {}", list); log.info("parseAlg algType correction 2001 correctionValue: {}", list);
@ -322,7 +381,7 @@ public class ResultAnalysisUtils {
list = new ArrayList<>(); list = new ArrayList<>();
} }
if(list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) {
if (list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) {
final double EPSILON = 1e-8; final double EPSILON = 1e-8;
double value0 = list.get(0).get(0); double value0 = list.get(0).get(0);
double value1 = list.get(0).get(1); double value1 = list.get(0).get(1);
@ -353,12 +412,12 @@ public class ResultAnalysisUtils {
defaultDesc = "纠偏码和值均异常"; defaultDesc = "纠偏码和值均异常";
} }
} else if("2002".equals(resultAnalysis.getResCode())) {
} else if ("2002".equals(resultAnalysis.getResCode())) {
resultAnalysis.setPointStatus("0"); resultAnalysis.setPointStatus("0");
resultAnalysis.setResultType("0"); resultAnalysis.setResultType("0");
resultAnalysis.setResStatus("0"); resultAnalysis.setResStatus("0");
defaultDesc = "超出比对范围"; defaultDesc = "超出比对范围";
} else if("2003".equals(resultAnalysis.getResCode())) {
} else if ("2003".equals(resultAnalysis.getResCode())) {
resultAnalysis.setPointStatus("0"); resultAnalysis.setPointStatus("0");
resultAnalysis.setResultType("0"); resultAnalysis.setResultType("0");
resultAnalysis.setResStatus("0"); resultAnalysis.setResStatus("0");
@ -393,7 +452,6 @@ public class ResultAnalysisUtils {
log.info("------------------parseAlg resultAnalysis: {}", resultAnalysis); log.info("------------------parseAlg resultAnalysis: {}", resultAnalysis);
} }
public static void main(String[] args) { public static void main(String[] args) {
String value = "[[121,108],[121,108]]"; String value = "[[121,108],[121,108]]";
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();


+ 4
- 2
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java View File

@ -1160,8 +1160,10 @@ public class PatrolResultController extends BaseController {
logger.info("GET_INFO_41 ROBOT_TASK_STATUS patrolTaskStatusList: {}", patrolTaskStatusList); logger.info("GET_INFO_41 ROBOT_TASK_STATUS patrolTaskStatusList: {}", patrolTaskStatusList);
if (!patrolTaskStatusList.isEmpty()) { if (!patrolTaskStatusList.isEmpty()) {
PatrolTaskStatus patrolTaskStatusOfDb = patrolTaskStatusList.get(0); PatrolTaskStatus patrolTaskStatusOfDb = patrolTaskStatusList.get(0);
// 除了完成和终止状态当db状态与上报状态不一致时更新db状态
if(!Arrays.asList(TaskStatus.DONE, TaskStatus.HALTED).contains(patrolTaskStatusItem.getTaskState()) && !patrolTaskStatusOfDb.getTaskState().equals(patrolTaskStatusItem.getTaskState())) {
// 除了db非完成或终止状态当db状态与上报状态不一致时更新db状态
if(!Arrays.asList(TaskStatus.DONE, TaskStatus.HALTED).contains(patrolTaskStatusOfDb.getTaskState())
&& !patrolTaskStatusItem.getTaskState().equals(TaskStatus.DONE.getCode())
&& !patrolTaskStatusOfDb.getTaskState().equals(patrolTaskStatusItem.getTaskState())) {
logger.info("GET_INFO_41 UPDATE TASK_STATE old: {} TO new: {}", patrolTaskStatusOfDb.getTaskState(), patrolTaskStatusItem.getTaskState()); logger.info("GET_INFO_41 UPDATE TASK_STATE old: {} TO new: {}", patrolTaskStatusOfDb.getTaskState(), patrolTaskStatusItem.getTaskState());
patrolTaskStatusOfDb.setTaskState(patrolTaskStatusItem.getTaskState()); patrolTaskStatusOfDb.setTaskState(patrolTaskStatusItem.getTaskState());
// 如果上报状态为终止或超期限制状态时需更新终止时间 // 如果上报状态为终止或超期限制状态时需更新终止时间


+ 3
- 3
inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java View File

@ -487,7 +487,6 @@ public class PatrolTaskController extends BaseController {
return getDataTable(0, pageList, newList); return getDataTable(0, pageList, newList);
} }
@Log( @Log(
title = "巡视任务(任务模型文件数据)", title = "巡视任务(任务模型文件数据)",
businessType = BizType.EXPORT businessType = BizType.EXPORT
@ -863,11 +862,12 @@ public class PatrolTaskController extends BaseController {
return toAjax(1); return toAjax(1);
} }
// 单个纠偏
@PostMapping({"/correction"}) @PostMapping({"/correction"})
public AjaxResult correctionAlgorithm(@RequestBody PatrolData patrolData) { public AjaxResult correctionAlgorithm(@RequestBody PatrolData patrolData) {
logger.info("correctionAlgorithm patrolData: {}", patrolData); logger.info("correctionAlgorithm patrolData: {}", patrolData);
patrolTaskService.correctionAlgorithm(patrolData);
return toAjax(1);
boolean res = patrolTaskService.correctionAlgorithm(patrolData);
return toAjax(res);
} }
public String calcWeekList(String week) { public String calcWeekList(String week) {


Loading…
Cancel
Save