4 小时以前 6d910029b6c81db0a2b66caa66952781397b153a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package cn.iocoder.yudao.module.mes.service.wm.transaction.dto;
 
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
 
import java.math.BigDecimal;
import java.time.LocalDateTime;
 
/**
 * MES 库存事务 创建 Request DTO
 */
@Data
@Accessors(chain = true)
public class MesWmTransactionSaveReqDTO {
 
    // ===== 事务核心 =====
 
    /**
     * 事务类型
     *
     * 枚举 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum}
     */
    @NotNull(message = "事务类型不能为空")
    private Integer type;
 
    // ===== 业务来源 =====
 
    /**
     * 业务类型
     *
     * 对应 {@link cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants}
     */
    @NotNull(message = "业务类型不能为空")
    private Integer bizType;
    /**
     * 业务主单 ID
     */
    @NotNull(message = "业务主单 ID 不能为空")
    private Long bizId;
    /**
     * 业务单号
     */
    @NotNull(message = "业务单号不能为空")
    private String bizCode;
    /**
     * 业务行 ID
     */
    @NotNull(message = "业务行 ID 不能为空")
    private Long bizLineId;
 
    // ===== 物料维度 =====
 
    /**
     * 物料 ID
     */
    @NotNull(message = "物料 ID 不能为空")
    private Long itemId;
    /**
     * 变动数量(入库为正数,出库为负数)
     */
    @NotNull(message = "变动数量不能为空")
    private BigDecimal quantity;
    /**
     * 批次 ID
     */
    private Long batchId;
    /**
     * 批次号
     */
    private String batchCode;
 
    // ===== 库存位置 =====
 
    /**
     * 仓库 ID
     */
    @NotNull(message = "仓库 ID 不能为空")
    private Long warehouseId;
    /**
     * 库区 ID
     */
    @NotNull(message = "库区 ID 不能为空")
    private Long locationId;
    /**
     * 库位 ID
     */
    @NotNull(message = "库位 ID 不能为空")
    private Long areaId;
 
    // ===== 台账补充字段(入库时用于初始化 MesWmMaterialStockDO) =====
 
    /**
     * 供应商 ID(采购入库场景)
     */
    private Long vendorId;
    /**
     * 入库时间(为空默认当前时间)
     */
    private LocalDateTime receiptTime;
 
    // ===== 关联 =====
 
    /**
     * 指定库存记录 ID(出库场景优先使用,避免重新匹配库存记录)
     */
    private Long materialStockId;
 
    /**
     * 关联事务 ID(成对事务中,入库事务关联出库事务)
     */
    private Long relatedTransactionId;
 
    // ===== 可选控制(非存储字段) =====
 
    /**
     * 是否校验库存充足(默认 true;线边库消耗等场景设 false 允许负库存)
     */
    private Boolean checkFlag;
 
    // ===== 库存状态控制(非存储字段) =====
 
    /**
     * 指定库存状态(入库时显式指定;为空时按数量自动判定:≤0 已出库,>0 合格库)
     * <p>
     * 生产线扫码入库传 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmStockStateEnum#TEMP},
     * 入库先入暂存库待质检。
     */
    private Integer stockState;
 
}