2026-09-04 335f64189bdf0fd51864ac3873f6199e94282c27
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
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 时,入库事务始终创建新的库存记录,不查找已有记录
     * 用于退料等场景,需要为每次退料创建独立的库存记录
     */
    private Boolean forceCreateNewStock;
 
    /**
     * 是否校验库存充足(仅出库事务有效)
     *
     * 为 true(默认)时,出库数量不能超过现有库存
     * 为 false 时,允许负库存(如虚拟线边库场景)
     */
    private Boolean checkFlag;
 
}