| | |
| | | |
| | | /** |
| | | * 指定物料/空板自动化定时任务:可配置后 |
| | | * 1)有库存时自动生成全版出库单; |
| | | * 1)有库存时自动生成全板出库单; |
| | | * 2)该物料出库单自动下发任务; |
| | | * 3)RCS 入库通知时(可选)自动组托,数量可配置; |
| | | * 4)空板(D)库位定时自动生成空板出库任务并下发 RCS(AUTO_EMPTY_OUT_ENABLED)。 |
| | |
| | | private WaitPakinItemService waitPakinItemService; |
| | | |
| | | /** |
| | | * 定时任务1:指定物料有库存时自动生成全版出库单 |
| | | * 定时任务1:指定物料有库存时自动生成全板出库单 |
| | | * 配置:AUTO_FULL_OUT_MATNR_CODE(物料编码)、AUTO_FULL_OUT_ENABLED(true 启用) |
| | | */ |
| | | @Scheduled(cron = "0/35 * * * * ?") |
| | |
| | | String matnrCode = matnrConfig.getVal().trim(); |
| | | Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, matnrCode)); |
| | | if (matnr == null) { |
| | | log.warn("[自动全版出库单] 物料不存在: {}", matnrCode); |
| | | // log.warn("[自动全板出库单] 物料不存在: {}", matnrCode); |
| | | return; |
| | | } |
| | | // 已有该物料未下发的出库单则本轮不再生成,等下发完后再生成(避免重复) |
| | |
| | | try { |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, null); |
| | | if (StringUtils.isBlank(ruleCode)) { |
| | | log.warn("[自动全版出库单] 出库单编码规则未配置"); |
| | | log.warn("[自动全板出库单] 出库单编码规则未配置"); |
| | | break; |
| | | } |
| | | WkOrder order = new WkOrder(); |
| | |
| | | if (!asnOrderItemService.save(orderItem)) { |
| | | throw new CoolException("出库明细保存失败"); |
| | | } |
| | | log.info("[自动全版出库单] 已生成出库单: {}, 库位: {}, 物料: {}, 数量: {}", order.getCode(), loc.getCode(), matnrCode, sumQty); |
| | | log.info("[自动全板出库单] 已生成出库单: {}, 库位: {}, 物料: {}, 数量: {}", order.getCode(), loc.getCode(), matnrCode, sumQty); |
| | | } catch (Exception e) { |
| | | log.error("[自动全版出库单] 生成失败, 库位: {}, 物料: {}", loc.getCode(), matnrCode, e); |
| | | log.error("[自动全板出库单] 生成失败, 库位: {}, 物料: {}", loc.getCode(), matnrCode, e); |
| | | } |
| | | } |
| | | } |
| | |
| | | continue; |
| | | } |
| | | try { |
| | | taskService.completeFullOutStock(task.getId(), SYSTEM_USER_ID); |
| | | taskService.completeFullOutStock(task.getId(), SYSTEM_USER_ID, false); |
| | | log.info("[自动拣货完成] 任务: {}, 料箱: {}, 物料: {} 已自动确认出库并更新库存", task.getTaskCode(), task.getBarcode(), matnrCode); |
| | | } catch (Exception e) { |
| | | log.warn("[自动拣货完成] 任务: {} 处理失败: {}", task.getTaskCode(), e.getMessage()); |