Browse Source

feat:1.新版巡视方案代码,2.纠偏算法不归档

master
wangguangyuan 4 weeks ago
parent
commit
88fb9e316f
21 changed files with 1107 additions and 17 deletions
  1. +1
    -0
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java
  2. +25
    -0
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/AlgTypeEnum.java
  3. +45
    -0
      inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/DevTypeEnum.java
  4. +21
    -3
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java
  5. +1
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java
  6. +3
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/fegin/FeignBasedataAreaService.java
  7. +17
    -3
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java
  8. +595
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java
  9. +9
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java
  10. +7
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolTask.java
  11. +6
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java
  12. +9
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java
  13. +31
    -4
      inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java
  14. +2
    -0
      inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml
  15. +94
    -1
      inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml
  16. +49
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/area/controller/BaseDataAreaController.java
  17. +45
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java
  18. +1
    -1
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java
  19. +10
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/vo/AreaDeviceTreeSelect.java
  20. +1
    -1
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java
  21. +135
    -4
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java

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

@ -6,6 +6,7 @@ import java.util.List;
public class AlgConstants {
public static final String METER = "meter";
public static final String GIS_METER_2 = "gis_meter2";
public static final String GIS_METER = "gis_meter";
public static final String INFRA_1800 = "infra_1800";
public static final String INFRA_YU3 = "infra_yu3";
public static final String INFRA_CAMERA = "infra_camera";


+ 25
- 0
inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/AlgTypeEnum.java View File

@ -0,0 +1,25 @@
package com.inspect.base.core.enums;
public enum AlgTypeEnum {
// 表计
METER("1", "表计"),
// 外观
APPEARANCE("2", "外观"),
// 红外
INFRARED("3", "红外");
private final String code;
private final String info;
AlgTypeEnum(String code, String info) {
this.code = code;
this.info = info;
}
public String getCode() {
return this.code;
}
public String getInfo() {
return this.info;
}
}

+ 45
- 0
inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/DevTypeEnum.java View File

@ -0,0 +1,45 @@
package com.inspect.base.core.enums;
/**
* 设备类型
*/
public enum DevTypeEnum {
// 机器人
ROBOT("0", "机器人"),
// 室外轮式机器人
ROBOT_OUT("1", "室外轮式机器人"),
// 室内轮式机器人
ROBOT_IN("2", "室内轮式机器人"),
// 挂轨机器人
ROBOT_HANG("3", "挂轨机器人"),
// 高清视频
VIDEO("10", "高清视频"),
// 硬盘录像机
DVR("11", "硬盘录像机"),
// 智能分析主机
ANALYZE_HOST("12", "智能分析主机"),
// 无人机
DRONE("13", "无人机"),
// 声纹
VOICE("14", "声纹"),
// 巡视主机
HOST("20", "巡视主机");
private final String code;
private final String info;
DevTypeEnum(String code, String info) {
this.code = code;
this.info = info;
}
public String getCode() {
return this.code;
}
public String getInfo() {
return this.info;
}
}

+ 21
- 3
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java View File

@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.inspect.analysis.domain.*;
import com.inspect.analysis.service.IResultAnalysisService;
import com.inspect.base.core.constant.Color;
import com.inspect.base.core.domain.Response;
import com.inspect.base.core.enums.PointStatusEnum;
import com.inspect.base.core.utils.StringUtils;
@ -17,6 +16,7 @@ import com.inspect.base.core.web.page.TableDataInfo;
import com.inspect.base.core.web.page.TableSupport;
import com.inspect.common.log.annotation.Log;
import com.inspect.common.log.enums.BizType;
import com.inspect.fegin.FeignBasedataAreaService;
import com.inspect.message.MessageUtils;
import com.inspect.partrolresult.domain.AlgInfo;
import com.inspect.partrolresult.domain.PatrolResult;
@ -49,6 +49,7 @@ public class ResultAnalysisController extends BaseController {
private final IPatrolTaskService patrolTaskService;
private final IPatrolTaskInfoService iPatrolTaskInfoService;
private final IPatrolResultService patrolResultService;
private final FeignBasedataAreaService feignBasedataAreaService;
@Resource
private MessageUtils messageUtils;
@ -56,11 +57,12 @@ public class ResultAnalysisController extends BaseController {
@Resource
private PatrolResultMapper patrolResultMapper;
public ResultAnalysisController(IResultAnalysisService resultAnalysisService, IPatrolTaskService patrolTaskService, IPatrolTaskInfoService iPatrolTaskInfoService, IPatrolResultService patrolResultService) {
public ResultAnalysisController(IResultAnalysisService resultAnalysisService, IPatrolTaskService patrolTaskService, IPatrolTaskInfoService iPatrolTaskInfoService, IPatrolResultService patrolResultService, FeignBasedataAreaService feignBasedataAreaService) {
this.resultAnalysisService = resultAnalysisService;
this.patrolTaskService = patrolTaskService;
this.iPatrolTaskInfoService = iPatrolTaskInfoService;
this.patrolResultService = patrolResultService;
this.feignBasedataAreaService = feignBasedataAreaService;
}
public String recursionGetNameId(String devId) {
@ -709,10 +711,15 @@ public class ResultAnalysisController extends BaseController {
patrolData.setImg(data.getImg());
}
}
String areaId = value.stream().map(PatrolData::getAreaId).distinct().findFirst().orElse("");
logger.info("defectList缺陷记录,{}",areaId);
// 用新的区域树
String areaNameS = getAreaNameSByAreaIdSRelation(areaId);
logger.info("defectList缺陷记录,{}",areaNameS);
String imageNormalPath = imageNormalMap.getOrDefault(taskPatrolId + "_" + objectId + "_" + algType, "");
patrolData.setImageNormalUrlPath(imageNormalPath);
patrolData.setAlgName(value.stream().map(item -> item.getAlgName() != null ? item.getAlgName() : "").distinct().findFirst().orElse(""));
patrolData.setAreaName(value.stream().map(item -> item.getAreaName() != null ? item.getAreaName() : "").distinct().findFirst().orElse(""));
patrolData.setAreaName(areaNameS);
patrolData.setBrightDesc(value.stream().map(item -> item.getBrightDesc() != null ? item.getBrightDesc() : "").distinct().findFirst().orElse(""));
patrolData.setBrightImgAnalyse(value.stream().map(item -> item.getBrightImgAnalyse() != null ? item.getBrightImgAnalyse() : "").distinct().findFirst().orElse(""));
patrolData.setBrightResStatus(value.stream().map(item -> item.getBrightResStatus() != null ? item.getBrightResStatus() : "").distinct().findFirst().orElse(""));
@ -753,6 +760,17 @@ public class ResultAnalysisController extends BaseController {
return rspData;
}
/**
* 新的关系树
* @param areaIdS
* @return
*/
private String getAreaNameSByAreaIdSRelation(String areaIdS) {
AjaxResult ajaxResult = feignBasedataAreaService.selectAreaNameSForTaskByAreaIdSRelation((new JSONObject()).fluentPut("areaIdS", areaIdS));
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ajaxResult));
return jsonObject.get("data").toString();
}
//初筛大模型一起查询
@GetMapping({"/list_v2_ex"})
public TableDataInfo listV2Ex(PatrolTaskStatus patrolTaskStatus) {


+ 1
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java View File

@ -449,6 +449,7 @@ public class ResultAnalysis extends BaseEntity {
", resultContent='" + resultContent + '\'' +
", resStatus='" + resStatus + '\'' +
", pointStatus='" + pointStatus + '\'' +
", pointStatusList='" + pointStatusList + '\'' +
", beginTime='" + beginTime + '\'' +
", endTime='" + endTime + '\'' +
", createTime='" + super.getCreateTime() + '\'' +


+ 3
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/fegin/FeignBasedataAreaService.java View File

@ -11,6 +11,9 @@ public interface FeignBasedataAreaService {
@GetMapping({"/area/selectAreaNameSForTaskByAreaIdS"})
AjaxResult selectAreaNameSForTaskByAreaIdS(@RequestParam("baseDataArea") JSONObject var1);
@GetMapping({"/area/selectAreaNameSForTaskByAreaIdSRelation"})
AjaxResult selectAreaNameSForTaskByAreaIdSRelation(@RequestParam("baseDataArea") JSONObject var1);
@GetMapping({"/area/list"})
AjaxResult list(@RequestParam("baseDataArea") JSONObject var1);


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

@ -58,7 +58,11 @@ public class PatrolResultServiceImpl implements IPatrolResultService {
AlgConstants.INFRA_1800,
AlgConstants.INFRA_YU3,
AlgConstants.INFRA_CAMERA,
AlgConstants.INFRA_CAMERA_REVERSE
AlgConstants.INFRA_CAMERA_REVERSE,
AlgConstants.INFRARED,
AlgConstants.INFRARED2,
AlgConstants.GIS_METER_2,
AlgConstants.GIS_METER
));
final
PatrolResultDefaultValueMapper patrolResultDefaultvalueMapper;
@ -563,10 +567,16 @@ public class PatrolResultServiceImpl implements IPatrolResultService {
patrolResultRefs = patrolResultRefs.stream().filter((item) -> "0".equals(item.getResultType())).collect(Collectors.toList());
// 分组按点位ID和算法类型进行分组
groupKeyListMap = patrolResultRefs.stream().collect(Collectors.groupingBy(item -> new GroupKey(item.getDeviceId(), item.getAlgType(), item.getTaskPatrolledId())));
groupKeyListMap.forEach((key, value) -> {
for (Map.Entry<GroupKey, List<PatrolResultRef>> entry : groupKeyListMap.entrySet()) {
GroupKey key = entry.getKey();
List<PatrolResultRef> value = entry.getValue();
PatrolResultRef patrolResultRef = new PatrolResultRef();
patrolResultRef.setDeviceId(key.objectId);
patrolResultRef.setAlgType(key.algType);
// 纠偏算法不归档
if (AlgConstants.CORRECTION.equals(key.algType)) {
continue;
}
patrolResultRef.setDescription(value.stream().sorted(Comparator.comparing(PatrolResultRef::getFilter).reversed()).map(PatrolResultRef::getDescription).collect(Collectors.joining(",")));
patrolResultRef.setValue(value.stream().sorted(Comparator.comparing(PatrolResultRef::getFilter).reversed()).map(PatrolResultRef::getValue).collect(Collectors.joining(",")));
for (PatrolResultRef resultRef : value) {
@ -590,7 +600,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService {
patrolResultRef.setAlgName(value.get(0).getAlgName());
patrolResultRef.setResultType("0");
resultRefs.add(patrolResultRef);
});
}
patrolResultRefs = resultRefs;
startTime = PrintUtil.useTime("导出报告:筛选缺陷数据", startTime);
} else {
@ -600,6 +610,10 @@ public class PatrolResultServiceImpl implements IPatrolResultService {
List<PatrolResultRef> value = entry.getValue();
GroupKey key = entry.getKey();
String algType = key.algType;
// 纠偏算法不归档
if (AlgConstants.CORRECTION.equals(algType)) {
continue;
}
List<PatrolResultRef> filterResults = value.stream().filter(item -> "1".equals(item.getFilter())).collect(Collectors.toList());
List<PatrolResultRef> AIResults = value.stream().filter(item -> "0".equals(item.getFilter())).collect(Collectors.toList());
PatrolResultRef filterResult = filterResults.isEmpty() ? null : filterResults.get(0);


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

@ -71,6 +71,7 @@ import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@RestController
@ -537,6 +538,58 @@ public class PatrolTaskController extends BaseController {
return AjaxResult.success(patrolTask);
}
/**
* 信息
*
* @param object
* @return
*/
@GetMapping({"/shaoxing/{taskId}"})
public AjaxResult getInfoShaoxing(@PathVariable("taskId") Object object) {
long taskId;
try {
taskId = Long.parseLong(String.valueOf(object));
} catch (Exception e) {
logger.info("[TASK] parameter taskId error: {}", e.getMessage());
return AjaxResult.fail(500, "parameter error: {}", e.getMessage());
}
List<PrevPoint> prevPoints = new ArrayList<>();
PatrolTask patrolTask = patrolTaskService.selectPatrolTaskByTaskId(taskId);
if (patrolTask == null) {
return AjaxResult.fail(500, "任务不存在");
}
if (StringUtils.isEmpty(patrolTask.getExecutionMode())) {
patrolTask.setExecutionMode("0");
}
if (StringUtils.isEmpty(patrolTask.getType())) {
patrolTask.setType("4");
}
if (StringUtils.isNotEmpty(patrolTask.getCycleMonth())) {
String cycleMonth = calcCycleMonth(patrolTask.getCycleMonth());
if (StringUtils.isNotEmpty(cycleMonth)) {
patrolTask.setCycleMonth(cycleMonth);
}
}
PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo();
patrolTaskInfo.setTaskMajorId(patrolTask.getTaskId() + "");
List<PatrolTaskInfo> patrolTaskInfos = patrolTaskInfoService.selectPatrolTaskInfoList(patrolTaskInfo);
List<String> patrolPointIds = new ArrayList<>();
if (!patrolTaskInfos.isEmpty()) {
for (PatrolTaskInfo taskInfo : patrolTaskInfos) {
patrolPointIds.add(taskInfo.getDeviceId());
}
}
patrolTask.setPrevPoints(prevPoints);
patrolTask.setPatrolPointIds(patrolPointIds);
return AjaxResult.success(patrolTask);
}
@Log(
title = "巡视任务(任务模型文件数据)",
businessType = BizType.INSERT
@ -590,6 +643,537 @@ public class PatrolTaskController extends BaseController {
return patrolTask.getTaskCode() + "_" + sdf.format(patrolTask.getCycleExecuteTime());
}
@PostMapping({"/shaoxing/add"})
@ResponseBody
public AjaxResult add_shaoxing(@RequestBody String message) {
logger.info("[TASK] add message: {}", message);
List<String> patrolTaskIds = new ArrayList<>();
if (StringUtils.isEmpty(message)) {
return AjaxResult.success(String.join(StringUtils.COMMA, patrolTaskIds));
}
JSONObject jsonObject = JSONObject.parseObject(message);
logger.info(Color.GREEN + "[MAIN] toPatrolTaskList jsonObject: {}" + Color.END, jsonObject);
PatrolTask patrolTask = new PatrolTask();
toPatrolTask(jsonObject, patrolTask);
List<String> patrolPointIds = new ArrayList<>();
// 点位信息
if (jsonObject.get("patrolPointIds") != null) {
String jsonObjectString = jsonObject.get("patrolPointIds").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
String[] pointArr = jsonObjectString.split(",");
patrolPointIds = Arrays.asList(pointArr);
}
}
List<PatrolTaskInfo> taskInfos = new ArrayList<>();
if (patrolPointIds.size() > 0) {
// 查询点位信息
List<JSONObject> patrolPointList = patrolTaskService.selectBasedataPatrolPointList(patrolPointIds);
Map<Long, JSONObject> patrolPointIdMap = patrolPointList.stream().collect(Collectors.toMap(item -> item.getLong("patrolPointId"), Function.identity()));
// 查询点位预置位信息
List<JSONObject> basedataPatrolPointPresetList = patrolTaskService.selectBasedataPatrolPointPresetList(patrolPointIds);
Map<Long, JSONObject> basedataPatrolPointPresetMap = basedataPatrolPointPresetList.stream().collect(Collectors.toMap(item -> item.getLong("patrolPointId"), Function.identity(), (e1, e2) -> e2));
// 查询点位预置位位置信息
List<JSONObject> basedataPatrolPresetPosList = patrolTaskService.selectPatrolPresetPosList(patrolPointIds);
Map<Long, JSONObject> basedataPatrolPresetPosMap = basedataPatrolPresetPosList.stream().collect(Collectors.toMap(item -> item.getLong("patrolPointId"), Function.identity(), (e1, e2) -> e2));
Set<String> eqpBookIdPreset = basedataPatrolPointPresetList.stream().map(basedataPatrolPointPresetJson -> {
return basedataPatrolPointPresetJson.getString("eqpBookId");
}).collect(Collectors.toSet());
Set<String> eqpBookIdPos = basedataPatrolPresetPosList.stream().map(basedataPatrolPresetPosJson -> {
return basedataPatrolPresetPosJson.getString("eqpBookId");
}).collect(Collectors.toSet());
List<String> eqpBookIds = new ArrayList<>();
eqpBookIds.addAll(eqpBookIdPreset);
eqpBookIds.addAll(eqpBookIdPos);
// 查询设备信息
List<Map<String, String>> list = patrolTaskInfoService.selectVideoPosByPointIdByEqpbookIds(eqpBookIds);
Map<String, Map<String, String>> eqpBooksMap =
list.stream().collect(Collectors.toMap(e -> String.valueOf(e.get("eqp_book_id")), e -> e, (e1, e2) -> e2));
List<String> devTypeList = new LinkedList<>();
Set<String> devNoSet = new LinkedHashSet<>();
Set<String> deviceSet = new LinkedHashSet<>();
// 查询点位预置位信息
for (String patrolPointId : patrolPointIds) {
PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo();
patrolTaskInfo.setEbookId(basedataPatrolPointPresetMap.getOrDefault(Long.valueOf(patrolPointId), basedataPatrolPresetPosMap.getOrDefault(Long.valueOf(patrolPointId),new JSONObject())).getString("eqpBookId"));
Map<String, String> videoPos = eqpBooksMap.get(patrolTaskInfo.getEbookId());
String type = videoPos.get("type");
String patrolDeviceCode = videoPos.get("patrol_device_code");
String typeEx;
if (type.equals("13")) {
typeEx = "0";
} else if (!type.equals("1") && !type.equals("2") && !type.equals("3")) {
typeEx = "2";
} else {
typeEx = "1";
}
patrolTaskInfo.setDeviceId(patrolPointId);
patrolTaskInfo.setDeviceName(patrolPointIdMap.getOrDefault(Long.valueOf(patrolPointId), new JSONObject()).getString("patrolPointName"));
patrolTaskInfo.setComponentId(patrolPointIdMap.getOrDefault(Long.valueOf(patrolPointId), new JSONObject()).getString("relationDeviceId"));
// patrolTaskInfo.setComponentName();
// patrolTaskInfo.setBayId();
// patrolTaskInfo.setBayName();
patrolTaskInfo.setMainDeviceId(patrolPointIdMap.getOrDefault(Long.valueOf(patrolPointId), new JSONObject()).getString("relationMainDeviceId"));
// patrolTaskInfo.setMainDeviceName();
patrolTaskInfo.setDevNo(patrolDeviceCode);
patrolTaskInfo.setDevType(typeEx);
patrolTaskInfo.setPresetCode(basedataPatrolPointPresetMap.getOrDefault(Long.valueOf(patrolPointId), basedataPatrolPresetPosMap.getOrDefault(Long.valueOf(patrolPointId),new JSONObject())).getString("presetCode"));
patrolTaskInfo.setEbookName(videoPos.getOrDefault("patrol_device_name", ""));
// patrolTaskInfoService.insertPatrolTaskInfo(patrolTaskInfo);
if (devNoSet.add(patrolTaskInfo.getDevNo())) {
devTypeList.add(patrolTaskInfo.getDevType());
}
deviceSet.add(patrolTaskInfo.getMainDeviceId());
taskInfos.add(patrolTaskInfo);
}
patrolTask.setDevType(StringUtils.join(devTypeList, ","));
patrolTask.setDevNo(StringUtils.join(devNoSet, ","));
patrolTask.setDeviceList(StringUtils.join(deviceSet, ","));
}
logger.info("任务新增,patrolTask {}",patrolTask);
int majorId = patrolTaskService.insertPatrolTask(patrolTask);
patrolTaskIds.add(majorId + "");
logger.info("============任务新增成功=======");
PatrolTask patrolTaskTemp = patrolTaskService.selectPatrolTaskByTaskId((long) majorId);
patrolTaskTemp.setTaskCode(patrolTaskTemp.getTaskId() + "");
patrolTaskService.updatePatrolTask(patrolTaskTemp);
patrolTask.setTaskCode(patrolTaskTemp.getTaskCode());
for (PatrolTaskInfo taskInfo : taskInfos) {
taskInfo.setTaskMajorId(majorId + "");
}
patrolTaskInfoService.batchInsertPatrolTaskInfo(taskInfos);
try {
logger.info("-----------------patrolTask start");
issueTask(patrolTask);
logger.info("-----------------patrolTask end");
} catch (Exception e) {
logger.info("error", e);
}
return AjaxResult.success(String.join(StringUtils.COMMA, patrolTaskIds));
}
private void toPatrolTask(JSONObject jsonObject, PatrolTask patrolTask) {
String jsonObjectString;
if (jsonObject.get("deviceType") != null) {
jsonObjectString = jsonObject.get("deviceType").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setDeviceType(jsonObjectString);
}
}
if (jsonObject.get("pointType") != null) {
jsonObjectString = jsonObject.get("pointType").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setPointType(jsonObjectString);
}
}
if (jsonObject.get("taskId") != null) {
jsonObjectString = jsonObject.get("taskId").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setTaskId(Long.valueOf(jsonObjectString));
patrolTask.setCreateTime(patrolTaskService.selectPatrolTaskByTaskId(Long.valueOf(jsonObjectString)).getCreateTime());
}
}
if (jsonObject.get("stationName") != null) {
jsonObjectString = jsonObject.get("stationName").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setStationName(jsonObjectString);
}
}
if (jsonObject.get("areaId") != null) {
jsonObjectString = jsonObject.get("areaId").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setAreaId(jsonObjectString);
}
}
if (jsonObject.get("areaName") != null) {
jsonObjectString = jsonObject.get("areaName").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setAreaName(jsonObjectString);
}
}
if (jsonObject.get("stationCode") != null) {
jsonObjectString = jsonObject.get("stationCode").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setStationCode(jsonObjectString);
}
}
if (jsonObject.get("type") != null) {
jsonObjectString = jsonObject.get("type").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setType(jsonObjectString);
}
}
if (jsonObject.get("taskCode") != null) {
jsonObjectString = jsonObject.get("taskCode").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setTaskCode(jsonObjectString);
}
}
if (jsonObject.get("taskName") != null) {
jsonObjectString = jsonObject.get("taskName").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setTaskName(jsonObjectString);
}
}
if (jsonObject.get("priority") != null) {
jsonObjectString = jsonObject.get("priority").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setPriority(jsonObjectString);
}
}
if (jsonObject.get("deviceLevel") != null) {
jsonObjectString = jsonObject.get("deviceLevel").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setDeviceLevel(jsonObjectString);
}
}
if (jsonObject.get("deviceList") != null) {
jsonObjectString = jsonObject.get("deviceList").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setDeviceList(jsonObjectString);
}
}
if (jsonObject.get("fixedStartTime") != null) {
jsonObjectString = jsonObject.get("fixedStartTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setFixedStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("cycleMonth") != null) {
jsonObjectString = jsonObject.get("cycleMonth").toString();
if (jsonObjectString != null && StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setCycleMonth(jsonObjectString);
}
}
if (jsonObject.get("cycleWeek") != null) {
jsonObjectString = jsonObject.get("cycleWeek").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setCycleWeek(jsonObjectString);
}
}
if (jsonObject.get("cycleExecuteTime") != null) {
jsonObjectString = jsonObject.get("cycleExecuteTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setCycleExecuteTime(jsonObjectString);
}
}
if (jsonObject.get("cycleStartTime") != null) {
jsonObjectString = jsonObject.get("cycleStartTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setCycleStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("cycleEndTime") != null) {
jsonObjectString = jsonObject.get("cycleEndTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setCycleEndTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("intervalNumber") != null) {
jsonObjectString = jsonObject.get("intervalNumber").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setIntervalNumber(Integer.parseInt(jsonObjectString));
}
}
if (jsonObject.get("intervalType") != null) {
jsonObjectString = jsonObject.get("intervalType").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setIntervalType(jsonObjectString);
}
}
if (jsonObject.get("intervalExecuteTime") != null) {
jsonObjectString = jsonObject.get("intervalExecuteTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setIntervalExecuteTime(jsonObjectString);
}
}
if (jsonObject.get("intervalStartTime") != null) {
jsonObjectString = jsonObject.get("intervalStartTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setIntervalStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("intervalEndTime") != null) {
jsonObjectString = jsonObject.get("intervalEndTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setIntervalEndTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("invalidStartTime") != null) {
jsonObjectString = jsonObject.get("invalidStartTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setInvalidStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("invalidEndTime") != null) {
jsonObjectString = jsonObject.get("invalidEndTime").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setInvalidEndTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, jsonObjectString));
}
}
if (jsonObject.get("isenable") != null) {
jsonObjectString = jsonObject.get("isenable").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setIsEnable(jsonObjectString);
}
}
if (jsonObject.get("devType") != null) {
jsonObjectString = jsonObject.get("devType").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setDevType(jsonObjectString);
}
}
if (jsonObject.get("creator") != null) {
jsonObjectString = jsonObject.get("creator").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setDrafter(jsonObjectString);
}
}
if (jsonObject.get("executionStatus") != null) {
jsonObjectString = jsonObject.get("executionStatus").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setExecutionStatus(jsonObjectString);
}
}
if (jsonObject.get("taskCycle") != null) {
jsonObjectString = jsonObject.get("taskCycle").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setTaskCycle(jsonObjectString);
}
}
if (jsonObject.get("devNo") != null) {
jsonObjectString = jsonObject.get("devNo").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setDevNo(jsonObjectString);
}
}
if (jsonObject.get("executionMode") != null) {
jsonObjectString = jsonObject.get("executionMode").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setExecutionMode(jsonObjectString);
}
}
if (jsonObject.get("linkageState") != null) {
jsonObjectString = jsonObject.get("linkageState").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setLinkageState(jsonObjectString);
}
}
if (jsonObject.get("areaIdS") != null) {
jsonObjectString = jsonObject.get("areaIdS").toString();
if (jsonObjectString != null && StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setAreaIdS(jsonObjectString);
// 用新的区域树
String areaNameS = getAreaNameSByAreaIdSRelation(jsonObjectString);
patrolTask.setAreaName(areaNameS);
}
}
if (jsonObject.get("taskId") != null) {
jsonObjectString = jsonObject.get("taskId").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setTaskId(Long.valueOf(jsonObjectString));
}
}
if (jsonObject.get("cycleMonth") != null) {
jsonObjectString = jsonObject.get("cycleMonth").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
patrolTask.setCycleMonth(jsonObjectString);
}
}
if (StringUtils.isNotEmpty(patrolTask.getCycleMonth())) {
final String cycleMonth = toCycleMonth(patrolTask.getCycleMonth());
if (StringUtils.isNotEmpty(cycleMonth)) {
patrolTask.setCycleMonth(cycleMonth);
}
}
String executionType = "1";
if (jsonObject.get("executionType") != null) {
executionType = jsonObject.get("executionType").toString();
}
if ("2".equals(executionType) || "3".equals(executionType)) {
patrolTask.setFixedStartTime(null);
}
}
@PostMapping({"/shaoxing/save"})
@ResponseBody
public AjaxResult save_shaoxing(@RequestBody String message) {
try {
logger.info("message: {}", message);
int a = 1;
if (StringUtils.isNotEmpty(message)) {
JSONObject parseObject = JSONObject.parseObject(message);
PatrolTask patrolTask = new PatrolTask();
toPatrolTask(parseObject, patrolTask);
String key = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, String.valueOf(patrolTask.getTaskId()));
if (key != null && key.contains(String.valueOf(patrolTask.getTaskId()))) {
return AjaxResult.error("任务正在执行,禁止修改!");
}
patrolTask.setStorage(message);
String cycleMonthText;
if (StringUtils.isNotEmpty(patrolTask.getCycleMonth())) {
cycleMonthText = toCycleMonth(patrolTask.getCycleMonth());
if (StringUtils.isNotEmpty(cycleMonthText)) {
patrolTask.setCycleMonth(cycleMonthText);
}
}
String executionTypeText = "";
if (parseObject.get("executionType") != null) {
executionTypeText = parseObject.get("executionType").toString();
}
if ("2".equals(executionTypeText) || "3".equals(executionTypeText)) {
patrolTask.setFixedStartTime(null);
patrolTaskService.updatePatrolTaskTime(patrolTask.getTaskId().toString());
}
Long majorId = patrolTask.getTaskId();
patrolTaskInfoService.deletePatrolTaskInfoByMajorId(majorId);
// 点位信息
List<String> patrolPointIds = new ArrayList<>();
if (parseObject.get("patrolPointIds") != null) {
String jsonObjectString = parseObject.get("patrolPointIds").toString();
if (StringUtils.isNotEmpty(jsonObjectString)) {
String[] pointArr = jsonObjectString.split(",");
patrolPointIds = Arrays.asList(pointArr);
}
}
List<PatrolTaskInfo> taskInfos = new ArrayList<>();
if (patrolPointIds.size() > 0) {
// 查询点位信息
List<JSONObject> patrolPointList = patrolTaskService.selectBasedataPatrolPointList(patrolPointIds);
Map<Long, JSONObject> patrolPointIdMap = patrolPointList.stream().collect(Collectors.toMap(item -> item.getLong("patrolPointId"), Function.identity()));
// 查询点位预置位信息
List<JSONObject> basedataPatrolPointPresetList = patrolTaskService.selectBasedataPatrolPointPresetList(patrolPointIds);
Map<Long, JSONObject> basedataPatrolPointPresetMap = basedataPatrolPointPresetList.stream().collect(Collectors.toMap(item -> item.getLong("patrolPointId"), Function.identity(), (e1, e2) -> e2));
// 查询点位预置位位置信息
List<JSONObject> basedataPatrolPresetPosList = patrolTaskService.selectPatrolPresetPosList(patrolPointIds);
Map<Long, JSONObject> basedataPatrolPresetPosMap = basedataPatrolPresetPosList.stream().collect(Collectors.toMap(item -> item.getLong("patrolPointId"), Function.identity(), (e1, e2) -> e2));
Set<String> eqpBookIdPreset = basedataPatrolPointPresetList.stream().map(basedataPatrolPointPresetJson -> {
return basedataPatrolPointPresetJson.getString("eqpBookId");
}).collect(Collectors.toSet());
Set<String> eqpBookIdPos = basedataPatrolPresetPosList.stream().map(basedataPatrolPresetPosJson -> {
return basedataPatrolPresetPosJson.getString("eqpBookId");
}).collect(Collectors.toSet());
List<String> eqpBookIds = new ArrayList<>();
eqpBookIds.addAll(eqpBookIdPreset);
eqpBookIds.addAll(eqpBookIdPos);
// 查询设备信息
List<Map<String, String>> list = patrolTaskInfoService.selectVideoPosByPointIdByEqpbookIds(eqpBookIds);
Map<String, Map<String, String>> eqpBooksMap =
list.stream().collect(Collectors.toMap(e -> String.valueOf(e.get("eqp_book_id")), e -> e, (e1, e2) -> e2));
List<String> devTypeList = new LinkedList<>();
Set<String> devNoSet = new LinkedHashSet<>();
Set<String> deviceSet = new LinkedHashSet<>();
// 查询点位预置位信息
for (String patrolPointId : patrolPointIds) {
PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo();
patrolTaskInfo.setEbookId(basedataPatrolPointPresetMap.getOrDefault(Long.valueOf(patrolPointId), basedataPatrolPresetPosMap.getOrDefault(Long.valueOf(patrolPointId),new JSONObject())).getString("eqpBookId"));
Map<String, String> videoPos = eqpBooksMap.get(patrolTaskInfo.getEbookId());
String type = videoPos.get("type");
String patrolDeviceCode = videoPos.get("patrol_device_code");
String typeEx;
if (type.equals("13")) {
typeEx = "0";
} else if (!type.equals("1") && !type.equals("2") && !type.equals("3")) {
typeEx = "2";
} else {
typeEx = "1";
}
patrolTaskInfo.setDeviceId(patrolPointId);
patrolTaskInfo.setDeviceName(patrolPointIdMap.getOrDefault(Long.valueOf(patrolPointId), new JSONObject()).getString("patrolPointName"));
patrolTaskInfo.setComponentId(patrolPointIdMap.getOrDefault(Long.valueOf(patrolPointId), new JSONObject()).getString("relationDeviceId"));
// patrolTaskInfo.setComponentName();
// patrolTaskInfo.setBayId();
// patrolTaskInfo.setBayName();
patrolTaskInfo.setMainDeviceId(patrolPointIdMap.getOrDefault(Long.valueOf(patrolPointId), new JSONObject()).getString("relationMainDeviceId"));
// patrolTaskInfo.setMainDeviceName();
patrolTaskInfo.setDevNo(patrolDeviceCode);
patrolTaskInfo.setDevType(typeEx);
patrolTaskInfo.setPresetCode(basedataPatrolPointPresetMap.getOrDefault(Long.valueOf(patrolPointId), basedataPatrolPresetPosMap.getOrDefault(Long.valueOf(patrolPointId),new JSONObject())).getString("presetCode"));
patrolTaskInfo.setEbookName(videoPos.getOrDefault("patrol_device_name", ""));
// patrolTaskInfoService.insertPatrolTaskInfo(patrolTaskInfo);
if (devNoSet.add(patrolTaskInfo.getDevNo())) {
devTypeList.add(patrolTaskInfo.getDevType());
}
deviceSet.add(patrolTaskInfo.getMainDeviceId());
taskInfos.add(patrolTaskInfo);
}
patrolTask.setDevType(StringUtils.join(devTypeList, ","));
patrolTask.setDevNo(StringUtils.join(devNoSet, ","));
patrolTask.setDeviceList(StringUtils.join(deviceSet, ","));
}
patrolTaskService.updatePatrolTask(patrolTask);
for (PatrolTaskInfo taskInfo : taskInfos) {
taskInfo.setTaskMajorId(majorId + "");
}
patrolTaskInfoService.batchInsertPatrolTaskInfo(taskInfos);
issueTask(patrolTask);
// 修改任务删除原有的任务执行策略根据新的策略重新生成
if (StringUtils.isNotEmpty(patrolTask.getTaskCode())) {
Collection<String> redisKeys = redisService.keys(RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + "*");
for (String redisKey : redisKeys) {
redisService.deleteObject(redisKey);
}
}
}
return toAjax(a);
} catch (Exception e) {
e.printStackTrace();
}
return toAjax(0);
}
@PostMapping({"/add"})
@ResponseBody
public AjaxResult add(@RequestBody String message) {
@ -2546,6 +3130,17 @@ public class PatrolTaskController extends BaseController {
return jsonObject.get("data").toString();
}
/**
* 新的关系树
* @param areaIdS
* @return
*/
private String getAreaNameSByAreaIdSRelation(String areaIdS) {
AjaxResult ajaxResult = FeignBasedataAreaService.selectAreaNameSForTaskByAreaIdSRelation((new JSONObject()).fluentPut("areaIdS", areaIdS));
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ajaxResult));
return jsonObject.get("data").toString();
}
@Log(
title = "导出任务详情数据",
businessType = BizType.EXPORT


+ 9
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java View File

@ -74,6 +74,7 @@ public class PatrolData implements Comparable<PatrolData> {
private String brightResStatus;
private String areaName;
private String areaId;
private String algType;
private String objectId;
private String imageNormalUrlPath;
@ -374,6 +375,14 @@ public class PatrolData implements Comparable<PatrolData> {
this.taskPatrolId = taskPatrolId;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
protected boolean canEqual(Object other) {
return other instanceof PatrolData;
}


+ 7
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolTask.java View File

@ -186,9 +186,14 @@ public class PatrolTask extends BaseEntity {
private List<VideoPos> videoPosList;
private List<PatrolTaskStatus> patrolTaskStatusList;
private List<PrevPoint> prevPoints;
private List<String> patrolPointIds;
// 任务总点位数量
private int totalPoints;
private String deviceType;
private String pointType;
@Override
public String toString() {
return "PatrolTask{" +
@ -237,6 +242,8 @@ public class PatrolTask extends BaseEntity {
", patrolTaskStatusList=" + patrolTaskStatusList +
", prevPoints=" + prevPoints +
", totalPoints=" + totalPoints +
", deviceType='" + deviceType + '\'' +
", pointType='" + pointType + '\'' +
'}';
}
}

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

@ -54,4 +54,10 @@ public interface PatrolTaskMapper {
List<JSONObject> selectPatrolTaskStatus(@Param("taskCodes") Set<String> patrolTaskCodes);
String selectStationNo();
List<JSONObject> selectBasedataPatrolPointList(@Param("patrolPointIds") List<String> patrolPointIds);
List<JSONObject> selectBasedataPatrolPointPresetList(@Param("patrolPointIds") List<String> patrolPointIds);
List<JSONObject> selectPatrolPresetPosList(@Param("patrolPointIds") List<String> patrolPointIds);
}

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

@ -1,12 +1,15 @@
package com.inspect.task.service;
import com.alibaba.fastjson.JSONObject;
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);
@ -56,4 +59,10 @@ public interface IPatrolTaskService {
void executeAsync(PatrolTaskStatus taskStatus);
void executeTask();
List<JSONObject> selectBasedataPatrolPointList(List<String> patrolPointIds);
List<JSONObject> selectBasedataPatrolPointPresetList(List<String> patrolPointIds);
List<JSONObject> selectPatrolPresetPosList(List<String> patrolPointIds);
}

+ 31
- 4
inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java View File

@ -16,12 +16,19 @@ import com.inspect.partrolresult.util.PrintUtil;
import com.inspect.resultmain.controller.PatrolTaskResultMainController;
import com.inspect.resultmain.domain.PatrolTaskResultMain;
import com.inspect.task.domain.DeviceConvert;
import com.inspect.task.domain.PatrolData;
import com.inspect.task.domain.PatrolTask;
import com.inspect.task.mapper.PatrolTaskMapper;
import com.inspect.task.service.IPatrolTaskService;
import java.net.URLEncoder;
import java.util.*;
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;
@ -29,9 +36,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
import java.util.List;
@Slf4j
@EnableScheduling
@ -39,14 +44,20 @@ import java.util.stream.Collectors;
public class PatrolTaskServiceImpl implements IPatrolTaskService {
final PatrolTaskMapper patrolTaskMapper;
final ResultAnalysisMapper resultAnalysisMapper;
@Autowired
private PatrolTaskStatusMapper patrolTaskStatusMapper;
@Autowired
private PatrolTaskResultMainController patrolTaskResultMainController;
@Autowired
private TaskCalendarGenerator taskCalendarGenerator;
@Autowired
private SftpClient sftpClient;
final ResultAnalysisMapper resultAnalysisMapper;
@Autowired
public PatrolTaskServiceImpl(PatrolTaskMapper patrolTaskMapper, ResultAnalysisMapper resultAnalysisMapper) {
this.patrolTaskMapper = patrolTaskMapper;
@ -344,4 +355,20 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService {
}
log.info("=============================定时任务归档结束=============================================");
}
// 根据点位id查询点位信息
@Override
public List<JSONObject> selectBasedataPatrolPointList(List<String> patrolPointIds) {
return patrolTaskMapper.selectBasedataPatrolPointList(patrolPointIds);
}
@Override
public List<JSONObject> selectBasedataPatrolPointPresetList(List<String> patrolPointIds) {
return patrolTaskMapper.selectBasedataPatrolPointPresetList(patrolPointIds);
}
@Override
public List<JSONObject> selectPatrolPresetPosList(List<String> patrolPointIds) {
return patrolTaskMapper.selectPatrolPresetPosList(patrolPointIds);
}
}

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

@ -174,6 +174,7 @@
<result property="resStatus" column="res_status"/>
<result property="deviceName" column="device_name"/>
<result property="areaName" column="area_name"/>
<result property="areaId" column="area_id"/>
<result property="algType" column="alg_type"/>
<result property="objectId" column="objectId"/>
<result property="algName" column="alg_name"/>
@ -1311,6 +1312,7 @@
b.res_status,
d.device_name,
e.area_name,
e.area_id,
b.alg_type,
b.objectId,
b.suggestion,


+ 94
- 1
inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml View File

@ -41,6 +41,8 @@
<result property="linkageState" column="linkage_state"/>
<result property="isUp" column="is_up"/>
<result property="areaIdS" column="area_id_s"/>
<result property="pointType" column="point_type"/>
<result property="deviceType" column="device_type"/>
</resultMap>
<sql id="selectPatrolTaskVo">
@ -80,7 +82,9 @@
is_enable,
create_time,
drafter,
area_id_s
area_id_s,
point_type,
device_type
from patrol_task
</sql>
@ -237,6 +241,8 @@
<if test="linkageState != null">linkage_state,</if>
<if test="isUp != null">is_up,</if>
<if test="areaIdS != null">area_id_s,</if>
<if test="deviceType != null">device_type,</if>
<if test="pointType != null">point_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="stationName != null">#{stationName},</if>
@ -275,6 +281,8 @@
<if test="linkageState != null">#{linkageState},</if>
<if test="isUp != null">#{isUp},</if>
<if test="areaIdS != null">#{areaIdS},</if>
<if test="deviceType != null">#{deviceType},</if>
<if test="pointType != null">#{pointType},</if>
</trim>
</insert>
@ -317,6 +325,8 @@
<if test="linkageState != null">linkage_state = #{linkageState},</if>
<if test="isUp != null">is_up = #{isUp},</if>
<if test="areaIdS != null">area_id_s = #{areaIdS},</if>
<if test="pointType != null">point_type = #{pointType},</if>
<if test="deviceType != null">device_type = #{deviceType},</if>
</trim>
where task_id = #{taskId}
</update>
@ -381,5 +391,88 @@
select station_no from basedata_station limit 1
</select>
<select id="selectBasedataPatrolPointList" resultType="com.alibaba.fastjson.JSONObject">
select patrol_point_id as patrolPointId,
patrol_point_code as patrolPointCode,
patrol_point_name as patrolPointName,
device_type_id as deviceTypeId,
main_device_id as mainDeviceId,
relation_main_device_id as relationMainDeviceId,
device_id as deviceId,
relation_device_id as relationDeviceId,
area_id as areaId,
relation_area_id as relationAreaId,
patrol_content as patrolContent,
purpose as purpose,
create_by as createBy,
create_time as createTime,
update_by as updateBy,
update_time as updateTime,
delete_flag as deleteFlag,
std_parol_point_id as stdPatrolPointId,
point_impt_level as pointImptLevel,
patrol_type_id as patrolTypeId,
lower_value as lowerValue,
upper_value as upperValue,
position_x as positionX,
position_y as positionY,
position_z as positionZ,
alg_subtype_ids as algSubtypeIds,
original_alg_subtype_ids as originalAlgSubtypeIds,
original_device_id as originalDeviceId,
dis_ref_picture_path as disRefPicturePath,
original_main_device_id as originalMainDeviceId,
alarm_threshold as alarmThreshold,
meter_type as meterType
from basedata_patrolpoint where patrol_point_id in
<foreach item="patrolPointId" collection="patrolPointIds" open="(" separator="," close=")">
#{patrolPointId}
</foreach>
</select>
<select id="selectBasedataPatrolPointPresetList" resultType="com.alibaba.fastjson.JSONObject">
select patrol_point_preset_id as patrolPointPresetId,
patrol_point_id as patrolPointId,
eqp_book_id as eqpBookId,
channel_id as channelId,
preset_code as presetCode,
preset_name as presetName,
create_by as createBy,
create_time as createTime,
update_by as updateBy,
update_time as updateTime,
delete_flag as deleteFlag,
patrol_device_code as patrolDeviceCode,
channel_code as channelCode,
video_nvr_code as videoNvrCode
from basedata_patrolpoint_preset where patrol_point_id in
<foreach item="patrolPointId" collection="patrolPointIds" open="(" separator="," close=")">
#{patrolPointId}
</foreach>
</select>
<select id="selectPatrolPresetPosList" resultType="com.alibaba.fastjson.JSONObject">
select preset_pos_id as presetPosId,
preset_pos_code as presetCode,
preset_pos_name as presetPosName,
eqp_book_id as eqpBookId,
patrol_device_code as patrolDeviceCode,
patrol_point_id as patrolPointId,
channel_id as channelId,
channel_code as channelCode,
channel_type as channelType,
coordinate_type as coordinateType,
stop_time as stopTime,
channel_img as channelImg,
description as description,
alg_subtype_code as algSubtypeCode,
is_enable as isEnable,
create_time as createTime,
video_nvr_code as videoNvrCode
from patrol_preset_pos where patrol_point_id in
<foreach item="patrolPointId" collection="patrolPointIds" open="(" separator="," close=")">
#{patrolPointId}
</foreach>
</select>
</mapper>

+ 49
- 0
inspect-metadata/src/main/java/com/inspect/metadata/area/controller/BaseDataAreaController.java View File

@ -370,6 +370,26 @@ public class BaseDataAreaController extends BaseController {
return AjaxResult.success("成功", nameSBuilder.toString());
}
@GetMapping({"/selectAreaNameSForTaskByAreaIdSRelation"})
public AjaxResult selectAreaNameSForTaskByAreaIdSRelation(BaseDataArea area) {
Map<String, BaseDataArea> areaMap = new HashMap<>();
List<String> list = this.paramsGetListByAreaIdS(area);
BaseDataArea areaQuery = new BaseDataArea();
List<BaseDataArea> areas = this.baseDataAreaService.selectAreaRelationList(areaQuery);
for (BaseDataArea baseDataArea : areas) {
areaMap.put(String.valueOf(baseDataArea.getAreaId()), baseDataArea);
}
Map<String, String> retHashMap = new HashMap<>();
StringBuilder nameSBuilder = new StringBuilder();
for (String areaId : list) {
this.getAreaDeviceTreeDeviceCodeRelation(areaId, areaMap, retHashMap, nameSBuilder);
}
return AjaxResult.success("成功", nameSBuilder.toString());
}
private void getAreaDeviceTreeDeviceCode(String areaId, Map<String, BaseDataArea> areaMap, Map<String, String> retHashMap, StringBuilder nameSBuilder) {
if (areaMap.containsKey(areaId)) {
BaseDataArea area = areaMap.get(areaId);
@ -398,4 +418,33 @@ public class BaseDataAreaController extends BaseController {
}
}
private void getAreaDeviceTreeDeviceCodeRelation(String areaId, Map<String, BaseDataArea> areaMap, Map<String, String> retHashMap, StringBuilder nameSBuilder) {
if (areaMap.containsKey(areaId)) {
BaseDataArea area = areaMap.get(areaId);
if (area.getRelationParentId() == 0L) {
return;
}
if (area.getRelationParentId() == 1L) {
if (!retHashMap.containsKey(area.getAreaId().toString())) {
if (!retHashMap.isEmpty()) {
nameSBuilder.append(",");
nameSBuilder.append(area.getAreaName());
} else {
nameSBuilder.append(area.getAreaName());
}
retHashMap.put(area.getAreaId().toString(), area.getAreaName());
return;
}
return;
}
areaId = area.getRelationParentId().toString();
this.getAreaDeviceTreeDeviceCodeRelation(areaId, areaMap, retHashMap, nameSBuilder);
}
}
}

+ 45
- 0
inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java View File

@ -53,6 +53,19 @@ public class BaseDataArea extends BaseEntity {
private List<BaseDataArea> children = new ArrayList<>();
private List<String> filterNameList;
// 设备类型 编码 10: 摄像头高清视频 13无人机 0机器人
private List<String> devTypeList;
// 设备类型 字典编码
private List<Long> devTypeCodeList;
// 算法类型 编码 1: 表计 2外观 3红外
private List<String> algTypeList;
// 算法类型 字典编码
private List<Long> algTypeCodeList;
public String getOldAreaId() {
return this.oldAreaId;
}
@ -156,6 +169,38 @@ public class BaseDataArea extends BaseEntity {
this.filterNameList = filterNameList;
}
public List<String> getDevTypeList() {
return devTypeList;
}
public void setDevTypeList(List<String> devTypeList) {
this.devTypeList = devTypeList;
}
public List<String> getAlgTypeList() {
return algTypeList;
}
public void setAlgTypeList(List<String> algTypeList) {
this.algTypeList = algTypeList;
}
public List<Long> getDevTypeCodeList() {
return devTypeCodeList;
}
public void setDevTypeCodeList(List<Long> devTypeCodeList) {
this.devTypeCodeList = devTypeCodeList;
}
public List<Long> getAlgTypeCodeList() {
return algTypeCodeList;
}
public void setAlgTypeCodeList(List<Long> algTypeCodeList) {
this.algTypeCodeList = algTypeCodeList;
}
@Override
public String toString() {
return "BaseDataArea{" +


+ 1
- 1
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java View File

@ -239,7 +239,7 @@ public class BasedataDeviceController extends BaseController {
filterNameList.add("新增相机");
}
return !areaList.isEmpty()
? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(areaList, filterNameList))
? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(areaList, filterNameList, baseDataArea))
: AjaxResult.success(new JSONArray());
}


+ 10
- 0
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/vo/AreaDeviceTreeSelect.java View File

@ -46,6 +46,8 @@ public class AreaDeviceTreeSelect implements Serializable {
this.patrolPointNames = patrolPointNames;
}
@JsonInclude(JsonInclude.Include.NON_NULL)
private String patrolPointCode;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String patrolPointId;
@JsonInclude(JsonInclude.Include.NON_NULL)
@ -253,6 +255,14 @@ public class AreaDeviceTreeSelect implements Serializable {
this.basedataPatrolPoints = basedataPatrolPoints;
}
public String getPatrolPointCode() {
return patrolPointCode;
}
public void setPatrolPointCode(String patrolPointCode) {
this.patrolPointCode = patrolPointCode;
}
// public List<AreaDeviceTreeSelect> cleanEmptyPatrolPoints() {
// // 递归清理
// if (children != null) {


+ 1
- 1
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java View File

@ -51,7 +51,7 @@ public interface IBasedataDeviceService {
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPreset(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationLeft(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(List<BaseDataArea> areas, List<String> filterNameList, BaseDataArea baseDataArea);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelation(List<BaseDataArea> areas, List<String> filterNameList);


+ 135
- 4
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java View File

@ -1,5 +1,9 @@
package com.inspect.metadata.prodevmnt.service.impl;
import com.inspect.base.core.enums.AlgTypeEnum;
import com.inspect.base.core.enums.DevTypeEnum;
import com.inspect.metadata.alg.domain.BasedataAlgSubtype;
import com.inspect.metadata.alg.mapper.BasedataAlgSubtypeMapper;
import com.inspect.metadata.area.domain.BaseDataArea;
import com.inspect.metadata.eqpbook.domain.BasedataEqpBook;
import com.inspect.metadata.eqpbook.mapper.BasedataEqpBookMapper;
@ -30,10 +34,13 @@ import com.inspect.base.core.utils.bean.BeanUtils;
import java.util.*;
import java.util.stream.Collectors;
import com.inspect.system.base.domain.SysDictData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
@ -51,6 +58,12 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
final
BasedataDeviceTypeMapper basedataDevicetypeMapper;
@Resource
private BasedataPatrolPointMapper basedataPatrolpointMapper;
@Resource
private BasedataAlgSubtypeMapper basedataAlgSubtypeMapper;
public BasedataDeviceServiceImpl(BasedataDeviceMapper basedataDeviceMapper, BasedataPatrolPointMapper basedataPatrolPointMapper, BasedataPatrolPointPresetMapper basedataPatrolPointPresetMapper, BasedataEqpBookMapper basedataEqpbookMapper, BasedataModelDeviceMapper basedataModelDeviceMapper, BasedataDeviceTypeMapper basedataDevicetypeMapper) {
this.basedataDeviceMapper = basedataDeviceMapper;
this.basedataPatrolPointMapper = basedataPatrolPointMapper;
@ -373,6 +386,8 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
patrolVO.setPatrolPointName(basedataPatrolPoint.getPatrolPointName());
patrolVO.setDeviceName(basedataPatrolPoint.getPatrolPointName());
patrolVO.setPatrolPointId(String.valueOf(basedataPatrolPoint.getPatrolPointId()));
patrolVO.setDataId(String.valueOf(basedataPatrolPoint.getPatrolPointId()));
patrolVO.setPatrolPointCode(basedataPatrolPoint.getPatrolPointCode());
patrolPoints.add(patrolVO);
}
// 设置点位列表到节点上
@ -498,7 +513,7 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
/**
* 与fillPointNumAndPatrolPoints区别在于查询的表不一样 此处用的是basedata_patrolpoint_relation表用于迁移数据使用
*/
private void fillPointNumAndPatrolPointsRelation(List<AreaDeviceTreeSelect> allNodes, List<AreaDeviceTreeSelect> treeList) {
private void fillPointNumAndPatrolPointsRelation(List<AreaDeviceTreeSelect> allNodes, List<AreaDeviceTreeSelect> treeList, BaseDataArea baseDataArea) {
// 收集所有设备ID
Set<Long> deviceIds = new HashSet<>();
for (AreaDeviceTreeSelect node : allNodes) {
@ -512,6 +527,32 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
// 批量查询点位
List<BasedataPatrolPoint> patrolPoints = basedataPatrolPointMapper.selectBasedataPatrolPointRelationListByDeviceIds(new ArrayList<>(deviceIds));
List<BasedataAlgSubtype> basedataAlgSubtypes = basedataAlgSubtypeMapper.selectBasedataAlgSubtypeList(new BasedataAlgSubtype());
logger.info("[META] basedataAlgSubtypes cnt: {}", basedataAlgSubtypes.size());
Map<String, String> algSubtypeMap = new HashMap<>();
basedataAlgSubtypes.forEach((item) -> {
algSubtypeMap.put(item.getAlgSubtypeId() + "", item.getAlgSubtypeName());
});
List<SysDictData> dictList = getSysDictDataList("point_device_type");
Optional<SysDictData> defaultDictData = dictList.stream()
.filter(SysDictData::getDefault)
.findFirst();
for (BasedataPatrolPoint basedataPatrolPoint : patrolPoints) {
basedataPatrolPoint.loadAlgSubtypeName(algSubtypeMap);
processPointType(basedataPatrolPoint, dictList, defaultDictData);
}
if (baseDataArea != null && baseDataArea.getDevTypeCodeList() != null && baseDataArea.getDevTypeCodeList().size() > 0) {
// 设备
dictList = dictList.stream().filter(item -> baseDataArea.getDevTypeCodeList().contains(item.getDictCode())).collect(Collectors.toList());
patrolPoints = filterByDeviceTypes(patrolPoints, dictList);
}
if (baseDataArea != null && baseDataArea.getAlgTypeCodeList() != null && baseDataArea.getAlgTypeCodeList().size() > 0) {
// 算法类型
patrolPoints = filterByAlgTypes(patrolPoints, baseDataArea.getAlgTypeCodeList());
}
// 按设备ID分组
Map<Long, List<BasedataPatrolPoint>> devicePatrolMap = patrolPoints.stream()
.collect(Collectors.groupingBy(BasedataPatrolPoint::getRelationDeviceId));
@ -520,6 +561,94 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
setPointNumAndPatrolPoints(treeList, devicePatrolMap);
}
private List<BasedataPatrolPoint> filterByAlgTypes(List<BasedataPatrolPoint> patrolPoints, List<Long> algTypeCodeList) {
// 获取算法分类字典dictCode=字典编码dictValue=逗号分隔的子类型ID
List<SysDictData> algCategoryDict = getSysDictDataList("point_alg_category");
// 构建字典编码 -> 子类型ID集合的映射 (例如"886" -> {"1", "2"})
Map<Long, Set<String>> labelToSubtypeIds = algCategoryDict.stream()
.collect(Collectors.toMap(
SysDictData::getDictCode,
item -> Arrays.stream(item.getDictValue().split(","))
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet())
));
logger.info("[META] labelToSubtypeIds : {}", labelToSubtypeIds);
// 合并所有允许的子类型ID
Set<String> allowedSubtypeIds = algTypeCodeList.stream()
.filter(Objects::nonNull)
.flatMap(dictCode -> labelToSubtypeIds.getOrDefault(dictCode, Collections.emptySet()).stream())
.collect(Collectors.toSet());
if (allowedSubtypeIds.isEmpty()) {
return Collections.emptyList();
}
// 筛选出那些 algSubtypeIds 字段逗号分隔的 ID 字符串中至少有一个 ID 存在于 allowedSubtypeIds 集合中的对象
return patrolPoints.stream()
.filter(point -> {
String subtypeIds = point.getAlgSubtypeIds();
if (StringUtils.isBlank(subtypeIds)) {
return false;
}
return Arrays.stream(subtypeIds.split(","))
.anyMatch(allowedSubtypeIds::contains);
})
.collect(Collectors.toList());
}
private List<BasedataPatrolPoint> filterByDeviceTypes(List<BasedataPatrolPoint> patrolPoints, List<SysDictData> dictList) {
Set<String> allowedPointTypeNames = dictList.stream().map(SysDictData::getDictLabel).collect(Collectors.toSet());
if (allowedPointTypeNames.isEmpty()) {
return Collections.emptyList();
}
return patrolPoints.stream()
.filter(point -> allowedPointTypeNames.contains(point.getPointTypeName()))
.collect(Collectors.toList());
}
private List<SysDictData> getSysDictDataList(String dictType) {
return basedataPatrolpointMapper.selectDictDataByType(dictType);
}
/**
* 处理点位的设备类型
*
* @param dictList
* @param basedataPatrolPoint
*/
private void processPointType(BasedataPatrolPoint basedataPatrolPoint, List<SysDictData> dictList, Optional<SysDictData> defaultDictData) {
String patrolPointCode = basedataPatrolPoint.getPatrolPointCode();
if (StringUtils.isNotEmpty(patrolPointCode)) {
if (patrolPointCode.contains("|")) {
String finalPatrolPointCode = patrolPointCode.substring(0, patrolPointCode.indexOf("|"));
Optional<String> pointTypeName = dictList.stream()
.filter(dict -> {
String valueStr = dict.getDictValue(); // 调用 getter
if (valueStr == null) {
return false;
}
return Arrays.stream(valueStr.split(","))
.map(String::trim)
.anyMatch(code -> code.equals(finalPatrolPointCode));
})
.map(SysDictData::getDictLabel)
.findFirst();
basedataPatrolPoint.setPointTypeName(pointTypeName.orElse("未知设备类型"));
basedataPatrolPoint.setPointTypeCode(finalPatrolPointCode);
} else {
defaultDictData.ifPresent(dict -> {
basedataPatrolPoint.setPointTypeName(dict.getDictLabel());
String[] codes = dict.getDictValue().split(",");
logger.info("[META] pointTypeCode: {}", codes);
if (codes.length > 0) {
basedataPatrolPoint.setPointTypeCode(codes[0]);
}
});
}
}
}
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelation(List<BaseDataArea> areas, List<String> filterNamelist) {
ArrayList<Long> areaIdList = new ArrayList<>();
HashMap<Long, BaseDataArea> areaMap = new HashMap<>();
@ -587,7 +716,7 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
return treeList;
}
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(List<BaseDataArea> areas, List<String> filterNamelist) {
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(List<BaseDataArea> areas, List<String> filterNamelist, BaseDataArea baseDataArea) {
ArrayList<Long> areaIdList = new ArrayList<>();
HashMap<Long, BaseDataArea> areaMap = new HashMap<>();
HashMap<Long, BasedataDevice> deviceHashMap = new HashMap<>();
@ -647,8 +776,10 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
List<AreaDeviceTreeSelect> treeList = AreaDeviceTreeSelectUtil.buildDeviceTreeFilterByAreaName(areaVOS, filterNamelist);
// 新增填充点位统计
fillPointNumAndPatrolPointsRelation(areaVOS, treeList);
fillPointNumAndPatrolPointsRelation(areaVOS, treeList, baseDataArea);
for (AreaDeviceTreeSelect area : treeList) {
area.cleanEmptyPatrolPoints();
}
return treeList;
}
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByMeter(List<BaseDataArea> areas) {


Loading…
Cancel
Save