InitDataSyncJob.java
4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.idss.vulsync.schedule;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.idss.vulsync.constants.CommonConstant;
import com.idss.vulsync.entity.AssetReportVO;
import com.idss.vulsync.mvc.mapper.ConsultVulmanageSyncEntityMapper;
import com.idss.vulsync.mvc.pojo.db.ConsultVulmanageSyncEntity;
import com.idss.vulsync.mvc.service.CommonService;
import com.idss.vulsync.mvc.service.EsService;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @Author: zc
* @Date: 2024/8/16 16:58
* 漏管初始数据同步
*/
@Service
@Slf4j
public class InitDataSyncJob implements Job {
@Autowired
ConsultVulmanageSyncEntityMapper consultVulmanageSyncEntityMapper;
@Autowired
EsService esService;
@Autowired(required = false)
@Qualifier("QuartzScheduler")
public Scheduler scheduler;
@Autowired
CommonService commonService;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
log.info("quartz启动" + this.getClass().getSimpleName());
this.run(jobExecutionContext);
}
public void run(JobExecutionContext jobExecutionContext) {
Date now = new Date();
log.info("开始同步初始数据--------");
ConsultVulmanageSyncEntity syncEntity = consultVulmanageSyncEntityMapper.selectByPrimaryKey(CommonConstant.CONSULT_UNIQUE_ID);
if (ObjectUtil.isEmpty(syncEntity) || ObjectUtil.isEmpty(syncEntity.getLatestEsId())) {
log.error("开始同步初始数据失败,未找到初始数据");
}
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
List<AssetReportVO> list = esService.selectList(syncEntity.getLatestEsId(), boolQueryBuilder);
commonService.sync(list, syncEntity, now, "INIT");
try {
jobExecutionContext.getScheduler().deleteJob(jobExecutionContext.getJobDetail().getKey());
} catch (SchedulerException e) {
e.printStackTrace();
}
try {
scheduler.deleteJob(new JobKey(InitDataSyncJob.class.getSimpleName(),InitDataSyncJob.class.getSimpleName()));
}catch (Exception e){
e.printStackTrace();
}
try {
JobKey jobKey=new JobKey(UpdateDataSyncJob.class.getSimpleName(), UpdateDataSyncJob.class.getSimpleName());
scheduler.deleteJob(jobKey);
}catch (Exception e){
e.printStackTrace();
}
try {
//新增增量更新同步任务
String updCycle = syncEntity.getUpdCycle();
String numStr = updCycle.substring(0, 2);
String unit = updCycle.substring(2, updCycle.length());
Integer num = numStr.startsWith("0") ? Integer.parseInt(numStr.substring(1, numStr.length())) : Integer.parseInt(numStr);
JobDetail jobDetail = JobBuilder.newJob(UpdateDataSyncJob.class).
withIdentity(UpdateDataSyncJob.class.getSimpleName(), UpdateDataSyncJob.class.getSimpleName())
.build();
DateTime executionTime = new DateTime();
if (unit.equals("天")) {
executionTime = DateUtil.offsetDay(now, num);
} else if (unit.equals("时")) {
executionTime = DateUtil.offsetHour(now, num);
} else {
executionTime = new DateTime(now);
}
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(UpdateDataSyncJob.class.getSimpleName(), UpdateDataSyncJob.class.getSimpleName())
.startAt(executionTime).build();
scheduler.scheduleJob(jobDetail, trigger);
log.error("新增增量更新同步任务,下次执行时间{}", DateUtil.formatDateTime(executionTime));
} catch (Exception e) {
log.error("同步初始数据异常", e);
}
log.info("结束同步初始数据--------");
}
}