| | |
| | | throw new CoolException("条码组托档已存在:" + barcode); |
| | | } |
| | | |
| | | // 检查是否有任何工作档(空托盘不应该有任何工作档,包括已完成的工作档) |
| | | int wrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", barcode)); |
| | | if (wrkMastCount != 0) { |
| | | log.warn("条码任务档已存在,不是空托盘:{}", barcode); |
| | | throw new CoolException("条码任务档已存在:" + barcode); |
| | | } |
| | | |
| | | // 检查库位上是否有该条码 |
| | | if (locCache != null && !Cools.isEmpty(locCache.getBarcode()) && locCache.getBarcode().equals(barcode)) { |
| | | log.warn("空托盘入库时,库位上已有该条码,不允许呼叫AGV:库位={},条码={}", sourceSite, barcode); |
| | | throw new CoolException("条码在库,请更换条码" + barcode); |
| | | } |
| | | |
| | | |
| | | // 通过所有检查,确认为空托盘,设置为空托入库 |
| | | ioType = 10; |
| | | log.info("确认为空托盘,设置为空托入库,条码:{},ioType:{}", barcode, ioType); |
| | |
| | | default: |
| | | throw new CoolException("入库类型错误,type:" + type); |
| | | } |
| | | |
| | | // 统一校验:在所有AGV呼叫场景中都需要检查以下条件,有任何一个满足则不允许呼叫AGV |
| | | |
| | | // 1. 校验库位上的条码是否在库:检查LocCache表上是否有该条码,且该条码在LocDetl库存中 |
| | | // 注意:空托盘入库(type=3)不校验库存明细,只在校验库位上是否有条码(已在case 3中处理) |
| | |
| | | throw new CoolException("条码在库,请更换条码" + barcode); |
| | | } |
| | | } |
| | | }else { |
| | | // 检查库位上是否有该条码 |
| | | if (locCache != null && !Cools.isEmpty(locCache.getBarcode()) && locCache.getBarcode().equals(barcode)) { |
| | | log.warn("空托盘入库时,库位上已有该条码,不允许呼叫AGV:库位={},条码={}", sourceSite, barcode); |
| | | throw new CoolException("条码在库,请更换条码" + barcode); |
| | | } |
| | | } |
| | | |
| | | // 2. 校验工作档中运行中的托盘码:检查是否有未完成的工作档(wrk_sts不等于4、14和15) |
| | | // 4=入库完成,14=已出库未确认,15=出库更新完成 |
| | | int runningWrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>() |
| | | .eq("barcode", barcode) |
| | | .notIn("wrk_sts", Arrays.asList(4L, 14L, 15L))); // 不等于入库完成(4)和出库完成(14,15) |
| | | if (runningWrkMastCount > 0) { |
| | | log.warn("AGV呼叫时,托盘码在工作档中运行中,不允许呼叫AGV:{}", barcode); |
| | | // 2. 校验工作档中运行中的托盘码 |
| | | int wrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", barcode)); |
| | | if (wrkMastCount != 0) { |
| | | log.warn("条码在工作档已存在:{}", barcode); |
| | | throw new CoolException("条码在工作档,请更换条码:" + barcode); |
| | | } |
| | | |
| | | // 3. 校验AGV任务列表中未完成的托盘码:检查是否有未完成的AGV任务(is_deleted=0且wrk_sts不等于4、14和15) |
| | | // 4=入库完成,14=已出库未确认,15=出库更新完成 |
| | | |
| | | // 3. 校验AGV任务列表中未完成的托盘码:检查是否有未完成的AGV任务(is_deleted=0) |
| | | int unfinishedTaskCount = taskService.selectCount(new EntityWrapper<Task>() |
| | | .eq("barcode", barcode) |
| | | .eq("is_deleted", 0) |
| | | .notIn("wrk_sts", Arrays.asList(4L, 14L, 15L))); // 不等于入库完成(4)和出库完成(14,15) |
| | | .eq("is_deleted", 0)); |
| | | if (unfinishedTaskCount > 0) { |
| | | log.warn("AGV呼叫时,托盘码在AGV任务列表中未完成,不允许呼叫AGV:{}", barcode); |
| | | log.warn("AGV呼叫时,条码在AGV任务档,不允许呼叫AGV:{}", barcode); |
| | | throw new CoolException("条码在AGV任务档,请更换条码:" + barcode); |
| | | } |
| | | |