| | |
| | | // 验证设备站点 |
| | | DeviceSite deviceSite = validateDeviceSite(param); |
| | | |
| | | // 空板入库:与非空板同一入口,仅不校验组托,只做分配库位、建任务、更新库位 |
| | | // 空板入库:与非空板同一入口;createInTaskForEmptyPallet 内会拦截已组托托盘 |
| | | if (param.getIoType() != null && param.getIoType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) { |
| | | return createInTaskForEmptyPallet(param); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 空板入库:与非空板同一流程(校验站点、分配库位、建任务、更新库位),仅不校验组托、不写任务明细、不更新组托状态。 |
| | | * 空板入库:与非空板同一流程(校验站点、分配库位、建任务、更新库位),不写任务明细、不更新组托状态。 |
| | | * 已组托(入库中/任务执行中)的托盘禁止走本流程,应使用满板入库。 |
| | | * 由 createInTask 在 ioType=空板时调用;需在设备站点中配置 type=10(空板入库)的站点路径。 |
| | | */ |
| | | private InTaskMsgDto createInTaskForEmptyPallet(TaskInParam sourceParam) { |
| | |
| | | |
| | | // 校验设备站点(需配置 type=10 空板入库的站点) |
| | | DeviceSite deviceSite = validateDeviceSite(param); |
| | | |
| | | // 已组托:与 createInTask 满板分支一致,仅允许入库中/任务执行中的组托单参与校验 |
| | | WaitPakin palletized = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() |
| | | .eq(WaitPakin::getBarcode, barcode) |
| | | .in(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val)); |
| | | if (palletized != null) { |
| | | throw new CoolException("barcode=" + barcode + ": 托盘已经组托,不能空板入库"); |
| | | } |
| | | |
| | | // 检查该托盘号是否已有空板入库任务,有则复用 |
| | | Task existingInTask = taskService.getOne(new LambdaQueryWrapper<Task>() |
| | |
| | | |
| | | if (Objects.isNull(task)) { |
| | | log.error("任务不存在或已结束!任务编号:{},批次号:{}", taskNo, taskCode); |
| | | throw new CoolException("任务不存在或已结束!!任务编号:" + taskNo + ",批次号:" + taskCode); |
| | | // throw new CoolException("任务不存在或已结束!!任务编号:" + taskNo + ",批次号:" + taskCode); |
| | | return R.parse("201-任务不存在或已结束!!任务编号:" + taskNo + ",批次号:" + taskCode); |
| | | } |
| | | |
| | | // 验证批次号和任务号的关联关系 |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R allocateLocation(String barcode, String staNo, Integer type, Boolean full, BigDecimal weight) { |
| | | log.info("========== 开始申请入库任务,分配库位 =========="); |
| | | log.info("料箱码:{},入库站点:{},入库类型:{},空板:{},重量:{}", barcode, staNo, type, full, weight); |
| | | log.info("料箱码:{},入库站点:{},入库类型:{},满板信号:{},重量:{}", barcode, staNo, type, full, weight); |
| | | |
| | | BigDecimal weightScaled = null; |
| | | if (weight != null) { |
| | | weightScaled = weight.setScale(4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | // 统一走 createInTask:空板(full=true)仅不校验组托,仍校验站点、分配库位、建任务;非空板需组托 |
| | | // 统一走 createInTask:满板(full=true)走普通入库;空/false 走空板入库 |
| | | TaskInParam param = new TaskInParam(); |
| | | param.setBarcode(barcode); |
| | | param.setSourceStaNo(staNo); |
| | | param.setLocType1(type != null ? type : 1); |
| | | param.setUser(1L); |
| | | param.setIoType(Boolean.TRUE.equals(full) ? TaskType.TASK_TYPE_EMPITY_IN.type : TaskType.TASK_TYPE_IN.type); |
| | | // param.setIoType(Boolean.TRUE.equals(full) ? TaskType.TASK_TYPE_EMPITY_IN.type : TaskType.TASK_TYPE_IN.type); |
| | | param.setIoType(Boolean.TRUE.equals(full) ? TaskType.TASK_TYPE_IN.type : TaskType.TASK_TYPE_EMPITY_IN.type); |
| | | param.setWeight(weightScaled); |
| | | |
| | | InTaskMsgDto msgDto = createInTask(param); |