废话不多少直接上代码参考
package com.pos.pos_conn.util.scheduler;
import java.util.Date;
import java.util.List;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Schedules;
import org.springframework.stereotype.Component;
import org.springframework.scheduling.annotation.Scheduled;
import com.pos.pos_conn.entity.LoggerSystem;
import com.pos.pos_conn.entity.WOrder;
import com.pos.pos_conn.mapper.LoggerSystemMapper;
import com.pos.pos_conn.mapper.WOrderMapper;
import com.pos.pos_conn.util.DateUtil;
import com.pos.pos_conn.util.ProjectPropertiesUtil;
import com.pos.pos_conn.util.PublicUtil;
import com.pos.pos_conn.util.SysLogAspect;
import com.pos.pos_conn.util.http.HttpRequest;
/**
* 定時器
* @author di_zhang
* @email sou_time@163.com
* @date 2019-08-26 (添加门市提货订单自动完成timingOrder,快递取货自动完成功能)
*/
@Component
public class Scheduler {
private static final Logger LOGGER = LogManager.getLogger(Scheduler.class);
private static final ProjectPropertiesUtil projectPropertiesUtil = ProjectPropertiesUtil.getInstance();
private static final String RELOAD_HTML = projectPropertiesUtil.getProperty(ProjectPropertiesUtil.RELOAD_HTML);
@Autowired
// 你的Mapper 类 也可以用service
private WOrderMapper orderMapper;
@Autowired
private LoggerSystemMapper loggerSysMapper;
public static Scheduler scheduler;
//初始化的时候创建对象
public void init() {
scheduler = this;
scheduler.orderMapper = this.orderMapper;
scheduler.loggerSysMapper = this.loggerSysMapper;
}
/**
* 每隔兩分鐘執行一次 延遲一秒執行 72小时自动结束未付款的订单
*/
@Scheduled(fixedRate = 1000 * 120)
public void timingOrder() {
List<WOrder> orderList = orderMapper.getOrderListByPast();
LOGGER.info("檢查需要失效的訂單條數:" + orderList.size() + "條, 檢查時間:" + DateUtil.getTime());
if (orderList.size() > 0) {
for (WOrder wOrder : orderList) {
String message = "使訂單ID為:" + wOrder.getId() + ",訂單編號為:" + wOrder.getOrderSn() + ",失效,失效時間為:"
+ DateUtil.getTime();
LOGGER.info(message);
orderMapper.past(wOrder.getId());
loggerSysMapper.insert(PublicUtil.resultLoggerSys(message, "System"));
}
} else {
LOGGER.info("沒有需要進行失效操作的訂單!");
}
}
/**
* 每10分钟自动执行 自动完成14天前快递发货的订单
*/
@Scheduled(fixedRate = 1000 * 600)
public void timingOrderEnd() {
List<WOrder> endOrderList = orderMapper.getTimingOrder();
LOGGER.info("檢查需要需要完成的快递发货的訂單條數:" + endOrderList.size() + "條, 檢查時間:" + DateUtil.getTime());
if (endOrderList.size() > 0) {
for (WOrder wOrder : endOrderList) {
String message = "使訂單ID為:" + wOrder.getId() + ",訂單編號為:" + wOrder.getOrderSn() + ",完成,完成時間為:"
+ DateUtil.getTime();
LOGGER.info(message);
orderMapper.endOrder(wOrder.getId());
loggerSysMapper.insert(PublicUtil.resultLoggerSys(message, "System"));
}
} else {
LOGGER.info("沒有需要進行完成操作的訂單!");
}
}
@Scheduled(fixedRate = 1000 * 300)
public void timingPageHtml() {
LOGGER.info("發送重載頁面GET請求至:" + RELOAD_HTML+",請求時間:"+ DateUtil.getTime());
HttpRequest.sendGet(RELOAD_HTML, "");
}
}