package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.OrderPakout; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.DigitalTwinService; import com.zy.asrs.service.OrderPakoutService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.handler.JlerHandler; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @author pang.jiabao * @description 济南二机床刀具库相关定时任务 * @createDate 2025/11/18 14:18 */ @Component public class JlerScheduler { @Resource private JlerHandler jlerHandler; @Resource private WrkMastService wrkMastService; @Resource private OrderPakoutService orderPakoutService; /** * 货物到达入库口接驳位开始呼叫料箱机器人 */ @Scheduled(cron = "0/5 * * * * ? ") private void callAgvToWarehouse() { List wrkMastList = wrkMastService.selectList(new EntityWrapper().eq("mk", "Y").eq("wrk_sts", 2)); for (WrkMast wrkMast : wrkMastList) { jlerHandler.callAgvToWarehouse(wrkMast); } } /** * 根据出库订单自动生成出库任务 */ @Scheduled(cron = "0/8 * * * * ? ") private void autoGenerateOutTask() { OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper().eq("settle", 1)); if (orderPakout == null) { return; } jlerHandler.autoGenerateOutTask(orderPakout); } @Resource private BasDevpService basDevpService; /** * 根据出库任务自动呼叫料箱机器人搬运 */ @Scheduled(cron = "0/10 * * * * ? ") private void outboundCallBinRobot() { // 判断输送线有多少货 int loadingCount = basDevpService.selectCount(new EntityWrapper().eq("loading", "Y")); // 判断有多少出库任务在执行 int execCount = wrkMastService.selectCount(new EntityWrapper().eq("wrk_sts", 12)); // 判断还能发几个出库任务 int count = 6 - loadingCount - execCount; if (count <= 0) { return; } List wrkMastList = wrkMastService.selectList(new EntityWrapper().setSqlSelect("TOP " + count + " *").eq("source_sta_no", 101).eq("wrk_sts", 11).orderBy("io_type")); for (WrkMast wrkMast : wrkMastList) { jlerHandler.outboundCallBinRobot(wrkMast); } } @Resource private DigitalTwinService digitalTwinService; /** * 定时统计每天剩余库存 */ @Scheduled(cron = "0 50 23 * * ?") private void locNumCount() { digitalTwinService.locNumCount(); } }