|
|
|
@ -1115,4 +1115,498 @@ public class JobMainTask { |
|
|
|
PatrolTaskExecRecord record = taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(patrolId); |
|
|
|
return record != null && TaskStatus.RUNNING.getCode().equals(record.getTaskState()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void generalTask() { |
|
|
|
log.info("***************************** JobTaskTimer generalTask *************************************"); |
|
|
|
|
|
|
|
if (shaoXinBigModel.isSwitchStatus()) { |
|
|
|
log.info("[GABRIEL][BIG-MODEL] gathering temporary handling, need to close nacos bigSwitch"); |
|
|
|
redisService.redisTemplate.opsForValue().set(this.BIG_FILE_POINT, -1); |
|
|
|
} |
|
|
|
|
|
|
|
boolean isCycle = false; |
|
|
|
boolean isInterval = false; |
|
|
|
String[] cycleExecuteTime = new String[3]; |
|
|
|
|
|
|
|
String currentWeek = getWeekOfDate(new Date()); |
|
|
|
Calendar now = Calendar.getInstance(); |
|
|
|
int day = DateUtils.getDayInt(); |
|
|
|
int hour = DateUtils.getHourInt(); |
|
|
|
int minute = DateUtils.getMinuteInt(); |
|
|
|
Date d = new Date(); |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
|
|
|
try { |
|
|
|
List<PatrolTask> patrolTaskList = taskExecClient.selectTaskList(PatrolTask.builder().isEnable(TASK_ENABLE).build()); |
|
|
|
log.info(Color.GREEN + "[GABRIEL] {inspect-main} selectTaskList task count: {}" + Color.END, patrolTaskList.size()); |
|
|
|
for (PatrolTask task : patrolTaskList) { |
|
|
|
if (TASK_TYPE_SILENCE.equals(task.getType()) || TASK_TYPE_LINKAGE.equals(task.getType())) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
List<PatrolTaskExecRecord> patrolTaskExecRecordList = |
|
|
|
taskExecClient.selectCameraPatrolTaskExecRecordList(task.getDevNo(), Collections.singletonList(TaskStatus.RUNNING.getCode())); |
|
|
|
if (!patrolTaskExecRecordList.isEmpty()) { |
|
|
|
String time = ""; |
|
|
|
String[] intervalExecuteTime; |
|
|
|
if (isCycle) { |
|
|
|
int i; |
|
|
|
String[] cycleExecuteTimes; |
|
|
|
String week; |
|
|
|
if (StringUtils.isNotEmpty(task.getCycleMonth())) { |
|
|
|
intervalExecuteTime = task.getCycleMonth().split(StringUtils.COMMA); |
|
|
|
cycleExecuteTimes = task.getCycleMonth().split(StringUtils.COMMA); |
|
|
|
|
|
|
|
for (i = 0; i < intervalExecuteTime.length; ++i) { |
|
|
|
week = intervalExecuteTime[i]; |
|
|
|
time = cycleExecuteTimes[i].replaceAll(StringUtils.COLON, StringUtils.EMPTY); |
|
|
|
if (day == Integer.parseInt(week) && task.getCycleExecuteTime() != null) { |
|
|
|
redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (StringUtils.isNotEmpty(task.getCycleWeek())) { |
|
|
|
intervalExecuteTime = task.getCycleWeek().split(StringUtils.COMMA); |
|
|
|
cycleExecuteTimes = task.getCycleExecuteTime().split(StringUtils.COMMA); |
|
|
|
for (i = 0; i < intervalExecuteTime.length; ++i) { |
|
|
|
week = intervalExecuteTime[i]; |
|
|
|
time = cycleExecuteTimes[i].replaceAll(StringUtils.COLON, StringUtils.EMPTY); |
|
|
|
if (currentWeek.equals(week)) { |
|
|
|
redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (isInterval) { |
|
|
|
intervalExecuteTime = task.getIntervalExecuteTime().split(StringUtils.COLON); |
|
|
|
int j; |
|
|
|
if ("1".equals(task.getIntervalType())) { |
|
|
|
for (j = 0; j < task.getIntervalNumber(); ++j) { |
|
|
|
if (j != 0) { |
|
|
|
intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); |
|
|
|
} |
|
|
|
|
|
|
|
time = hour + minute + cycleExecuteTime[2]; |
|
|
|
redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); |
|
|
|
} |
|
|
|
} else if ("2".equals(task.getIntervalType())) { |
|
|
|
for (j = 0; j < task.getIntervalNumber(); ++j) { |
|
|
|
if (j != 0) { |
|
|
|
intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); |
|
|
|
} |
|
|
|
|
|
|
|
redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
long current = 0L; |
|
|
|
long fixedStart = 1L; |
|
|
|
patrolTaskExecRecordList = taskExecClient.selectCameraPatrolTaskExecRecordList(task.getDevNo(), Arrays.asList(TaskStatus.DONE.getCode(), TaskStatus.PAUSED.getCode())); |
|
|
|
if (!patrolTaskExecRecordList.isEmpty()) { |
|
|
|
PatrolTaskExecRecord patrolTaskExecRecord = patrolTaskExecRecordList.get(patrolTaskExecRecordList.size() - 1); |
|
|
|
current = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis()); |
|
|
|
fixedStart = TimeUnit.MILLISECONDS.toMinutes(patrolTaskExecRecord.getStartTime().getTime()); |
|
|
|
} |
|
|
|
|
|
|
|
if (current != fixedStart) { |
|
|
|
PatrolPresetPos patrolPresetPos = new PatrolPresetPos(); |
|
|
|
PatrolPresetAction patrolPresetAction = new PatrolPresetAction(); |
|
|
|
PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); |
|
|
|
patrolTaskInfo.setTaskMajorId(String.valueOf(task.getTaskId())); |
|
|
|
patrolTaskInfo.setDevNo(task.getDevNo()); |
|
|
|
if (task.getFixedStartTime() != null |
|
|
|
&& ExecStatus.REGULAR.getCode().equals(task.getExecutionStatus())) { |
|
|
|
isCycle = false; |
|
|
|
isInterval = false; |
|
|
|
long currentMinutes = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis()); |
|
|
|
long fixedStartMinutes = TimeUnit.MILLISECONDS.toMinutes(task.getFixedStartTime().getTime()); |
|
|
|
if (currentMinutes == fixedStartMinutes) { |
|
|
|
try { |
|
|
|
Thread.sleep(200L); |
|
|
|
} catch (InterruptedException interruptedException) { |
|
|
|
interruptedException.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
startThread(patrolTaskInfo, patrolPresetPos, patrolPresetAction, task); |
|
|
|
} |
|
|
|
} else { |
|
|
|
String[] intervalExecuteTime; |
|
|
|
if (StringUtils.isNotEmpty(task.getCycleExecuteTime()) |
|
|
|
&& task.getCycleStartTime() != null |
|
|
|
&& Integer.parseInt(sdf.format(d)) >= Integer.parseInt(sdf.format(task.getCycleStartTime())) |
|
|
|
&& Integer.parseInt(sdf.format(d)) <= Integer.parseInt(sdf.format(task.getCycleEndTime())) |
|
|
|
&& ExecStatus.PERIODIC.getCode().equals(task.getExecutionStatus())) { |
|
|
|
isCycle = true; |
|
|
|
isInterval = false; |
|
|
|
int i; |
|
|
|
String month; |
|
|
|
String[] cycleExecuteTimes; |
|
|
|
if (StringUtils.isNotEmpty(task.getCycleWeek())) { |
|
|
|
intervalExecuteTime = task.getCycleWeek().split(StringUtils.COMMA); |
|
|
|
cycleExecuteTimes = task.getCycleExecuteTime().split(StringUtils.COMMA); |
|
|
|
for (i = 0; i < intervalExecuteTime.length; ++i) { |
|
|
|
month = intervalExecuteTime[i]; |
|
|
|
if (currentWeek.equals(month)) { |
|
|
|
cycleExecuteTime = cycleExecuteTimes[i].split(StringUtils.COLON); |
|
|
|
startThread(patrolTaskInfo, |
|
|
|
patrolPresetPos, |
|
|
|
patrolPresetAction, |
|
|
|
hour, |
|
|
|
minute, |
|
|
|
task, |
|
|
|
cycleExecuteTime, |
|
|
|
true); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (StringUtils.isNotEmpty(task.getCycleMonth())) { |
|
|
|
intervalExecuteTime = task.getCycleMonth().split(StringUtils.COMMA); |
|
|
|
cycleExecuteTimes = task.getCycleExecuteTime().split(StringUtils.COMMA); |
|
|
|
for (i = 0; i < intervalExecuteTime.length; ++i) { |
|
|
|
month = intervalExecuteTime[i]; |
|
|
|
if (day == Integer.parseInt(month) && task.getCycleExecuteTime() != null) { |
|
|
|
cycleExecuteTime = cycleExecuteTimes[i].split(StringUtils.COLON); |
|
|
|
startThread(patrolTaskInfo, |
|
|
|
patrolPresetPos, |
|
|
|
patrolPresetAction, |
|
|
|
hour, |
|
|
|
minute, |
|
|
|
task, |
|
|
|
cycleExecuteTime, |
|
|
|
true); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (StringUtils.isNotEmpty(task.getIntervalExecuteTime()) |
|
|
|
&& task.getIntervalStartTime() != null |
|
|
|
&& Integer.parseInt(sdf.format(d)) >= Integer.parseInt(sdf.format(task.getIntervalStartTime())) |
|
|
|
&& Integer.parseInt(sdf.format(d)) <= Integer.parseInt(sdf.format(task.getIntervalEndTime())) |
|
|
|
&& ExecStatus.INTERVAL.getCode().equals(task.getExecutionStatus())) { |
|
|
|
isCycle = false; |
|
|
|
isInterval = true; |
|
|
|
intervalExecuteTime = task.getIntervalExecuteTime().split(StringUtils.COLON); |
|
|
|
if ("1".equals(task.getIntervalType())) { |
|
|
|
for (int j = 0; j < task.getIntervalNumber(); ++j) { |
|
|
|
if (j != 0) { |
|
|
|
intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); |
|
|
|
} |
|
|
|
|
|
|
|
startThread(patrolTaskInfo, patrolPresetPos, patrolPresetAction, hour, minute, task, intervalExecuteTime, false); |
|
|
|
} |
|
|
|
} else if ("2".equals(task.getIntervalType())) { |
|
|
|
for (int j = 0; j < task.getIntervalNumber(); ++j) { |
|
|
|
if (j != 0) { |
|
|
|
intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); |
|
|
|
} |
|
|
|
startThread(patrolTaskInfo, |
|
|
|
patrolPresetPos, |
|
|
|
patrolPresetAction, |
|
|
|
hour, |
|
|
|
minute, |
|
|
|
task, |
|
|
|
intervalExecuteTime, |
|
|
|
false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
if (e instanceof RetryableException) |
|
|
|
log.warn(Color.YELLOW + "[GABRIEL] {inspect-main} selectTaskList is not online!" + Color.END); |
|
|
|
else |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void continueTask() { |
|
|
|
log.info("***************************** JobTaskTimer continueTask *************************************"); |
|
|
|
|
|
|
|
try { |
|
|
|
/** |
|
|
|
* select from patrol_task_exec_record where task_state=2(running) |
|
|
|
*/ |
|
|
|
List<PatrolTaskExecRecord> execRecords |
|
|
|
= taskExecClient.selectAbeyancePatrolTaskExecRecordList(PatrolTaskExecRecord.builder().build()); |
|
|
|
for (PatrolTaskExecRecord execRecord : execRecords) { |
|
|
|
threadPool.submit(() -> { |
|
|
|
final String deviceId = execRecord.getDeviceId(); |
|
|
|
if (!StringUtils.isEmpty(deviceId)) { |
|
|
|
log.info(Color.GREEN + "[JOB] RESUME devNo: {}, taskId: {}, deviceId: {}" + Color.END, execRecord.getDevNo(), execRecord.getTaskId(), deviceId); |
|
|
|
prePointContinueExec(execRecord); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
if (e instanceof RetryableException) { |
|
|
|
log.warn(Color.YELLOW + "[GABRIEL] inspect-main is not online!" + Color.END); |
|
|
|
} else { |
|
|
|
log.warn(Color.YELLOW + "[GABRIEL] other exception!" + Color.END); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void prePointContinueExec(PatrolTaskExecRecord patrolTaskExecRecord) { |
|
|
|
PatrolTaskInfo patrolTaskInfo = PatrolTaskInfo.builder() |
|
|
|
.devNo(patrolTaskExecRecord.getDevNo()) |
|
|
|
.taskMajorId(patrolTaskExecRecord.getTaskCode()) |
|
|
|
.build(); |
|
|
|
List<PatrolTaskInfo> patrolTaskInfoList = taskExecClient.selectTaskInfoList(patrolTaskInfo); |
|
|
|
/** |
|
|
|
* 从当前正在维修表maintain_region表中查询当前正在维修的点位, |
|
|
|
* 并把这些点位排除出巡检任务 |
|
|
|
*/ |
|
|
|
List<PatrolTaskInfo> patrolTaskInfoListTemp = patrolTaskInfoMaintainAreaRemove(patrolTaskInfoList); |
|
|
|
boolean bContinue = false; |
|
|
|
int size = patrolTaskInfoListTemp.size(); |
|
|
|
/** |
|
|
|
* 该任务下面的patrol_task_info中的设备点一个都没有执行(patrol_task_point_exec_record查不到任何该任务点的执行记录) |
|
|
|
* 这种情况下当前点一定要执行prePointExec,否则就会遗漏该点 |
|
|
|
*/ |
|
|
|
for (PatrolTaskInfo taskInfo : patrolTaskInfoListTemp) { |
|
|
|
final String deviceIdOfInfo = taskInfo.getDeviceId(); |
|
|
|
if (!bContinue) { |
|
|
|
final String deviceIdOfRecord = patrolTaskExecRecord.getDeviceId(); |
|
|
|
//log.info("[JOB] devId: {}, devId2: {}", deviceIdOfRecord, deviceIdOfInfo); |
|
|
|
if (deviceIdOfInfo.equals(deviceIdOfRecord)) { |
|
|
|
Long execPointId = patrolTaskExecRecord.getExecPointId(); |
|
|
|
log.info("[JOB] TASK RESUMED, LOCK IT! {}", "POINT=" + execPointId + ", NAME=" + patrolTaskExecRecord.getTaskName() + ", ID=" + patrolTaskExecRecord.getTaskPatrolId()); |
|
|
|
patrolTaskExecRecord.setDeviceId("-1"); |
|
|
|
patrolTaskExecRecord.setExecPointId(-1L); |
|
|
|
taskExecClient.updatePatrolTaskExecRecord(patrolTaskExecRecord); |
|
|
|
bContinue = true; |
|
|
|
/** |
|
|
|
* 该任务下面的patrol_task_info中的设备点一个都没有执行(patrol_task_point_exec_record查不到任何该任务点的执行记录) |
|
|
|
* 这种情况下当前点一定要执行prePointExec,否则就会遗漏该点 |
|
|
|
*/ |
|
|
|
if (execPointId == 0L) { |
|
|
|
prePointExec(patrolTaskExecRecord, taskInfo, size); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
prePointExec(patrolTaskExecRecord, taskInfo, size); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void silenceTask() { |
|
|
|
log.info("***************************** JobTaskTimer silenceTask *************************************"); |
|
|
|
|
|
|
|
PatrolTask patrolTask = new PatrolTask(); |
|
|
|
patrolTask.setType(TASK_TYPE_SILENCE); |
|
|
|
patrolTask.setIsEnable(TASK_ENABLE); |
|
|
|
Set<String> noRunDevices = new HashSet(); |
|
|
|
List<PatrolTask> patrolTaskList = taskExecClient.selectTaskList(patrolTask); |
|
|
|
List<String> taskStates = new ArrayList<>(); |
|
|
|
taskStates.add(TASK_STATUS_RUN); |
|
|
|
taskStates.add(TASK_STATUS_STOP); |
|
|
|
Iterator<PatrolTask> iterator = patrolTaskList.iterator(); |
|
|
|
while (iterator.hasNext()) { |
|
|
|
PatrolTask task = iterator.next(); |
|
|
|
List<PatrolTaskExecRecord> patrolTaskExecRecordList = taskExecClient.selectCameraPatrolTaskExecRecordList(task.getDevNo(), taskStates); |
|
|
|
String key = REDIS_TASK_SILENCE_DEVICE + task.getDevNo(); |
|
|
|
if (patrolTaskExecRecordList.isEmpty()) { |
|
|
|
if (!redisService.hasKey(key)) { |
|
|
|
log.info("[GABRIEL] key1: {}", key); |
|
|
|
redisService.setCacheObject(key, new Date()); |
|
|
|
} else { |
|
|
|
Date deviceStopTime = this.redisService.getCacheObject(key); |
|
|
|
if (CalendarUtil.expire(deviceStopTime, task.getIntervalNumber())) { |
|
|
|
redisService.deleteObject(key); |
|
|
|
this.log.info("silenceTask 静默任务开始执行 任务编号 :{}", task.getTaskCode()); |
|
|
|
PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); |
|
|
|
patrolTaskInfo.setTaskMajorId(task.getTaskId().toString()); |
|
|
|
patrolTaskInfo.setDevNo(task.getDevNo()); |
|
|
|
this.startThread(patrolTaskInfo, new PatrolPresetPos(), new PatrolPresetAction(), task); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (!TASK_TYPE_SILENCE.equals((patrolTaskExecRecordList.get(0)).getTaskType())) { |
|
|
|
noRunDevices.add(task.getDevNo()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!noRunDevices.isEmpty()) { |
|
|
|
noRunDevices.forEach((devNo) -> { |
|
|
|
redisService.deleteObject(REDIS_TASK_SILENCE_DEVICE + devNo); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void linkageTask() { |
|
|
|
log.info("***************************** JobTaskTimer linkageTask *************************************"); |
|
|
|
|
|
|
|
PatrolTask patrolTask = new PatrolTask(); |
|
|
|
patrolTask.setType(TASK_TYPE_LINKAGE); |
|
|
|
patrolTask.setLinkageState("1"); |
|
|
|
PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); |
|
|
|
PatrolPresetPos patrolPresetPos = new PatrolPresetPos(); |
|
|
|
PatrolPresetAction patrolPresetAction = new PatrolPresetAction(); |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); |
|
|
|
List<PatrolTask> patrolTaskList = taskExecClient.selectTaskList(patrolTask); |
|
|
|
for (PatrolTask task : patrolTaskList) { |
|
|
|
Date d = new Date(); |
|
|
|
PatrolTaskExecRecord patrolTaskExecRecord = new PatrolTaskExecRecord(); |
|
|
|
patrolTaskExecRecord.setTaskPatrolId(task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d)); |
|
|
|
patrolTaskExecRecord.setOldTaskPatrolId(task.getTaskCode() + "_" + sdf.format(d)); |
|
|
|
patrolTaskExecRecord.setTaskName(task.getTaskName()); |
|
|
|
patrolTaskExecRecord.setTaskCode(task.getTaskCode()); |
|
|
|
patrolTaskExecRecord.setTaskState(TASK_STATUS_RUN); |
|
|
|
patrolTaskExecRecord.setPlanStartTime(task.getCycleStartTime()); |
|
|
|
patrolTaskExecRecord.setStartTime(new Date()); |
|
|
|
patrolTaskExecRecord.setTaskProgress(""); |
|
|
|
patrolTaskExecRecord.setEndTime(task.getCycleEndTime()); |
|
|
|
patrolTaskExecRecord.setDescription(""); |
|
|
|
patrolTaskExecRecord.setDevNo(task.getDevNo()); |
|
|
|
patrolTaskExecRecord.setTaskType(task.getType()); |
|
|
|
patrolTaskExecRecord.setTaskPriority(task.getPriority()); |
|
|
|
patrolTaskExecRecord.setTaskId(task.getTaskId()); |
|
|
|
patrolTaskExecRecord.setStationName(task.getStationName()); |
|
|
|
patrolTaskExecRecord.setStationCode(task.getStationCode()); |
|
|
|
log.info("linkageTask 联动任务执行 任务编号 :{}", task.getTaskCode()); |
|
|
|
taskExecClient.addPatrolTaskExecRecord(patrolTaskExecRecord); |
|
|
|
log.info("添加 联动任务执行 主表信息 完成 :{}", "任务执行id TaskPatrolledId :" + patrolTaskExecRecord.getTaskPatrolId()); |
|
|
|
patrolTaskInfo.setTaskMajorId(task.getTaskId().toString()); |
|
|
|
patrolTaskInfo.setDevNo(task.getDevNo()); |
|
|
|
List<PatrolTaskInfo> patrolTaskInfoList = taskExecClient.selectTaskInfoList(patrolTaskInfo); |
|
|
|
linkagePrePointExceControl(patrolTaskExecRecord, patrolPresetPos, patrolPresetAction, patrolTaskInfoList); |
|
|
|
task.setLinkageState("2"); |
|
|
|
taskExecClient.updatePatrolTask(task); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void linkagePrePointExceControl(PatrolTaskExecRecord patrolTaskExecRecord, PatrolPresetPos patrolPresetPos, PatrolPresetAction patrolPresetAction, List<PatrolTaskInfo> patrolTaskInfoList) { |
|
|
|
PatrolTaskExecRecord taskExecRecord = this.taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(patrolTaskExecRecord.getTaskPatrolId()); |
|
|
|
if (taskExecRecord != null && TASK_STATUS_RUN.equals(taskExecRecord.getTaskState())) { |
|
|
|
boolean continueExce = true; |
|
|
|
int patrolTaskInfoListSize = patrolTaskInfoList.size(); |
|
|
|
|
|
|
|
for (int ii = 0; ii < patrolTaskInfoListSize; ++ii) { |
|
|
|
PatrolTaskInfo taskInfo = patrolTaskInfoList.get(ii); |
|
|
|
taskExecRecord = this.taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(patrolTaskExecRecord.getTaskPatrolId()); |
|
|
|
if (taskExecRecord != null && (TASK_STATUS_STOP.equals(taskExecRecord.getTaskState()) || "4".equals(taskExecRecord.getTaskState()))) { |
|
|
|
continueExce = false; |
|
|
|
} |
|
|
|
|
|
|
|
log.info("联动任务执行预置位 信息 :{}", "DeviceId :" + taskInfo.getDeviceId() + ",DevNo:" + taskInfo.getDevNo()); |
|
|
|
prePointExec(taskExecRecord, taskInfo, patrolTaskInfoListSize); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void makeEveryDayTask() { |
|
|
|
log.info("***************************** JobTaskTimer makeEveryDayTask *************************************"); |
|
|
|
|
|
|
|
try { |
|
|
|
taskExecClient.makeCurrentDayTask(); |
|
|
|
} catch (Exception e) { |
|
|
|
log.info("[JOB] makeCurrentDayTask: {}", e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// private String getTaskPatrolId(final PatrolTask patrolTask) { |
|
|
|
// String time = DateUtils.format(DateUtils.yyyyMMddHHmmss, patrolTask.getFixedStartTime()); |
|
|
|
// return patrolTask.getDevNo() + "_" + patrolTask.getTaskCode() + "_" + time; |
|
|
|
// } |
|
|
|
// |
|
|
|
// private String getOldTaskPatrolId(final PatrolTask patrolTask) { |
|
|
|
// String time = DateUtils.format(DateUtils.yyyyMMddHHmmss, patrolTask.getFixedStartTime()); |
|
|
|
// return patrolTask.getTaskCode() + "_" + time + "_" + time; |
|
|
|
// } |
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void execEveryDayTask(List<PatrolTask> patrolTaskList) { |
|
|
|
log.info("***************************** JobTaskTimer execEveryDayTask *************************************"); |
|
|
|
|
|
|
|
// setRedisRecordCount(patrolTaskList.size()); |
|
|
|
// for (PatrolTask patrolTask : patrolTaskList) { |
|
|
|
// List<PatrolTaskInfo> taskInfos = getInfosByRecord(PatrolTaskExecRecord.builder().devNo(patrolTask.getDevNo()).taskId(patrolTask.getTaskId()).build()); |
|
|
|
// final String taskPatrolId = getTaskPatrolId(patrolTask); |
|
|
|
// final String oldTaskPatrolId = getOldTaskPatrolId(patrolTask); |
|
|
|
// log.info(Color.GREEN + "[JOB] NEW EXEC RECORD: {}, OLD: {}" + Color.END, taskPatrolId, oldTaskPatrolId); |
|
|
|
// PatrolTaskExecRecord patrolTaskExecRecord = PatrolTaskExecRecord.builder() |
|
|
|
// .taskPatrolId(taskPatrolId) |
|
|
|
// .oldTaskPatrolId(oldTaskPatrolId) |
|
|
|
// .taskName(patrolTask.getTaskName()) |
|
|
|
// .taskCode(patrolTask.getTaskCode()) |
|
|
|
// .taskState(TaskStatus.RUNNING.getCode()) |
|
|
|
// .planStartTime(patrolTask.getCycleStartTime()) |
|
|
|
// .startTime(new Date()) |
|
|
|
// .taskProgress("0") |
|
|
|
// .endTime(patrolTask.getCycleEndTime()) |
|
|
|
// .description("") |
|
|
|
// .devNo(patrolTask.getDevNo()) |
|
|
|
// .taskType(patrolTask.getType()) |
|
|
|
// .taskPriority(patrolTask.getPriority()) |
|
|
|
// .taskId(patrolTask.getTaskId()) |
|
|
|
// .stationName(patrolTask.getStationName()) |
|
|
|
// .stationCode(patrolTask.getStationCode()) |
|
|
|
// .deviceId("0") |
|
|
|
// .execPointId(0L) |
|
|
|
// .totalNumber(taskInfos.isEmpty() ? 1 : taskInfos.size()) |
|
|
|
// .build(); |
|
|
|
// try { |
|
|
|
// taskExecClient.addPatrolTaskExecRecord(patrolTaskExecRecord); |
|
|
|
// taskExecClient.updatePatrolTaskStatus(patrolTask); |
|
|
|
// } catch (Exception e) { |
|
|
|
// e.printStackTrace(); |
|
|
|
// } |
|
|
|
// threadPool.submit(() -> { |
|
|
|
// log.info(Color.MAGENTA + "[JOB] THREAD START devNo: {}, taskId: {}" + Color.END, patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); |
|
|
|
// prePointExecImmediate(patrolTaskExecRecord); |
|
|
|
// log.info(Color.MAGENTA + "[JOB] THREAD END devNo: {}, taskId: {}" + Color.END, patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); |
|
|
|
// }); |
|
|
|
// } |
|
|
|
} |
|
|
|
|
|
|
|
// 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.GREEN + "[JOB] redisRecCnt: {}" + Color.END, redisRecCnt); |
|
|
|
// } |
|
|
|
|
|
|
|
@SuppressWarnings({"unused"}) |
|
|
|
public void execRepeatDayTask(List<PatrolTask> patrolTaskList) { |
|
|
|
log.info("***************************** JobTaskTimer execRepeatDayTask *************************************"); |
|
|
|
|
|
|
|
// for (PatrolTask patrolTask : patrolTaskList) { |
|
|
|
// final String taskPatrolId = getTaskPatrolId(patrolTask); |
|
|
|
// final String oldTaskPatrolId = getOldTaskPatrolId(patrolTask); |
|
|
|
// log.info(Color.GREEN + "[JOB] REPEAT EXEC RECORD: {}, OLD: {}" + Color.END, taskPatrolId, oldTaskPatrolId); |
|
|
|
// List<PatrolTaskExecRecord> taskExecRecords = |
|
|
|
// taskExecClient.selectPatrolTaskExecRecordList(PatrolTaskExecRecord.builder() |
|
|
|
// .taskPatrolId(taskPatrolId) |
|
|
|
// .oldTaskPatrolId(oldTaskPatrolId) |
|
|
|
// .build()); |
|
|
|
// if (taskExecRecords.isEmpty()) continue; |
|
|
|
// |
|
|
|
// PatrolTaskExecRecord execRecord = taskExecRecords.get(0);//理论上来说只能有一条 |
|
|
|
// int finish = execRecord.getFinishNumber(); |
|
|
|
// int total = execRecord.getTotalNumber(); |
|
|
|
// int times = execRecord.getRebootTimes(); |
|
|
|
// if (finish < total) { |
|
|
|
// log.info(Color.GREEN + "[JOB] REPEAT EXEC RECORD: id: {}, finish: {}, total: {}, times: {}, progress: {}" + Color.END, execRecord.getTaskPatrolId(), finish, total, times, execRecord.getTaskProgress()); |
|
|
|
// incrementRedisRecordCounter(); |
|
|
|
// threadPool.submit(() -> { |
|
|
|
// log.info(Color.MAGENTA + "[JOB] REPEAT START devNo: {}, taskId: {}" + Color.END, execRecord.getDevNo(), execRecord.getTaskId()); |
|
|
|
// prePointExecImmediate(execRecord); |
|
|
|
// log.info(Color.MAGENTA + "[JOB] REPEAT END devNo: {}, taskId: {}" + Color.END, execRecord.getDevNo(), execRecord.getTaskId()); |
|
|
|
// }); |
|
|
|
// } |
|
|
|
// } |
|
|
|
} |
|
|
|
} |