package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.AgvLocMast; import com.zy.asrs.entity.AgvWrkMast; import com.zy.asrs.service.AgvBasDevpService; import com.zy.asrs.service.AgvLocMastService; import com.zy.asrs.service.AgvWrkMastService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.AutoMoveHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; // 自动移库 @Slf4j @Component public class AutoMoveScheduler { @Autowired private AgvLocMastService agvLocMastService; @Autowired private AutoMoveHandler autoMoveHandler; @Autowired private AgvWrkMastService agvWrkMastService; @Autowired private AgvBasDevpService agvBasDevpService; // 调拨出库 // @Scheduled(cron = "0/2 * * * * ? ") private void execute(){ List agvLocMasts = agvLocMastService.selectList( new EntityWrapper() .isNotNull("loc_type") .ne("loc_type", "") .eq("floor", 1) .eq("loc_sts","F")); if (agvLocMasts.isEmpty()) { return; } for (AgvLocMast agvLocMast : agvLocMasts) { ReturnT returnT = autoMoveHandler.start(agvLocMast); } } /** * 自动调拨任务,从1楼调拨到2楼, * wrkSts 22.调拨待分配 * ioType 108.自动调拨 * crnNo :2目标楼层 */ @Scheduled(cron = "0/2 * * * * ? ") private void execute2(){ List agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper() .eq("wrk_sts", 22) .andNew().eq("io_type",108) .andNew() .eq("crn_no",2).or().eq("crn_no",3) .orderBy("appe_time",true) ); if (agvWrkMastList.isEmpty()) { return; } for (AgvWrkMast agvWrkMast : agvWrkMastList) { try{ autoMoveHandler.start2(agvWrkMast); } catch (Exception e){ log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage()); } } } // @Scheduled(cron = "0/2 * * * * ? ") private void execute5(){ List agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper() .eq("wrk_sts", 22) .andNew().eq("io_type",108) .eq("crn_no",3) .orderBy("appe_time",true) ); if (agvWrkMastList.isEmpty()) { return; } for (AgvWrkMast agvWrkMast : agvWrkMastList) { try{ autoMoveHandler.start2(agvWrkMast); } catch (Exception e){ log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage()); } } } // 调拨出库 @Scheduled(cron = "0/2 * * * * ? ") private void execute3(){ List agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper() .eq("wrk_sts", 22) .andNew().eq("io_type",111) ); if (agvWrkMastList.isEmpty()) { return; } for (AgvWrkMast agvWrkMast : agvWrkMastList) { try{ autoMoveHandler.start3(agvWrkMast); } catch (Exception e){ log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage()); } } } // 空板自动回库 库位-接驳点 //@Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack(){ // 查询 不为1楼的空货架 List agvLocMasts = agvLocMastService.selectList( new EntityWrapper() .ne("floor", 1) .eq("loc_sts","D") .eq("loc_type1",3)); if (agvLocMasts.isEmpty()) { return; } for (AgvLocMast agvLocMast : agvLocMasts) { try{ autoMoveHandler.autoEmptyBack(agvLocMast); } catch (Exception e){ log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库 库位-接驳点,处理失败:===》异常原因:"+e.getMessage()); } } } // 空板自动回库 接驳点 - 1楼库位 @Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack3(){ // 工作档为201 且 入出库类型为109 List agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper() .eq("wrk_sts", 214) .eq("loc_no","") .eq("io_type",113)); if (agvWrkMastList.isEmpty()) { return; } for (AgvWrkMast agvWrkMast : agvWrkMastList) { try{ autoMoveHandler.autoEmptyBack3(agvWrkMast); } catch (Exception e){ log.error("工作号"+agvWrkMast.getWrkNo()+"空板自动回库 接驳点 - 1楼库位,处理失败:===》异常原因:"+e.getMessage()); } } } // 空板自动回库 // @Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack2(){ // 查询 不为1楼的空货架 List agvLocMasts = agvLocMastService.selectList( new EntityWrapper() .ne("floor", 1) .eq("loc_sts","D") .eq("loc_type1",3)); if (agvLocMasts.isEmpty()) { return; } for (AgvLocMast agvLocMast : agvLocMasts) { try{ autoMoveHandler.autoEmptyBack2(agvLocMast); } catch (Exception e){ log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库,处理失败:===》异常原因:"+e.getMessage()); } } } /** * 空板自动回库 * 库位-接驳点 库位-吸塑车间 * 每层最大 在 回库数量限制5条 * 优先选择先到接驳位(接驳位可入) 后选择直接回库 */ @Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack4(){ // 查询 不为1楼的空货架 List agvLocMasts = agvLocMastService.selectList( new EntityWrapper() .ne("floor", 1) .eq("loc_sts","D") .eq("loc_type1",3)); if (agvLocMasts.isEmpty()) { return; } for (AgvLocMast agvLocMast : agvLocMasts) { try{ autoMoveHandler.autoEmptyBack4(agvLocMast); } catch (Exception e){ log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库 库位-接驳点 库位-吸塑车间,处理失败:===》异常原因:"+e.getMessage()); } } } /** * 站点是否自动 * 自动: 生成 109 自动回流 * 手动: 生成 113 手动回流 * 优先选择先到接驳位(接驳位可入) 后选择直接回库 */ @Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack5(){ List agvBasDevps = agvBasDevpService.selectList(new EntityWrapper() .ne("floor", 1) .eq("loc_sts", "F") .like("dev_no", "DB")); if (agvBasDevps.isEmpty()) { return; } for (AgvBasDevp agvBasDevp : agvBasDevps) { try{ autoMoveHandler.autoEmptyBack5(agvBasDevp); } catch (Exception e){ log.error("站点号"+agvBasDevp.getDevNo()+"站点是否自动 优先选择先到接驳位(接驳位可入) 后选择直接回库,处理失败:===》异常原因:"+e.getMessage()); } } } /** * 检测1楼接驳点 * 手动: 生成 113 手动回流 */ @Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack6(){ List agvBasDevps = agvBasDevpService.selectList(new EntityWrapper() .eq("floor", 1) .eq("loc_sts", "F") .like("dev_no", "DB")); if (agvBasDevps.isEmpty()) { return; } for (AgvBasDevp agvBasDevp : agvBasDevps) { try{ autoMoveHandler.autoEmptyBack6(agvBasDevp); } catch (Exception e){ log.error("站点号"+agvBasDevp.getDevNo()+"检测1楼接驳点 生成 113 手动回流,处理失败:===》异常原因:"+e.getMessage()); } } } }