| | |
| | | private WaitPakinItemService waitPakinItemService; |
| | | |
| | | /** |
| | | * 定时任务1:指定物料有库存时自动生成全版出库单(每 2 分钟) |
| | | * 定时任务1:指定物料有库存时自动生成全版出库单 |
| | | * 配置:AUTO_FULL_OUT_MATNR_CODE(物料编码)、AUTO_FULL_OUT_ENABLED(true 启用) |
| | | */ |
| | | @Scheduled(cron = "0 0/2 * * * ?") |
| | | @Scheduled(cron = "0/35 * * * * ?") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void autoCreateFullOutOrder() { |
| | | Config enabledConfig = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_FULL_OUT_ENABLED)); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 定时任务3:无订单组托 + 自动生成入库单(仅针对配置物料,每 2 分钟) |
| | | * 定时任务3:无订单组托 + 自动生成入库单(仅针对配置物料,) |
| | | * 先按配置物料与数量做无订单组托,再生成入库单并关联组托明细,便于 RCS 入库闭环。 |
| | | * 配置:AUTO_PAKIN_ON_ASN_ENABLED(true)、AUTO_FULL_OUT_MATNR_CODE、AUTO_PAKIN_QTY(数量) |
| | | */ |
| | | @Scheduled(cron = "0 0/2 * * * ?") |
| | | @Scheduled(cron = "0/35 * * * * ?") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void autoPakinOnInbound() { |
| | | Config enabledConfig = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_PAKIN_ON_ASN_ENABLED)); |
| | |
| | | waitPakin = mobileService.mergeItems(param, SYSTEM_USER_ID); |
| | | } catch (Exception e) { |
| | | log.warn("[无订单自动组托] 组托失败: {}", e.getMessage()); |
| | | return; |
| | | throw e; // 重新抛出,避免事务被标记 rollback-only 后仍尝试提交导致 UnexpectedRollbackException |
| | | } |
| | | // 2)自动生成入库单(一条明细,配置物料 + 数量) |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, null); |