人员车辆下发重制机制,一个小时内,十分钟重试一次,一个小时后,每小时重复一次,一天内,超过24小时后,停止重试

This commit is contained in:
guoshengxiong 2024-07-23 22:17:39 +08:00
parent 3bfa5e81c3
commit 77a2e8442d
2 changed files with 35 additions and 4 deletions

View File

@ -16,6 +16,12 @@
<if test="createDateBegin != null"> <if test="createDateBegin != null">
and create_date >= #{createDateBegin} and create_date >= #{createDateBegin}
</if> </if>
<if test="geBeforeTenMin == '1'.toString() ">
and create_date &lt;= DATE_FORMAT(DATE_SUB(now(), interval 10 minute), '%Y-%m-%d %H:%i:%S')
</if>
<if test="geBeforeHour == '1'.toString() ">
and create_date &lt;= DATE_FORMAT(DATE_SUB(now(), interval 1 hour), '%Y-%m-%d %H:%i:%S')
</if>
group by who_id group by who_id
) t2 on t1.who_id=t2.who_id ) t2 on t1.who_id=t2.who_id
left join uface_dev ud on t1.device_sn = ud.dev_sn left join uface_dev ud on t1.device_sn = ud.dev_sn

View File

@ -126,15 +126,40 @@ public class HikvisionTask {
} }
/** /**
* 定时重试失败的记录 * 定时重试失败的记录十分钟一次
*/ */
@SchedulerLock(name = "retrySyncHikvision", lockAtMostFor = 1000 * 30, lockAtLeastFor = 1000 * 30) @SchedulerLock(name = "retrySyncHikvisionTenMin", lockAtMostFor = 1000 * 30, lockAtLeastFor = 1000 * 30)
@Scheduled(cron = "0 */10 * * * ?") @Scheduled(cron = "0 */10 * * * ?")
@RequestMapping("retrySyncHikvision") @RequestMapping("retrySyncHikvisionTenMin")
public void retrySyncHikvision() throws Exception { public void retrySyncHikvisionTenMin() throws Exception {
HashMap<String, Object> newListMap = new HashMap<>(16); HashMap<String, Object> newListMap = new HashMap<>(16);
newListMap.put("isSuccess", 0); newListMap.put("isSuccess", 0);
newListMap.put("createDateBegin", DateUtil.formatDateTime(DateUtil.offsetHour(new Date(), -1))); newListMap.put("createDateBegin", DateUtil.formatDateTime(DateUtil.offsetHour(new Date(), -1)));
newListMap.put("geBeforeTenMin", 1);
List<XzHikvisionSync> newestList = xzHikvisionSyncService.getNewestList(newListMap);
for (XzHikvisionSync xzHikvisionSync : newestList) {
log.info("海康同步的定时重试失败的记录id:{}", xzHikvisionSync.getId());
HashMap<String, Object> retryMap = new HashMap<>(16);
retryMap.put("id", xzHikvisionSync.getId());
try {
xzHikvisionSyncService.retry(retryMap);
} catch (Exception e) {
log.error("海康同步的定时重试失败的记录:error:", e);
}
}
}
/**
* 定时重试失败的记录一小时一次
*/
@SchedulerLock(name = "retrySyncHikvisionHourly", lockAtMostFor = 1000 * 30, lockAtLeastFor = 1000 * 30)
@Scheduled(cron = "0 */10 * * * ?")
@RequestMapping("retrySyncHikvisionHourly")
public void retrySyncHikvisionHourly() throws Exception {
HashMap<String, Object> newListMap = new HashMap<>(16);
newListMap.put("isSuccess", 0);
newListMap.put("createDateBegin", DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -1)));
newListMap.put("geBeforeHour", 1);
List<XzHikvisionSync> newestList = xzHikvisionSyncService.getNewestList(newListMap); List<XzHikvisionSync> newestList = xzHikvisionSyncService.getNewestList(newListMap);
for (XzHikvisionSync xzHikvisionSync : newestList) { for (XzHikvisionSync xzHikvisionSync : newestList) {
log.info("海康同步的定时重试失败的记录id:{}", xzHikvisionSync.getId()); log.info("海康同步的定时重试失败的记录id:{}", xzHikvisionSync.getId());