package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.Order; import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.service.AgvBasDevpService; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.AutoOrderHandler; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; /** * Created by vincent on 2020/7/7 */ @Component public class AutoOrderScheduler { private static final Logger log = LoggerFactory.getLogger(AutoOrderScheduler.class); @Autowired private OrderDetlMapper orderDetlMapper; @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Autowired private AgvBasDevpService agvBasDevpService; @Autowired private ConfigService configService; @Autowired private AutoOrderHandler autoOrderHandler; public void execute() { Config auto = configService.selectOne(new EntityWrapper().eq("code", "AUTO_ORDER")); if (auto != null && "NO".equals(auto.getValue())) { return; } List agvBasDevps = agvBasDevpService.selectList(new EntityWrapper().isNotNull("barcode").or().eq("barcode", "")); for (AgvBasDevp agvBasDevp : agvBasDevps) { List listAutoDetl = orderDetlMapper.listAutoDetl(agvBasDevp.getDevNo()); if (listAutoDetl != null && !listAutoDetl.isEmpty()) { for (String orderNo : listAutoDetl) { Order order = orderService.selectByNo(orderNo); if (order == null) { continue; } ReturnT start = autoOrderHandler.start(order); if (start.getCode() == ReturnT.FAIL_CODE) { log.error("自动接单失败,订单号:" + order.getOrderNo() + ",失败原因:" + start.getMsg()); } else { log.info("自动接单成功,订单号:" + order.getOrderNo()); break; } } } } } }