Browse Source

/*修改任务立即执行,多个任务立即执行都是执行同一个任务问题*/

master
htjcAdmin 5 months ago
parent
commit
d089a7484e
5 changed files with 49 additions and 47 deletions
  1. +1
    -1
      inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java
  2. +9
    -6
      inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java
  3. +5
    -9
      inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java
  4. +6
    -2
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java
  5. +28
    -29
      inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java

+ 1
- 1
inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java View File

@ -99,7 +99,7 @@ public interface TaskExecClient {
boolean taskResultExited(@RequestParam("patrolDeviceCode") String deviceCode, @RequestParam("taskPatrolledId") String patrolId);
@GetMapping({"/exec/getFilterPatrolTaskList"})
List<PatrolTask> getFilterPatrolTaskList(final PatrolTask patrolTask);
List<PatrolTask> getFilterPatrolTaskList(@RequestParam("taskCode") String taskCode);
@PostMapping({"/exec/makeCurrentDayTask"})
Map<String, List<PatrolTask>> makeCurrentDayTask();


+ 9
- 6
inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java View File

@ -938,8 +938,9 @@ public class JobMainTask {
@PostMapping({"/immediatelyExecTask"})
public void immediatelyExecTask(@RequestBody PatrolTask patrolTaskParam) {
List<PatrolTask> patrolTasks = taskExecClient.getFilterPatrolTaskList(patrolTaskParam);
List<PatrolTask> patrolTasks = taskExecClient.getFilterPatrolTaskList(patrolTaskParam.getTaskCode());
PatrolTask patrolTask = patrolTasks.get(0);
log.info("Filter_task: param: {}, size: {}, result:{}", patrolTaskParam.getTaskCode(), patrolTasks.size(), patrolTask);
String taskCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTaskParam.getTaskCode());
// if (StringUtils.isNotEmpty(taskCode)) {
// log.info(Color.CYAN + "TASK SLOT IS TAKEN BY: {}" + Color.END, taskCode);
@ -965,7 +966,8 @@ public class JobMainTask {
// String immediatelyExecTaskTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss, new Date());
String immediatelyExecTaskTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
redisService.setCacheObjectOfTask(RedisConst.IMMEDIATELY_EXEC_TASK_TIME, patrolTask.getTaskCode(), immediatelyExecTaskTime);
redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime, 5L, TimeUnit.MINUTES);
log.info("SET TASK_CURRENT_CODE: key: {}, value: {}", RedisConst.TASK_CURRENT_CODE + patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime);
redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime, 4L, TimeUnit.HOURS);
resetRecordCounter(patrolTask.getTaskCode());
log.info("TASK REC CNT: {}", cameraPatrolTasks.size());//devType是2的设备数
setRedisRecordCount(patrolTask.getTaskCode(), cameraPatrolTasks.size());
@ -974,7 +976,7 @@ public class JobMainTask {
List<PatrolTaskInfo> infosByRecord = getInfosByRecord(PatrolTaskExecRecord.builder().devNo(task.getDevNo()).taskId(task.getTaskId()).build());
taskInfos.addAll(infosByRecord);
}
log.info("当前任务: {}, taskInfos.size: {}", patrolTask.getTaskName(), taskInfos.size());
log.info("当前任务: {}, taskCode: {}, taskInfos.size: {}", patrolTask.getTaskName(), patrolTask.getTaskCode(), taskInfos.size());
String[] devNos = patrolTask.getDevNo().split(StringUtils.COMMA);
PatrolTaskExecRecord patrolTaskExecRecord = new PatrolTaskExecRecord();
Date time = patrolTask.getFixedStartTime();
@ -1006,7 +1008,8 @@ public class JobMainTask {
// patrolTaskInfo.setDevNo(task.getDevNo());
// taskExecClient.selectTaskInfoList(patrolTaskInfo);
taskExecClient.updatePatrolTaskStatus(patrolTask);
threadPool.submit(() -> prePointExecImmediate(patrolTaskExecRecord, taskInfos));
//threadPool.submit(() -> prePointExecImmediate(patrolTaskExecRecord, taskInfos));
prePointExecImmediate(patrolTaskExecRecord, taskInfos);
}
private List<PatrolTaskInfo> getInfosByRecord(final PatrolTaskExecRecord record) {
@ -1058,7 +1061,7 @@ public class JobMainTask {
log.info("jobAreas: {}", jobAreas);
List<String> jobAreaList = new ArrayList<>();
if (StringUtils.isNotBlank(jobAreas)) {
String[] jobAreaArr = jobAreas.split(",");
String[] jobAreaArr = jobAreas.split(StringUtils.COMMA);
for (int i = 0; i < jobAreaArr.length; i++) {
jobAreaList.add(jobAreaArr[i]);
}
@ -1071,7 +1074,7 @@ public class JobMainTask {
String[] devNos = task.getDevNo().split(StringUtils.COMMA);
for (int i = 0; i < devTypes.length; ++i) {
if ("2".equals(devTypes[i])) {
if (jobAreaList.size() == 0 || jobAreaList.contains(devNos[i])) {
if (jobAreaList.isEmpty() || jobAreaList.contains(devNos[i])) {
PatrolTask cameraPatrolTask = new PatrolTask();
cameraPatrolTask.setTaskId(task.getTaskId());
cameraPatrolTask.setStationName(task.getStationName());


+ 5
- 9
inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java View File

@ -56,12 +56,7 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping({"/exec"})
@ -470,9 +465,10 @@ public class PatrolTaskExecController extends BaseController {
return IntervalType.BY_DATE.getCode().equals(patrolTask.getIntervalType());
}
@PostMapping({"/getFilterPatrolTaskList"})
List<PatrolTask> getFilterPatrolTaskList(PatrolTask task) {
return filterPatrolTaskList(task);
@GetMapping({"/getFilterPatrolTaskList"})
List<PatrolTask> getFilterPatrolTaskList(String taskCode) {
logger.info("getFilterPatrolTaskList param: {}", taskCode);
return filterPatrolTaskList(PatrolTask.builder().taskCode(taskCode).build());
}
@PostMapping({"/makeCurrentDayTask"})


+ 6
- 2
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java View File

@ -1161,11 +1161,15 @@ public class PatrolResultController extends BaseController {
&& TaskStatus.RUNNING.getCode().equals(patrolTaskStatusItem.getTaskState())) {
List<PatrolTaskStatus> statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build());
if(!statusList.isEmpty()) {
logger.info(Color.CYAN + "updating patrol_task_status 100%, taskPatrolledId: {}, progress: {}, taskState: {}" + Color.END,
patrolTaskStatusItem.getTaskPatrolledId(), patrolTaskStatusItem.getTaskProgress(), patrolTaskStatusItem.getTaskState());
logger.info(Color.CYAN + "updating patrol_task_status 100%, taskPatrolledId: {}, progress: {}, taskState: {}, taskCurCodeInRedis: {}" + Color.END,
patrolTaskStatusItem.getTaskPatrolledId(),
patrolTaskStatusItem.getTaskProgress(),
patrolTaskStatusItem.getTaskState(),
RedisConst.TASK_CURRENT_CODE + patrolTaskStatusItem.getTaskCode());
PatrolTaskStatus taskStatus = statusList.get(0);
taskStatus.setTaskProgress(patrolTaskStatusItem.getTaskProgress());
iPatrolTaskStatusService.updatePatrolTaskStatusOfTaskProgress(taskStatus);
redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskStatus.getTaskCode());
}
} else {
i = iPatrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatusItem);


+ 28
- 29
inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java View File

@ -3,7 +3,6 @@ package com.inspect.taskstatus.controller;
import com.alibaba.fastjson.JSONObject;
import com.inspect.analysis.domain.ResultAnalysis;
import com.inspect.analysis.service.IResultAnalysisService;
import com.inspect.base.core.constant.Color;
import com.inspect.base.core.constant.RedisConst;
import com.inspect.base.core.enums.TaskStatus;
import com.inspect.base.core.utils.DateUtils;
@ -26,7 +25,6 @@ import com.inspect.task.domain.PatrolSendTask;
import com.inspect.task.domain.PatrolTask;
import com.inspect.task.domain.SendTask;
import com.inspect.task.service.IPatrolTaskService;
import com.inspect.taskinfo.mapper.PatrolTaskInfoMapper;
import com.inspect.taskinfo.service.IPatrolTaskInfoService;
import com.inspect.taskstatus.client.FeignJobTaskClient;
import com.inspect.taskstatus.client.FeignTaskClient;
@ -583,32 +581,32 @@ public class PatrolTaskStatusController extends BaseController {
//立即执行任务
@GetMapping({"/controlChange"})
public AjaxResult controlChange(PatrolTask patrolTask) {
String taskCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, String.valueOf(patrolTask.getTaskId()));
if (!StringUtils.isEmpty(taskCode)) {
log.info("[TASK] CURRENT EXEC TASK: {}", taskCode);
return AjaxResult.error(501, "THE TASK IS RUNNING!");
public AjaxResult controlChange(PatrolTask patrolTaskParam) {
String taskCurrentCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, String.valueOf(patrolTaskParam.getTaskId()));
log.info("CONTROL_CHANGE CURRENT EXEC TASK: taskId: {}, taskCurrentCode: {}", patrolTaskParam.getTaskId(), taskCurrentCode);
if (!StringUtils.isEmpty(taskCurrentCode)) {
return AjaxResult.error(501, "THE TASK " + taskCurrentCode + " IS RUNNING");
} else {
PatrolTask patrol = patrolTaskService.selectPatrolTaskByTaskId(patrolTask.getTaskId());
return issueToRobot(patrol);//type=41 立即执行任务
PatrolTask patrolTask = patrolTaskService.selectPatrolTaskByTaskId(patrolTaskParam.getTaskId());
return issuePatrolTask(patrolTask);
}
}
public void sendTaskToVideo(final PatrolTask patrolTask) {
public void sendVideoLightTaskToScheduledJob(final PatrolTask patrolTask) {
try {
if ("1".equals(patrolTask.getDevType())) {
return;
}
feignJobTaskClient.immediatelyExecTask(patrolTask);
(new Thread(() -> {
try {
PatrolTaskStatusController.this.extracted(patrolTask);
} catch (InterruptedException e) {
e.printStackTrace();
}
})).start();
// (new Thread(() -> {
// try {
// extracted(patrolTask);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
//
// })).start();
} catch (Exception e) {
e.printStackTrace();
}
@ -635,7 +633,7 @@ public class PatrolTaskStatusController extends BaseController {
}
public AjaxResult issueToRobot(PatrolTask patrolTask) {
public AjaxResult issuePatrolTask(final PatrolTask patrolTask) {
String receiveCode = "";
String sendCode = "";
BasedataEqpBookMoMain basedataEqpBookMoMain = new BasedataEqpBookMoMain();
@ -651,10 +649,10 @@ public class PatrolTaskStatusController extends BaseController {
List<String> devTypeList = new ArrayList<>();
List<String> devNoList = new ArrayList<>();
for (int i = 0; i < devNos.length; i++) {
log.info("第{}个devNo------------issueToRobot", i + 1);
log.info("issuePatrolTask devNo: {}", i + 1);
BasedataEqpBookMoMain basedataEqpbookMomain = new BasedataEqpBookMoMain();
basedataEqpbookMomain.setPatrolDeviceCode(devNos[i]);
List<BasedataEqpBookMoMain> eqpBookMoMains = this.patrolResultService.selectBasedataEqpBookList(basedataEqpbookMomain);
List<BasedataEqpBookMoMain> eqpBookMoMains = patrolResultService.selectBasedataEqpBookList(basedataEqpbookMomain);
if (!eqpBookMoMains.isEmpty() && eqpBookMoMains.get(0).getMainSystemCode() != null) {
receiveCode = eqpBookMoMains.get(0).getMainSystemCode();
}
@ -666,6 +664,7 @@ public class PatrolTaskStatusController extends BaseController {
sendTask.setType("41");
sendTask.setCommand("1");
String str = JSONObject.toJSONString(sendTask);
log.info("无人机-机器人任务, receiveCode: {}, devType: {}, devNo: {}", receiveCode, patrolTask.getDevType(), patrolTask.getDevNo());
this.feignTaskClient.sendCommand(str);
} else {
// String taskCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, String.valueOf(patrolTask.getTaskId()));
@ -674,7 +673,7 @@ public class PatrolTaskStatusController extends BaseController {
// return AjaxResult.error(501, "THERE TASK IS RUNNING!");
// } else {
// 手动任务执行
log.info("第{}个devNo{}", i + 1, devNos[i]);
log.info("可见光任务, 第{}个, devNo: {}", i + 1, devNos[i]);
devTypeList.add(devTypes[i]);
devNoList.add(devNos[i]);
// patrolTask.setDevType(devTypes[i]);
@ -683,11 +682,11 @@ public class PatrolTaskStatusController extends BaseController {
// }
}
}
if (devTypeList.size() > 0 && devNoList.size() > 0) {
patrolTask.setDevType(StringUtils.join(devTypeList, ","));
patrolTask.setDevNo(StringUtils.join(devNoList, ","));
log.info("手动执行任务,devType:{}, devNo:{}", patrolTask.getDevType(), patrolTask.getDevNo());
sendTaskToVideo(patrolTask);
if (!devTypeList.isEmpty() && !devNoList.isEmpty()) {
patrolTask.setDevType(StringUtils.join(devTypeList, StringUtils.COMMA));
patrolTask.setDevNo(StringUtils.join(devNoList, StringUtils.COMMA));
log.info("可见光任务, devType:{}, devNo:{}", patrolTask.getDevType(), patrolTask.getDevNo());
sendVideoLightTaskToScheduledJob(patrolTask);
}
}
return toAjax(1);
@ -720,11 +719,11 @@ public class PatrolTaskStatusController extends BaseController {
int res = patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus);
patrolTaskStatus.setCommand(command);
issueTask(patrolTaskStatus);
issuePatrolTask(patrolTaskStatus);
return toAjax(res);
}
public void issueTask(PatrolTaskStatus patrolTaskStatus) {
public void issuePatrolTask(PatrolTaskStatus patrolTaskStatus) {
String posType = patrolTaskStatus.getPosType();//预置位类型 0-视频 1-机器人 2-无人机
if (StringUtils.isEmpty(posType)) {
log.warn("[TASK] posType is null");


Loading…
Cancel
Save