package zy.cloud.wms.common.service.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.manager.entity.Order; import zy.cloud.wms.manager.entity.Pakout; import zy.cloud.wms.manager.service.OrderService; import zy.cloud.wms.manager.service.PakoutService; import java.util.List; /** * 订单处理器 * Created by vincent on 2021/4/22 */ @Slf4j @Component public class OrderScheduler { @Autowired private OrderService orderService; @Autowired private PakoutService pakoutService; @Autowired private JdbcTemplate jdbcTemplate; /** * 订单转历史档处理器 */ @Transactional @Scheduled(cron = "0/10 * * * * ? ") public void orderBeLogExecute(){ List orders = orderService.selectList(new EntityWrapper().in("settle", 3, 6)); for (Order order : orders) { // 保存订单历史档 int saveOrderLog = jdbcTemplate.update("insert into man_order_log select * from man_order where id=" + order.getId()); if (saveOrderLog == 0) { throw new CoolException("保存订单历史档失败"); } // 保存订单明细历史档 int saveOrderDetlLog = jdbcTemplate.update("insert into man_order_detl_log select * from man_order_detl where order_id=" + order.getId()); if (saveOrderDetlLog == 0) { // throw new CoolException("保存订单明细历史档失败"); } // 删除订单 int delOrder = jdbcTemplate.update("delete from man_order where id=" + order.getId()); if (delOrder == 0) { throw new CoolException("删除订单失败"); } // 删除订单明细 int delOrderDetl = jdbcTemplate.update("delete from man_order_detl where order_id=" + order.getId()); if (delOrderDetl == 0) { // throw new CoolException("删除订单明细失败"); } } } /** * 取消订单处理器 */ @Transactional @Scheduled(cron = "0/10 * * * * ? ") public void cancelOrderExecute(){ List cancelOrders = orderService.selectList(new EntityWrapper().eq("settle", 5)); for (Order order : cancelOrders) { if (!pakoutService.delete(new EntityWrapper().eq("doc_num", order.getOrderNo()))) { throw new CoolException("删除拣货单失败"); } // 取消销售订单 List pakouts = pakoutService.selectList(new EntityWrapper().eq("doc_num", order.getOrderNo())); if (Cools.isEmpty(pakouts)){ // 修改单据状态 if (!orderService.updateSettle(order.getOrderNo(), 3L)) { throw new CoolException("修改单据状态失败"); } } } } }