| | |
| | | |
| | | @Autowired |
| | | private AgvProperties agvProperties; |
| | | |
| | | @Autowired |
| | | private WrkMastLogService wrkMastLogService; |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | // 4.入库完成 |
| | |
| | | return; |
| | | } |
| | | |
| | | // 检查工作档是否已完成或已转历史档 |
| | | boolean workCompleted = false; |
| | | if (outTask.getWrkNo() != null) { |
| | | // 检查工作档是否存在且已完成 |
| | | WrkMast wrkMast = wrkMastService.selectOne( |
| | | new EntityWrapper<WrkMast>().eq("wrk_no", outTask.getWrkNo()) |
| | | ); |
| | | |
| | | if (wrkMast != null) { |
| | | Long wrkSts = wrkMast.getWrkSts(); |
| | | // 出库任务完成状态:14(已出库未确认)或15(出库更新完成) |
| | | if (wrkSts != null && (wrkSts == 14L || wrkSts == 15L)) { |
| | | workCompleted = true; |
| | | log.debug("工作档{}已完成,状态:{}", outTask.getWrkNo(), wrkSts); |
| | | } |
| | | } else { |
| | | // 如果工作档不存在,检查历史档 |
| | | WrkMastLog wrkMastLog = wrkMastLogService.selectOne( |
| | | new EntityWrapper<WrkMastLog>().eq("wrk_no", outTask.getWrkNo()) |
| | | ); |
| | | if (wrkMastLog != null) { |
| | | long logWrkSts = wrkMastLog.getWrkSts(); |
| | | // 出库任务历史档完成状态:15(出库更新完成) |
| | | if (logWrkSts == 15L) { |
| | | workCompleted = true; |
| | | log.debug("工作档{}已转历史档并完结,历史档状态:{}", outTask.getWrkNo(), logWrkSts); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 检查是否有从该出库站点到缓存区的正在搬运任务(状态8:已呼叫AGV,正在搬运) |
| | | // 出库到缓存区的任务类型:101(全板出库)或110(空板出库) |
| | | List<Task> transportingTasks = taskService.selectList( |
| | | new EntityWrapper<Task>() |
| | | .eq("source_sta_no", outboundStaNo) // 源站点是出库站点 |
| | | .in("sta_no", cacheStations) // 目标站点是缓存区站点 |
| | | .eq("task_type", "agv") |
| | | .eq("wrk_sts", 8L) // 只检查正在搬运状态的任务 |
| | | .in("io_type", 101, 110) // 出库到缓存区的任务类型 |
| | | ); |
| | | |
| | | // 如果有正在搬运的任务,且工作档未完成,则不分配缓存库位 |
| | | if (!transportingTasks.isEmpty() && !workCompleted) { |
| | | log.info("出库站点{}到缓存区有{}个正在搬运的AGV任务,且工作档未完成,暂不分配缓存库位,等待搬运完成。出库任务ID:{}", |
| | | outboundStaNo, transportingTasks.size(), outTask.getId()); |
| | | return; // 有正在搬运的任务且工作档未完成,不分配缓存库位,等待下次检查 |
| | | } |
| | | |
| | | if (!transportingTasks.isEmpty() && workCompleted) { |
| | | log.info("出库站点{}到缓存区有{}个正在搬运的AGV任务,但工作档已完成或已转历史档,允许分配缓存库位。出库任务ID:{}", |
| | | outboundStaNo, transportingTasks.size(), outTask.getId()); |
| | | } |
| | | |
| | | // 选择缓存区目标站点(使用第一个可用站点,或可以优化为选择任务最少的站点) |
| | | String cacheStaNo = cacheStations.get(0); |
| | | |