package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.Task; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.TaskService; import com.zy.asrs.task.handler.AgvHandler; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author pang.jiabao * @description AGV交互相关定时任务 * @createDate 2025/11/18 14:18 */ @Component public class AgvScheduler { @Resource private ConfigService configService; @Resource private AgvHandler agvHandler; @Resource private TaskService taskService; @Resource private WrkMastMapper wrkMastMapper; /** * 呼叫agv搬运 */ @Scheduled(cron = "0/5 * * * * ? ") private void callAgv() { // 查询待呼叫agv任务 List taskList = taskService.selectList(new EntityWrapper().eq("wrk_sts", 7)); if(taskList.isEmpty()) { return; } agvHandler.callAgv(taskList); } /** * 货物到达出库口,生成agv任务 */ @Scheduled(cron = "0/3 * * * * ? ") private void createAgvOutTasks() { // 获取呼叫agv配置 List configs = configService.selectList(new EntityWrapper().in("code", "eastCallAgvControl", "westCallAgvControl").eq("status", 1)); if(configs.isEmpty()) { return; } // 获取agv出库可用站点 List sites = new ArrayList<>(); for(Config config: configs) { String value = config.getValue(); if(Cools.isEmpty(value)) { continue; } String[] split = value.split(";"); sites.addAll(Arrays.asList(split)); } if(sites.isEmpty()) { return; } agvHandler.createAgvOutTasks(sites); } /** * 任务完成转历史 */ @Scheduled(cron = "0/10 * * * * ? ") private void moveTaskToHistory() { List taskList = taskService.selectList(new EntityWrapper().eq("wrk_sts", 9)); if(taskList.isEmpty()) { return; } agvHandler.moveTaskToHistory(taskList); } }