package cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDate; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; /** * 库存调整(自定义出入库)Request VO */ @Schema(description = "管理后台 - 库存调整 Request VO") @Data public class MesWmMaterialStockAdjustReqVO { @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "物料ID不能为空") private Long itemId; @Schema(description = "仓库ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "仓库ID不能为空") private Long warehouseId; @Schema(description = "库区ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "库区ID不能为空") private Long locationId; @Schema(description = "库位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "库位ID不能为空") private Long areaId; // ========== 批次相关字段 ========== @Schema(description = "批次ID(选择已有批次时传入)", example = "1") private Long batchId; @Schema(description = "批次号(新建批次时传入,系统自动创建批次记录)", example = "BATCH001") private String batchCode; @Schema(description = "生产日期(新建批次时传入)", example = "2025-01-01") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate produceDate; @Schema(description = "有效期(新建批次时传入)", example = "2026-01-01") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate expireDate; @Schema(description = "供应商ID", example = "1") private Long vendorId; @Schema(description = "生产批号", example = "LOT001") private String lotNumber; @Schema(description = "质量状态(0-待检验 1-合格 2-不合格,支持数字或字符串)", example = "1") private Object qualityStatus; // ========== 其他字段 ========== @Schema(description = "数量(必须大于0)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") @NotNull(message = "数量不能为空") @Positive(message = "数量必须大于0") private BigDecimal quantity; @Schema(description = "原因", example = "盘点调整") private String reason; }