From 1a9644dc7994e15f6a9c4cdc963edae75389d83b Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Thu, 22 Jan 2026 16:01:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8D=8E=E8=BD=AF=E6=97=A0=E6=9C=BA?= =?UTF-8?q?=E4=BA=BA=E7=AE=97=E6=B3=95=E5=88=86=E6=9E=90=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E5=8C=85=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AnalyseResponseServiceImpl.java | 13 ++- .../analysis/utils/ResultAnalysisUtils.java | 84 ++++++++++++++++--- .../controller/PatrolResultController.java | 6 +- .../task/controller/PatrolTaskController.java | 6 +- 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java index ce78049..2ebd198 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java @@ -780,11 +780,11 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { StringJoiner validJoiner = new StringJoiner(StringUtils.COMMA); List analyseResPointList = resItem.getResults(); - if(!resItem.getResults().isEmpty()) { + if (!resItem.getResults().isEmpty()) { AnalyseResPoint analyseResPoint = resItem.getResults().get(0); String algType = analyseResPoint.getType(); log.info("RESULT_MERGE algType: {}, analyseResPoint: {}", algType, analyseResPoint); - if("switch".equals(algType)) { + if ("switch".equals(algType)) { analyseResPointList = mergeAnalyseResItem(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())); String value = analyseResPoint.getValue(); 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) - || ("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()); resultAnalysisUtils.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc(), resultAnalysis); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java index 89e2fd1..a24a07d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java @@ -5,11 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.inspect.analysis.constant.AnalyseConstants; import com.inspect.analysis.domain.AlgValue; import com.inspect.analysis.domain.ResultAnalysis; +import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.utils.StringUtils; import com.inspect.message.MessageUtils; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -24,6 +23,10 @@ public class ResultAnalysisUtils { @Autowired private MessageUtils messageUtils; + /** + * 检查返回结果 + * code除了2000,其他值均为异常 + */ public boolean checkCode(String code, String desc, ResultAnalysis resultAnalysis) { if (AnalyseConstants.ANALYSE_OK.equals(code)) { resultAnalysis.setCreateTime(new Date()); @@ -31,7 +34,6 @@ public class ResultAnalysisUtils { resultAnalysis.setResStatus("0"); return true; } - if (AnalyseConstants.ANALYSE_FAIL_NO_FILE.equals(code) || AnalyseConstants.ANALYSE_FAIL_FILE_EXCEPT.equals(code) || AnalyseConstants.ANALYSE_FAIL_FILE_INCOMPATIBLE.equals(code)) { @@ -50,6 +52,12 @@ public class ResultAnalysisUtils { 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) { log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); @@ -75,6 +83,7 @@ public class ResultAnalysisUtils { } final String correctionValue = value; + // 读取字符串中的整数或浮点数(注意集合下只取第一个值,有坑,原值使用correctionValue) value = algValue.formatValue(value); // 这个不知道为什么加上 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 originalList = mapper.readValue(correctionValue, new TypeReference>() { + }); + // 2. 转换:非空 → "正常",空值 → "读数失败",超限 → "表计超限" + List 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")) { if (value.equals("1")) { resultAnalysis.setResStatus("1"); @@ -264,11 +322,11 @@ public class ResultAnalysisUtils { } } else if (algType.equals("correction")) { 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(); List> list; try { - log.info("parseAlg algType correction 2000 correctionValue: {}", correctionValue); + log.info("parseAlg algType correction 2000 correctionValue: {}", correctionValue); list = mapper.readValue(correctionValue, new TypeReference>>() { }); log.info("parseAlg algType correction 2000 correctionValue: {}", list); @@ -277,7 +335,7 @@ public class ResultAnalysisUtils { 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; double value0 = list.get(0).get(0); double value1 = list.get(0).get(1); @@ -291,8 +349,8 @@ public class ResultAnalysisUtils { resultAnalysis.setPointStatus("1"); resultAnalysis.setResultType("1"); resultAnalysis.setResStatus("2"); + resultAnalysis.setResValue(""); defaultDesc = messageUtils.get("正常"); - resultAnalysis.setResDesc(defaultDesc); } else { log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); resultAnalysis.setPointStatus("1"); @@ -300,6 +358,7 @@ public class ResultAnalysisUtils { //resultAnalysis.setResStatus("3"); //defaultDesc = "请进行纠偏"; resultAnalysis.setResStatus("2"); + resultAnalysis.setResValue(""); defaultDesc = "正常"; } } else { @@ -309,11 +368,11 @@ public class ResultAnalysisUtils { resultAnalysis.setResStatus("0"); defaultDesc = "纠偏结果异常"; } - } else if("2001".equals(resultAnalysis.getResCode())) { + } else if ("2001".equals(resultAnalysis.getResCode())) { ObjectMapper mapper = new ObjectMapper(); List> list; try { - log.info("parseAlg algType correction 2001 correctionValue: {}", correctionValue); + log.info("parseAlg algType correction 2001 correctionValue: {}", correctionValue); list = mapper.readValue(correctionValue, new TypeReference>>() { }); log.info("parseAlg algType correction 2001 correctionValue: {}", list); @@ -322,7 +381,7 @@ public class ResultAnalysisUtils { 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; double value0 = list.get(0).get(0); double value1 = list.get(0).get(1); @@ -353,12 +412,12 @@ public class ResultAnalysisUtils { defaultDesc = "纠偏码和值均异常"; } - } else if("2002".equals(resultAnalysis.getResCode())) { + } else if ("2002".equals(resultAnalysis.getResCode())) { resultAnalysis.setPointStatus("0"); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); defaultDesc = "超出比对范围"; - } else if("2003".equals(resultAnalysis.getResCode())) { + } else if ("2003".equals(resultAnalysis.getResCode())) { resultAnalysis.setPointStatus("0"); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); @@ -393,7 +452,6 @@ public class ResultAnalysisUtils { log.info("------------------parseAlg resultAnalysis: {}", resultAnalysis); } - public static void main(String[] args) { String value = "[[121,108],[121,108]]"; ObjectMapper mapper = new ObjectMapper(); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java index 407f585..0fca70a 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java @@ -1160,8 +1160,10 @@ public class PatrolResultController extends BaseController { logger.info("GET_INFO_41 ROBOT_TASK_STATUS patrolTaskStatusList: {}", patrolTaskStatusList); if (!patrolTaskStatusList.isEmpty()) { 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()); patrolTaskStatusOfDb.setTaskState(patrolTaskStatusItem.getTaskState()); // 如果上报状态为终止或超期限制状态时,需更新终止时间 diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java index af0e222..1ab47ed 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java @@ -487,7 +487,6 @@ public class PatrolTaskController extends BaseController { return getDataTable(0, pageList, newList); } - @Log( title = "巡视任务(任务模型文件数据)", businessType = BizType.EXPORT @@ -863,11 +862,12 @@ public class PatrolTaskController extends BaseController { return toAjax(1); } + // 单个纠偏 @PostMapping({"/correction"}) public AjaxResult correctionAlgorithm(@RequestBody 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) {