diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java index bc15ec8..55ee699 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java @@ -51,6 +51,18 @@ public interface ResultAnalysisMapper { int deleteResultAnalysisByLineIds(Long[] lineIds); + int deleteResultAnalysisByTaskPatrolledIds(@Param("taskPatrolledIds") List taskPatrolledIds); + + /** + * 按任务编码删除结果分析(通过 patrol_result 的 line_id 关联 business_id) + */ + int deleteResultAnalysisByTaskCodes(@Param("taskCodes") List taskCodes); + + /** + * 按执行ID删除算法分析日志 + */ + int deleteAnalyseLogByTaskPatrolledIds(@Param("taskPatrolledIds") List taskPatrolledIds); + List> defectList1(); List> defectList2(); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java index 36c4314..116f19f 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java @@ -47,6 +47,8 @@ public interface IResultAnalysisService { int deleteResultAnalysisByLineId(Long lineId); + int deleteResultAnalysisByTaskPatrolledIds(List taskPatrolledIds); + ResultAnalysis selectTaskAbnormalData(ResultAnalysis resultAnalysis); Map selectTaskAbnormalDataBatch(List taskPatrolledIds); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java index 5897eef..1f2f1e5 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java @@ -120,6 +120,13 @@ public class ResultAnalysisServiceImpl implements IResultAnalysisService { return this.resultAnalysisMapper.deleteResultAnalysisByLineId(lineId); } + public int deleteResultAnalysisByTaskPatrolledIds(List taskPatrolledIds) { + if (taskPatrolledIds == null || taskPatrolledIds.isEmpty()) { + return 0; + } + return this.resultAnalysisMapper.deleteResultAnalysisByTaskPatrolledIds(taskPatrolledIds); + } + public ResultAnalysis selectTaskAbnormalData(ResultAnalysis resultAnalysis) { return this.resultAnalysisMapper.selectTaskAbnormalData(resultAnalysis); } 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 b19481e..2df02dc 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 @@ -87,6 +87,11 @@ public interface PatrolResultMapper { int deletePatrolResultByLineIds(Long[] lineIds); + int deletePatrolResultByTaskPatrolledIds(@Param("taskPatrolledIds") List taskPatrolledIds); + + int deletePatrolResultByTaskCodes(@Param("taskCodes") List taskCodes, + @Param("taskPatrolledIds") List taskPatrolledIds); + int updatePatrolResultValue(PatrolResult patrolResult); List selectOilResultValue(PatrolResult patrolResult); 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 ca6c14a..010abd0 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 @@ -81,6 +81,8 @@ public interface IPatrolResultService { int deletePatrolResultByLineId(Long lineId); + int deletePatrolResultByTaskPatrolledIds(List taskPatrolledIds); + Map getPatrolResultValue(PatrolResult patrolResult); List selectOilResultValue(PatrolResult patrolResult); 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 fd76985..4c1a927 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 @@ -256,6 +256,13 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return patrolResultMapper.deletePatrolResultByLineId(lineId); } + public int deletePatrolResultByTaskPatrolledIds(List taskPatrolledIds) { + if (taskPatrolledIds == null || taskPatrolledIds.isEmpty()) { + return 0; + } + return patrolResultMapper.deletePatrolResultByTaskPatrolledIds(taskPatrolledIds); + } + public Map getPatrolResultValue(PatrolResult patrolResult) { log.info("[RES] ???????????????????/getPatrolResultValue: patrolResult: {}", patrolResult.toString()); Map map = new HashMap<>(); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresultAux/mapper/PatrolResultAuxMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresultAux/mapper/PatrolResultAuxMapper.java index 1c6a042..8d4fa53 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresultAux/mapper/PatrolResultAuxMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresultAux/mapper/PatrolResultAuxMapper.java @@ -23,4 +23,7 @@ public interface PatrolResultAuxMapper { int deletePatrolResultAuxByLineId(Long lineId); int deletePatrolResultAuxByLineIds(Long[] lineIds); + + int deletePatrolResultAuxByTaskCodes(@Param("taskCodes") List taskCodes, + @Param("taskPatrolledIds") List taskPatrolledIds); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java index 3eb2e8d..6f3dfb4 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java @@ -29,6 +29,8 @@ public interface PatrolTaskResultMainMapper { int deletePatrolTaskResultMainByLineIds(Long[] lineIds); + int deletePatrolTaskResultMainByTaskCodes(@Param("taskCodes") List taskCodes); + List selectMainFileStatus(@Param("list") List patrolIds); List selectLineIds(Long lineId); 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 de1fbba..0488b3a 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 @@ -575,8 +575,11 @@ public class PatrolTaskController extends BaseController { public AjaxResult remove(@PathVariable Long[] taskIds) { for (Long id : taskIds) { logger.info("[CONTROLLER] remove task taskId: {}", id); + PatrolTask task = patrolTaskService.selectPatrolTaskByTaskId(id); + String taskCode = task != null && StringUtils.isNotEmpty(task.getTaskCode()) + ? task.getTaskCode() : String.valueOf(id); PatrolTaskStatus patrolTaskStatus = new PatrolTaskStatus(); - patrolTaskStatus.setTaskCode(String.valueOf(id)); + patrolTaskStatus.setTaskCode(taskCode); patrolTaskStatus.setTaskState("2"); List results = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); if (!results.isEmpty()) { @@ -584,8 +587,8 @@ public class PatrolTaskController extends BaseController { } } - patrolTaskService.deletePatrolTaskByTaskIds(taskIds); - patrolTaskInfoService.deletePatrolTaskInfoByMajorIds(taskIds); + // 事务内级联删除任务及其执行状态、巡视结果、结果分析等关联数据 + int deleteCount = patrolTaskService.deletePatrolTaskWithRelatedData(taskIds); // 原来每个 taskId 都做一次 KEYS 全库扫描,改为只扫描一次(SCAN 非阻塞) Collection taskCodeRedisKeys = redisService.scan(RedisConst.TASK_CODE_EX); for (Long taskId : taskIds) { @@ -596,7 +599,9 @@ public class PatrolTaskController extends BaseController { } } } - return toAjax(1); + AjaxResult result = AjaxResult.success(); + result.put("deleteCount", deleteCount); + return result; } public String majorId(PatrolTask patrolTask) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/mapper/PatrolTaskMapper.java index 5be0335..79e1639 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 @@ -45,6 +45,8 @@ public interface PatrolTaskMapper { int deletePatrolTaskByTaskIds(Long[] taskIds); + List selectTaskCodesByTaskIds(@Param("taskIds") Long[] taskIds); + List> selectTaskRationalGroupByType(); Map selectChannelCodeByPatrolPointId(String patrolPointId); 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 f99e25d..25a4076 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 @@ -40,6 +40,14 @@ public interface IPatrolTaskService { int deletePatrolTaskByTaskIds(Long[] taskIds); + /** + * 删除巡视任务,并同步清理该任务产生的执行状态、巡视结果、结果分析等关联数据。 + * + * @param taskIds 巡视任务ID集合 + * @return 删除的任务数 + */ + int deletePatrolTaskWithRelatedData(Long[] taskIds); + int deletePatrolTaskByTaskId(Long taskId); List> selectTaskRationalGroupByType(); 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 6b06196..e3de4d7 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 @@ -12,10 +12,14 @@ import com.inspect.base.core.utils.DateUtils; import com.inspect.base.core.utils.HttpClientUtils; import com.inspect.base.core.utils.StringUtils; import com.inspect.calender.service.TaskCalendarGenerator; +import com.inspect.partrolresult.mapper.PatrolResultMapper; import com.inspect.partrolresult.util.PrintUtil; +import com.inspect.partrolresultAux.mapper.PatrolResultAuxMapper; import com.inspect.resultmain.controller.PatrolTaskResultMainController; import com.inspect.resultmain.domain.PatrolTaskResultMain; +import com.inspect.resultmain.mapper.PatrolTaskResultMainMapper; import com.inspect.task.domain.DeviceConvert; +import com.inspect.taskinfo.mapper.PatrolTaskInfoMapper; import com.inspect.task.domain.PatrolData; import com.inspect.task.domain.PatrolTask; @@ -34,6 +38,7 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -55,6 +60,18 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService { @Autowired private SftpClient sftpClient; + @Autowired + private PatrolResultMapper patrolResultMapper; + + @Autowired + private PatrolResultAuxMapper patrolResultAuxMapper; + + @Autowired + private PatrolTaskResultMainMapper patrolTaskResultMainMapper; + + @Autowired + private PatrolTaskInfoMapper patrolTaskInfoMapper; + final ResultAnalysisMapper resultAnalysisMapper; @Autowired @@ -139,6 +156,50 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService { return count; } + /** + * 删除巡视任务,并在同一事务内清理该任务产生的执行与结果数据。 + *

+ * 清理范围:patrol_task_status、patrol_result、result_analysis、patrol_result_aux、 + * patrol_task_result_main、patrol_analyse_log、patrol_task_info。 + * 报告(inspection_report)可能由多个任务合并生成,未做级联删除。 + *

+ * 兼容新建后立即删除:此时任务没有任何执行/结果数据,关联删除均按空集合跳过, + * 仅删除任务本身和任务点位。 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deletePatrolTaskWithRelatedData(Long[] taskIds) { + if (taskIds == null || taskIds.length == 0) { + return 0; + } + List taskCodes = this.patrolTaskMapper.selectTaskCodesByTaskIds(taskIds).stream() + .filter(StringUtils::isNotEmpty) + .distinct() + .collect(Collectors.toList()); + if (!taskCodes.isEmpty()) { + List taskPatrolledIds = this.patrolTaskStatusMapper.selectTaskPatrolledIdsByTaskCodes(taskCodes).stream() + .filter(StringUtils::isNotEmpty) + .distinct() + .collect(Collectors.toList()); + + // 结果分析先删:按任务编码兜底清理 patrol_result.line_id 关联数据,再按执行ID直删 + this.resultAnalysisMapper.deleteResultAnalysisByTaskCodes(taskCodes); + if (!taskPatrolledIds.isEmpty()) { + this.resultAnalysisMapper.deleteResultAnalysisByTaskPatrolledIds(taskPatrolledIds); + this.resultAnalysisMapper.deleteAnalyseLogByTaskPatrolledIds(taskPatrolledIds); + } + this.patrolResultMapper.deletePatrolResultByTaskCodes(taskCodes, taskPatrolledIds); + this.patrolResultAuxMapper.deletePatrolResultAuxByTaskCodes(taskCodes, taskPatrolledIds); + this.patrolTaskResultMainMapper.deletePatrolTaskResultMainByTaskCodes(taskCodes); + this.patrolTaskStatusMapper.deletePatrolTaskStatusByTaskCodes(taskCodes); + } + this.patrolTaskInfoMapper.deletePatrolTaskInfoByMajorIds(taskIds); + int count = this.patrolTaskMapper.deletePatrolTaskByTaskIds(taskIds); + taskCalendarGenerator.onTaskChange(); + log.info("[TASK_DELETE] 任务及关联数据删除完成, taskIds: {}, taskCodes: {}, deleteCount: {}", taskIds, taskCodes, count); + return count; + } + public List> selectTaskRationalGroupByType() { return patrolTaskMapper.selectTaskRationalGroupByType(); } 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 c0cea0f..4a3e4a0 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 @@ -410,7 +410,12 @@ public class PatrolTaskStatusController extends BaseController { // 删除任务状态数据 int deleteCount = this.patrolTaskStatusService.deletePatrolTaskStatusByTaskPatrolledIds(ids); - log.info("[TASK_STATUS_DELETE] 删除完成, taskPatrolledIds: {}, deleteCount: {}", ids, deleteCount); + // 同步删除巡视结果(patrol_result)和结果分析(result_analysis)数据 + int patrolResultDeleteCount = this.patrolResultService.deletePatrolResultByTaskPatrolledIds(ids); + int resultAnalysisDeleteCount = this.resultAnalysisService.deleteResultAnalysisByTaskPatrolledIds(ids); + + log.info("[TASK_STATUS_DELETE] 删除完成, taskPatrolledIds: {}, deleteCount: {}, patrolResultDeleteCount: {}, resultAnalysisDeleteCount: {}", + ids, deleteCount, patrolResultDeleteCount, resultAnalysisDeleteCount); // 推送消息通知中恒(未启用或推送失败都不影响删除结果) boolean pushSuccess = false; @@ -424,6 +429,8 @@ public class PatrolTaskStatusController extends BaseController { } AjaxResult result = AjaxResult.success(); result.put("deleteCount", deleteCount); + result.put("patrolResultDeleteCount", patrolResultDeleteCount); + result.put("resultAnalysisDeleteCount", resultAnalysisDeleteCount); result.put("stationCode", stationCode); result.put("pushSuccess", pushSuccess); return result; 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 cde4a0f..e5d2759 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 @@ -48,6 +48,16 @@ public interface PatrolTaskStatusMapper { */ int deletePatrolTaskStatusByTaskPatrolledIds(@Param("taskPatrolledIds") List taskPatrolledIds); + /** + * 按任务编码批量删除任务执行状态 + */ + int deletePatrolTaskStatusByTaskCodes(@Param("taskCodes") List taskCodes); + + /** + * 按任务编码查询该任务所有执行的 task_patrolled_id + */ + List selectTaskPatrolledIdsByTaskCodes(@Param("taskCodes") List taskCodes); + List selectPatrolTaskStatusListByTaskPatrolledIds(@Param("taskPatrolledIds") List taskPatrolledIds); List countMonthlyStatsByYear(Integer year); diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultAuxMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultAuxMapper.xml index d0f00c5..895832b 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultAuxMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultAuxMapper.xml @@ -181,4 +181,17 @@ #{lineId} + + + delete from patrol_result_aux where task_code in + + #{taskCode} + + + or task_patrolled_id in + + #{taskPatrolledId} + + + 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 cbca75f..d5bb43d 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 @@ -355,7 +355,7 @@ b.line_id, a.device_name as point_name, a.device_id as point_id, - a.create_time as patrol_time, + b.create_time as patrol_time, b.point_status, b.result_type as warn_status, b.description as 'desc', @@ -378,12 +378,11 @@ b.res_value, b.task_patrol_id, a.task_name - from patrol_result a - inner join result_analysis b - on a.line_id = b.business_id + from result_analysis b + left join patrol_result a on a.line_id = b.business_id and a.task_patrolled_id = b.task_patrol_id and a.device_id = b.objectId - left join basedata_patrolpoint c on a.device_id = c.patrol_point_id + left join basedata_patrolpoint c on b.objectId = c.patrol_point_id left join basedata_device d on c.device_id = d.device_id left join basedata_area e on e.area_id = d.area_id @@ -411,12 +410,12 @@ and a.task_name like concat('%', #{taskName}, '%') and d.device_name like concat('%', #{deviceName}, '%') and b.point_status = #{pointStatus} - and a.create_time >= concat(#{beginTime}, ' 00:00:00') - and a.create_time <= concat(#{endTime}, ' 23:59:59') + and b.create_time >= concat(#{beginTime}, ' 00:00:00') + and b.create_time <= concat(#{endTime}, ' 23:59:59') order by b.task_patrol_id, b.objectId, b.alg_type, case b.filter when '1' then 1 when '0' then 2 else 3 end, - a.create_time, b.line_id + b.create_time, b.line_id @@ -991,6 +990,26 @@ + + delete from patrol_result where task_patrolled_id in + + #{taskPatrolledId} + + + + + delete from patrol_result where task_code in + + #{taskCode} + + + or task_patrolled_id in + + #{taskPatrolledId} + + + + update patrol_result 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 d36b991..84c3be8 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 @@ -355,6 +355,13 @@ + + + select distinct task_patrolled_id from patrol_task_status + where task_code in + + #{taskCode} + + and task_patrolled_id is not null and task_patrolled_id != '' + diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml index ee0cabb..316ca0c 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml @@ -442,6 +442,29 @@ + + delete from result_analysis where task_patrol_id in + + #{taskPatrolledId} + + + + + delete from result_analysis where business_id in + (select line_id from patrol_result where task_code in + + #{taskCode} + + ) + + + + delete from patrol_analyse_log where task_patrol_id in + + #{taskPatrolledId} + + +