| | |
| | | } |
| | | |
| | | String code = "AUTO-PR-" + produce.getId(); |
| | | MesWmProductReceiptDO existing = productReceiptMapper.selectByCode(code); |
| | | MesWmProductReceiptDO existing = productReceiptMapper.selectByProduceId(produce.getId()); |
| | | if (existing == null) { |
| | | existing = productReceiptMapper.selectByCode(code); // 兼容执行迁移 SQL 前生成的历史单据 |
| | | } |
| | | if (existing != null) { |
| | | return existing.getId(); |
| | | } |
| | |
| | | .code(code) |
| | | .name("生产完成自动入库-" + workOrderCode) |
| | | .workOrderId(produce.getWorkOrderId()) |
| | | .produceId(produce.getId()) |
| | | .itemId(firstMdmItemId) |
| | | .receiptDate(LocalDateTime.now()) |
| | | .status(MesWmProductReceiptStatusEnum.PREPARE.getStatus()) |
| | |
| | | throw exception(WM_PRODUCT_RECPT_NO_DETAIL); |
| | | } |
| | | |
| | | // 创建库存事务 |
| | | createTransactionList(receipt, details); |
| | | // 自动入库单来源产出单已按工艺路线仓库记账,此处仅完成业务单据,避免实际仓库重复入库。 |
| | | // 手工创建的产品入库单仍执行“虚拟线边库 OUT + 实际仓库 IN”。 |
| | | if (receipt.getProduceId() == null) { |
| | | createTransactionList(receipt, details); |
| | | } |
| | | |
| | | // 更新收货单状态 |
| | | productReceiptMapper.updateById(new MesWmProductReceiptDO() |