|
@ -0,0 +1,595 @@
|
|
|
package com.yihu.wlyy.statistics.service;
|
|
|
|
|
|
import com.yihu.jw.entity.base.statistics.JobConfigDO;
|
|
|
import com.yihu.wlyy.statistics.dao.QuartzJobConfigDao;
|
|
|
import com.yihu.wlyy.statistics.etl.cache.Cache;
|
|
|
import com.yihu.wlyy.statistics.job.business.CacheCleanJob;
|
|
|
import com.yihu.wlyy.statistics.util.DateUtil;
|
|
|
import com.yihu.wlyy.statistics.util.QuartzHelper;
|
|
|
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author chenweida
|
|
|
*/
|
|
|
@Service
|
|
|
public class JobService {
|
|
|
@Value("${JobService.sleepTime}")
|
|
|
private Integer sleepTime;
|
|
|
|
|
|
@Autowired
|
|
|
private QuartzHelper quartzHelper;
|
|
|
|
|
|
@Autowired
|
|
|
private QuartzJobConfigDao wlyyJobConfigDao;
|
|
|
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
public void stopById(String id) throws Exception {
|
|
|
JobConfigDO quartzJobConfig = wlyyJobConfigDao.findById(id, "1");
|
|
|
if (quartzJobConfig != null) {
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(quartzJobConfig, j)) continue;
|
|
|
quartzHelper.removeJob(quartzJobConfig.getId() + "-" + j);
|
|
|
wlyyJobConfigDao.updateStatus(quartzJobConfig.getId(), "0");
|
|
|
}
|
|
|
} else {
|
|
|
throw new Exception("任务已经停止");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
|
public void startById(String id) throws Exception {
|
|
|
JobConfigDO quartzJobConfig = wlyyJobConfigDao.findById(id, "0");
|
|
|
if (quartzJobConfig != null) {
|
|
|
startOneJob(quartzJobConfig);
|
|
|
} else {
|
|
|
throw new Exception("任务已经启动");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
public void stopAll() throws Exception {
|
|
|
List<JobConfigDO> quartzJobConfigs = wlyyJobConfigDao.findByAll("1");
|
|
|
if (quartzJobConfigs != null && quartzJobConfigs.size() > 0) {
|
|
|
for (JobConfigDO quartzJobConfig : quartzJobConfigs) {
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(quartzJobConfig, j)) continue;
|
|
|
quartzHelper.removeJob(quartzJobConfig.getId() + "-" + j);
|
|
|
|
|
|
wlyyJobConfigDao.updateStatus(quartzJobConfig.getId(), "0");
|
|
|
;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
throw new Exception("任务已经全部停止");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
|
public void startAll() throws Exception {
|
|
|
List<JobConfigDO> quartzJobConfigs = wlyyJobConfigDao.findByAll("0");
|
|
|
if (quartzJobConfigs != null && quartzJobConfigs.size() > 0) {
|
|
|
for (JobConfigDO quartzJobConfig : quartzJobConfigs) {
|
|
|
startOneJob(quartzJobConfig);
|
|
|
}
|
|
|
} else {
|
|
|
throw new Exception("任务已经全部启动");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 启动单个任务
|
|
|
*
|
|
|
* @param quartzJobConfig
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Transactional
|
|
|
private void startOneJob(JobConfigDO quartzJobConfig) throws Exception {
|
|
|
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(wlyyJobConfigVO, j)) continue;
|
|
|
params.put("timeLevel", j + "");
|
|
|
//往quartz框架添加任务
|
|
|
quartzHelper.addJob(getRightClass(quartzJobConfig), quartzJobConfig.getQuartzCron(), quartzJobConfig.getId() + "-" + j, params);
|
|
|
wlyyJobConfigDao.updateStatus(quartzJobConfig.getId(), "1");//设置任务状态是启动 }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void startNowById(String id) throws Exception {
|
|
|
JobConfigDO quartzJobConfig = wlyyJobConfigDao.findOne(id);
|
|
|
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
for (int i = 1; i <= 2; i++) {
|
|
|
if (breakPoint(wlyyJobConfigVO, i)) continue;
|
|
|
params.put("timeLevel", i + "");
|
|
|
//往quartz框架添加任务
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
Thread.sleep(sleepTime);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private boolean breakPoint(WlyyJobConfigVO wlyyJobConfigVO, int i) {
|
|
|
//该方法使用于每日统计
|
|
|
if(wlyyJobConfigVO.getIncrementInterval()!=1){
|
|
|
return true;
|
|
|
}
|
|
|
//如果为空或者等3说明纪要生成到达量也要生成增量
|
|
|
if (StringUtils.isEmpty(wlyyJobConfigVO.getTimeLevel()) || Integer.valueOf(wlyyJobConfigVO.getTimeLevel()) == 3) {
|
|
|
return false;
|
|
|
}
|
|
|
//如果不为空 并且是1或者2 说明只要增量或者只要到达量
|
|
|
if (!(StringUtils.isEmpty(wlyyJobConfigVO.getTimeLevel())) && Integer.valueOf(wlyyJobConfigVO.getTimeLevel()) == i) {
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
private boolean breakPoint(JobConfigDO wlyyJobConfigVO, int i) {
|
|
|
//该方法使用于每日统计
|
|
|
if(wlyyJobConfigVO.getIncrementInterval()!=1){
|
|
|
return true;
|
|
|
}
|
|
|
//如果为空或者等3说明纪要生成到达量也要生成增量
|
|
|
if (StringUtils.isEmpty(wlyyJobConfigVO.getTimeLevel()) || Integer.valueOf(wlyyJobConfigVO.getTimeLevel()) == 3) {
|
|
|
return false;
|
|
|
}
|
|
|
//如果不为空 并且是1或者2 说明只要增量或者只要到达量
|
|
|
if (!(StringUtils.isEmpty(wlyyJobConfigVO.getTimeLevel())) && Integer.valueOf(wlyyJobConfigVO.getTimeLevel()) == i) {
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
public void productDataByDay(Integer day) throws Exception {
|
|
|
List<JobConfigDO> quartzJobConfigs = wlyyJobConfigDao.findByIds();
|
|
|
for (JobConfigDO quartzJobConfig : quartzJobConfigs) {
|
|
|
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
for (int i = 1; i <= day; i++) {
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(wlyyJobConfigVO, j)) continue;
|
|
|
params.put("timeLevel", j + "");
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", getYesterday(0 - i - 1));
|
|
|
params.put("endTime", getYesterday(0 - i));
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
Thread.sleep(sleepTime);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static String getYesterday(Integer day) {
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
cal.add(Calendar.DATE, day);
|
|
|
String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
|
|
|
return yesterday;
|
|
|
}
|
|
|
|
|
|
public void productDataByOneDay(String yesterday) throws Exception {
|
|
|
String sql = "select * from wlyy_job_config_new a where a.del='1' and a.id !=11 order by a.id asc";
|
|
|
SimpleDateFormat dataSimple = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
Date date = dataSimple.parse(yesterday);
|
|
|
if (date == null) {
|
|
|
throw new Exception("时间格式错误");
|
|
|
}
|
|
|
Calendar calendar = new GregorianCalendar();
|
|
|
calendar.setTime(date);
|
|
|
calendar.add(calendar.DATE, -1);//把日期往后增加一天.整数往后推,负数往前移动
|
|
|
Date nowDate = calendar.getTime(); //这个时间就是日期往后推一天的结果
|
|
|
String daybefore = new SimpleDateFormat("yyyy-MM-dd").format(nowDate.getTime());
|
|
|
List<JobConfigDO> quartzJobConfigs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(JobConfigDO.class));
|
|
|
for (JobConfigDO quartzJobConfig : quartzJobConfigs) {
|
|
|
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", daybefore);
|
|
|
params.put("endTime", yesterday);
|
|
|
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(wlyyJobConfigVO, j)) continue;
|
|
|
params.put("timeLevel", j + "");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
Thread.sleep(sleepTime);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @param quartzJobConfig
|
|
|
* @return
|
|
|
* @throws ClassNotFoundException
|
|
|
*/
|
|
|
private Class getRightClass(JobConfigDO quartzJobConfig) throws ClassNotFoundException {
|
|
|
return Class.forName(quartzJobConfig.getJobClass());
|
|
|
}
|
|
|
|
|
|
public void productDataByOneDayWithId(String yesterday, String id) throws Exception {
|
|
|
SimpleDateFormat dataSimple = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date date = dataSimple.parse(yesterday);
|
|
|
if (date == null) {
|
|
|
throw new Exception("时间格式错误");
|
|
|
}
|
|
|
Calendar calendar = new GregorianCalendar();
|
|
|
calendar.setTime(date);
|
|
|
calendar.add(calendar.DATE, -1);//把日期往后增加一天.整数往后推,负数往前移动
|
|
|
Date nowDate = calendar.getTime(); //这个时间就是日期往后推一天的结果
|
|
|
String daybefore = new SimpleDateFormat("yyyy-MM-dd").format(nowDate.getTime());
|
|
|
|
|
|
JobConfigDO quartzJobConfig = wlyyJobConfigDao.findById(id);
|
|
|
if (quartzJobConfig == null) {
|
|
|
throw new Exception("id不存在");
|
|
|
}
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", daybefore);
|
|
|
params.put("endTime", yesterday);
|
|
|
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(wlyyJobConfigVO, j)) continue;
|
|
|
params.put("timeLevel", j + "");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
Thread.sleep(sleepTime);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void productDataByDayAndId(Integer day, String id) throws Exception {
|
|
|
JobConfigDO quartzJobConfig = wlyyJobConfigDao.findById(id);
|
|
|
if (quartzJobConfig == null) {
|
|
|
throw new Exception("id不存在");
|
|
|
}
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
for (int i = 1; i <= day; i++) {
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", getYesterday(0 - i - 1));
|
|
|
params.put("endTime", getYesterday(0 - i));
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
if (breakPoint(wlyyJobConfigVO, j)) continue;
|
|
|
params.put("timeLevel", j + "");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
Thread.sleep(sleepTime);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void productDataByDayToDay(String start, String end) throws Exception {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date startDate = sdf.parse(start);
|
|
|
Date endDate = sdf.parse(end);
|
|
|
if (startDate.after(endDate)) {
|
|
|
throw new Exception("日期参数错误");
|
|
|
}
|
|
|
int day = daysBetween(startDate, endDate);
|
|
|
for (int i = 0; i < day; i++) {
|
|
|
Cache.cleanCache();//清空缓存
|
|
|
// Thread.sleep(60000L);//休息60秒
|
|
|
productDataByOneDay(getYesterday(i, startDate));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static String getYesterday(Integer day, Date startDate) {
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
cal.setTime(startDate);
|
|
|
cal.add(Calendar.DAY_OF_MONTH, day);
|
|
|
String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
|
|
|
return yesterday;
|
|
|
}
|
|
|
|
|
|
public static int daysBetween(Date smdate, Date bdate) throws ParseException {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
smdate = sdf.parse(sdf.format(smdate));
|
|
|
bdate = sdf.parse(sdf.format(bdate));
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
cal.setTime(smdate);
|
|
|
long time1 = cal.getTimeInMillis();
|
|
|
cal.setTime(bdate);
|
|
|
long time2 = cal.getTimeInMillis();
|
|
|
long between_days = (time2 - time1) / (1000 * 3600 * 24);
|
|
|
|
|
|
return Integer.parseInt(String.valueOf(between_days));
|
|
|
}
|
|
|
|
|
|
|
|
|
public void productDataByDayToDayAndId(String start, String end, String ids) throws Exception {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date startDate = sdf.parse(start);
|
|
|
Date endDate = sdf.parse(end);
|
|
|
if (startDate.after(endDate)) {
|
|
|
throw new Exception("日期参数错误");
|
|
|
}
|
|
|
int day = daysBetween(startDate, endDate);
|
|
|
String[] idStr = ids.split(",");
|
|
|
for (int i = 0; i < day; i++) {
|
|
|
Cache.cleanCache();//清空缓存
|
|
|
for (String id : idStr) {
|
|
|
productDataByOneDayWithId(getYesterday(i, startDate), id);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//================================================没有休眠时间=============================================================
|
|
|
|
|
|
public void productDataByDayToDayAndIdNoSleep(String start, String end, String id, Long sleepTime) throws Exception {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date startDate = sdf.parse(start);
|
|
|
Date endDate = sdf.parse(end);
|
|
|
if (startDate.after(endDate)) {
|
|
|
throw new Exception("日期参数错误");
|
|
|
}
|
|
|
int day = daysBetween(startDate, endDate);
|
|
|
for (int i = 0; i < day; i++) {
|
|
|
Cache.cleanCache();//清空缓存
|
|
|
productDataByOneDayWithIdNoSleep(getYesterday(i, startDate), id, sleepTime);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void productDataByOneDayWithIdNoSleep(String yesterday, String id, Long sleepTime) throws Exception {
|
|
|
SimpleDateFormat dataSimple = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date date = dataSimple.parse(yesterday);
|
|
|
if (date == null) {
|
|
|
throw new Exception("时间格式错误");
|
|
|
}
|
|
|
Calendar calendar = new GregorianCalendar();
|
|
|
calendar.setTime(date);
|
|
|
calendar.add(calendar.DATE, -1);//把日期往后增加一天.整数往后推,负数往前移动
|
|
|
Date nowDate = calendar.getTime(); //这个时间就是日期往后推一天的结果
|
|
|
String daybefore = new SimpleDateFormat("yyyy-MM-dd").format(nowDate.getTime());
|
|
|
|
|
|
JobConfigDO quartzJobConfig = wlyyJobConfigDao.findById(id);
|
|
|
if (quartzJobConfig == null) {
|
|
|
throw new Exception("id不存在");
|
|
|
}
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", daybefore);
|
|
|
params.put("endTime", yesterday);
|
|
|
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
params.put("timeLevel", j + "");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
}
|
|
|
Thread.sleep(sleepTime * 1000L);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void productDataByOneDayNoSleep(String yesterday, Long sleepTime) throws Exception {
|
|
|
String sql = "select * from wlyy_job_config_new a where a.del='1' and a.id !=11 order by a.id asc";
|
|
|
SimpleDateFormat dataSimple = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
Date date = dataSimple.parse(yesterday);
|
|
|
if (date == null) {
|
|
|
throw new Exception("时间格式错误");
|
|
|
}
|
|
|
Calendar calendar = new GregorianCalendar();
|
|
|
calendar.setTime(date);
|
|
|
calendar.add(calendar.DATE, -1);//把日期往后增加一天.整数往后推,负数往前移动
|
|
|
Date nowDate = calendar.getTime(); //这个时间就是日期往后推一天的结果
|
|
|
String daybefore = new SimpleDateFormat("yyyy-MM-dd").format(nowDate.getTime());
|
|
|
List<JobConfigDO> quartzJobConfigs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(JobConfigDO.class));
|
|
|
for (JobConfigDO quartzJobConfig : quartzJobConfigs) {
|
|
|
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", daybefore);
|
|
|
params.put("endTime", yesterday);
|
|
|
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
params.put("timeLevel", j + "");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
}
|
|
|
Thread.sleep(sleepTime * 1000L);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void startCleanCacheJob() throws Exception {
|
|
|
if (!quartzHelper.isExistJob(CacheCleanJob.jobKey)) {
|
|
|
quartzHelper.addJob(CacheCleanJob.class, CacheCleanJob.cron, CacheCleanJob.jobKey, new HashMap<>());
|
|
|
} else {
|
|
|
throw new Exception("已经启动");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void stopCleanCacheJob() throws Exception {
|
|
|
if (quartzHelper.isExistJob(CacheCleanJob.jobKey)) {
|
|
|
quartzHelper.removeJob(CacheCleanJob.jobKey);
|
|
|
} else {
|
|
|
throw new Exception("已经停止");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**************************************按周或按月****************************************/
|
|
|
public void productWeekByDayToDay(String start, String end,String id) throws Exception {
|
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date startDate = sdf.parse(start);
|
|
|
Date endDate = sdf.parse(end);
|
|
|
if (startDate.after(endDate)) {
|
|
|
throw new Exception("日期参数错误");
|
|
|
}
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
calendar.setTime(startDate);
|
|
|
int a = calendar.get(Calendar.YEAR);
|
|
|
calendar.clear();
|
|
|
calendar.setTime(endDate);
|
|
|
int b = calendar.get(Calendar.YEAR);
|
|
|
|
|
|
int startWeek = DateUtil.week(startDate);
|
|
|
if(a!=b){
|
|
|
Date lastDate = DateUtil.getYearLast(a);
|
|
|
int lastWeek = DateUtil.week(lastDate);
|
|
|
for(int i=startWeek;i<=lastWeek;i++){
|
|
|
start = getDate(startDate ,i,2);
|
|
|
end = getDate(startDate ,i,7);
|
|
|
productDataByOneDay2(DateUtil.getNextDay(sdf.parse(start),-1),DateUtil.getNextDay(sdf.parse(end),1),2,id);
|
|
|
}
|
|
|
startDate =lastDate;
|
|
|
}
|
|
|
startWeek = DateUtil.week(startDate);
|
|
|
int endWeek = DateUtil.week(endDate);
|
|
|
|
|
|
for(int i=startWeek;i<=endWeek;i++){
|
|
|
start = getDate(startDate ,i,2);
|
|
|
end = getDate(startDate ,i,7);
|
|
|
productDataByOneDay2(DateUtil.getNextDay(sdf.parse(start),-1),DateUtil.getNextDay(sdf.parse(end),1),2,id);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void productMonthByDayToDay(String start, String end,String id) throws Exception {
|
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date startDate = sdf.parse(start);
|
|
|
Date endDate = sdf.parse(end);
|
|
|
if (startDate.after(endDate)) {
|
|
|
throw new Exception("日期参数错误");
|
|
|
}
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
calendar.setTime(startDate);
|
|
|
int a = calendar.get(Calendar.YEAR);
|
|
|
int a1 = calendar.get(Calendar.MONTH);
|
|
|
calendar.clear();
|
|
|
calendar.setTime(endDate);
|
|
|
int b = calendar.get(Calendar.YEAR);
|
|
|
int b1 = calendar.get(Calendar.MONTH);
|
|
|
|
|
|
if(a!=b){
|
|
|
for(int i=a1;i<=12;i++){
|
|
|
// start = getDate(startDate ,i,1)+" 00:00:00";
|
|
|
// end = getDate(startDate ,i,7)+" 59:59:59";
|
|
|
start = DateUtil.getFristDayOfMonth(startDate);
|
|
|
end = DateUtil.getLastDayOfMonth(startDate);
|
|
|
productDataByOneDay2(start,end,3,id);
|
|
|
}
|
|
|
a1=1;
|
|
|
calendar.clear();
|
|
|
calendar.set(Calendar.YEAR, b);
|
|
|
startDate = calendar.getTime();
|
|
|
}
|
|
|
for(int i=a1;i<=b1;i++){
|
|
|
start = DateUtil.getFristDayOfMonth(startDate);
|
|
|
end = DateUtil.getLastDayOfMonth(startDate);
|
|
|
productDataByOneDay2(start,end,3,id);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void productDataByOneDay2(String start, String end,Integer incrementInterval,String id) throws Exception {
|
|
|
String condition = "";
|
|
|
if(!StringUtils.isEmpty(id)){
|
|
|
condition+=" and a.id in ("+id+") ";
|
|
|
}
|
|
|
if(incrementInterval!=null){
|
|
|
condition +=" and a.increment_interval ="+incrementInterval.intValue();
|
|
|
}
|
|
|
String sql = "select * from wlyy_job_config_new a where a.del='1' and a.id !=11 "+condition+" order by a.id asc";
|
|
|
List<JobConfigDO> quartzJobConfigs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(JobConfigDO.class));
|
|
|
for (JobConfigDO quartzJobConfig : quartzJobConfigs) {
|
|
|
|
|
|
WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
|
|
|
BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
|
|
|
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
params.put("jobConfig", wlyyJobConfigVO.getId());
|
|
|
params.put("incrementInterval", wlyyJobConfigVO.getIncrementInterval()!=null?String.valueOf(wlyyJobConfigVO.getIncrementInterval()):"1");
|
|
|
//往quartz框架添加任务
|
|
|
params.put("startTime", start);
|
|
|
params.put("endTime", end);
|
|
|
|
|
|
for (int j = 1; j <= 2; j++) {
|
|
|
// if (Integer.valueOf(wlyyJobConfigVO.getId()) > 86 && j == 2) continue;
|
|
|
params.put("timeLevel", j + "");
|
|
|
if (!StringUtils.isEmpty(quartzJobConfig.getJobClass())) {
|
|
|
quartzHelper.startNow(getRightClass(quartzJobConfig), quartzJobConfig.getId() + UUID.randomUUID().toString().replace("-", ""), params);
|
|
|
Thread.sleep(sleepTime);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public String getDate(Date date ,int weekNum,int day){
|
|
|
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
cal.setTime(date);
|
|
|
cal.set(Calendar.WEEK_OF_YEAR, weekNum); // 设置为2016年的第10周
|
|
|
cal.set(Calendar.DAY_OF_WEEK, day); // 1表示周日,2表示周一,7表示周六
|
|
|
return sf.format(cal.getTime());
|
|
|
}
|
|
|
}
|