| | |
| | | @Schema(description = "批次号", example = "B20260301001") |
| | | private String batchCode; |
| | | |
| | | @Schema(description = "是否出厂检验", example = "true") |
| | | @Schema(description = "是否出厂检验(出库流通当前固定为 false)", example = "false") |
| | | private Boolean oqcCheckFlag; |
| | | |
| | | @Schema(description = "备注", example = "备注") |
| | |
| | | @DecimalMin(value = "0.01", message = "发货数量必须大于 0") |
| | | private BigDecimal quantity; |
| | | |
| | | @Schema(description = "是否检验", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") |
| | | @NotNull(message = "是否检验不能为空") |
| | | @Schema(description = "是否检验(发货通知单当前固定为 false)", example = "false") |
| | | private Boolean oqcCheckFlag; |
| | | |
| | | @Schema(description = "备注", example = "备注") |
| | |
| | | */ |
| | | PREPARE(MesOrderStatusConstants.PREPARE, "草稿"), |
| | | /** |
| | | * 待检测(需要 OQC 检验时),对接 qc 模块的 MesQcOqcDO 后续流程 |
| | | * 待检测(历史 OQC 流程状态;当前出库流通免检,不再进入该状态) |
| | | * |
| | | * 对应 MesWmProductSalesService#submitProductSales 方法 |
| | | */ |
| | |
| | | /** |
| | | * 待拣货 |
| | | * |
| | | * 对应方法: |
| | | * 1. 不需要 OQC 检验时:MesWmProductSalesService#submitProductSales 方法 |
| | | * 2. 或 OQC 检验完成时:MesWmProductSalesService#confirmProductSales 方法 |
| | | * 对应 MesWmProductSalesService#submitProductSales 方法 |
| | | */ |
| | | APPROVING(MesOrderStatusConstants.APPROVING, "待拣货"), |
| | | /** |
| | |
| | | * 校验保存时的关联数据 |
| | | */ |
| | | private void validateLineSaveData(MesWmProductSalesLineSaveReqVO reqVO) { |
| | | // 出库流通关闭出货质检:销售出库行统一按免检处理。 |
| | | reqVO.setOqcCheckFlag(Boolean.FALSE); |
| | | // 校验主单存在且为草稿状态 |
| | | MesWmProductSalesDO sales = productSalesService.validateProductSalesExistsAndDraft(reqVO.getSalesId()); |
| | | // 校验物料存在 |
| | |
| | | MesWmSalesNoticeLineDO noticeLine = salesNoticeLineService.validateSalesNoticeLineExists( |
| | | noticeLineId, sales.getNoticeId()); |
| | | // 校验关键字段一致性:物料、数量、批次号 |
| | | // 注:OQC 检验标识允许在出库时独立设置,不强制与通知单一致 |
| | | if (ObjUtil.notEqual(reqVO.getItemId(), noticeLine.getItemId())) { |
| | | throw exception(WM_PRODUCT_SALES_LINE_NOTICE_LINE_ITEM_MISMATCH); |
| | | } |
| | |
| | | PageResult<MesWmProductSalesDO> getProductSalesPage(MesWmProductSalesPageReqVO pageReqVO); |
| | | |
| | | /** |
| | | * 提交销售出库单 |
| | | * <ul> |
| | | * <li>有 OQC 检验行:草稿 → 待检测</li> |
| | | * <li>无 OQC 检验行:草稿 → 待拣货</li> |
| | | * </ul> |
| | | * 提交销售出库单(出库流通免检:草稿 → 待拣货) |
| | | * |
| | | * @param id 编号 |
| | | */ |
| | |
| | | } |
| | | |
| | | private void validateLineSaveData(MesWmSalesNoticeLineSaveReqVO reqVO) { |
| | | // 发货通知单关闭出货质检:前端无需传 oqcCheckFlag,保存时统一按免检处理。 |
| | | reqVO.setOqcCheckFlag(Boolean.FALSE); |
| | | validateNoticeStatusDraft(reqVO.getNoticeId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | |
| | |
| | | salesLine.setQuantity(noticeLine.getQuantity()); |
| | | salesLine.setBatchId(noticeLine.getBatchId()); |
| | | salesLine.setBatchCode(noticeLine.getBatchCode()); |
| | | // 出库流通关闭出货质检,历史通知单即使残留质检标识也不再向下游传递。 |
| | | salesLine.setOqcCheckFlag(Boolean.FALSE); |
| | | productSalesLineMapper.insert(salesLine); |
| | | } |
| | | |