From 4494a7ee991737723ff277a1128f1e6aef447399 Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Thu, 23 Apr 2026 17:53:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=AF=A6=E6=83=85=E7=82=B9=E4=BD=8D=E5=B7=A1=E6=A3=80?= =?UTF-8?q?=E6=83=85=E5=86=B5=E6=B1=87=E6=80=BB=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E8=AE=B0=E5=BD=95=E8=87=B3patrol=5Ftask=5Fstatus?= =?UTF-8?q?=E7=9A=84=E6=96=B0=E5=A2=9Esummary=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspect/task/mapper/PatrolTaskMapper.java | 2 - .../task/service/IPatrolTaskService.java | 2 - .../service/impl/PatrolTaskServiceImpl.java | 5 -- .../mapper/PatrolTaskStatusMapper.java | 5 ++ .../impl/PatrolTaskStatusServiceImpl.java | 70 +++++++++++++++++-- .../mapper/task/PatrolTaskMapper.xml | 28 -------- .../mapper/task/PatrolTaskStatusMapper.xml | 18 +++++ 7 files changed, 88 insertions(+), 42 deletions(-) diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java index 9b56f8e..5be0335 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java @@ -60,6 +60,4 @@ public interface PatrolTaskMapper { List selectBasedataPatrolPointPresetList(@Param("patrolPointIds") List patrolPointIds); List selectPatrolPresetPosList(@Param("patrolPointIds") List patrolPointIds); - - Map countPatrolTaskOverview(String taskPatrolledId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java index e8d5a0a..f99e25d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/IPatrolTaskService.java @@ -63,6 +63,4 @@ public interface IPatrolTaskService { List selectBasedataPatrolPointPresetList(List patrolPointIds); List selectPatrolPresetPosList(List patrolPointIds); - - Map countPatrolTaskOverview(String taskPatrolledId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java index 65e4c8d..46b9211 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java @@ -370,9 +370,4 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService { public List selectPatrolPresetPosList(List patrolPointIds) { return patrolTaskMapper.selectPatrolPresetPosList(patrolPointIds); } - - @Override - public Map countPatrolTaskOverview(String taskPatrolledId) { - return patrolTaskMapper.countPatrolTaskOverview(taskPatrolledId); - } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java index b1d3b72..8ad51d1 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; @Mapper public interface PatrolTaskStatusMapper { @@ -52,4 +53,8 @@ public interface PatrolTaskStatusMapper { List selectPatrolTaskStatusListByMainId(String taskPatrolledId); PatrolTaskStatus selectPatrolTaskStatusMain(String taskPatrolledId); + + List> selectTotalPointsAndAlgs(String taskCode); + + List> selectExecutedPointsAndAlgs(String 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 f7bd88b..d6d4dd1 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 @@ -1,5 +1,6 @@ package com.inspect.taskstatus.service.impl; +import com.alibaba.fastjson.JSONObject; import com.inspect.annotation.TaskStatusChange; import com.inspect.base.core.constant.Color; import com.inspect.base.core.constant.RedisConst; @@ -27,10 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; @Service public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { @@ -167,6 +165,10 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { 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())); + // 更新子任务或普通任务 updatePatrolTaskStatus(patrolTaskStatus); log.info("updateTaskProgress: {}", patrolTaskStatus); @@ -251,11 +253,12 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode); String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); mainTask.setEndTime(endTime); -// generateTaskResultMain(mainTask); } mainTask.setTaskState(mainTaskState.getCode()); mainTask.setTaskProgress(mainTaskProgress.toString()); mainTask.setTaskEstimatedTime(mainAlgorithmProgress.toString()); + // 统计任务点位巡检情况 + mainTask.setSummary(getTaskPointsSummary(mainTask.getTaskCode(), mainTask.getTaskPatrolledId())); // 更新主任务 patrolTaskStatusMapper.updatePatrolTaskStatus(mainTask); } @@ -291,4 +294,61 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { return mainId; } + + private String getTaskPointsSummary(String taskCode, String taskPatrolledId) { + // 任务总点位和算法 + List> totalPointList = patrolTaskStatusMapper.selectTotalPointsAndAlgs(taskCode); + // 任务已巡检点位和算法 + List> executedPointList = patrolTaskStatusMapper.selectExecutedPointsAndAlgs(taskPatrolledId); + return countInspectedPoint(totalPointList, executedPointList); + } + + /** + * 统计点位巡检情况 + * @param data1List 总点位和算法 + * @param data2List 已执行点位和算法 + * @return + */ + 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")); + + data2Map.computeIfAbsent(pid, k -> new HashSet<>()).add(subtype); + } + + // 遍历 data1,检查每个 patrol_point_id 是否全部子类型都存在 + int count = 0; + for (Map row : data1List) { + String pid = String.valueOf(row.get("patrol_point_id")); + String idsStr = String.valueOf(row.get("alg_subtype_ids")); + + if (idsStr == null || idsStr.trim().isEmpty()) { + continue; // 空则跳过 + } + + // 解析逗号分隔的 alg_subtype_ids + Set requiredSet = new HashSet<>(); + for (String s : idsStr.split(",")) { + String trim = s.trim(); + if (!trim.isEmpty()) { + requiredSet.add(trim); + } + } + + // 判断是否是 data2 的子集 + Set availableSet = data2Map.get(pid); + if (availableSet != null && availableSet.containsAll(requiredSet)) { + count++; + } + } + + JSONObject result = new JSONObject(); + result.put("totalPoint", data1List.size()); + result.put("executedPoint", count); + result.put("unexecutedPoint", (data1List.size() - count)); + + return result.toString(); + } } 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 e188777..f0484e6 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 @@ -474,32 +474,4 @@ #{patrolPointId} - - 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 f12eae8..d23711c 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 @@ -117,6 +117,7 @@ b.type as patrol_type, a.task_type, a.main_id, + a.summary, b.execution_status as exec_type from patrol_task_status a LEFT JOIN patrol_task b on a.task_code=b.task_code @@ -358,6 +359,22 @@ ) + + + + insert into patrol_task_status @@ -461,6 +478,7 @@ code = #{code}, pos = #{pos}, patrol_type = #{patrolType}, + summary = #{summary}, end_time = #{endTime}, where line_id = #{lineId}