diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java index 0d993d9..c2809f0 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java @@ -2,6 +2,8 @@ package com.inspect.base.core.constant; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class AlgConstants { public static final String METER = "meter"; @@ -48,4 +50,18 @@ public class AlgConstants { INFRA_CAMERA, INFRA_CAMERA_REVERSE ); + + /** + * 表计类型的算法 + */ + public static final List ALG_METER_LIST = Arrays.asList( + METER, + "gis_meter", + GIS_METER_2 + ); + + /** + * 可读数的算法(红外和表计) + */ + public static final List READABLE_ALG_LIST = Stream.concat(ALG_INFRARED_LIST.stream(), ALG_METER_LIST.stream()).collect(Collectors.toList()); } diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/ResStatusEnum.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/ResStatusEnum.java index 6068cb1..a46cb06 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/ResStatusEnum.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/ResStatusEnum.java @@ -6,10 +6,12 @@ package com.inspect.base.core.enums; * @create 2026-03-27 15:53 **/ public enum ResStatusEnum { - UNCONFIRM("0", "未确认"), CONFIRM("1", "已确认"), - CANCEL("2", "已撤销"); + CANCEL("2", "已撤销"), + CORRECT("3", "需要纠偏"), + CORRECTED("4", "完成纠偏"); + private final String code; private final String info; diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/TaskStatus.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/TaskStatus.java index 1fb95b6..8a45f66 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/TaskStatus.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/TaskStatus.java @@ -5,11 +5,11 @@ import lombok.Getter; @Getter public enum TaskStatus { DONE("1", "已经执行", 5), - RUNNING("2", "正在执行", 3), - PAUSED("3", "暂停执行", 2), - HALTED("4", "终止执行", 0), + RUNNING("2", "正在执行", 0), + PAUSED("3", "暂停执行", 1), + HALTED("4", "终止执行", 3), PENDING("5", "尚未执行", 4), - EXPIRED("6", "超过期限", 1); + EXPIRED("6", "超过期限", 2); private final String code; private final String info; diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/utils/BigDecimalUtil.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/utils/BigDecimalUtil.java index feef0b9..1899835 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/utils/BigDecimalUtil.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/utils/BigDecimalUtil.java @@ -1,6 +1,7 @@ package com.inspect.base.core.utils; import java.math.BigDecimal; +import java.math.RoundingMode; public class BigDecimalUtil { public static double round(double f) { @@ -34,4 +35,20 @@ public class BigDecimalUtil { return BigDecimal.ZERO; } } + + /** + * 结果保留X位小数 + */ + public static String toOneDecimal(String str, int scale) { + if (str == null || str.trim().isEmpty()) { + return str; + } + try { + return new BigDecimal(str.trim()) + .setScale(scale, RoundingMode.DOWN) + .toString(); + } catch (NumberFormatException e) { + return str; + } + } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AlgValue.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AlgValue.java index 2a7eaa4..a0023a0 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AlgValue.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AlgValue.java @@ -5,8 +5,6 @@ import com.inspect.base.core.utils.StringUtils; import lombok.Getter; import lombok.Setter; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.Objects; @Setter @@ -57,22 +55,6 @@ public class AlgValue { return valueOnlyPrecise; } - /** - * 结果保留一位小数 - */ - public String toOneDecimal(String str) { - if (str == null || str.trim().isEmpty()) { - return str; - } - try { - return new BigDecimal(str.trim()) - .setScale(1, RoundingMode.DOWN) - .toString(); - } catch (NumberFormatException e) { - return str; - } - } - public AlgValue(String max, String min) { this.max = max; this.min = min; 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 19c649a..11820c4 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 @@ -802,6 +802,11 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { // 兼容算法结果传过来多个算法 continue; } + + // 红外算法保留一位小数,其他可读数算法增加读数单位 + String resValue = resultAnalysisUtils.addUnit2Value(resultAnalysis.getResValue(), resultAnalysis.getAlgType(), patrolResult.getUnit()); + resultAnalysis.setResValue(resValue); + resultAnalysisList.add(resultAnalysis); valueJoiner.add(resultAnalysis.getResValue()); String pointStatus = resultAnalysis.getPointStatus(); @@ -900,7 +905,7 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { // 处理正常结果、以及兼容处理无机人表计gis_meter2、纠偏correction的异常结果 if (resultAnalysisUtils.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc(), resultAnalysis) || (AlgConstants.GIS_METER_2.equals(analyseResPoint.getType())) - || ("correction".equals(analyseResPoint.getType()) && Arrays.asList("2001", "2002", "2003").contains(analyseResPoint.getCode()) )) { + || (AlgConstants.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 a83fc9c..b3254a8 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 @@ -1,5 +1,6 @@ package com.inspect.analysis.utils; +import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.inspect.analysis.constant.AnalyseConstants; @@ -8,6 +9,8 @@ import com.inspect.analysis.domain.AnalyseResPoint; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.enums.PointStatusEnum; +import com.inspect.base.core.enums.ResultTypeEnum; +import com.inspect.base.core.utils.BigDecimalUtil; import com.inspect.base.core.utils.StringUtils; import com.inspect.message.MessageUtils; import lombok.extern.slf4j.Slf4j; @@ -16,8 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @Slf4j @Component @@ -28,7 +33,8 @@ public class ResultAnalysisUtils { /** * 检查返回结果 - * code除了2000,其他值均为异常 + * code: 2000-正确 2001-图像数据错误 2002-算法分析失败 + * 图像数据错误是指未能获取到图像数据;算法分析失败是指算法本身分析过程中出错 */ public boolean checkCode(String code, String desc, ResultAnalysis resultAnalysis) { if (AnalyseConstants.ANALYSE_OK.equals(code)) { @@ -60,7 +66,7 @@ public class ResultAnalysisUtils { * 解析算法结果 * pointStatus点位状态: 点位状态 0-异常 1-正常 2-待人工确认 3-已撤销(忽略) 4-跟踪(告警) 5-确认(告警) 6-缺陷 * resultType分析结果: 0-缺陷 1-正常 2-异常 - * resStatus告警确认状态: 0-未确认 1-已确认 2-已撤销 + * resStatus告警确认状态: 0-未确认 1-已确认 2-已撤销 3-需要纠偏 4-完成纠偏 */ 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); @@ -76,7 +82,7 @@ public class ResultAnalysisUtils { return; } - if (value == null) { + if (value == null || value == "null") { value = ""; } @@ -201,47 +207,45 @@ public class ResultAnalysisUtils { boolean hasDefect = false; boolean hasAbnormal = false; try { - ObjectMapper mapper = new ObjectMapper(); // 1. 解析 JSON - List originalList = mapper.readValue(correctionValue, new TypeReference>() { - }); + String[] values = JSON.parseArray(correctionValue, String.class).toArray(new String[0]); // 2. 转换:非空 → "正常",空值 → "读数失败",超限 → "表计超限" - List descList = new ArrayList<>(originalList.size()); - for (String item : originalList) { + String[] descs = new String[values.length]; + for (int i = 0; i < values.length; i++) { + String item = values[i]; if (StringUtils.isEmpty(item)) { hasAbnormal = true; - descList.add("读数失败"); + values[i] = "--"; + descs[i] = "读数失败"; } else { if (algValue.isAlarm(item)) { hasDefect = true; - descList.add("表计超限"); + descs[i] = "表计超限"; } else { - descList.add("正常"); + descs[i] = "正常"; } } } - String descStr = mapper.writeValueAsString(descList); - if (hasDefect) { + String valueStr = String.join(",", values); + String descStr = String.join(",", descs); + resultAnalysis.setResValue(valueStr); + resultAnalysis.setResDesc(descStr); + // 无人机表计所有读数失败都应该是缺陷 + if (hasDefect || hasAbnormal) { resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); 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("正常"); - } + resultAnalysis.setPointStatus("1"); + resultAnalysis.setResStatus("0"); + resultAnalysis.setResultType("1"); } } catch (Exception e) { log.error("PARSE_ALG_GIS_METER_2_ERROR correctionValue: {}", correctionValue, e); defaultDesc = "解析异常"; + resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setResStatus("0"); + resultAnalysis.setResultType("0"); } } else if (algType.equals("sound")) { if (value.equals("1")) { @@ -257,22 +261,7 @@ public class ResultAnalysisUtils { } } else if ( AlgConstants.ALG_INFRARED_LIST.contains(algType) || - algType.equals("xb")) { -// String device = ""; -// if (algType.equals("infrared")) { -// device = messageUtils.get("红外"); -// } else if (algType.equals("infra_1800")) { -// log.info("红外1800==============="); -// device = messageUtils.get("红外1800"); -// } else if (algType.equals("infra_yu3")) { -// device = messageUtils.get("无人机红外"); -// } else if (algType.equals("infra_camera")) { -// device = messageUtils.get("摄像头红外"); -// } else if (algType.equals("infra_camera_reverse")) { -// device = messageUtils.get("摄像头红外灰度反算"); -// } else if (algType.equals("xb")) { -// device = messageUtils.get("形变"); -// } + algType.equals("xb")) { if (!algValue.isAlarm(value)) { log.info("infrared no alarm value: {}, algValue: {}", value, algValue); resultAnalysis.setResStatus("1"); @@ -289,10 +278,8 @@ public class ResultAnalysisUtils { //defaultDesc = device + messageUtils.get("告警"); defaultDesc = messageUtils.get("温度异常告警"); } - // 红外类型的算法读数保留一位小数 - resultAnalysis.setResValue(algValue.toOneDecimal(value)); if (messageUtils.get("分析失败").equals(defaultDesc)) { - defaultDesc = "-"; + defaultDesc = "--"; } } else if (algType.equals("isolator")) { log.info("ALG_TYPE isolator value: {}", value); @@ -346,7 +333,7 @@ public class ResultAnalysisUtils { resultAnalysis.setResultType("1"); resultAnalysis.setResStatus("2"); resultAnalysis.setResValue(""); - defaultDesc = messageUtils.get("正常"); + defaultDesc = messageUtils.get("无需纠偏"); } else { log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); resultAnalysis.setPointStatus("1"); @@ -355,7 +342,7 @@ public class ResultAnalysisUtils { //defaultDesc = "请进行纠偏"; resultAnalysis.setResStatus("2"); resultAnalysis.setResValue(""); - defaultDesc = "正常"; + defaultDesc = "无需纠偏"; } } else { log.info("parseAlg algType correction correctionValue abnormal"); @@ -364,6 +351,9 @@ public class ResultAnalysisUtils { resultAnalysis.setResStatus("0"); defaultDesc = "纠偏结果异常"; } + // 纠偏分析结果均为正常 + resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); } else if ("2001".equals(resultAnalysis.getResCode())) { ObjectMapper mapper = new ObjectMapper(); List> list; @@ -425,6 +415,9 @@ public class ResultAnalysisUtils { defaultDesc = messageUtils.get("未知异常"); resultAnalysis.setResDesc(defaultDesc); } + // 纠偏分析结果均为正常 + resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); } else { log.info("parseAlg algType: {}", algType); if (value.equals("0")) { @@ -451,6 +444,7 @@ public class ResultAnalysisUtils { /** * 将分析结果的辅助值进行合并展示 + * * @param analyseResPoint * @param resultAnalysis */ @@ -459,7 +453,7 @@ public class ResultAnalysisUtils { if (StringUtils.isNotEmpty(value2)) { log.info("mergeValue analyseResPoint value2: {}", value2); String value = analyseResPoint.getValue(); - if(!NumberUtils.isCreatable(value2)) { + if (!NumberUtils.isCreatable(value2)) { value2 = "null"; } String val = String.join(",", value, value2); @@ -467,21 +461,30 @@ public class ResultAnalysisUtils { } } - public static void main(String[] args) { - String value = "[[121,108],[121,108]]"; - ObjectMapper mapper = new ObjectMapper(); - List> list; - try { - list = mapper.readValue(value, new TypeReference>>() { - }); - System.out.println("parseAlg algType correction value: " + list); - } catch (Exception e) { - System.out.println("parseAlg algType correction value exception"); - list = new ArrayList<>(); - } - - if(list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) { - System.out.println("parseAlg algType correction value"); + /** + * 添加单位 + * + * @param resValue 读数 + * @param algType 算法类型 + * @param unit 单位 + * @return + */ + public String addUnit2Value(String resValue, String algType, String unit) { + if (StringUtils.isNotEmpty(resValue) && StringUtils.isNotEmpty(unit) && AlgConstants.READABLE_ALG_LIST.contains(algType)) { + log.info("addUnit2Value resValue: {}, algType: {}, unit: {}", resValue, algType, unit); + String[] valueArr = resValue.split(","); + String values = Arrays.stream(valueArr).map(val -> { + boolean isNumber = val.matches("^-?\\d+(\\.\\d+)?$"); + if (isNumber) { + if (AlgConstants.ALG_INFRARED_LIST.contains(algType)) { + return BigDecimalUtil.toOneDecimal(val, 1) + unit; + } + return val + unit; + } + return val; + }).collect(Collectors.joining(",")); + return values; } + return resValue; } } 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 ac4b23c..9c7295e 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 @@ -40,7 +40,6 @@ import com.inspect.maintain.domain.MaintainAreaXML; import com.inspect.maintain.domain.PatrolMaintainModuleXml; import com.inspect.maintain.service.IMaintainRegionService; import com.inspect.message.MessageUtils; -import com.inspect.mqtt.services.Warn.IUploadServer; import com.inspect.partrolresult.client.BaseDataClient; import com.inspect.partrolresult.client.WebsocketService; import com.inspect.partrolresult.domain.*; @@ -1620,6 +1619,9 @@ public class PatrolResultController extends BaseController { } logger.info("SEND_MESSAGE NEW patrolResult: {}", patrolResult); + Map map = resultAnalysisService.selectPointInfoById(patrolResult.getDeviceId()); + String unit = map.get("purpose"); + patrolResult.setUnit(unit); i = patrolResultService.insertPatrolResult(patrolResult);// resultStatistics.compare(patrolResult); // if (!"2".equals(Jqtype)) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java index 73018bd..ffb3eac 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java @@ -2,11 +2,13 @@ package com.inspect.partrolresult.domain; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import java.util.Objects; @Setter @Getter +@ToString public class PatrolResultRef { private String lineId; private Long mainId; @@ -24,6 +26,7 @@ public class PatrolResultRef { private String resultType; private String valueUnit; + private String unit; private String resultContent; private String resStatus; private String resImgUrl; @@ -51,25 +54,4 @@ public class PatrolResultRef { public int hashCode() { return Objects.hash(lineId, deviceId, devType, deviceSource, time, value, algType, algName, threshold, filePath, description, pointStatus, valueUnit, resultContent); } - - @Override - public String toString() { - return "PatrolResultRef{" + - "lineId='" + lineId + '\'' + - ", mainId=" + mainId + '\'' + - ", deviceId='" + deviceId + '\'' + - ", devType='" + devType + '\'' + - ", deviceSource='" + deviceSource + '\'' + - ", time='" + time + '\'' + - ", value='" + value + '\'' + - ", algType='" + algType + '\'' + - ", algName='" + algName + '\'' + - ", threshold='" + threshold + '\'' + - ", filePath='" + filePath + '\'' + - ", description='" + description + '\'' + - ", pointStatus='" + pointStatus + '\'' + - ", valueUnit='" + valueUnit + '\'' + - ", resultContent='" + resultContent + '\'' + - '}'; - } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java index a70742e..f45b679 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java @@ -7,6 +7,7 @@ import com.inspect.analysis.domain.AlgValue; import com.inspect.analysis.domain.AnalyseResPoint; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.mapper.ResultAnalysisMapper; +import com.inspect.analysis.utils.ResultAnalysisUtils; import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.enums.TaskType; import com.inspect.base.core.exception.ServiceException; @@ -44,6 +45,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -81,7 +83,8 @@ public class PatrolResultServiceImpl implements IPatrolResultService { private String exportReportFlag; @Autowired private MessageUtils messageUtils; - ; + @Resource + private ResultAnalysisUtils resultAnalysisUtils; public PatrolResultServiceImpl(PatrolResultMapper patrolResultMapper, PatrolResultDefaultValueMapper patrolResultDefaultvalueMapper, PatrolTaskResultMainMapper patrolTaskResultMainMapper, PatrolTaskStatusMapper patrolTaskStatusMapper, PatrolTaskMapper patrolTaskMapper, InspectionReportMapper inspectionReportMapper, InspectionReportImgMapper inspectionReportImgMapper, InspectionReportDataMapper inspectionReportDataMapper, ResultAnalysisMapper resultAnalysisMapper, FeignBasedataAreaService feignBasedataAreaService) { this.patrolResultMapper = patrolResultMapper; @@ -1334,6 +1337,10 @@ public class PatrolResultServiceImpl implements IPatrolResultService { reportData.setInspectionResults(patrolResultRef.getValue()); } + // 给读数增加单位 + String resValue = resultAnalysisUtils.addUnit2Value(reportData.getInspectionResults(), patrolResultRef.getAlgType(), patrolResultRef.getUnit()); + reportData.setInspectionResults(resValue); + String pointStatus = patrolResultRef.getPointStatus(); String resultType = patrolResultRef.getResultType(); log.info("[RESULT] resultType: {}, patrolResultRef: {}", resultType, patrolResultRef); @@ -1449,6 +1456,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { patrolResultRef.setTime(value.stream().map(item -> item.getTime() != null ? item.getTime() : "").distinct().findFirst().orElse("")); patrolResultRef.setThreshold(value.stream().map(item -> item.getThreshold() != null ? item.getThreshold() : "").distinct().findFirst().orElse("")); patrolResultRef.setAlgName(value.get(0).getAlgName()); + patrolResultRef.setAlgType(value.get(0).getAlgType()); patrolResultRef.setResultType("0"); resultRefs.add(patrolResultRef); }); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/domain/PatrolTaskResultMain.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/domain/PatrolTaskResultMain.java index 4eb1a53..8495c15 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/domain/PatrolTaskResultMain.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/domain/PatrolTaskResultMain.java @@ -1,19 +1,18 @@ package com.inspect.resultmain.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.inspect.base.core.annotation.Excel; import com.inspect.base.core.web.domain.BaseEntity; -import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; import java.util.Date; import java.util.List; -import lombok.Getter; -import lombok.Setter; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - @Setter @Getter +@ToString public class PatrolTaskResultMain extends BaseEntity { private static final long serialVersionUID = 1L; private Long lineId; @@ -95,27 +94,4 @@ public class PatrolTaskResultMain extends BaseEntity { public PatrolTaskResultMain(String taskPatrolledId) { this.taskPatrolledId = taskPatrolledId; } - - @Override - public String toString() { - return "PatrolTaskResultMain{" + - "lineId=" + lineId + - ", taskId='" + taskId + '\'' + - ", taskName='" + taskName + '\'' + - ", taskCode='" + taskCode + '\'' + - ", createBy='" + createBy + '\'' + - ", fileStatus='" + fileStatus + '\'' + - ", areaName='" + areaName + '\'' + - ", taskType='" + taskType + '\'' + - ", taskTime=" + taskTime + - ", intervalName='" + intervalName + '\'' + - ", devType='" + devType + '\'' + - ", taskResult='" + taskResult + '\'' + - ", requestId='" + requestId + '\'' + - ", checkPerson='" + checkPerson + '\'' + - ", taskPatrolledId='" + taskPatrolledId + '\'' + - ", taskPatrolledIds='" + taskPatrolledIds + '\'' + - ", checkTime=" + checkTime + - '}'; - } } 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 477f2ee..fbfec02 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 @@ -11,6 +11,8 @@ import com.inspect.base.core.constant.Color; import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.domain.DataMsg; import com.inspect.base.core.enums.PointStatusEnum; +import com.inspect.base.core.enums.ResStatusEnum; +import com.inspect.base.core.enums.ResultTypeEnum; import com.inspect.base.core.enums.TaskStatus; import com.inspect.base.core.service.SyncDataToUpstreamService; import com.inspect.base.core.sftp.SftpClient; @@ -183,7 +185,7 @@ public class PatrolTaskController extends BaseController { @GetMapping("/list") public TableDataInfo list(PatrolTask patrolTask) { -// startPage(); + startPage(); List taskList = patrolTaskService.selectPatrolTaskList(patrolTask); logger.debug("[TASK] patrolTask: {}, taskList: {}", patrolTask, taskList); for (PatrolTask task : taskList) { @@ -191,50 +193,17 @@ public class PatrolTaskController extends BaseController { patrolTaskStatus.setTaskCode(task.getTaskCode()); patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); - String taskMajorId = task.getTaskCode(); - int totalPoints = patrolTaskInfoService.countPatrolTaskInfoByMajorId(taskMajorId); - task.setTotalPoints(totalPoints); if (!statusList.isEmpty()) { task.setFileStatus("1"); } else { task.setFileStatus("0"); } -// String areaIdS = task.getAreaIdS(); -// AjaxResult ajaxResult = FeignBasedataAreaService.list((new JSONObject()).fluentPut("areaIdS", areaIdS)); -// JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ajaxResult)); -// // 检查响应是否成功 -// if ("200".equals(ajaxResult.get("code").toString())) { -// JSONArray data = jsonObject.getJSONArray("data"); -// if (data != null && !data.isEmpty()) { -// List areaNames = data.stream() -// .filter(item -> "station_in".equals(((JSONObject) item).getString("areaType"))) -// .map(item -> ((JSONObject) item).getString("areaName")) -// .collect(Collectors.toList()); -// task.setAreaName(StringUtils.join(areaNames, StringUtils.COMMA)); -// } -// } - } - List taskListEx = taskList; - if (StringUtils.isNotEmpty(patrolTask.getAreaName())) { - taskListEx = new ArrayList<>(); - for (PatrolTask task : taskList) { - if (StringUtils.isNotEmpty(task.getAreaName()) && task.getAreaName().contains(patrolTask.getAreaName())) { - taskListEx.add(task); - } - } -// PageDomain pageDomain = TableSupport.buildPageRequest(); -// int pageNum = pageDomain.getPageNum(); -// int pageSize = pageDomain.getPageSize(); -// int toNum = Math.min(taskListEx.size(), pageNum * pageSize); -// List pageList = taskListEx.subList((pageNum - 1) * pageSize, toNum); -// return getDataTable(0, pageList, taskListEx); + // 统计任务点位数量 + String taskMajorId = task.getTaskCode(); + int totalPoints = patrolTaskInfoService.countPatrolTaskInfoByMajorId(taskMajorId); + task.setTotalPoints(totalPoints); } - PageDomain pageDomain = TableSupport.buildPageRequest(); - int pageNum = pageDomain.getPageNum(); - int pageSize = pageDomain.getPageSize(); - int toNum = Math.min(taskListEx.size(), pageNum * pageSize); - List pageList = taskListEx.subList((pageNum - 1) * pageSize, toNum); - return getDataTable(0, pageList, taskListEx); + return getDataTable(taskList); } @GetMapping({"/taskInfo"}) @@ -395,13 +364,28 @@ public class PatrolTaskController extends BaseController { List correctionList = partitionedMap.getOrDefault(true, Collections.emptyList()); newList = partitionedMap.getOrDefault(false, Collections.emptyList()); - if(!correctionList.isEmpty()) { - for(PatrolData item : newList) { + if (!correctionList.isEmpty()) { + for (PatrolData item : newList) { Optional correctionOptional = correctionList.stream().filter(element -> element.getObjectId().equals(item.getObjectId())).findFirst(); if (correctionOptional.isPresent()) { PatrolData correctionData = correctionOptional.get(); item.setResStatus(correctionData.getResStatus()); - item.setOriginalValue(correctionData.getOriginalValue()); + item.setOriginalValue(correctionData.getDesc()); + // 同点位算法的状态为正常时,以纠偏算法的状态为主,否则以点位算法的状态为主 + if (ResultTypeEnum.NORMAL.getCode().equals(item.getWarnStatus())) { + // 纠偏算法异常,状态更改为异常 + if (ResStatusEnum.UNCONFIRM.getCode().equals(item.getResStatus())) { + item.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); + } + // 需要纠偏,状态更改为缺陷 + if (ResStatusEnum.CORRECT.getCode().equals(correctionData.getResStatus())) { + item.setPointStatus(PointStatusEnum.DEFECT.getCode()); + } + } + + if (ResStatusEnum.CORRECTED.getCode().equals(item.getResStatus())) { + item.setOriginalValue(correctionData.getOriginalValue()); + } } } } @@ -1484,6 +1468,7 @@ public class PatrolTaskController extends BaseController { } public void issueTask(PatrolTask patrolTask) { + logger.info("***************************** JobTaskTimer issueTask ************************************* patrolTask: {}", patrolTask); String rebootCode = patrolTaskService.selectConfigByKey("rebootCode");//robotCode String uavCode = patrolTaskService.selectConfigByKey("uavCode");//droneCode String receiveCode = ""; @@ -4006,7 +3991,8 @@ public class PatrolTaskController extends BaseController { listAlgName.add(item.getAlgName()); } } - + Map overview = patrolTaskService.countPatrolTaskOverview(patrolTaskStatus.getTaskPatrolledId()); + map.put("overview", overview); map.put("listPointName", listPointName); map.put("listPointStatus", mapList); map.put("listDeviceSource", listDeviceSource); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java index 5be0335..9b56f8e 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java @@ -60,4 +60,6 @@ public interface PatrolTaskMapper { List selectBasedataPatrolPointPresetList(@Param("patrolPointIds") List patrolPointIds); List selectPatrolPresetPosList(@Param("patrolPointIds") List patrolPointIds); + + Map countPatrolTaskOverview(String taskPatrolledId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java index f9aea99..e8d5a0a 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java @@ -5,11 +5,9 @@ import com.inspect.task.domain.DeviceConvert; import com.inspect.task.domain.PatrolData; import com.inspect.task.domain.PatrolTask; import com.inspect.taskstatus.domain.PatrolTaskStatus; -import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; -import java.util.Set; public interface IPatrolTaskService { PatrolTask selectPatrolTaskByTaskId(Long taskId); @@ -65,4 +63,6 @@ public interface IPatrolTaskService { List selectBasedataPatrolPointPresetList(List patrolPointIds); List selectPatrolPresetPosList(List patrolPointIds); + + Map countPatrolTaskOverview(String taskPatrolledId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java index b266825..65e4c8d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java @@ -28,7 +28,6 @@ import java.util.stream.Collectors; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; -import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; @@ -371,4 +370,9 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService { public List selectPatrolPresetPosList(List patrolPointIds) { return patrolTaskMapper.selectPatrolPresetPosList(patrolPointIds); } + + @Override + public Map countPatrolTaskOverview(String taskPatrolledId) { + return patrolTaskMapper.countPatrolTaskOverview(taskPatrolledId); + } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java index 2484148..637f0e2 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java @@ -80,12 +80,14 @@ public class PatrolTaskStatus extends BaseEntity { @Excel( name = "巡检类型" ) + private String patrolType; // 主任务id private String mainId; private String taskType; private String filterTaskType; + // 汇总信息 + private String summary; private List children; - private String patrolType; private String timeType; private String timeConditions; private String beginTime; diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml index cfc5617..cf1db7d 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml @@ -671,6 +671,7 @@ b.result_type, b.task_patrol_id, a.value_unit, + a.unit, b.result_content, b.alg_type, d.alg_subtype_name as alg_name diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml index 2aaad6f..e188777 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml @@ -125,11 +125,9 @@ and execution_status = #{executionStatus} and task_cycle = #{taskCycle} and dev_no = #{devNo} - and find_in_set(#{devType}, dev_type) and storage = #{storage} and area_id = #{areaId} - and execution_mode = #{executionMode} and linkage_state = #{linkageState} and is_up = #{isUp} @@ -140,6 +138,9 @@ and date_format(create_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') + + and CONCAT(',', area_name, ',') LIKE CONCAT('%', #{areaName}, '%') + order by task_id desc @@ -472,7 +473,33 @@ #{patrolPointId} - - + +