From 25b246a01190d05e7c7b9861f68e46a89aaa8de4 Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Thu, 7 May 2026 17:45:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20patrol=5Ftask=E8=A1=A8=E6=96=B0?= =?UTF-8?q?=E5=A2=9Especified=5Falg=E5=AD=97=E6=AE=B5=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E4=BB=BB=E5=8A=A1=E6=8C=87=E5=AE=9A=E5=A6=82=E7=BA=A0?= =?UTF-8?q?=E5=81=8F=E7=AD=89=E7=AE=97=E6=B3=95=E7=B1=BB=E5=9E=8B=EF=BC=88?= =?UTF-8?q?=E5=8F=AF=E6=A0=B9=E6=8D=AE=E6=B3=A8=E9=87=8A=E2=80=9C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=8C=87=E5=AE=9A=E7=AE=97=E6=B3=95=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E2=80=9D=E6=9F=A5=E7=9C=8B=E9=80=BB=E8=BE=91=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=EF=BC=89;=E5=8E=BB=E6=8E=89=E7=BA=A0=E5=81=8F=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E5=90=88=E5=B9=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/core/constant/AlgConstants.java | 2 +- .../inspect/job/domain/task/PatrolTask.java | 1 + .../job/domain/task/PatrolTaskExecRecord.java | 4 + .../com/inspect/job/task/JobMainTask.java | 41 +++++----- .../controller/PatrolTaskExecController.java | 1 + .../analysis/utils/ResultAnalysisUtils.java | 3 - .../controller/PatrolResultController.java | 46 +++-------- .../mapper/PatrolResultMapper.java | 6 +- .../service/IPatrolResultService.java | 6 ++ .../service/impl/PatrolResultServiceImpl.java | 26 ++++++ .../task/controller/PatrolTaskController.java | 34 -------- .../com/inspect/task/domain/PatrolTask.java | 55 +------------ .../PatrolTaskStatusController.java | 5 ++ .../taskstatus/domain/PatrolTaskStatus.java | 2 +- .../impl/PatrolTaskStatusServiceImpl.java | 81 +++++++++++-------- .../mapper/task/PatrolResultMapper.xml | 17 +++- .../mapper/task/PatrolTaskMapper.xml | 4 +- .../mapper/task/PatrolTaskStatusMapper.xml | 60 ++++++++++++-- 18 files changed, 201 insertions(+), 193 deletions(-) diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java index c2809f0..27773ba 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java @@ -34,7 +34,7 @@ public class AlgConstants { INFRARED2, "isolator", "gis_meter", - "correction", + CORRECTION, "switch", GIS_METER_2 ); diff --git a/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTask.java b/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTask.java index 8d44001..e686a75 100644 --- a/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTask.java +++ b/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTask.java @@ -99,6 +99,7 @@ public class PatrolTask extends BaseEntity { private String areaName; private List eqPointList; private List patrolTaskStatusList; + private String specifiedAlg; @Override public boolean equals(Object object) { diff --git a/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTaskExecRecord.java b/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTaskExecRecord.java index 76c2ace..6436c1e 100644 --- a/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTaskExecRecord.java +++ b/inspect-job/src/main/java/com/inspect/job/domain/task/PatrolTaskExecRecord.java @@ -52,4 +52,8 @@ public class PatrolTaskExecRecord extends BaseEntity { private Integer finishNumber; private Integer cursorNumber; private Integer rebootTimes; + /** + * 任务指定算法类型 + */ + private String specifiedAlg; } diff --git a/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java b/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java index 65942f1..16cc616 100644 --- a/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java +++ b/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java @@ -490,7 +490,7 @@ public class JobMainTask { private PatrolTaskExecRecord prePointExec(PatrolTaskExecRecord taskExecRecord, PatrolTaskInfo patrolTaskInfo, int infoListSize) { String uuid = UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); final PatrolPresetPosSlim presetPos = queryPatrolPresetPos(uuid, patrolTaskInfo.getDeviceId()); - if(StringUtils.isNotEmpty(presetPos.getAddress())) { + if (StringUtils.isNotEmpty(presetPos.getAddress())) { log.info("prePointExec remake infrared address: raw: {}", presetPos.getAddress()); String infraredAddress = getInfraredAddress(3, presetPos); presetPos.setAddress(infraredAddress); @@ -527,7 +527,6 @@ public class JobMainTask { String taskPatrolId = taskExecRecord.getTaskPatrolId(); if (PresetAction.PHOTO.getCode().equals(presetAction.getActionType())) { final String chanType = presetPos.getChannelType(); - fileTypes.append("ir".equals(chanType) ? "1" : "vl".equals(chanType) ? "2" : "").append(","); //boolean bOk = false; try { log.info("PHOTO_PRESET_TYPE taskPatrolId: {}, chanType: {}, patrolPointId: {}, channelCode: {}, videoNvrCode: {}", @@ -537,6 +536,7 @@ public class JobMainTask { presetPos.getChannelCode(), presetPos.getVideoNvrCode()); if ("vl".equals(chanType)) { + fileTypes.append(2).append(","); String paramUrl = liveIVS_URL + "/api/v1/device/channelsnap?serial=" + presetPos.getVideoNvrCode() + "&realtime=true&code=" + presetPos.getChannelCode() @@ -558,6 +558,9 @@ public class JobMainTask { recordPersist(taskExecRecord, infoListSize, patrolTaskInfo, presetPos, fileTypes, filePaths); } else if ("ir".equals(chanType)) { Map algSubtypeIdMap = taskExecClient.getAlgTypeListByPatrolPointId(String.valueOf(presetPos.getPatrolPointId())); + // 任务指定算法类型:巡视详情的图片类型加载 + boolean isSpecifiedAlg = StringUtils.isNotEmpty(taskExecRecord.getSpecifiedAlg()); + fileTypes.append(isSpecifiedAlg ? "2" : "1").append(","); String paramUrl = liveIVS_URL + "/api/v1/device/channelsnap?serial=" + presetPos.getVideoNvrCode() + "&realtime=true&code=" + presetPos.getChannelCode(); @@ -1133,6 +1136,7 @@ public class JobMainTask { patrolTaskExecRecord.setDeviceId("0"); patrolTaskExecRecord.setExecPointId(0L); patrolTaskExecRecord.setTotalNumber(taskInfos.isEmpty() ? 1 : taskInfos.size()); + patrolTaskExecRecord.setSpecifiedAlg(patrolTask.getSpecifiedAlg()); log.info("taskName: {}, taskCode: {}, taskPatrolledId: {}", patrolTaskExecRecord.getTaskName(), patrolTaskExecRecord.getTaskCode(), patrolTaskExecRecord.getTaskPatrolId()); taskExecClient.addPatrolTaskExecRecord(patrolTaskExecRecord); @@ -1305,13 +1309,19 @@ public class JobMainTask { // } // } - private int calcTaskAlgorithmTotalNumber(List patrolTaskInfoList) { + private int calcTaskAlgorithmTotalNumber(List patrolTaskInfoList, String specifiedAlg) { int totalAlgorithmNumber = 0; for (PatrolTaskInfo patrolTaskInfo : patrolTaskInfoList) { - String result = taskExecClient.getAlgSubtypeIdsByPatrolPointId(patrolTaskInfo.getDeviceId()); - if (StringUtils.isNotEmpty(result)) { - String[] algSubtypeIds = result.split(StringUtils.COMMA); + // 任务指定算法类型:累加任务点位算法个数 + if (StringUtils.isNotEmpty(specifiedAlg)) { + String[] algSubtypeIds = specifiedAlg.split(StringUtils.COMMA); totalAlgorithmNumber += algSubtypeIds.length; + } else { + String result = taskExecClient.getAlgSubtypeIdsByPatrolPointId(patrolTaskInfo.getDeviceId()); + if (StringUtils.isNotEmpty(result)) { + String[] algSubtypeIds = result.split(StringUtils.COMMA); + totalAlgorithmNumber += algSubtypeIds.length; + } } } @@ -1324,7 +1334,7 @@ public class JobMainTask { deviceMap.computeIfAbsent(patrolTaskInfo.getDeviceCode(), k -> new ArrayList<>()).add(patrolTaskInfo); } - int totalAlgorithmNumber = calcTaskAlgorithmTotalNumber(patrolTaskInfoList); + int totalAlgorithmNumber = calcTaskAlgorithmTotalNumber(patrolTaskInfoList, patrolTaskExecRecord.getSpecifiedAlg()); patrolTaskExecRecord.setTotalAlgorithmNumber(totalAlgorithmNumber); asyncTaskPatrolPointCnt.set(0); @@ -1422,6 +1432,7 @@ public class JobMainTask { patrolTaskExecRecord.getOldTaskPatrolId(), isConsummate ? "false" : "true"); } + public List> optimizedGroup(List list) { Map> deviceMap = new HashMap<>(); @@ -1454,7 +1465,6 @@ public class JobMainTask { return result; } - private void execRemoveMaintainArea(List patrolTaskInfoList, List maintAreaList, List deviceIds) { for (MaintainRegion area : maintAreaList) { if (area.getStartTime().getTime() < System.currentTimeMillis() && area.getEndTime().getTime() > System.currentTimeMillis()) { @@ -1546,7 +1556,6 @@ public class JobMainTask { return record != null && TaskStatus.RUNNING.getCode().equals(record.getTaskState()); } - @SuppressWarnings({"unused"}) public void generalTask() { log.info("***************************** JobTaskTimer generalTask *************************************"); @@ -1968,6 +1977,7 @@ public class JobMainTask { .deviceId("0") .execPointId(0L) .totalNumber(taskInfos.isEmpty() ? 1 : taskInfos.size()) + .specifiedAlg(patrolTask.getSpecifiedAlg()) .build(); try { taskExecClient.addPatrolTaskExecRecord(patrolTaskExecRecord); @@ -1983,19 +1993,6 @@ public class JobMainTask { } } -// private void incrementRedisRecordCounter() { -// Integer redisRecCnt = redisService.getCacheObject(RedisConst.TASK_RECORD_CNT); -// if (redisRecCnt == null) { -// redisRecCnt = 1; -// redisService.setCacheObject(RedisConst.TASK_RECORD_CNT, redisRecCnt); -// } else { -// redisRecCnt++; -// redisService.setCacheObject(RedisConst.TASK_RECORD_CNT, redisRecCnt); -// } -// -// log.info(Color.YELLOW + "[JOB] redisRecCnt: {}" + Color.END, redisRecCnt); -// } - @SuppressWarnings({"unused"}) public void execRepeatDayTask(List patrolTaskList) { log.info("***************************** JobTaskTimer execRepeatDayTask with parameters *************************************"); diff --git a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java index d8bde52..5932996 100644 --- a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java +++ b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java @@ -927,6 +927,7 @@ public class PatrolTaskExecController extends BaseController { .endTime(task.getEndTime()) .areaId(task.getAreaId()) .areaName(task.getAreaName()) + .specifiedAlg(task.getSpecifiedAlg()) .build(); patrolTaskList.add(patrolTask); return patrolTaskList; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java index b3254a8..e65a870 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java @@ -351,9 +351,6 @@ public class ResultAnalysisUtils { resultAnalysis.setResStatus("0"); defaultDesc = "纠偏结果异常"; } - // 纠偏分析结果均为正常 - resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); - resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); } else if ("2001".equals(resultAnalysis.getResCode())) { ObjectMapper mapper = new ObjectMapper(); List> list; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java index 9c7295e..4948e64 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java @@ -667,7 +667,6 @@ public class PatrolResultController extends BaseController { } - private void remoteAnalysisServiceStart(final String ANALYSIS_URL, final String params) { logger.info("[ALG] CALL ALG BIG MODEL, URL: {}, PARAM: {}", ANALYSIS_URL, params); executor.submit(() -> { @@ -693,6 +692,7 @@ public class PatrolResultController extends BaseController { String ids = ""; for (PatrolResult patrolResult : patrolResultList) { + PatrolTask task = patrolTaskService.selectPatrolTaskByTaskId(Long.valueOf(patrolResult.getTaskCode())); logger.info("callRemoteAlgorithm taskPatrolledId: {}, patrolResult: {}", patrolResult.getTaskPatrolledId(), patrolResult); List filterList = new ArrayList<>(); //初筛 List bigModelList = new ArrayList<>(); //大模型 @@ -702,32 +702,13 @@ public class PatrolResultController extends BaseController { AnalyseReqItem analyseReqItem = new AnalyseReqItem(); analyseReqItem.setObjectId(patrolResult.getDeviceId()); - //根据basedata_patrolpoint中的patrol_point_id(对应patrol_result表中的device_id)查询该预置位配置的算法列表 - Map algSubtypeIdMap = patrolResultService.selectAlgorithmType(patrolResult.getDeviceId()); - List algSubtypeIdList = new ArrayList<>(); - logger.info("callRemoteAlgorithm algorithmTypeMap: {}", algSubtypeIdMap); - if (algSubtypeIdMap != null) { - String subIdStr = algSubtypeIdMap.get("alg_subtype_ids"); - if (subIdStr.contains(StringUtils.COMMA)) { - String[] subIds = subIdStr.split(StringUtils.COMMA); - for (String subId : subIds) { - if (StringUtils.isNotEmpty(subId)) { - algSubtypeIdList.add(subId); - } - } - } else { - algSubtypeIdList.add(subIdStr); - } - } - - PatrolResult patrolResultTemp = new PatrolResult(); - if (!algSubtypeIdList.isEmpty()) { - patrolResultTemp.setAlgId(algSubtypeIdList); - } - - List algInfoList = new ArrayList<>(); - if (patrolResultTemp.getAlgId() != null && !patrolResultTemp.getAlgId().isEmpty()) { - algInfoList = patrolResultService.selectAlgInfo(patrolResultTemp); + List algInfoList; + if (StringUtils.isNotEmpty(task.getSpecifiedAlg())) { + // 任务指定算法类型:获取指定算法类型的对象 + algInfoList = patrolResultService.selectAlgInfoByCode(task.getSpecifiedAlg()); + } else { + // 根据basedata_patrolpoint中的patrol_point_id(对应patrol_result表中的device_id)查询该预置位配置的算法列表 + algInfoList = patrolResultService.selectPointAlgInfo(patrolResult.getDeviceId()); } logger.info("callRemoteAlgorithm algInfoList: {}", algInfoList); @@ -922,8 +903,6 @@ public class PatrolResultController extends BaseController { logger.info(Color.CYAN + "callRemoteAlgorithm filter size: {}, filterList: {}" + Color.END, filterList.size(), filterList); logger.info(Color.CYAN + "callRemoteAlgorithm bigModel size: {}, bigModelList: {}" + Color.END, bigModelList.size(), bigModelList); - // 查询任务指定的分析主机厂商 - PatrolTask task = patrolTaskService.selectPatrolTaskByTaskId(Long.valueOf(patrolResult.getTaskCode())); String drafter = task.getDrafter(); //qinyl 初筛逻辑处理 if (!filterList.isEmpty()) { @@ -1141,7 +1120,7 @@ public class PatrolResultController extends BaseController { PatrolTaskStatus patrolTaskStatusOfDb = patrolTaskStatusList.get(0); // 除了db非完成或终止或暂停状态,当db状态与上报状态不一致时,更新db状态 if (!Arrays.asList(TaskStatus.DONE.getCode(), TaskStatus.HALTED.getCode()).contains(patrolTaskStatusOfDb.getTaskState()) - && !Arrays.asList(TaskStatus.DONE.getCode(),patrolTaskStatusOfDb.getTaskState()).contains(patrolTaskStatusItem.getTaskState()) + && !Arrays.asList(TaskStatus.DONE.getCode(), patrolTaskStatusOfDb.getTaskState()).contains(patrolTaskStatusItem.getTaskState()) && !sendCode.equals("摄像头") ) { logger.info("GET_INFO_41 UPDATE TASK_STATE old: {} TO new: {}", patrolTaskStatusOfDb.getTaskState(), patrolTaskStatusItem.getTaskState()); @@ -1635,10 +1614,10 @@ public class PatrolResultController extends BaseController { // 非摄像头的设备任务,需要从数据库统计执行点位数量 if (jsonRootBean.getTotalNumber() == null && !tasks.isEmpty()) { logger.info("jsonRootBean.getTotalNumber not NULL: {}", algrithomPatrolResultList); - String taskId = String.valueOf(tasks.get(0).getTaskId()); - logger.info("taskId: {}, sendCode: {}", taskId, sendCode); + String taskCode = String.valueOf(tasks.get(0).getTaskId()); + logger.info("taskCode: {}, sendCode: {}", taskCode, sendCode); // 获取设备标识,以便统计执行点位数量 - List algList = patrolResultMapper.selectAlgList(taskId, sendCode, null); + List algList = patrolResultService.selectAlgList(taskCode, sendCode, tasks.get(0).getSpecifiedAlg()); logger.info("algList: {}", algList.toString()); int algCount = 0; for (String alg : algList) { @@ -1782,7 +1761,6 @@ public class PatrolResultController extends BaseController { return AjaxResult.success(patrolTaskList); } - @GetMapping({"/getEqpBookListInfoForXml"}) public String getEqpBookListInfo(BasedataEqpBookMoMain basedataEqpBook) { logger.info("--------getEqpBookListInfo 1!!!!!!"); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java index 11286d8..8711fe6 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java @@ -118,7 +118,11 @@ public interface PatrolResultMapper { Map selectDeviceNameById(BasePointAreaInfo basePointAreaInfo); - List selectAlgList(@Param("taskId") String taskId, @Param("sendCode") String sendCode, @Param("devType") String devType); + List selectAlgList(@Param("taskCode") String taskCode, @Param("sendCode") String sendCode, @Param("devType") String devType); List selectPatrolDataResultByTaskCodeV3(ResultAnalysis resultAnalysis); + + List selectPointAlgInfo(String patrolPointId); + + List selectAlgInfoByCode(String codes); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java index 7f0be7c..4b1e01a 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java @@ -101,4 +101,10 @@ public interface IPatrolResultService { List selectPatrolResultListByMainIds(List mainIds); InspectionReport getInspectionReport(List lineIds, PatrolTaskResultMain patrolTaskResultMain); + + List selectPointAlgInfo(String patrolPointId); + + List selectAlgInfoByCode(String codes); + + List selectAlgList(String taskCode, String sendCode, String specifiedAlg); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java index f45b679..b86ea2c 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java @@ -2186,6 +2186,32 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return report; } + @Override + public List selectPointAlgInfo(String patrolPointId) { + return patrolResultMapper.selectPointAlgInfo(patrolPointId); + } + + @Override + public List selectAlgInfoByCode(String codes) { + return patrolResultMapper.selectAlgInfoByCode(codes); + } + + /** + * 根据以下条件返回任务的全部或某设备类型的点位及其算法 + * @param sendCode 任务编码 + * @param specifiedAlg 设备唯一标识 + * @return 任务指定算法 + */ + @Override + public List selectAlgList(String taskCode, String sendCode, String specifiedAlg) { + String devType = "摄像头".equals(sendCode) ? "2" : null; + List algList = patrolResultMapper.selectAlgList(taskCode, sendCode, devType); + if (StringUtils.isNotEmpty(specifiedAlg)) { + return algList.stream().map(item -> specifiedAlg).collect(Collectors.toList()); + } + return algList; + } + private PatrolResultRef mergePatrolResultRef(PatrolResultRef filterResult, PatrolResultRef AIResult, String resultType) { PatrolResultRef merged = new PatrolResultRef(); merged.setDeviceId(filterResult.getDeviceId()); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java index fbfec02..3688460 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java @@ -358,38 +358,6 @@ public class PatrolTaskController extends BaseController { } } - // 6.1 合并纠偏算法数据 - Map> partitionedMap = newList.stream() - .collect(Collectors.partitioningBy(element -> AlgConstants.CORRECTION.equals(element.getAlgType()))); - List correctionList = partitionedMap.getOrDefault(true, Collections.emptyList()); - newList = partitionedMap.getOrDefault(false, Collections.emptyList()); - - if (!correctionList.isEmpty()) { - for (PatrolData item : newList) { - Optional correctionOptional = correctionList.stream().filter(element -> element.getObjectId().equals(item.getObjectId())).findFirst(); - if (correctionOptional.isPresent()) { - PatrolData correctionData = correctionOptional.get(); - item.setResStatus(correctionData.getResStatus()); - item.setOriginalValue(correctionData.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()); - } - } - } - } - // 7. 所有过滤条件合并为一个 stream(避免多次 filter + collect) newList = newList.stream() .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getAlgName()) @@ -3991,8 +3959,6 @@ public class PatrolTaskController extends BaseController { listAlgName.add(item.getAlgName()); } } - Map overview = patrolTaskService.countPatrolTaskOverview(patrolTaskStatus.getTaskPatrolledId()); - map.put("overview", overview); map.put("listPointName", listPointName); map.put("listPointStatus", mapList); map.put("listDeviceSource", listDeviceSource); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolTask.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolTask.java index 5f34f60..9a3ab6f 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolTask.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolTask.java @@ -17,6 +17,7 @@ import lombok.*; @Builder @NoArgsConstructor @AllArgsConstructor +@ToString public class PatrolTask extends BaseEntity { private static final long serialVersionUID = 1L; @@ -187,63 +188,11 @@ public class PatrolTask extends BaseEntity { private List patrolTaskStatusList; private List prevPoints; private List patrolPointIds; + private String specifiedAlg; // 任务总点位数量 private int totalPoints; private String deviceType; private String pointType; - - @Override - public String toString() { - return "PatrolTask{" + - "taskId=" + taskId + - ", stationName='" + stationName + '\'' + - ", stationCode='" + stationCode + '\'' + - ", type='" + type + '\'' + - ", taskCode='" + taskCode + '\'' + - ", taskName='" + taskName + '\'' + - ", priority='" + priority + '\'' + - ", deviceLevel='" + deviceLevel + '\'' + - ", deviceList='" + deviceList + '\'' + - ", fixedStartTime=" + fixedStartTime + - ", cycleMonth='" + cycleMonth + '\'' + - ", cycleWeek='" + cycleWeek + '\'' + - ", cycleExecuteTime='" + cycleExecuteTime + '\'' + - ", cycleStartTime=" + cycleStartTime + - ", cycleEndTime=" + cycleEndTime + - ", intervalNumber=" + intervalNumber + - ", intervalType='" + intervalType + '\'' + - ", intervalExecuteTime='" + intervalExecuteTime + '\'' + - ", intervalStartTime=" + intervalStartTime + - ", intervalEndTime=" + intervalEndTime + - ", invalidStartTime=" + invalidStartTime + - ", invalidEndTime=" + invalidEndTime + - ", isEnable='" + isEnable + '\'' + - ", linkageState='" + linkageState + '\'' + - ", devType='" + devType + '\'' + - ", drafter='" + drafter + '\'' + - ", executionStatus='" + executionStatus + '\'' + - ", fileStatus='" + fileStatus + '\'' + - ", isUp='" + isUp + '\'' + - ", taskCycle='" + taskCycle + '\'' + - ", devNo='" + devNo + '\'' + - ", storage='" + storage + '\'' + - ", taskProgress='" + taskProgress + '\'' + - ", taskState='" + taskState + '\'' + - ", executionMode='" + executionMode + '\'' + - ", beginTime='" + beginTime + '\'' + - ", endTime='" + endTime + '\'' + - ", areaId='" + areaId + '\'' + - ", areaName='" + areaName + '\'' + - ", areaIdS='" + areaIdS + '\'' + - ", eqPointList=" + eqpointList + - ", videoPosList=" + videoPosList + - ", patrolTaskStatusList=" + patrolTaskStatusList + - ", prevPoints=" + prevPoints + - ", totalPoints=" + totalPoints + - ", deviceType='" + deviceType + '\'' + - ", pointType='" + pointType + '\'' + - '}'; - } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java index 76db817..7d71ba8 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.domain.ResultAnalysisSummaryDTO; import com.inspect.analysis.service.IResultAnalysisService; +import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.enums.TaskStatus; import com.inspect.base.core.enums.TaskType; @@ -252,6 +253,10 @@ public class PatrolTaskStatusController extends BaseController { list.forEach((item) -> { item.setPatrolStatus("1"); item.setPointCount(pointMap.get(item.getTaskCode())); + // 任务指定算法类型:当为纠偏时,返回值便于前端做样式处理 + if (AlgConstants.CORRECTION.equals(item.getSpecifiedAlg())) { + item.setAlgName(AlgConstants.CORRECTION); + } // 根据任务进度和归档信息设置文件状态 if (!item.getTaskProgress().contains("100")) { item.setFileStatus("0"); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java index 637f0e2..829015e 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java @@ -117,7 +117,7 @@ public class PatrolTaskStatus extends BaseEntity { private String resultType; private String pointStatus; private String algName; - + private String specifiedAlg; public PatrolTaskStatus(String taskPatrolledId) { this.taskPatrolledId = taskPatrolledId; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java index d6d4dd1..2e4e57f 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java @@ -11,6 +11,7 @@ import com.inspect.base.core.utils.DateUtils; import com.inspect.base.core.utils.StringUtils; import com.inspect.base.redis.service.RedisService; import com.inspect.partrolresult.mapper.PatrolResultMapper; +import com.inspect.partrolresult.service.IPatrolResultService; import com.inspect.resultmain.domain.PatrolTaskResultMain; import com.inspect.resultmain.service.IPatrolTaskResultMainService; import com.inspect.task.domain.PatrolTask; @@ -47,6 +48,9 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { @Resource private PatrolResultMapper patrolResultMapper; + @Resource + private IPatrolResultService patrolResultService; + @Autowired public PatrolTaskStatusServiceImpl(PatrolTaskStatusMapper patrolTaskStatusMapper) { this.patrolTaskStatusMapper = patrolTaskStatusMapper; @@ -152,22 +156,10 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { throw new IllegalArgumentException("主任务进度/状态由子任务自动计算,不能直接修改:" + patrolTaskStatus.getTaskPatrolledId()); } - // 任务状态完成/超期,更新结束时间 - if (state.equals(TaskStatus.DONE.getCode()) || state.equals(TaskStatus.HALTED.getCode())) { - String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); - patrolTaskStatus.setEndTime(endTime); - } - patrolTaskStatus.setTaskProgress(collectionProgress); patrolTaskStatus.setTaskEstimatedTime(algorithmProgress); patrolTaskStatus.setTaskState(state); - // 普通任务且状态为已完成,删除redis任务缓存 - if (TaskType.ORDINARY.getCode().equals(patrolTaskStatus.getTaskType()) && state.equals(TaskStatus.DONE.getCode())) { - redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTaskStatus.getTaskCode()); - } - - // 统计任务点位巡检情况 - patrolTaskStatus.setSummary(getTaskPointsSummary(patrolTaskStatus.getTaskCode(), patrolTaskStatus.getTaskPatrolledId())); + setNormalTaskStatus(patrolTaskStatus); // 更新子任务或普通任务 updatePatrolTaskStatus(patrolTaskStatus); @@ -185,6 +177,8 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { return; } + PatrolTaskStatus mainTask = selectPatrolTaskStatusByTaskPatrolledId(mainId); + BigDecimal execTotalPoints = BigDecimal.ZERO; BigDecimal execTotalAlgorithms = BigDecimal.ZERO; TaskStatus mainTaskState = TaskStatus.DONE; @@ -195,12 +189,8 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { log.info("taskNames: {}", subTask.getTaskName()); if (taskNames.length > 1) { String sendCode = taskNames[0]; - List algList = new ArrayList<>(); - if (sendCode.equals("摄像头")) { - algList = patrolResultMapper.selectAlgList(taskCode, null, "2"); - } else { - algList = patrolResultMapper.selectAlgList(taskCode, sendCode, null); - } + // 指定任务算法 + List algList = patrolResultService.selectAlgList(taskCode, sendCode, mainTask.getSpecifiedAlg()); int subTotalPoints = algList.size(); int subTotalAlgorithms = algList.stream().mapToInt(s -> s.split(",").length).sum(); @@ -223,7 +213,7 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { } } - List algList = patrolResultMapper.selectAlgList(taskCode, null, null); + List algList = patrolResultService.selectAlgList(taskCode, null, mainTask.getSpecifiedAlg()); int totalPoints = algList.size(); int totalAlgorithms = algList.stream().mapToInt(s -> s.split(",").length).sum(); log.info("totalPoints:{},totalAlgorithms:{}", totalPoints, totalAlgorithms); @@ -241,24 +231,17 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { 1, RoundingMode.DOWN ); - PatrolTaskStatus mainTask = selectPatrolTaskStatusByTaskPatrolledId(mainId); - // 如果状态为已完成,但采集和分析进度小于100,说明还有任务未上报,更新为运行中 if (mainTaskState.getCode().equals(TaskStatus.DONE.getCode()) - && (mainTaskProgress.compareTo(new BigDecimal(100)) != 0 || mainAlgorithmProgress.compareTo(new BigDecimal(100)) != 0 )){ + && (mainTaskProgress.compareTo(new BigDecimal(100)) != 0 || mainAlgorithmProgress.compareTo(new BigDecimal(100)) != 0)) { mainTaskState = TaskStatus.RUNNING; } - if (mainTaskState.getCode().equals(TaskStatus.DONE.getCode()) || mainTaskState.getCode().equals(TaskStatus.HALTED.getCode())) { - // 主任务且状态为已完成,删除redis任务缓存 - redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode); - String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); - mainTask.setEndTime(endTime); - } + mainTask.setTaskState(mainTaskState.getCode()); mainTask.setTaskProgress(mainTaskProgress.toString()); mainTask.setTaskEstimatedTime(mainAlgorithmProgress.toString()); - // 统计任务点位巡检情况 - mainTask.setSummary(getTaskPointsSummary(mainTask.getTaskCode(), mainTask.getTaskPatrolledId())); + setNormalTaskStatus(mainTask); + // 更新主任务 patrolTaskStatusMapper.updatePatrolTaskStatus(mainTask); } @@ -295,9 +278,13 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { return mainId; } - private String getTaskPointsSummary(String taskCode, String taskPatrolledId) { + private String getTaskPointsSummary(String taskCode, String taskPatrolledId, String specifiedAlg) { // 任务总点位和算法 List> totalPointList = patrolTaskStatusMapper.selectTotalPointsAndAlgs(taskCode); + // 任务指定算法类型 + if (StringUtils.isNotEmpty(specifiedAlg)) { + totalPointList.stream().forEach(item -> item.put("alg_subtype_ids", specifiedAlg)); + } // 任务已巡检点位和算法 List> executedPointList = patrolTaskStatusMapper.selectExecutedPointsAndAlgs(taskPatrolledId); return countInspectedPoint(totalPointList, executedPointList); @@ -305,6 +292,7 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { /** * 统计点位巡检情况 + * * @param data1List 总点位和算法 * @param data2List 已执行点位和算法 * @return @@ -312,8 +300,8 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { private String countInspectedPoint(List> data1List, List> data2List) { Map> data2Map = new HashMap<>(); for (Map row : data2List) { - String pid = String.valueOf(row.get("patrol_point_id")); - String subtype = String.valueOf(row.get("alg_subtype_id")); + String pid = String.valueOf(row.get("patrol_point_id")); + String subtype = String.valueOf(row.get("alg_subtype_id")); data2Map.computeIfAbsent(pid, k -> new HashSet<>()).add(subtype); } @@ -349,6 +337,29 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { result.put("executedPoint", count); result.put("unexecutedPoint", (data1List.size() - count)); - return result.toString(); + return result.toJSONString(); + } + + private void setNormalTaskStatus(PatrolTaskStatus patrolTaskStatus) { + // 任务最终状态:已完成、已终止 + boolean isFinalState = TaskStatus.DONE.getCode().equals(patrolTaskStatus.getTaskState()) || TaskStatus.HALTED.getCode().equals(patrolTaskStatus.getTaskState()); + // 常规任务:主任务、普通任务 + boolean isNormalTask = TaskType.ORDINARY.getCode().equals(patrolTaskStatus.getTaskType()) || TaskType.MAIN.getCode().equals(patrolTaskStatus.getTaskType()); + + // 更新任务结束时间和redis任务执行标识 + if (isFinalState) { + String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); + patrolTaskStatus.setEndTime(endTime); + + if (isNormalTask) { + redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTaskStatus.getTaskCode()); + } + } + + // 更新的点位汇总信息 + if (isNormalTask) { + String summary = getTaskPointsSummary(patrolTaskStatus.getTaskCode(), patrolTaskStatus.getTaskPatrolledId(), patrolTaskStatus.getSpecifiedAlg()); + patrolTaskStatus.setSummary(summary); + } } } diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml index cf1db7d..0f90ef8 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml @@ -1283,7 +1283,7 @@ LEFT JOIN patrol_task_info i ON p.patrol_point_id = i.device_id LEFT JOIN basedata_eqpbook e ON i.ebook_id = e.eqp_book_id - and i.task_major_id = #{taskId} + and i.task_major_id = #{taskCode} and e.main_system_code = #{sendCode} and i.dev_type = #{devType} @@ -1413,4 +1413,19 @@ ORDER BY d.device_name,a.device_name ORDER BY b.point_status + + + + diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml index f0484e6..d36b991 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskMapper.xml @@ -43,6 +43,7 @@ + @@ -84,7 +85,8 @@ drafter, area_id_s, point_type, - device_type + device_type, + specified_alg from patrol_task diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml index d23711c..78e6ed7 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml @@ -76,7 +76,8 @@ pos, exec_type, task_type, - main_id + main_id, + summary from patrol_task_status @@ -294,13 +295,57 @@