|
|
|
@ -514,7 +514,7 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
|
|
|
|
task.setFixedStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, (DateUtils.format(DateUtils.yyyyMMdd2, new Date()) + " " + cycleTimes[i]))); |
|
|
|
final String taskType = "CYCLE-BY-WEEK"; |
|
|
|
parseTaskToRedis(taskType, task); |
|
|
|
parseTaskToRedis(taskType, task, null); |
|
|
|
} |
|
|
|
} else if (isCycleTaskByMonth(task)) { |
|
|
|
String[] monthList = task.getCycleMonth().split(StringUtils.COMMA); |
|
|
|
@ -527,7 +527,7 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
|
|
|
|
task.setFixedStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, (DateUtils.format(DateUtils.yyyyMMdd2, new Date()) + " " + cycleTimes[i]))); |
|
|
|
final String taskType = "CYCLE-BY-MONTH"; |
|
|
|
parseTaskToRedis(taskType, task); |
|
|
|
parseTaskToRedis(taskType, task, null); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (isInterTask(task)) { |
|
|
|
@ -543,7 +543,7 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
logger.info("[TASK] {}, isInterTaskByHour exeTime: {}", task.getTaskCode(), DateUtils.format(DateUtils.yyyyMMddHHmmss2, exeTime)); |
|
|
|
task.setFixedStartTime(exeTime); |
|
|
|
final String taskType = "INTER-BY-HOUR"; |
|
|
|
parseTaskToRedis(taskType, task); |
|
|
|
parseTaskToRedis(taskType, task, null); |
|
|
|
} |
|
|
|
} else { |
|
|
|
log.info("[TASK] isInterTaskByHour intervalNumber error: {}", intervalNumber); |
|
|
|
@ -553,10 +553,13 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
int intervalNumber = task.getIntervalNumber(); |
|
|
|
if (intervalNumber > 0) { |
|
|
|
List<Date> exeTimes = getExecTimesByMinute(task.getIntervalExecuteTime(), DateUtils.format(DateUtils.yyyyMMddHHmmss2, task.getIntervalStartTime()), DateUtils.format(DateUtils.yyyyMMddHHmmss2, task.getIntervalEndTime()), intervalNumber); |
|
|
|
for (Date exeTime : exeTimes) { |
|
|
|
task.setFixedStartTime(exeTime); |
|
|
|
final String taskType = "INTER-BY-MINUTE"; |
|
|
|
parseTaskToRedis(taskType, task); |
|
|
|
if (exeTimes.size() > 0) { |
|
|
|
Date date = exeTimes.get(exeTimes.size() - 1); |
|
|
|
for (Date exeTime : exeTimes) { |
|
|
|
task.setFixedStartTime(exeTime); |
|
|
|
final String taskType = "INTER-BY-MINUTE"; |
|
|
|
parseTaskToRedis(taskType, task, date); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
log.info("[TASK] isInterTaskByMinute intervalNumber error: {}", intervalNumber); |
|
|
|
@ -570,7 +573,7 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
String time = intervalExecuteTime[0] + ":" + DateUtils.getMinuteInt() + ":" + intervalExecuteTime[2]; |
|
|
|
task.setFixedStartTime(DateUtils.parse(DateUtils.yyyyMMddHHmmss2, (DateUtils.format(DateUtils.yyyyMMdd2, new Date()) + " " + time))); |
|
|
|
final String taskType = "INTER-BY-DATE"; |
|
|
|
parseTaskToRedis(taskType, task); |
|
|
|
parseTaskToRedis(taskType, task, null); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -582,7 +585,7 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void parseTaskToRedis(final String taskType, PatrolTask task) { |
|
|
|
private void parseTaskToRedis(final String taskType, PatrolTask task, Date finalDate) { |
|
|
|
if (StringUtils.isNotEmpty(task.getDevNo())) { |
|
|
|
String[] devNos = task.getDevNo().split(StringUtils.COMMA); |
|
|
|
List<String> devNoList = new ArrayList<>(); |
|
|
|
@ -600,6 +603,18 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
if (taskExecRecord == null) { |
|
|
|
List<PatrolTask> patrolTasks = getPatrolTasks(task); |
|
|
|
if (!patrolTasks.isEmpty()) { |
|
|
|
if(finalDate != null) { |
|
|
|
Collection<String> redisKeys = redisService.keys(RedisConst.TASK_CODE + task.getTaskCode() + StringUtils.AT + "*"); |
|
|
|
for (String redisKey : redisKeys) { |
|
|
|
String[] keywords = StringUtils.split(redisKey, StringUtils.AT); |
|
|
|
if (keywords.length == 3) { |
|
|
|
String fixedStartTime = keywords[2]; |
|
|
|
if (DateUtils.parse(DateUtils.yyyyMMddHHmmss2, fixedStartTime).after(finalDate)) { |
|
|
|
redisService.deleteObject(redisKey); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
logger.info(Color.GREEN + "[TASK] TYPE: {}, CYCLE BY WEEK key: {}, patrolId: {}" + Color.END, taskType, key, taskPatrolledId); |
|
|
|
redisService.setCacheObject(key, JSONArray.toJSONString(patrolTasks)); |
|
|
|
} |
|
|
|
@ -851,19 +866,19 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
return patrolResultService.selectAlgorithmType(patrolPointId); |
|
|
|
} |
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
PatrolTaskExecController patrolTaskExecController = new PatrolTaskExecController(null, null, null, null,null, null, null,null,null,null,null, null, null, null,null); |
|
|
|
// List<Date> execTimes = patrolTaskExecController.getExecTimes("09:00:00","2025-06-12 00:00:00","2025-06-12 16:00:00", 1); |
|
|
|
// System.out.println(execTimes); |
|
|
|
System.out.println(DateUtils.format(DateUtils.yyyyMMddHHmmss2, new Date())); |
|
|
|
List<Date> execTimesByMinute = patrolTaskExecController.getExecTimes("09:35:16", "2025-06-12 10:38:00", "2025-06-12 16:00:00", 2); |
|
|
|
System.out.println(execTimesByMinute); |
|
|
|
System.out.println("=========================================================="); |
|
|
|
|
|
|
|
List<Date> execTimesOld = patrolTaskExecController.getExecTimesOld("09:00:00", 1); |
|
|
|
System.out.println(execTimesOld); |
|
|
|
|
|
|
|
// String redisKey = "TASK_CODE@1353@2025-06-12 15:00:00"; |
|
|
|
public static void main(String[] args) throws ParseException { |
|
|
|
// PatrolTaskExecController patrolTaskExecController = new PatrolTaskExecController(null, null, null, null,null, null, null,null,null,null,null, null, null, null,null); |
|
|
|
//// List<Date> execTimes = patrolTaskExecController.getExecTimes("09:00:00","2025-06-12 00:00:00","2025-06-12 16:00:00", 1); |
|
|
|
//// System.out.println(execTimes); |
|
|
|
// System.out.println(DateUtils.format(DateUtils.yyyyMMddHHmmss2, new Date())); |
|
|
|
// List<Date> execTimesByMinute = patrolTaskExecController.getExecTimes("09:35:16", "2025-06-12 10:38:00", "2025-06-12 16:00:00", 2); |
|
|
|
// System.out.println(execTimesByMinute); |
|
|
|
// System.out.println("=========================================================="); |
|
|
|
// |
|
|
|
// List<Date> execTimesOld = patrolTaskExecController.getExecTimesOld("09:00:00", 1); |
|
|
|
// System.out.println(execTimesOld); |
|
|
|
// |
|
|
|
// String redisKey = "TASK_CODE@1353@2025-06-12 16:01:00"; |
|
|
|
// String[] keywords = StringUtils.split(redisKey, StringUtils.AT); |
|
|
|
// if (keywords.length == 3) { |
|
|
|
// String fixedStartTime = keywords[2]; |
|
|
|
@ -871,5 +886,104 @@ public class PatrolTaskExecController extends BaseController { |
|
|
|
// System.out.println("111"); |
|
|
|
// } |
|
|
|
// } |
|
|
|
// Date actualStartTime = DateUtils.parse(DateUtils.yyyyMMddHHmmss2, "2025-06-12 16:00:00"); |
|
|
|
// if (actualStartTime.before(new Date())) { |
|
|
|
// System.out.println("2222"); |
|
|
|
// actualStartTime = new Date(); |
|
|
|
// } |
|
|
|
// List<Date> execTimes = patrolTaskExecController.getExecTimesByMinute("13:00:00", "2025-06-14 16:00:00", "2025-06-14 19:10:00", 4); |
|
|
|
// System.out.println("================================="); |
|
|
|
// System.out.println(execTimes); |
|
|
|
// System.out.println("============"); |
|
|
|
//// Date parse = DateUtils.parse(DateUtils.yyyyMMddHHmmss2, "2025-06-13 17:07:32"); |
|
|
|
//// long planTime = DateUtils.parse(DateUtils.yyyyMMddHHmmss2, "2025-06-13 17:07:32").getTime(); |
|
|
|
//// System.out.println(parse); |
|
|
|
//// System.out.println(planTime); |
|
|
|
// |
|
|
|
// String fixedStartTime = "2025-06-14 08:47:32"; |
|
|
|
// long planTime = DateUtils.parse(DateUtils.yyyyMMddHHmmss2, fixedStartTime).getTime(); |
|
|
|
// long fixedDays = TimeUnit.MILLISECONDS.toDays(planTime); |
|
|
|
// long fixedStartMinutes = TimeUnit.MILLISECONDS.toMinutes(planTime); |
|
|
|
// System.out.println("fixedDays: " + fixedDays); |
|
|
|
// System.out.println("fixedStartMinutes: " + fixedStartMinutes); |
|
|
|
// System.out.println("planTime: "+ planTime); |
|
|
|
// |
|
|
|
// long currentTime = DateUtils.parse(DateUtils.yyyyMMddHHmmss2, "2025-06-14 09:07:32").getTime(); |
|
|
|
// long currentDays = TimeUnit.MILLISECONDS.toDays(currentTime); |
|
|
|
// long currentMinutes = TimeUnit.MILLISECONDS.toMinutes(currentTime); |
|
|
|
// System.out.println("currentDays: " + currentDays); |
|
|
|
// System.out.println("currentMinutes: " + currentMinutes); |
|
|
|
// System.out.println("currentTime: "+ currentTime); |
|
|
|
// |
|
|
|
// if (currentDays == fixedDays && currentMinutes >= fixedStartMinutes) { |
|
|
|
// System.out.println("333"); |
|
|
|
// } |
|
|
|
// System.out.println("============下面开始==============="); |
|
|
|
// |
|
|
|
// fixedStartTime = "2025-06-14 00:07:32"; |
|
|
|
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
// |
|
|
|
// // 解析字符串为 Date |
|
|
|
// Date fixedDate = sdf.parse(fixedStartTime); |
|
|
|
// Date currentDate = sdf.parse(fixedStartTime); // 当前时间 |
|
|
|
// |
|
|
|
// // 比较时间(精确到分钟) |
|
|
|
// SimpleDateFormat minuteFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
|
|
|
// String fixedMinute = minuteFormat.format(fixedDate); |
|
|
|
// String currentMinute = minuteFormat.format(currentDate); |
|
|
|
// |
|
|
|
//// if (fixedMinute.equals(currentMinute)) { |
|
|
|
//// System.out.println("fixedStartTime 和当前时间完全相同(精确到分钟)"); |
|
|
|
//// } else { |
|
|
|
// // 计算分钟差值(绝对值) |
|
|
|
// long diffMinutes = Math.abs((fixedDate.getTime() - currentDate.getTime()) / (60 * 1000)); |
|
|
|
// |
|
|
|
// if (diffMinutes <= 1) { |
|
|
|
// System.out.println("fixedStartTime 和当前时间相差不超过1分钟"); |
|
|
|
// } else if (fixedDate.after(currentDate)) { |
|
|
|
// System.out.println("fixedStartTime 是未来时间(相差超过1分钟)"); |
|
|
|
// } else { |
|
|
|
// System.out.println("fixedStartTime 是过去时间(相差超过1分钟)"); |
|
|
|
// } |
|
|
|
//// } |
|
|
|
// |
|
|
|
// // 判断是否同一天 |
|
|
|
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
// String fixedDay = dateFormat.format(fixedDate); |
|
|
|
// String currentDay = dateFormat.format(currentDate); |
|
|
|
// |
|
|
|
// if (fixedDay.equals(currentDay)) { |
|
|
|
// System.out.println("fixedStartTime 和当前时间是同一天"); |
|
|
|
// } else { |
|
|
|
// System.out.println("fixedStartTime 和当前时间不是同一天"); |
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
System.out.println("===================="); |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
// 解析字符串为 Date |
|
|
|
String fixedStartTime = "2025-06-16 11:30:00"; |
|
|
|
Date fixedDate1 = sdf.parse(fixedStartTime); |
|
|
|
|
|
|
|
Date currentDate1 = sdf.parse("2025-06-16 11:30:11"); // 当前时间 |
|
|
|
|
|
|
|
// 判断是否同一天 |
|
|
|
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
String fixedDay1 = dateFormat1.format(fixedDate1); |
|
|
|
String currentDay1 = dateFormat1.format(currentDate1); |
|
|
|
|
|
|
|
long value = currentDate1.getTime() - fixedDate1.getTime(); |
|
|
|
System.out.println(value); |
|
|
|
long diffMinutes1 = (currentDate1.getTime() - fixedDate1.getTime()) / (60 * 1000); |
|
|
|
System.out.println(diffMinutes1); |
|
|
|
if(fixedDay1.equals(currentDay1) && (diffMinutes1 >= 0 && diffMinutes1 <= 1 && fixedDate1.before(currentDate1) || fixedDate1.getTime() == currentDate1.getTime())) { |
|
|
|
System.out.println("hhhrhheh"); |
|
|
|
} |
|
|
|
|
|
|
|
if(fixedDay1.equals(currentDay1) && (value >= 0 && value <= 60000 && fixedDate1.before(currentDate1) || fixedDate1.getTime() == currentDate1.getTime())) { |
|
|
|
System.out.println("过期时间没超过1分钟"); |
|
|
|
} |
|
|
|
|
|
|
|
System.out.println(DateUtils.format(DateUtils.yyyyMMddHHmmss2, new Date())); |
|
|
|
} |
|
|
|
} |