package com.fzzy.api.timer;
|
|
import com.fzzy.api.data.ApiParam;
|
import com.fzzy.api.entity.ApiConfs;
|
import com.fzzy.api.service.*;
|
import com.fzzy.api.utils.ContextUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.time.DateUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author: andy.jia
|
* @description: 同步粮库信息系统数据入口
|
* @version:
|
*/
|
@Slf4j
|
@Component(SyncDataScheduled.BEAN_ID)
|
public class SyncDataScheduled {
|
|
public static final String BEAN_ID = "api.syncDataScheduled";
|
|
@Autowired
|
private ApiSyncManager apiSyncManager;
|
|
@Autowired
|
private ApiCommonService apiCommonService;
|
|
|
/**
|
* cron = "0 0,30 * * * ? "
|
* <p>
|
* 固定时间:0分钟和30分钟执行
|
*/
|
@Scheduled(cron = "0 0,30 * * * ? ")
|
public void scheduled() {
|
|
log.info("系统执行定时数据同步操作<<<<<<<<<<<<<--------");
|
|
|
List<ApiConfs> list = apiCommonService.listCacheConf();
|
|
if (null == list || list.isEmpty()) return;
|
|
Date exeDate = new Date();
|
|
for (ApiConfs conf : list) {
|
|
exeByConf11(conf, exeDate);
|
|
exeByConf99(conf, exeDate);
|
}
|
}
|
|
/**
|
* 同步义务数据
|
*
|
* @param conf
|
* @param exeDate
|
*/
|
private void exeByConf99(ApiConfs conf, Date exeDate) {
|
if (null == conf.getSyncType99() || conf.getSyncType99().equals(ApiConfs.SYNC_PUSH_HAND)) {
|
|
log.info("业务接口数据,系统配置为手动模式,取消自动执行<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
|
Date start = exeDate;
|
|
//是否执行
|
boolean isExecute = false;
|
boolean isUpdateStart = false;
|
//核对天是否匹配
|
if (conf.getSyncDay99().equals(ApiConfs.TIME_ALL)) {
|
isExecute = true;
|
} else {
|
int dayOfWeek = ContextUtil.getDayOfWeek(exeDate);
|
if (String.valueOf(dayOfWeek).equals(conf.getSyncDay11())) {
|
isExecute = true;
|
|
//开始时间提前7天
|
start = DateUtils.addDays(start, -7);
|
isUpdateStart = true;
|
} else {
|
isExecute = false;
|
}
|
}
|
|
if (!isExecute) {
|
log.debug("业务数据同步---时间配置天不匹配<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
//核对时间是否匹配
|
if (conf.getSyncHour99().equals(ApiConfs.TIME_ALL)) {
|
isExecute = true;
|
} else {
|
int hourOfDay = ContextUtil.getHourOfDay(exeDate);
|
if (String.valueOf(hourOfDay).equals(conf.getSyncHour11())) {
|
isExecute = true;
|
|
if (!isUpdateStart) {
|
start = DateUtils.addDays(start, -1);
|
isUpdateStart = true;
|
}
|
} else {
|
isExecute = false;
|
}
|
}
|
if (!isExecute) {
|
log.debug("业务数据同步---时间配置小时不匹配<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
//核对时间分钟是否匹配
|
int minute = ContextUtil.getMinuteOfHour(exeDate);
|
if (String.valueOf(minute).equals(conf.getSyncMinute99())) {
|
isExecute = true;
|
if (!isUpdateStart) {
|
start = DateUtils.addHours(start, -1);
|
}
|
} else {
|
isExecute = false;
|
}
|
|
if (!isExecute) {
|
log.debug("业务数据同步---时间配置分钟不匹配<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
ApiParam param = new ApiParam();
|
param.setSyncProtocol(conf.getSyncProtocol());
|
param.setPushProtocol(conf.getPushProtocol());
|
param.setKqdm(conf.getKqdm());
|
param.setStart(start);
|
param.setEnd(exeDate);
|
param.setDeptId(conf.getDeptId());
|
|
|
SyncService12 syncService12 = apiSyncManager.getSyncService12(param.getSyncProtocol());
|
syncService12.syncData(param);
|
|
SyncService13 syncService13 = apiSyncManager.getSyncService13(param.getSyncProtocol());
|
syncService13.syncData(param);
|
|
SyncService14 syncService14 = apiSyncManager.getSyncService14(param.getSyncProtocol());
|
syncService14.syncData(param);
|
}
|
|
/**
|
* 同步基础信息
|
*
|
* @param conf
|
* @param exeDate
|
*/
|
private void exeByConf11(ApiConfs conf, Date exeDate) {
|
|
if (null == conf.getSyncType11() || conf.getSyncType11().equals(ApiConfs.SYNC_PUSH_HAND)) {
|
|
log.info("基础数据同步,系统配置为手动模式,取消自动执行<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
|
Date start = exeDate;
|
|
//是否执行
|
boolean isExecute = false;
|
boolean isUpdateStart = false;
|
//核对天是否匹配
|
if (conf.getSyncDay11().equals(ApiConfs.TIME_ALL)) {
|
isExecute = true;
|
} else {
|
int dayOfWeek = ContextUtil.getDayOfWeek(exeDate);
|
if (String.valueOf(dayOfWeek).equals(conf.getSyncDay11())) {
|
isExecute = true;
|
|
//开始时间提前7天
|
start = DateUtils.addDays(start, -7);
|
isUpdateStart = true;
|
} else {
|
isExecute = false;
|
}
|
}
|
|
if (!isExecute) {
|
log.debug("基础数据同步---时间配置天不匹配<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
//核对时间是否匹配
|
if (conf.getSyncHour11().equals(ApiConfs.TIME_ALL)) {
|
isExecute = true;
|
} else {
|
int hourOfDay = ContextUtil.getHourOfDay(exeDate);
|
if (String.valueOf(hourOfDay).equals(conf.getSyncHour11())) {
|
isExecute = true;
|
|
if (!isUpdateStart) {
|
start = DateUtils.addDays(start, -1);
|
isUpdateStart = true;
|
}
|
} else {
|
isExecute = false;
|
}
|
}
|
if (!isExecute) {
|
log.debug("基础数据同步---时间配置小时不匹配<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
//核对时间分钟是否匹配
|
int minute = ContextUtil.getMinuteOfHour(exeDate);
|
if (String.valueOf(minute).equals(conf.getSyncMinute11())) {
|
isExecute = true;
|
if (!isUpdateStart) {
|
start = DateUtils.addHours(start, -1);
|
}
|
} else {
|
isExecute = false;
|
}
|
|
if (!isExecute) {
|
log.debug("基础数据同步---时间配置分钟不匹配<<<<<<<<<<<<<-------");
|
return;
|
}
|
|
ApiParam param = new ApiParam();
|
param.setSyncProtocol(conf.getSyncProtocol());
|
param.setKqdm(conf.getKqdm());
|
param.setStart(start);
|
param.setEnd(exeDate);
|
param.setDeptId(conf.getDeptId());
|
|
|
SyncService11 syncService11 = apiSyncManager.getSyncService11(param.getSyncProtocol());
|
syncService11.syncData(param);
|
}
|
}
|