Browse Source

feat: 1.巡视详情和巡视归档可读数类算法,添加单位;2.优化纠偏算法的展示;3.巡视详情新增总-已巡检-未巡检点位数量统计

fix: 1.机器狗红外读数只保留一位小数;2.优化巡视方案列表接口加载速度;3.调整联合任务状态的展示优先级
master
yinhuaiwei 3 weeks ago
parent
commit
9e6a264143
18 changed files with 205 additions and 190 deletions
  1. +16
    -0
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java
  2. +4
    -2
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/ResStatusEnum.java
  3. +4
    -4
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/TaskStatus.java
  4. +17
    -0
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/utils/BigDecimalUtil.java
  5. +0
    -18
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AlgValue.java
  6. +6
    -1
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java
  7. +65
    -62
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java
  8. +3
    -1
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java
  9. +3
    -21
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java
  10. +9
    -1
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java
  11. +5
    -29
      inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/domain/PatrolTaskResultMain.java
  12. +29
    -43
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java
  13. +2
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java
  14. +2
    -2
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java
  15. +5
    -1
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java
  16. +3
    -1
      inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java
  17. +1
    -0
      inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml
  18. +31
    -4
      inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml

+ 16
- 0
inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java View File

@ -2,6 +2,8 @@ package com.inspect.base.core.constant;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class AlgConstants { public class AlgConstants {
public static final String METER = "meter"; public static final String METER = "meter";
@ -48,4 +50,18 @@ public class AlgConstants {
INFRA_CAMERA, INFRA_CAMERA,
INFRA_CAMERA_REVERSE INFRA_CAMERA_REVERSE
); );
/**
* 表计类型的算法
*/
public static final List<String> ALG_METER_LIST = Arrays.asList(
METER,
"gis_meter",
GIS_METER_2
);
/**
* 可读数的算法红外和表计
*/
public static final List<String> READABLE_ALG_LIST = Stream.concat(ALG_INFRARED_LIST.stream(), ALG_METER_LIST.stream()).collect(Collectors.toList());
} }

+ 4
- 2
inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/ResStatusEnum.java View File

