Commit 2f78c4df4fb590678b94218c90f93f885e5b60fb

Authored by YunaiV
1 parent 1fa8e1ac

✨ feat(mes): 新增来源单据编号和类型字段,更新必填验证

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/vo/MesWmMiscReceiptPageReqVO.java
@@ -26,6 +26,12 @@ public class MesWmMiscReceiptPageReqVO extends PageParam { @@ -26,6 +26,12 @@ public class MesWmMiscReceiptPageReqVO extends PageParam {
26 @Schema(description = "杂项类型", example = "1") 26 @Schema(description = "杂项类型", example = "1")
27 private Integer type; 27 private Integer type;
28 28
  29 + @Schema(description = "来源单据编号", example = "DOC2026030001")
  30 + private String sourceDocCode;
  31 +
  32 + @Schema(description = "来源单据类型", example = "WORK_ORDER")
  33 + private String sourceDocType;
  34 +
29 @Schema(description = "状态", example = "0") 35 @Schema(description = "状态", example = "0")
30 private Integer status; 36 private Integer status;
31 37
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/vo/MesWmMiscReceiptSaveReqVO.java
@@ -7,7 +7,6 @@ import lombok.Data; @@ -7,7 +7,6 @@ import lombok.Data;
7 7
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 9
10 -// TODO @AI:字段的必传,需要对齐下前端;  
11 @Schema(description = "管理后台 - MES 杂项入库单新增/修改 Request VO") 10 @Schema(description = "管理后台 - MES 杂项入库单新增/修改 Request VO")
12 @Data 11 @Data
13 public class MesWmMiscReceiptSaveReqVO { 12 public class MesWmMiscReceiptSaveReqVO {
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/vo/line/MesWmMiscReceiptLineSaveReqVO.java
@@ -34,10 +34,12 @@ public class MesWmMiscReceiptLineSaveReqVO { @@ -34,10 +34,12 @@ public class MesWmMiscReceiptLineSaveReqVO {
34 @NotNull(message = "仓库不能为空") 34 @NotNull(message = "仓库不能为空")
35 private Long warehouseId; 35 private Long warehouseId;
36 36
37 - @Schema(description = "库区编号", example = "1") 37 + @Schema(description = "库区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  38 + @NotNull(message = "库区不能为空")
38 private Long locationId; 39 private Long locationId;
39 40
40 - @Schema(description = "库位编号", example = "1") 41 + @Schema(description = "库位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  42 + @NotNull(message = "库位不能为空")
41 private Long areaId; 43 private Long areaId;
42 44
43 @Schema(description = "备注", example = "备注") 45 @Schema(description = "备注", example = "备注")
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/miscreceipt/MesWmMiscReceiptDO.java
@@ -44,7 +44,6 @@ public class MesWmMiscReceiptDO extends BaseDO { @@ -44,7 +44,6 @@ public class MesWmMiscReceiptDO extends BaseDO {
44 * 枚举 {@link MesWmMiscReceiptTypeEnum} 44 * 枚举 {@link MesWmMiscReceiptTypeEnum}
45 */ 45 */
46 private Integer type; 46 private Integer type;
47 - // TODO @芋艿:后续看看怎么跟进;  
48 /** 47 /**
49 * 来源单据 ID 48 * 来源单据 ID
50 */ 49 */
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/miscreceipt/MesWmMiscReceiptMapper.java
@@ -20,6 +20,8 @@ public interface MesWmMiscReceiptMapper extends BaseMapperX<MesWmMiscReceiptDO> @@ -20,6 +20,8 @@ public interface MesWmMiscReceiptMapper extends BaseMapperX<MesWmMiscReceiptDO>
20 .likeIfPresent(MesWmMiscReceiptDO::getCode, reqVO.getCode()) 20 .likeIfPresent(MesWmMiscReceiptDO::getCode, reqVO.getCode())
21 .likeIfPresent(MesWmMiscReceiptDO::getName, reqVO.getName()) 21 .likeIfPresent(MesWmMiscReceiptDO::getName, reqVO.getName())
22 .eqIfPresent(MesWmMiscReceiptDO::getType, reqVO.getType()) 22 .eqIfPresent(MesWmMiscReceiptDO::getType, reqVO.getType())
  23 + .likeIfPresent(MesWmMiscReceiptDO::getSourceDocCode, reqVO.getSourceDocCode())
  24 + .eqIfPresent(MesWmMiscReceiptDO::getSourceDocType, reqVO.getSourceDocType())
23 .eqIfPresent(MesWmMiscReceiptDO::getStatus, reqVO.getStatus()) 25 .eqIfPresent(MesWmMiscReceiptDO::getStatus, reqVO.getStatus())
24 .betweenIfPresent(MesWmMiscReceiptDO::getReceiptDate, reqVO.getReceiptDate()) 26 .betweenIfPresent(MesWmMiscReceiptDO::getReceiptDate, reqVO.getReceiptDate())
25 .orderByDesc(MesWmMiscReceiptDO::getId)); 27 .orderByDesc(MesWmMiscReceiptDO::getId));
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java
@@ -32,7 +32,8 @@ public enum MesMdAutoCodeRuleCodeEnum { @@ -32,7 +32,8 @@ public enum MesMdAutoCodeRuleCodeEnum {
32 WM_WAREHOUSE_CODE("WM_WAREHOUSE_CODE", "仓库编码"), 32 WM_WAREHOUSE_CODE("WM_WAREHOUSE_CODE", "仓库编码"),
33 WM_LOCATION_CODE("WM_LOCATION_CODE", "库区编码"), 33 WM_LOCATION_CODE("WM_LOCATION_CODE", "库区编码"),
34 WM_AREA_CODE("WM_AREA_CODE", "库位编码"), 34 WM_AREA_CODE("WM_AREA_CODE", "库位编码"),
35 - WM_PRODUCT_SALES_CODE("WM_PRODUCT_SALES_CODE", "销售出库单编码"); 35 + WM_PRODUCT_SALES_CODE("WM_PRODUCT_SALES_CODE", "销售出库单编码"),
  36 + WM_MISC_RECEIPT_CODE("WM_MISC_RECEIPT_CODE", "杂项入库单编码");
36 37
37 /** 38 /**
38 * 规则代码 39 * 规则代码
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java
@@ -44,7 +44,6 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ @@ -44,7 +44,6 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ
44 @Transactional(rollbackFor = Exception.class) 44 @Transactional(rollbackFor = Exception.class)
45 public Long createMiscReceiptLine(MesWmMiscReceiptLineSaveReqVO createReqVO) { 45 public Long createMiscReceiptLine(MesWmMiscReceiptLineSaveReqVO createReqVO) {
46 // 1. 校验 46 // 1. 校验
47 - miscReceiptService.validateMiscReceiptEditable(createReqVO.getReceiptId());  
48 validateLineSaveData(createReqVO); 47 validateLineSaveData(createReqVO);
49 48
50 // 2. 新增行 49 // 2. 新增行
@@ -62,8 +61,7 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ @@ -62,8 +61,7 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ
62 public void updateMiscReceiptLine(MesWmMiscReceiptLineSaveReqVO updateReqVO) { 61 public void updateMiscReceiptLine(MesWmMiscReceiptLineSaveReqVO updateReqVO) {
63 // 1. 校验 62 // 1. 校验
64 MesWmMiscReceiptLineDO line = validateMiscReceiptLineExists(updateReqVO.getId()); 63 MesWmMiscReceiptLineDO line = validateMiscReceiptLineExists(updateReqVO.getId());
65 - miscReceiptService.validateMiscReceiptEditable(line.getReceiptId());  
66 - validateLineSaveData(updateReqVO); 64 + updateReqVO.setReceiptId(line.getReceiptId());
67 65
68 // 2. 更新行 66 // 2. 更新行
69 MesWmMiscReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscReceiptLineDO.class); 67 MesWmMiscReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscReceiptLineDO.class);
@@ -77,7 +75,9 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ @@ -77,7 +75,9 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ
77 @Transactional(rollbackFor = Exception.class) 75 @Transactional(rollbackFor = Exception.class)
78 public void deleteMiscReceiptLine(Long id) { 76 public void deleteMiscReceiptLine(Long id) {
79 // 校验存在 77 // 校验存在
80 - validateMiscReceiptLineExists(id); 78 + MesWmMiscReceiptLineDO line = validateMiscReceiptLineExists(id);
  79 + // 校验父单据存在且为可编辑状态
  80 + miscReceiptService.validateMiscReceiptEditable(line.getReceiptId());
81 81
82 // 删除行 82 // 删除行
83 miscReceiptLineMapper.deleteById(id); 83 miscReceiptLineMapper.deleteById(id);
@@ -122,7 +122,11 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ @@ -122,7 +122,11 @@ public class MesWmMiscReceiptLineServiceImpl implements MesWmMiscReceiptLineServ
122 * 校验行保存数据(物料存在、仓库层级关系) 122 * 校验行保存数据(物料存在、仓库层级关系)
123 */ 123 */
124 private void validateLineSaveData(MesWmMiscReceiptLineSaveReqVO reqVO) { 124 private void validateLineSaveData(MesWmMiscReceiptLineSaveReqVO reqVO) {
  125 + // 校验父单据存在且为可编辑状态
  126 + miscReceiptService.validateMiscReceiptEditable(reqVO.getReceiptId());
  127 + // 校验物料存在
125 itemService.validateItemExists(reqVO.getItemId()); 128 itemService.validateItemExists(reqVO.getItemId());
  129 + // 校验仓库层级关系(仓库 - 库位 - 库区)
126 warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), 130 warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(),
127 reqVO.getLocationId(), reqVO.getAreaId()); 131 reqVO.getLocationId(), reqVO.getAreaId());
128 } 132 }