From 23b0433fcd2b1cbafc0b3f3b086e508aeb98e594 Mon Sep 17 00:00:00 2001 From: htjcAdmin Date: Fri, 4 Jul 2025 09:29:17 +0800 Subject: [PATCH] =?UTF-8?q?/*=E5=A2=9E=E5=8A=A0=E4=BB=BB=E5=8A=A1=E6=9A=82?= =?UTF-8?q?=E5=81=9C=E3=80=81=E6=81=A2=E5=A4=8D=E3=80=81=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E6=9C=BA=E5=88=B6*/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspect/job/client/TaskExecClient.java | 3 + .../com/inspect/job/task/JobMainTask.java | 196 +++++++++++++----- .../com/inspect/job/task/StatusMonitor.java | 43 ++++ .../inspect/job/task/TaskStatusManager.java | 29 +++ .../controller/PatrolTaskExecController.java | 6 + .../service/impl/AnalysisServiceImpl.java | 12 +- .../controller/PatrolResultController.java | 14 +- .../service/AnalyseRemoteService.java | 9 +- .../taskstatus/client/FeignJobTaskClient.java | 6 +- .../PatrolTaskStatusController.java | 12 +- .../mapper/PatrolTaskStatusMapper.java | 2 + .../service/IPatrolTaskStatusService.java | 2 + .../impl/PatrolTaskStatusServiceImpl.java | 11 + .../mapper/task/PatrolTaskStatusMapper.xml | 5 + 14 files changed, 287 insertions(+), 63 deletions(-) create mode 100644 inspect-job/src/main/java/com/inspect/job/task/StatusMonitor.java create mode 100644 inspect-job/src/main/java/com/inspect/job/task/TaskStatusManager.java diff --git a/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java b/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java index 098e901..a063cb0 100644 --- a/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java +++ b/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java @@ -58,6 +58,9 @@ public interface TaskExecClient { @PostMapping({"/exec/updatePatrolTaskExecRecord"}) int updatePatrolTaskExecRecord(PatrolTaskExecRecord record); + @PostMapping({"/exec/selectPatrolTaskStatusByTaskPatrolledId"}) + PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(@RequestParam("taskPatrolledId") String taskPatrolledId); + @PostMapping({"/exec/selectPatrolTaskStatusList"}) List selectPatrolTaskStatusList(PatrolTaskStatus taskStatus); 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 413e252..f79d234 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 @@ -40,6 +40,10 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.Supplier; import feign.RetryableException; import org.slf4j.Logger; @@ -126,6 +130,15 @@ public class JobMainTask { final PatrolDeviceStateMapper patrolDeviceStateMapper; + private final Lock controlLock = new ReentrantLock(); + private final Condition pauseCondition = controlLock.newCondition(); + + // 控制标志 + private volatile boolean stop = false; + private volatile boolean pause = false; + // 用于状态查询线程 + private final ScheduledExecutorService statusUpdater = Executors.newSingleThreadScheduledExecutor(); + @Autowired public JobMainTask( ShaoXinBigModel shaoXinBigModel, @@ -147,6 +160,57 @@ public class JobMainTask { threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingQueue<>(1000)); } + // 等待恢复 + private void waitIfPaused() { + controlLock.lock(); + try { + while (pause && !stop) { + pauseCondition.await(); // 所有线程阻塞在此 + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); // 不中断会引发潜在问题 + } finally { + controlLock.unlock(); + } + } + + // 外部触发恢复 + public void resumeIfPaused() { + controlLock.lock(); + try { + if (pause) { + pause = false; + pauseCondition.signalAll(); // 唤醒所有暂停线程 + } + } finally { + controlLock.unlock(); + } + } + + // 用于外部强制停止所有线程 + public void stopAll() { + stop = true; + resumeIfPaused(); // 确保唤醒阻塞线程让它们能感知 stop = true + } + + // 模拟查询状态 + private int queryPatrolTaskStatus(final String taskPatrolId) { + int result = 0; + String taskPatrolledId = taskPatrolId.split(StringUtils.UNDERLINE)[1] + "_" + taskPatrolId.split(StringUtils.UNDERLINE)[2]; + PatrolTaskStatus patrolTaskStatus = taskExecClient.selectPatrolTaskStatusByTaskPatrolledId(taskPatrolledId); + if(patrolTaskStatus == null) { + return result; + } + + try { + result = Integer.parseInt(patrolTaskStatus.getPatrolStatus()); + } catch (Exception e) { + result = -1; + } + + return result; + } + private void startThread( final PatrolTaskInfo patrolTaskInfo, final PatrolPresetPos patrolPresetPos, @@ -418,42 +482,43 @@ public class JobMainTask { myDelay(2000); } - boolean taskHalted = false; - String taskPatrolledId = taskPatrolId.split(StringUtils.UNDERLINE)[1] + "_" + taskPatrolId.split(StringUtils.UNDERLINE)[2]; - PatrolTaskStatus patrolTaskStatus = new PatrolTaskStatus(); - patrolTaskStatus.setTaskPatrolledId(taskPatrolledId); - List list = taskExecClient.selectPatrolTaskStatusList(patrolTaskStatus); - if (!list.isEmpty()) { - if ("3".equals(list.get(0).getTaskState())) {//暂停 - while (true) { - log.info("-----------------------task pause: {}", taskPatrolledId); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - - list = taskExecClient.selectPatrolTaskStatusList(patrolTaskStatus); - if (!list.isEmpty()) { - log.info("-----------------------TaskState: {}", list.get(0).getTaskState()); - if ("4".equals(list.get(0).getTaskState())) {//终止 - log.info("-----------------------task terminate: {}", taskPatrolledId); - taskHalted = true; - break; - } else if ("2".equals(list.get(0).getTaskState())) {//正在执行 - log.info("-----------------------task resume: {}", taskPatrolledId); - break; - } - } else { - log.info("-----------------------selectPatrolTaskStatusList is empty"); - } - } - } else if ("4".equals(list.get(0).getTaskState())) {//终止 - log.info("-----------------------task terminate: {}", taskPatrolledId); - taskHalted = true; - } - } - - if (!taskHalted) { +// boolean taskHalted = false; +// String taskPatrolledId = taskPatrolId.split(StringUtils.UNDERLINE)[1] + "_" + taskPatrolId.split(StringUtils.UNDERLINE)[2]; +// PatrolTaskStatus patrolTaskStatus = new PatrolTaskStatus(); +// patrolTaskStatus.setTaskPatrolledId(taskPatrolledId); +// List list = taskExecClient.selectPatrolTaskStatusList(patrolTaskStatus); +// if (!list.isEmpty()) { +// if ("3".equals(list.get(0).getTaskState())) {//暂停 +// while (true) { +// log.info("-----------------------task pause: {}", taskPatrolledId); +// try { +// Thread.sleep(1000); +// } catch (InterruptedException e) { +// } +// +// list = taskExecClient.selectPatrolTaskStatusList(patrolTaskStatus); +// if (!list.isEmpty()) { +// log.info("-----------------------TaskState: {}", list.get(0).getTaskState()); +// if ("4".equals(list.get(0).getTaskState())) {//终止 +// log.info("-----------------------task terminate: {}", taskPatrolledId); +// taskHalted = true; +// break; +// } else if ("2".equals(list.get(0).getTaskState())) {//正在执行 +// log.info("-----------------------task resume: {}", taskPatrolledId); +// break; +// } +// } else { +// log.info("-----------------------selectPatrolTaskStatusList is empty"); +// } +// } +// } else if ("4".equals(list.get(0).getTaskState())) {//终止 +// log.info("-----------------------task terminate: {}", taskPatrolledId); +// taskHalted = true; +// } +// } +// +// if (!taskHalted) + { StringBuffer fileTypes = new StringBuffer(); StringBuffer filePaths = new StringBuffer(); PatrolPresetAction patrolPresetAction = PatrolPresetAction.builder().isEnable("1").presetPosId(presetPos.getPresetPosId()).build(); @@ -1008,8 +1073,18 @@ public class JobMainTask { // patrolTaskInfo.setDevNo(task.getDevNo()); // taskExecClient.selectTaskInfoList(patrolTaskInfo); taskExecClient.updatePatrolTaskStatus(patrolTask); - //threadPool.submit(() -> prePointExecImmediate(patrolTaskExecRecord, taskInfos)); - prePointExecImmediate(patrolTaskExecRecord, taskInfos); + threadPool.submit(() -> prePointExecImmediate(patrolTaskExecRecord, taskInfos)); + } + + @PostMapping({"/resumeExecTask"}) + public void resumeExecTask(final String taskId) { + log.info("resumeExecTask taskId: {}", taskId); + StatusMonitor monitor = TaskStatusManager.get(taskId); + if (monitor != null) { + synchronized (monitor) { + monitor.notifyAll(); + } + } } private List getInfosByRecord(final PatrolTaskExecRecord record) { @@ -1223,29 +1298,48 @@ public class JobMainTask { } CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); - log.info("CompletableFuture Break Join!"); + TaskStatusManager.remove(patrolTaskExecRecord.getOldTaskPatrolId()); + log.info("CompletableFuture Break Join: taskPatrolId: {}", patrolTaskExecRecord.getOldTaskPatrolId()); } private void handlePrePointBatch(final int threadCnt, final PatrolTaskExecRecord patrolTaskExecRecord, final List batch) { asyncTaskPatrolPointCnt.getAndAdd(batch.size()); log.info("handlePrePointBatch threadCnt: {}, asyncTaskPatrolPointCnt: {}, batch size: {}, devNo: {}, taskId: {}", threadCnt, asyncTaskPatrolPointCnt.get(), batch.size(), patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); + + final String taskPatrolId = patrolTaskExecRecord.getOldTaskPatrolId(); + StatusMonitor monitor = TaskStatusManager.get(patrolTaskExecRecord.getOldTaskPatrolId()); + if (monitor == null) { + monitor = TaskStatusManager.register(taskPatrolId, () -> { + PatrolTaskStatus patrolTaskStatus = taskExecClient.selectPatrolTaskStatusByTaskPatrolledId(taskPatrolId); + int taskState; + try { + taskState = Integer.parseInt(patrolTaskStatus.getTaskState()); + } catch (Exception e) { + taskState = -1; + } + return taskState; + }); + } for (final PatrolTaskInfo taskInfo : batch) { log.info("handlePrePointBatch taskPatrolId: {}, patrolPointId: {}, lineId: {}", patrolTaskExecRecord.getTaskPatrolId(), taskInfo.getDeviceId(), taskInfo.getLineId()); - prePointExec(patrolTaskExecRecord, taskInfo, batch.size()); - String taskPatrolledId = patrolTaskExecRecord.getTaskPatrolId().split(StringUtils.UNDERLINE)[1] + "_" + patrolTaskExecRecord.getTaskPatrolId().split(StringUtils.UNDERLINE)[2]; - PatrolTaskStatus patrolTaskStatus = new PatrolTaskStatus(); - patrolTaskStatus.setTaskPatrolledId(taskPatrolledId); - List list = taskExecClient.selectPatrolTaskStatusList(patrolTaskStatus); - if (!list.isEmpty()) { - log.info("-----------------------handlePrePointBatch 2 TaskState: {}", list.get(0).getTaskState()); - if ("4".equals(list.get(0).getTaskState())) {//终止 - log.info("-----------------------handlePrePointBatch 2 task terminate: {}", taskPatrolledId); - return; + int status = monitor.getStatus(); + if (status == Integer.parseInt(TaskStatus.HALTED.getCode())) { + log.info("task terminate taskPatrolId: {}", taskPatrolId); + break; + } else if (status == Integer.parseInt(TaskStatus.PAUSED.getCode())) { + synchronized (monitor) { + try { + log.info("task pause taskPatrolId: {}", taskPatrolId); + monitor.wait(); // 等待外部唤醒 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } } - } else { - log.info("-----------------------handlePrePointBatch 2 selectPatrolTaskStatusList is empty"); + } else if(status == -1 || status == 0) { + log.info("task status error state taskPatrolId: {}", taskPatrolId); } + prePointExec(patrolTaskExecRecord, taskInfo, batch.size()); } } diff --git a/inspect-job/src/main/java/com/inspect/job/task/StatusMonitor.java b/inspect-job/src/main/java/com/inspect/job/task/StatusMonitor.java new file mode 100644 index 0000000..c0df187 --- /dev/null +++ b/inspect-job/src/main/java/com/inspect/job/task/StatusMonitor.java @@ -0,0 +1,43 @@ +package com.inspect.job.task; + +import com.inspect.base.core.enums.TaskStatus; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; + +public class StatusMonitor { + private final Supplier statusSupplier; + + private final AtomicInteger status = new AtomicInteger(Integer.parseInt(TaskStatus.RUNNING.getCode())); // 默认执行状态 + private final Thread monitorThread; + private volatile boolean running = true; + + public StatusMonitor(Supplier statusSupplier) { + this.statusSupplier = statusSupplier; + + monitorThread = new Thread(() -> { + while (running) { + try { + int newStatus = this.statusSupplier.get(); + status.set(newStatus); + Thread.sleep(1000); // 每1秒更新一次状态 + } catch (Exception e) { + e.printStackTrace(); // 可替换为日志 + } + } + }, "status-monitor-thread"); + + monitorThread.setDaemon(true); + monitorThread.start(); + } + + public int getStatus() { + return status.get(); + } + + public void stop() { + running = false; + monitorThread.interrupt(); + } +} + diff --git a/inspect-job/src/main/java/com/inspect/job/task/TaskStatusManager.java b/inspect-job/src/main/java/com/inspect/job/task/TaskStatusManager.java new file mode 100644 index 0000000..ab702d7 --- /dev/null +++ b/inspect-job/src/main/java/com/inspect/job/task/TaskStatusManager.java @@ -0,0 +1,29 @@ +package com.inspect.job.task; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; + +public class TaskStatusManager { + private static final Logger log = LoggerFactory.getLogger(TaskStatusManager.class); + private static final ConcurrentHashMap monitorMap = new ConcurrentHashMap<>(); + + public static StatusMonitor register(String taskId, Supplier statusSupplier) { + return monitorMap.computeIfAbsent(taskId, id -> new StatusMonitor(statusSupplier)); + } + + public static StatusMonitor get(String taskId) { + return monitorMap.get(taskId); + } + + public static void remove(String taskId) { + StatusMonitor monitor = monitorMap.remove(taskId); + if (monitor != null) { + log.info("TaskStatusManager removed: {} ", taskId); + monitor.stop(); + } + } +} + 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 ff5d72d..df0b753 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 @@ -227,6 +227,12 @@ public class PatrolTaskExecController extends BaseController { return patrolTaskPointExecRecordService.selectPatrolTaskPointExecRecordList(patrolTaskPointExecRecord); } + @PostMapping({"/selectPatrolTaskStatusByTaskPatrolledId"}) + public PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(String taskPatrolledId) { + log.info("taskPatrolledId: {}", taskPatrolledId); + return patrolTaskStatusService.selectPatrolTaskStatusByTaskPatrolledId(taskPatrolledId); + } + @PostMapping({"/selectPatrolTaskStatusList"}) public List selectPatrolTaskStatusList(@RequestBody PatrolTaskStatus patrolTaskStatus) { return patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java index 57ebd84..d92de99 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java @@ -909,12 +909,16 @@ public class AnalysisServiceImpl implements IAnalysisService { resultAnalysisList.size(), totalNumber, algorithmProgress, taskPatrolledId, patrolTaskStatus.getTaskProgress()); patrolTaskStatus.setTaskProgress("100.0"); patrolTaskStatus.setTaskState(TaskStatus.DONE.getCode()); + patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); } else { - log.info(Color.GREEN + "RUNNING calcRemoteAlgorithmProgress: curNumber: {}, totalNumer: {}, algorithmProgress: {}, taskPatrolledId: {}" + Color.END, - resultAnalysisList.size(), totalNumber, algorithmProgress, taskPatrolledId); - patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); + log.info(Color.GREEN + "RUNNING calcRemoteAlgorithmProgress: curNumber: {}, totalNumer: {}, algorithmProgress: {}, taskPatrolledId: {}, status: {}" + Color.END, + resultAnalysisList.size(), totalNumber, algorithmProgress, taskPatrolledId, patrolTaskStatus.getTaskState()); + + if(TaskStatus.RUNNING.getCode().equals(patrolTaskStatus.getTaskState())) { + patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); + patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); + } } - patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); } } 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 133191e..923768d 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 @@ -1172,7 +1172,19 @@ public class PatrolResultController extends BaseController { redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskStatus.getTaskCode()); } } else { - i = iPatrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatusItem); + List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build()); + if(!statusList.isEmpty()) { + PatrolTaskStatus taskStatus = statusList.get(0); + if(TaskStatus.RUNNING.getCode().equals(taskStatus.getTaskState())) { + logger.info(Color.CYAN + "updating patrol_task_status state, taskPatrolledId: {}, taskState: {}, taskCurCodeInRedis: {}" + Color.END, + patrolTaskStatusItem.getTaskPatrolledId(), + patrolTaskStatusItem.getTaskProgress(), + patrolTaskStatusItem.getTaskState(), + RedisConst.TASK_CURRENT_CODE + patrolTaskStatusItem.getTaskCode()); + patrolTaskStatusItem.setTaskState(TaskStatus.RUNNING.getCode()); + i = iPatrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatusItem); + } + } } if ("E100-001".equals(sendCode)) { if ("100".equals(patrolTaskStatusItem.getTaskProgress())) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java index 283beca..73a98e5 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java @@ -82,14 +82,15 @@ public class AnalyseRemoteService { //this.logService.log(new AnalyseLog(analyseReq.toString(), "0", taskPatrolId, filter, requestId)); try { - log.info("[CALL REMOTE ANALYZE] ===========> URL={} \n PARAMS={}", requestUrl, analyseReq); + log.info("CALL_REMOTE_ANALYZE URL: {}, PARAMS: {}", requestUrl, analyseReq); String result = HttpClientUtils.sendPostAgain(requestUrl.concat(AnalyseConstants.ANALYSE_URI), analyseReq.toString()); - log.info("[CALL REMOTE ANALYZE] <=========== result={}", result); - log.info("[CALL REMOTE ANALYZE] <=========== CODE={} \n PARAMS={}", JSONObject.parseObject(result).getString(AnalyseConstants.ANALYSE_CODE), result); + log.info("CALL_REMOTE_ANALYZE RESULT: {}", result); +// log.info("[CALL REMOTE ANALYZE] <=========== CODE={} \n PARAMS={}", JSONObject.parseObject(result).getString(AnalyseConstants.ANALYSE_CODE), result); if (!"200".equals(JSONObject.parseObject(result).getString(AnalyseConstants.ANALYSE_CODE))) { - log.error("[CALL REMOTE ANALYZE] <=========== CALL FAIL: {}", result); + log.info("CALL_REMOTE_ANALYZE FAIL: {}", JSONObject.parseObject(result).getString(AnalyseConstants.ANALYSE_CODE)); } } catch (Exception e) { + log.info("CALL_REMOTE_ANALYZE EXCEPTION: URL: {}, PARAMS: {}", requestUrl, analyseReq.getRequestId()); log.error("error", e); HttpClientUtils.sendPostAgain("http://localhost:" + this.port + AnalyseConstants.ANALYSE_RET_URI, analyseReq.toErrorResultStr()); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/client/FeignJobTaskClient.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/client/FeignJobTaskClient.java index 8945934..bd201e4 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/client/FeignJobTaskClient.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/client/FeignJobTaskClient.java @@ -5,9 +5,13 @@ import com.inspect.task.domain.PatrolTask; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; @FeignClient("inspect-job") public interface FeignJobTaskClient { @PostMapping({"/jobtask/immediatelyExecTask"}) - String immediatelyExecTask(@RequestBody PatrolTask var1); + String immediatelyExecTask(@RequestBody PatrolTask patrolTask); + + @PostMapping({"/jobtask/resumeExecTask"}) + void resumeExecTask(@RequestParam("taskId") String taskId); } 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 61278d1..659a139 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 @@ -709,16 +709,17 @@ public class PatrolTaskStatusController extends BaseController { if (patrolTaskStatus == null) return error("no task: " + params.getLineId() + " exist"); String command = params.getCommand(); - log.info("================================================================TASK STATUS CHANGE============================================================="); - log.info("[TASK] cmd: {}, task: {}", command, patrolTaskStatus); + log.info("[TASK] task_status_change cmd: {}, task: {}", command, patrolTaskStatus); if (TaskStatus.DONE.getCode().equals(command)) { patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); } else if (TaskStatus.RUNNING.getCode().equals(command)) { patrolTaskStatus.setTaskState(TaskStatus.PAUSED.getCode()); } else if (TaskStatus.PAUSED.getCode().equals(command)) { patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); + feignJobTaskClient.resumeExecTask(patrolTaskStatus.getTaskPatrolledId()); } else { patrolTaskStatus.setTaskState(TaskStatus.HALTED.getCode()); + feignJobTaskClient.resumeExecTask(patrolTaskStatus.getTaskPatrolledId()); } int res = patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); @@ -751,6 +752,10 @@ public class PatrolTaskStatusController extends BaseController { } final String type = book.getType(); + if(StringUtils.isEmpty(type)) { + continue; + } + if (posType.equals("0") && (type.equals("10") || type.equals("11"))) { log.info("[DEBUG] receiveCode three: id: {}", book.getEqpBookId()); receiveCode = book.getMainSystemCode(); @@ -779,6 +784,9 @@ public class PatrolTaskStatusController extends BaseController { Set wrjCode = new HashSet<>();//droneCode for (BasedataEqpBookMoMain book : bookList) { final String type = book.getType(); + if(StringUtils.isEmpty(type)) { + continue; + } if (!type.equals("1") && !type.equals("2") && !type.equals("3") && !type.equals("13")) { continue; } 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 9c7ac25..6f9d38a 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 @@ -10,6 +10,8 @@ import java.util.List; public interface PatrolTaskStatusMapper { PatrolTaskStatus selectPatrolTaskStatusByLineId(Long lineId); + PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(String taskPatrolledId); + List selectPatrolTaskStatusList(PatrolTaskStatus patrolTaskStatus); List selectPatrolTaskStatusCount(PatrolTaskStatus patrolTaskStatus); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java index 6b7bda9..112ac82 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java @@ -8,6 +8,8 @@ import java.util.List; public interface IPatrolTaskStatusService { PatrolTaskStatus selectPatrolTaskStatusByLineId(Long lineId); + PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(String taskPatrolledId); + List selectPatrolTaskStatusList(PatrolTaskStatus patrolTaskStatus); List selectPatrolTaskStatusCount(PatrolTaskStatus patrolTaskStatus); 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 668e6a2..2879cc9 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,16 +1,21 @@ package com.inspect.taskstatus.service.impl; +import com.inspect.base.core.constant.Color; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.domain.TaskCount; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; import com.inspect.taskstatus.service.IPatrolTaskStatusService; import java.util.Date; import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { + private final Logger log = LoggerFactory.getLogger(this.getClass()); private final PatrolTaskStatusMapper patrolTaskStatusMapper; @Autowired @@ -22,6 +27,10 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { return this.patrolTaskStatusMapper.selectPatrolTaskStatusByLineId(lineId); } + public PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(String taskPatrolledId) { + return this.patrolTaskStatusMapper.selectPatrolTaskStatusByTaskPatrolledId(taskPatrolledId); + } + public List selectPatrolTaskStatusList(PatrolTaskStatus patrolTaskStatus) { return this.patrolTaskStatusMapper.selectPatrolTaskStatusList(patrolTaskStatus); } @@ -45,6 +54,8 @@ public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { } public int updatePatrolTaskStatus(PatrolTaskStatus patrolTaskStatus) { + log.info(Color.RED + "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" + Color.END); + log.info("patrolTaskStatus: {}", patrolTaskStatus); return this.patrolTaskStatusMapper.updatePatrolTaskStatus(patrolTaskStatus); } 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 cfa04a1..8ce3b31 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 @@ -189,6 +189,11 @@ where line_id = #{lineId} + + insert into patrol_task_status