package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.OrderMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.task.handler.GhjtHandler; import com.zy.system.entity.Config; import com.zy.system.mapper.ConfigMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @author pang.jiabao * @description 冠鸿江铜相关定时任务 * @createDate 2024/7/3 9:07 */ @Slf4j @Component public class GhjtScheduler { @Resource private GhjtHandler ghjtHandler; @Resource private WrkMastMapper wrkMastMapper; @Resource private OrderMapper orderMapper; @Resource private ConfigMapper configMapper; // 备货(根据出库单,把要出的货提前放到靠近出库口位置) // @Scheduled(cron = "0/4 * * * * ? ") public void stockUp() { // 查询待出库订单 List orderList = orderMapper.selectList(new EntityWrapper().eq("settle", 1)); // ghjtHandler.stockUp(); List orders = orderMapper.selectComplete(); for (Order order : orders) { try { // ghjtHandler.OutBoundCompleteReport(order); } catch (Exception e) { log.error("出库订单完成则上报MES失败,异常信息:" + e); } } } // 下发出库任务给GWCS(从出库码头到出库口) @Scheduled(cron = "0/2 * * * * ? ") public void ckrwPushGwcs() { // 查询状态为13的工作档 List wrkMasts = wrkMastMapper.selectList(new EntityWrapper().in("io_type", 101,103,107,110,3).eq("wrk_sts", 13)); for (WrkMast wrkMast : wrkMasts) { try { ghjtHandler.startCkrwPushGwcs(wrkMast); } catch (Exception e) { log.error("下发出库任务给GWCS(从出库码头到出库口)失败,异常信息:" + e); } } } // 空闲理货 @Scheduled(cron = "0/5 * * * * ? ") public void autoTallyGoods() { // 系统配置界面启用 Config config = configMapper.selectConfigByCode("auto_tally_goods"); if (config == null || config.getStatus() == 0) { return; } // 四个换盘点,两个组盘点 // 先查任务目标站为 3045/3044和3041/3040的换盘组 如果有为空的组则可以出,有一个或两个都不能出 // todo 需新增两个入库路径 3046/3042 // 寻找两个能组盘的库位,库位状态为F,满足组盘条件 // 出库怎么出,才能把组好的盘一次出出去 // gwcs怎么保证两个都拆完了才请求组盘完成 } }