package cn.exrick.xboot.your.schedulings; import cn.exrick.xboot.your.entity.*; import cn.exrick.xboot.your.service.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; //删除历史数据 @Component public class OrderDealScheduleImpl { @Autowired private IOrderTaskOriginalService iOrderTaskOriginalService; @Autowired private IOrderDetailOriginalService iOrderDetailOriginalService; @Autowired private IOrderTaskService iOrderTaskService; @Autowired private IOrderDetailService iOrderDetailService; @Autowired private IDuoZhengService iDuoZhengService; /** * 每天21点执行 * 1.将配送日期小于10天前的订单删除(t_order_task),同时删除相应订单详情数据(t_order_detail) * 2.将配送日期小于20天前的订单从原始订单数据表删除(t_order_original),同时删除相应原始订单详情数据(t_order_original_detail) */ @Scheduled(cron="0 0 21 * * ?")//每晚下午9点执行 //@Scheduled(cron="0 33 17 * * ?")//测试 public void execute(){ String day = getDay(-10); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lt("send_Date",day); iOrderTaskService.remove(wrapper); QueryWrapper wrapper2 = new QueryWrapper<>(); wrapper2.lt("create_time",day+" 00:00:00"); iOrderDetailService.remove(wrapper2); String day2 = getDay(-20); QueryWrapper wrapper3 = new QueryWrapper<>(); wrapper3.lt("create_time",day2+" 00:00:00"); iOrderTaskOriginalService.remove(wrapper3); QueryWrapper wrapper4 = new QueryWrapper<>(); wrapper4.lt("create_time",day2+" 00:00:00"); iOrderDetailOriginalService.remove(wrapper4); QueryWrapper wrapper5 = new QueryWrapper<>(); iDuoZhengService.remove(wrapper5); List list = iDuoZhengService.getYiHuDuoZheng(); iDuoZhengService.saveBatch(list); } private String getDay(int day){ Date dNow = new Date(); //当前时间 Calendar calendar = Calendar.getInstance(); //得到日历 calendar.setTime(dNow);//把当前时间赋给日历 calendar.add(Calendar.DAY_OF_MONTH, day); //设置为前n天 Date dBefore = calendar.getTime(); //得到前一天的时间 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式 String defaultStartDate = sdf.format(dBefore); return defaultStartDate; } }