后端学习笔记-Spring Task

Spring Task

介绍

cron表达式

cron表达式生成网站

使用

java 复制代码
/**
 *  自定义定时任务类
 */
@Component
@Slf4j
public class MyTask {
    /**
     * 测试定时任务
     */
    @Scheduled(cron = "0/5 * * * * ? ")
    public void myTask(){
        log.info("定时任务开始执行:{}",new Date());
    }
}

实例

定时处理订单状态

java 复制代码
/**
 * 订单状态定时任务
 */
@Component
@Slf4j
public class OrderTask {

    @Autowired
    private OrderMapper orderMapper;

    /**
     * 处理超时订单
     */
    @Scheduled(cron = "0 * * * * ? ")
    public void processTimeoutOrder() {
        log.info("处理超时订单:{}", LocalDateTime.now());
        List<Orders> orderlist = orderMapper.getByStatusAndOrderTime(Orders.PENDING_PAYMENT,
                LocalDateTime.now().plusMinutes(-15));
        if(orderlist != null && orderlist.size() > 0){
            List<Long> ids = orderlist.stream().map(x->{
                return x.getId();
            }).collect(Collectors.toList());
            orderMapper.updateStatusCancelByIds(ids, Orders.CANCELLED,MessageConstant.ORDER_PAYMENT_TIMEOUT,LocalDateTime.now());
        }
    }

    /**
     * 处理一直派送订单
     */
    @Scheduled(cron = "0 0 1 * * ? ")
    public void processCompletionOrder() {
        log.info("定时处理派送订单:{}", LocalDateTime.now());
        List<Orders> orderlist = orderMapper.getByStatusAndOrderTime(Orders.DELIVERY_IN_PROGRESS,
                LocalDateTime.now().plusMinutes(-60));
        if(orderlist != null && orderlist.size() > 0){
            List<Long> ids = orderlist.stream().map(x->{
                return x.getId();
            }).collect(Collectors.toList());
            orderMapper.updateStatusCompletedByIds(ids, Orders.COMPLETED,LocalDateTime.now());
        }
    }
}
相关推荐
一隅论数智16 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi201616 小时前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本16 小时前
离散数学第六课
学习·离散数学
AI职业加油站18 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡18 小时前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光18 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊18 小时前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her118 小时前
并查集-听课笔记
笔记·算法·并查集
霍霍的袁18 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio