package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Schema(description = "管理后台 - MES 产品入库单批量上架(勾选是否入库 + 仓库/库区/库位分配) Request VO") @Data public class MesWmProductReceiptStockReqVO { @Schema(description = "产品入库单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "产品入库单编号不能为空") private Long receiptId; @Schema(description = "行上架列表") @Valid private List rows; @Schema(description = "入库单行上架") @Data public static class Row { @Schema(description = "行编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "行编号不能为空") private Long lineId; @Schema(description = "是否入库", example = "true") private Boolean isStock; @Schema(description = "仓库/库区/库位分配明细(isStock=true 时必须,且数量之和=行收货数量)") @Valid private List details; } @Schema(description = "仓库/库区/库位分配明细") @Data public static class Detail { @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "仓库编号不能为空") private Long warehouseId; @Schema(description = "库区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "库区编号不能为空") private Long locationId; @Schema(description = "库位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "库位编号不能为空") private Long areaId; @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "50.00") @NotNull(message = "数量不能为空") private BigDecimal quantity; } }