@ -6,10 +6,12 @@ package com.inspect.base.core.enums;
* @create 2026-03-27 15:53 * @create 2026-03-27 15:53
**/ **/
public enum ResStatusEnum { public enum ResStatusEnum {
UNCONFIRM("0", "未确认"), UNCONFIRM("0", "未确认"),
CONFIRM("1", "已确认"), CONFIRM("1", "已确认"),
CANCEL("2", "已撤销");
CANCEL("2", "已撤销"),
CORRECT("3", "需要纠偏"),
CORRECTED("4", "完成纠偏");
private final String code; private final String code;
private final String info; private final String info;


+ 4
- 4
inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/TaskStatus.java View File

@ -5,11 +5,11 @@ import lombok.Getter;
@Getter @Getter
public enum TaskStatus { public enum TaskStatus {
DONE("1", "已经执行", 5), DONE("1", "已经执行", 5),
RUNNING("2", "正在执行", 3),
PAUSED("3", "暂停执行", 2),
HALTED("4", "终止执行", 0),
RUNNING("2", "正在执行", 0),
PAUSED("3", "暂停执行", 1),
HALTED("4", "终止执行", 3),
PENDING("5", "尚未执行", 4), PENDING("5", "尚未执行", 4),
EXPIRED("6", "超过期限", 1);
EXPIRED("6", "超过期限", 2);
private final String code; private final String code;
private final String info; private final String info;


+ 17
- 0
inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/utils/BigDecimalUtil.java View File

@ -1,6 +1,7 @@
package com.inspect.base.core.utils; package com.inspect.base.core.utils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalUtil { public class BigDecimalUtil {
public static double round(double f) { public static double round(double f) {
@ -34,4 +35,20 @@ public class BigDecimalUtil {
return BigDecimal.ZERO; 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;
}
}
} }

+ 0
- 18
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AlgValue.java View File

@ -5,8 +5,6 @@ import com.inspect.base.core.utils.StringUtils;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects; import java.util.Objects;
@Setter @Setter
@ -57,22 +55,6 @@ public class AlgValue {
return valueOnlyPrecise; 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) { public AlgValue(String max, String min) {
this.max = max; this.max = max;
this.min = min; this.min = min;


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

@ -802,6 +802,11 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService {
// 兼容算法结果传过来多个算法 // 兼容算法结果传过来多个算法
continue; continue;
} }
// 红外算法保留一位小数其他可读数算法增加读数单位
String resValue = resultAnalysisUtils.addUnit2Value(resultAnalysis.getResValue(), resultAnalysis.getAlgType(), patrolResult.getUnit());
resultAnalysis.setResValue(resValue);
resultAnalysisList.add(resultAnalysis); resultAnalysisList.add(resultAnalysis);
valueJoiner.add(resultAnalysis.getResValue()); valueJoiner.add(resultAnalysis.getResValue());
String pointStatus = resultAnalysis.getPointStatus(); String pointStatus = resultAnalysis.getPointStatus();
@ -900,7 +905,7 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService {
// 处理正常结果以及兼容处理无机人表计gis_meter2纠偏correction的异常结果 // 处理正常结果以及兼容处理无机人表计gis_meter2纠偏correction的异常结果
if (resultAnalysisUtils.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc(), resultAnalysis) if (resultAnalysisUtils.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc(), resultAnalysis)
|| (AlgConstants.GIS_METER_2.equals(analyseResPoint.getType())) || (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()); AlgValue algValue = selectAlgMap(objectId, analyseResPoint.getType());
resultAnalysisUtils.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc(), resultAnalysis); resultAnalysisUtils.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc(), resultAnalysis);
// 合并辅助值字段 // 合并辅助值字段


+ 65
- 62
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java View File

@ -1,5 +1,6 @@
package com.inspect.analysis.utils; package com.inspect.analysis.utils;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.inspect.analysis.constant.AnalyseConstants; 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.analysis.domain.ResultAnalysis;
import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.constant.AlgConstants;
import com.inspect.base.core.enums.PointStatusEnum; 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.base.core.utils.StringUtils;
import com.inspect.message.MessageUtils; import com.inspect.message.MessageUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -16,8 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
@ -28,7 +33,8 @@ public class ResultAnalysisUtils {
/** /**
* 检查返回结果 * 检查返回结果
* code除了2000,其他值均为异常
* code: 2000-正确 2001-图像数据错误 2002-算法分析失败
* 图像数据错误是指未能获取到图像数据算法分析失败是指算法本身分析过程中出错
*/ */
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)) {
@ -60,7 +66,7 @@ public class ResultAnalysisUtils {
* 解析算法结果 * 解析算法结果
* pointStatus点位状态: 点位状态 0-异常 1-正常 2-待人工确认 3-已撤销忽略 4-跟踪告警 5-确认告警 6-缺陷 * pointStatus点位状态: 点位状态 0-异常 1-正常 2-待人工确认 3-已撤销忽略 4-跟踪告警 5-确认告警 6-缺陷
* resultType分析结果: 0-缺陷 1-正常 2-异常 * 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) { 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);
@ -76,7 +82,7 @@ public class ResultAnalysisUtils {
return; return;
} }
if (value == null) {
if (value == null || value == "null") {
value = ""; value = "";
} }
@ -201,47 +207,45 @@ public class ResultAnalysisUtils {
boolean hasDefect = false; boolean hasDefect = false;
boolean hasAbnormal = false; boolean hasAbnormal = false;
try { try {
ObjectMapper mapper = new ObjectMapper();
// 1. 解析 JSON // 1. 解析 JSON
List<String> originalList = mapper.readValue(correctionValue, new TypeReference<List<String>>() {
});
String[] values = JSON.parseArray(correctionValue, String.class).toArray(new String[0]);
// 2. 转换非空 "正常"空值 "读数失败"超限 "表计超限" // 2. 转换非空 "正常"空值 "读数失败"超限 "表计超限"
List<String> 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)) { if (StringUtils.isEmpty(item)) {
hasAbnormal = true; hasAbnormal = true;
descList.add("读数失败");
values[i] = "--";
descs[i] = "读数失败";
} else { } else {
if (algValue.isAlarm(item)) { if (algValue.isAlarm(item)) {
hasDefect = true; hasDefect = true;
descList.add("表计超限");
descs[i] = "表计超限";
} else { } 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.setPointStatus(PointStatusEnum.DEFECT.getCode());
resultAnalysis.setResStatus("0"); resultAnalysis.setResStatus("0");
resultAnalysis.setResultType("0"); resultAnalysis.setResultType("0");
defaultDesc = descStr;
} else { } 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) { } catch (Exception e) {
log.error("PARSE_ALG_GIS_METER_2_ERROR correctionValue: {}", correctionValue, e); log.error("PARSE_ALG_GIS_METER_2_ERROR correctionValue: {}", correctionValue, e);
defaultDesc = "解析异常"; defaultDesc = "解析异常";
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode());
resultAnalysis.setResStatus("0");
resultAnalysis.setResultType("0");
} }
} else if (algType.equals("sound")) { } else if (algType.equals("sound")) {
if (value.equals("1")) { if (value.equals("1")) {
@ -257,22 +261,7 @@ public class ResultAnalysisUtils {
} }
} else if ( } else if (
AlgConstants.ALG_INFRARED_LIST.contains(algType) || 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)) { if (!algValue.isAlarm(value)) {
log.info("infrared no alarm value: {}, algValue: {}", value, algValue); log.info("infrared no alarm value: {}, algValue: {}", value, algValue);
resultAnalysis.setResStatus("1"); resultAnalysis.setResStatus("1");
@ -289,10 +278,8 @@ public class ResultAnalysisUtils {
//defaultDesc = device + messageUtils.get("告警"); //defaultDesc = device + messageUtils.get("告警");
defaultDesc = messageUtils.get("温度异常告警"); defaultDesc = messageUtils.get("温度异常告警");
} }
// 红外类型的算法读数保留一位小数
resultAnalysis.setResValue(algValue.toOneDecimal(value));
if (messageUtils.get("分析失败").equals(defaultDesc)) { if (messageUtils.get("分析失败").equals(defaultDesc)) {
defaultDesc = "-";
defaultDesc = "--";
} }
} else if (algType.equals("isolator")) { } else if (algType.equals("isolator")) {
log.info("ALG_TYPE isolator value: {}", value); log.info("ALG_TYPE isolator value: {}", value);
@ -346,7 +333,7 @@ public class ResultAnalysisUtils {
resultAnalysis.setResultType("1"); resultAnalysis.setResultType("1");
resultAnalysis.setResStatus("2"); resultAnalysis.setResStatus("2");
resultAnalysis.setResValue(""); resultAnalysis.setResValue("");
defaultDesc = messageUtils.get("正常");
defaultDesc = messageUtils.get("无需纠偏");
} 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");
@ -355,7 +342,7 @@ public class ResultAnalysisUtils {
//defaultDesc = "请进行纠偏"; //defaultDesc = "请进行纠偏";
resultAnalysis.setResStatus("2"); resultAnalysis.setResStatus("2");
resultAnalysis.setResValue(""); resultAnalysis.setResValue("");
defaultDesc = "正常";
defaultDesc = "无需纠偏";
} }
} else { } else {
log.info("parseAlg algType correction correctionValue abnormal"); log.info("parseAlg algType correction correctionValue abnormal");
@ -364,6 +351,9 @@ public class ResultAnalysisUtils {
resultAnalysis.setResStatus("0"); resultAnalysis.setResStatus("0");
defaultDesc = "纠偏结果异常"; defaultDesc = "纠偏结果异常";
} }
// 纠偏分析结果均为正常
resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode());
resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode());
} 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;
@ -425,6 +415,9 @@ public class ResultAnalysisUtils {
defaultDesc = messageUtils.get("未知异常"); defaultDesc = messageUtils.get("未知异常");
resultAnalysis.setResDesc(defaultDesc); resultAnalysis.setResDesc(defaultDesc);
} }
// 纠偏分析结果均为正常
resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode());
resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode());
} else { } else {
log.info("parseAlg algType: {}", algType); log.info("parseAlg algType: {}", algType);
if (value.equals("0")) { if (value.equals("0")) {
@ -451,6 +444,7 @@ public class ResultAnalysisUtils {
/** /**
* 将分析结果的辅助值进行合并展示 * 将分析结果的辅助值进行合并展示
*
* @param analyseResPoint * @param analyseResPoint
* @param resultAnalysis * @param resultAnalysis
*/ */
@ -459,7 +453,7 @@ public class ResultAnalysisUtils {
if (StringUtils.isNotEmpty(value2)) { if (StringUtils.isNotEmpty(value2)) {
log.info("mergeValue analyseResPoint value2: {}", value2); log.info("mergeValue analyseResPoint value2: {}", value2);
String value = analyseResPoint.getValue(); String value = analyseResPoint.getValue();
if(!NumberUtils.isCreatable(value2)) {
if (!NumberUtils.isCreatable(value2)) {
value2 = "null"; value2 = "null";
} }
String val = String.join(",", value, value2); 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<Double>> list;
try {
list = mapper.readValue(value, new TypeReference<List<List<Double>>>() {
});
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;
} }
} }

+ 3
- 1
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java View File

@ -40,7 +40,6 @@ import com.inspect.maintain.domain.MaintainAreaXML;
import com.inspect.maintain.domain.PatrolMaintainModuleXml; import com.inspect.maintain.domain.PatrolMaintainModuleXml;
import com.inspect.maintain.service.IMaintainRegionService; import com.inspect.maintain.service.IMaintainRegionService;
import com.inspect.message.MessageUtils; import com.inspect.message.MessageUtils;
import com.inspect.mqtt.services.Warn.IUploadServer;
import com.inspect.partrolresult.client.BaseDataClient; import com.inspect.partrolresult.client.BaseDataClient;
import com.inspect.partrolresult.client.WebsocketService; import com.inspect.partrolresult.client.WebsocketService;
import com.inspect.partrolresult.domain.*; import com.inspect.partrolresult.domain.*;
@ -1620,6 +1619,9 @@ public class PatrolResultController extends BaseController {
} }
logger.info("SEND_MESSAGE NEW patrolResult: {}", patrolResult); logger.info("SEND_MESSAGE NEW patrolResult: {}", patrolResult);
Map<String, String> map = resultAnalysisService.selectPointInfoById(patrolResult.getDeviceId());
String unit = map.get("purpose");
patrolResult.setUnit(unit);
i = patrolResultService.insertPatrolResult(patrolResult);// i = patrolResultService.insertPatrolResult(patrolResult);//
resultStatistics.compare(patrolResult); resultStatistics.compare(patrolResult);
// if (!"2".equals(Jqtype)) { // if (!"2".equals(Jqtype)) {


+ 3
- 21
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java View File

@ -2,11 +2,13 @@ package com.inspect.partrolresult.domain;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString;
import java.util.Objects; import java.util.Objects;
@Setter @Setter
@Getter @Getter
@ToString
public class PatrolResultRef { public class PatrolResultRef {
private String lineId; private String lineId;
private Long mainId; private Long mainId;
@ -24,6 +26,7 @@ public class PatrolResultRef {
private String resultType; private String resultType;
private String valueUnit; private String valueUnit;
private String unit;
private String resultContent; private String resultContent;
private String resStatus; private String resStatus;
private String resImgUrl; private String resImgUrl;
@ -51,25 +54,4 @@ public class PatrolResultRef {
public int hashCode() { public int hashCode() {
return Objects.hash(lineId, deviceId, devType, deviceSource, time, value, algType, algName, threshold, filePath, description, pointStatus, valueUnit, resultContent); 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 + '\'' +
'}';
}
} }

+ 9
- 1
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java View File

@ -7,6 +7,7 @@ import com.inspect.analysis.domain.AlgValue;
import com.inspect.analysis.domain.AnalyseResPoint; import com.inspect.analysis.domain.AnalyseResPoint;
import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.domain.ResultAnalysis;
import com.inspect.analysis.mapper.ResultAnalysisMapper; import com.inspect.analysis.mapper.ResultAnalysisMapper;
import com.inspect.analysis.utils.ResultAnalysisUtils;
import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.constant.AlgConstants;
import com.inspect.base.core.enums.TaskType; import com.inspect.base.core.enums.TaskType;
import com.inspect.base.core.exception.ServiceException; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -81,7 +83,8 @@ public class PatrolResultServiceImpl implements IPatrolResultService {
private String exportReportFlag; private String exportReportFlag;
@Autowired @Autowired
private MessageUtils messageUtils; 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) { 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; this.patrolResultMapper = patrolResultMapper;
@ -1334,6 +1337,10 @@ public class PatrolResultServiceImpl implements IPatrolResultService {
reportData.setInspectionResults(patrolResultRef.getValue()); reportData.setInspectionResults(patrolResultRef.getValue());
} }
// 给读数增加单位
String resValue = resultAnalysisUtils.addUnit2Value(reportData.getInspectionResults(), patrolResultRef.getAlgType(), patrolResultRef.getUnit());
reportData.setInspectionResults(resValue);
String pointStatus = patrolResultRef.getPointStatus(); String pointStatus = patrolResultRef.getPointStatus();
String resultType = patrolResultRef.getResultType(); String resultType = patrolResultRef.getResultType();
log.info("[RESULT] resultType: {}, patrolResultRef: {}", resultType, patrolResultRef); 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.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.setThreshold(value.stream().map(item -> item.getThreshold() != null ? item.getThreshold() : "").distinct().findFirst().orElse(""));
patrolResultRef.setAlgName(value.get(0).getAlgName()); patrolResultRef.setAlgName(value.get(0).getAlgName());
patrolResultRef.setAlgType(value.get(0).getAlgType());
patrolResultRef.setResultType("0"); patrolResultRef.setResultType("0");
resultRefs.add(patrolResultRef); resultRefs.add(patrolResultRef);
}); });


+ 5
- 29
inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/domain/PatrolTaskResultMain.java View File

@ -1,19 +1,18 @@
package com.inspect.resultmain.domain; package com.inspect.resultmain.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.inspect.base.core.annotation.Excel; import com.inspect.base.core.annotation.Excel;
import com.inspect.base.core.web.domain.BaseEntity; 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.Date;
import java.util.List; 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 @Setter
@Getter @Getter
@ToString
public class PatrolTaskResultMain extends BaseEntity { public class PatrolTaskResultMain extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Long lineId; private Long lineId;
@ -95,27 +94,4 @@ public class PatrolTaskResultMain extends BaseEntity {
public PatrolTaskResultMain(String taskPatrolledId) { public PatrolTaskResultMain(String taskPatrolledId) {
this.taskPatrolledId = 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 +
'}';
}
} }

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

@ -11,6 +11,8 @@ import com.inspect.base.core.constant.Color;
import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.constant.RedisConst;
import com.inspect.base.core.domain.DataMsg; import com.inspect.base.core.domain.DataMsg;
import com.inspect.base.core.enums.PointStatusEnum; 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.enums.TaskStatus;
import com.inspect.base.core.service.SyncDataToUpstreamService; import com.inspect.base.core.service.SyncDataToUpstreamService;
import com.inspect.base.core.sftp.SftpClient; import com.inspect.base.core.sftp.SftpClient;
@ -183,7 +185,7 @@ public class PatrolTaskController extends BaseController {
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(PatrolTask patrolTask) { public TableDataInfo list(PatrolTask patrolTask) {
// startPage();
startPage();
List<PatrolTask> taskList = patrolTaskService.selectPatrolTaskList(patrolTask); List<PatrolTask> taskList = patrolTaskService.selectPatrolTaskList(patrolTask);
logger.debug("[TASK] patrolTask: {}, taskList: {}", patrolTask, taskList); logger.debug("[TASK] patrolTask: {}, taskList: {}", patrolTask, taskList);
for (PatrolTask task : taskList) { for (PatrolTask task : taskList) {
@ -191,50 +193,17 @@ public class PatrolTaskController extends BaseController {
patrolTaskStatus.setTaskCode(task.getTaskCode()); patrolTaskStatus.setTaskCode(task.getTaskCode());
patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode());
List<PatrolTaskStatus> statusList = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); List<PatrolTaskStatus> statusList = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus);
String taskMajorId = task.getTaskCode();
int totalPoints = patrolTaskInfoService.countPatrolTaskInfoByMajorId(taskMajorId);
task.setTotalPoints(totalPoints);
if (!statusList.isEmpty()) { if (!statusList.isEmpty()) {
task.setFileStatus("1"); task.setFileStatus("1");
} else { } else {
task.setFileStatus("0"); 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<String> 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<PatrolTask> 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<PatrolTask> 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<PatrolTask> pageList = taskListEx.subList((pageNum - 1) * pageSize, toNum);
return getDataTable(0, pageList, taskListEx);
return getDataTable(taskList);
} }
@GetMapping({"/taskInfo"}) @GetMapping({"/taskInfo"})
@ -395,13 +364,28 @@ public class PatrolTaskController extends BaseController {
List<PatrolData> correctionList = partitionedMap.getOrDefault(true, Collections.emptyList()); List<PatrolData> correctionList = partitionedMap.getOrDefault(true, Collections.emptyList());
newList = partitionedMap.getOrDefault(false, Collections.emptyList()); newList = partitionedMap.getOrDefault(false, Collections.emptyList());
if(!correctionList.isEmpty()) {
for(PatrolData item : newList) {
if (!correctionList.isEmpty()) {
for (PatrolData item : newList) {
Optional<PatrolData> correctionOptional = correctionList.stream().filter(element -> element.getObjectId().equals(item.getObjectId())).findFirst(); Optional<PatrolData> correctionOptional = correctionList.stream().filter(element -> element.getObjectId().equals(item.getObjectId())).findFirst();
if (correctionOptional.isPresent()) { if (correctionOptional.isPresent()) {
PatrolData correctionData = correctionOptional.get(); PatrolData correctionData = correctionOptional.get();
item.setResStatus(correctionData.getResStatus()); 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) { public void issueTask(PatrolTask patrolTask) {
logger.info("***************************** JobTaskTimer issueTask ************************************* patrolTask: {}", patrolTask);
String rebootCode = patrolTaskService.selectConfigByKey("rebootCode");//robotCode String rebootCode = patrolTaskService.selectConfigByKey("rebootCode");//robotCode
String uavCode = patrolTaskService.selectConfigByKey("uavCode");//droneCode String uavCode = patrolTaskService.selectConfigByKey("uavCode");//droneCode
String receiveCode = ""; String receiveCode = "";
@ -4006,7 +3991,8 @@ public class PatrolTaskController extends BaseController {
listAlgName.add(item.getAlgName()); listAlgName.add(item.getAlgName());
} }
} }
Map<String, Integer> overview = patrolTaskService.countPatrolTaskOverview(patrolTaskStatus.getTaskPatrolledId());
map.put("overview", overview);
map.put("listPointName", listPointName); map.put("listPointName", listPointName);
map.put("listPointStatus", mapList); map.put("listPointStatus", mapList);
map.put("listDeviceSource", listDeviceSource); map.put("listDeviceSource", listDeviceSource);


+ 2
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java View File

@ -60,4 +60,6 @@ public interface PatrolTaskMapper {
List<JSONObject> selectBasedataPatrolPointPresetList(@Param("patrolPointIds") List<String> patrolPointIds); List<JSONObject> selectBasedataPatrolPointPresetList(@Param("patrolPointIds") List<String> patrolPointIds);
List<JSONObject> selectPatrolPresetPosList(@Param("patrolPointIds") List<String> patrolPointIds); List<JSONObject> selectPatrolPresetPosList(@Param("patrolPointIds") List<String> patrolPointIds);
Map<String, Integer> countPatrolTaskOverview(String taskPatrolledId);
} }

+ 2
- 2
inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java View File

@ -5,11 +5,9 @@ import com.inspect.task.domain.DeviceConvert;
import com.inspect.task.domain.PatrolData; import com.inspect.task.domain.PatrolData;
import com.inspect.task.domain.PatrolTask; import com.inspect.task.domain.PatrolTask;
import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.domain.PatrolTaskStatus;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
public interface IPatrolTaskService { public interface IPatrolTaskService {
PatrolTask selectPatrolTaskByTaskId(Long taskId); PatrolTask selectPatrolTaskByTaskId(Long taskId);
@ -65,4 +63,6 @@ public interface IPatrolTaskService {
List<JSONObject> selectBasedataPatrolPointPresetList(List<String> patrolPointIds); List<JSONObject> selectBasedataPatrolPointPresetList(List<String> patrolPointIds);
List<JSONObject> selectPatrolPresetPosList(List<String> patrolPointIds); List<JSONObject> selectPatrolPresetPosList(List<String> patrolPointIds);
Map<String, Integer> countPatrolTaskOverview(String taskPatrolledId);
} }

+ 5
- 1
inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java View File

@ -28,7 +28,6 @@ import java.util.stream.Collectors;
import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.domain.PatrolTaskStatus;
import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@ -371,4 +370,9 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService {
public List<JSONObject> selectPatrolPresetPosList(List<String> patrolPointIds) { public List<JSONObject> selectPatrolPresetPosList(List<String> patrolPointIds) {
return patrolTaskMapper.selectPatrolPresetPosList(patrolPointIds); return patrolTaskMapper.selectPatrolPresetPosList(patrolPointIds);
} }
@Override
public Map<String, Integer> countPatrolTaskOverview(String taskPatrolledId) {
return patrolTaskMapper.countPatrolTaskOverview(taskPatrolledId);
}
} }

+ 3
- 1
inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java View File

@ -80,12 +80,14 @@ public class PatrolTaskStatus extends BaseEntity {
@Excel( @Excel(
name = "巡检类型" name = "巡检类型"
) )
private String patrolType;
// 主任务id // 主任务id
private String mainId; private String mainId;
private String taskType; private String taskType;
private String filterTaskType; private String filterTaskType;
// 汇总信息
private String summary;
private List<PatrolTaskStatus> children; private List<PatrolTaskStatus> children;
private String patrolType;
private String timeType; private String timeType;
private String timeConditions; private String timeConditions;
private String beginTime; private String beginTime;


+ 1
- 0
inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml View File

@ -671,6 +671,7 @@
b.result_type, b.result_type,
b.task_patrol_id, b.task_patrol_id,
a.value_unit, a.value_unit,
a.unit,
b.result_content, b.result_content,
b.alg_type, b.alg_type,
d.alg_subtype_name as alg_name d.alg_subtype_name as alg_name


+ 31
- 4
inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml View File

@ -125,11 +125,9 @@
<if test="executionStatus != null and executionStatus != ''">and execution_status = #{executionStatus}</if> <if test="executionStatus != null and executionStatus != ''">and execution_status = #{executionStatus}</if>
<if test="taskCycle != null and taskCycle != ''">and task_cycle = #{taskCycle}</if> <if test="taskCycle != null and taskCycle != ''">and task_cycle = #{taskCycle}</if>
<if test="devNo != null and devNo != ''">and dev_no = #{devNo}</if> <if test="devNo != null and devNo != ''">and dev_no = #{devNo}</if>
<!-- <if test="devType != null and devType != ''">and dev_type = #{devType}</if>-->
<if test="devType != null and devType != ''">and find_in_set(#{devType}, dev_type)</if> <if test="devType != null and devType != ''">and find_in_set(#{devType}, dev_type)</if>
<if test="storage != null and storage != ''">and storage = #{storage}</if> <if test="storage != null and storage != ''">and storage = #{storage}</if>
<if test="areaId != null and areaId != ''">and area_id = #{areaId}</if> <if test="areaId != null and areaId != ''">and area_id = #{areaId}</if>
<!-- <if test="areaName != null and areaName != ''">and area_name = #{areaName}</if>-->
<if test="executionMode != null and executionMode != ''">and execution_mode = #{executionMode}</if> <if test="executionMode != null and executionMode != ''">and execution_mode = #{executionMode}</if>
<if test="linkageState != null and linkageState != ''">and linkage_state = #{linkageState}</if> <if test="linkageState != null and linkageState != ''">and linkage_state = #{linkageState}</if>
<if test="isUp != null and isUp != ''">and is_up = #{isUp}</if> <if test="isUp != null and isUp != ''">and is_up = #{isUp}</if>
@ -140,6 +138,9 @@
<if test="endTime != null and endTime != ''"> <if test="endTime != null and endTime != ''">
and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d') and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if> </if>
<if test="areaName != null and areaName != ''">
and CONCAT(',', area_name, ',') LIKE CONCAT('%', #{areaName}, '%')
</if>
</where> </where>
order by task_id desc order by task_id desc
</select> </select>
@ -472,7 +473,33 @@
<foreach item="patrolPointId" collection="patrolPointIds" open="(" separator="," close=")"> <foreach item="patrolPointId" collection="patrolPointIds" open="(" separator="," close=")">
#{patrolPointId} #{patrolPointId}
</foreach> </foreach>
</select>
</select>
<select id="countPatrolTaskOverview" resultType="java.util.Map">
SELECT
t.totalPoint,
COALESCE(e.executedPoint, 0) AS executedPoint,
t.totalPoint - COALESCE(e.executedPoint, 0) AS unexecutedPoint
FROM
(
SELECT COUNT(1) AS totalPoint
FROM patrol_task_info
WHERE task_major_id = (
SELECT task_code
FROM patrol_task_status
WHERE task_patrolled_id = #{taskPatrolledId}
LIMIT 1
)
) t
CROSS JOIN
(
SELECT COUNT(DISTINCT objectId) AS executedPoint
FROM result_analysis
WHERE task_patrol_id IN (
SELECT task_patrolled_id
FROM patrol_task_status
WHERE main_id = #{taskPatrolledId} OR task_patrolled_id = #{taskPatrolledId}
)
) e
</select>
</mapper> </mapper>

Loading…
Cancel
Save