Commit bb2fbcc1aacb23ec402d03248f4b134127de9c50

Authored by YunaiV
1 parent 8ac57045

✨ feat(mes): 优化库存选择器和退货明细表单布局

调整库存选择器为下拉选择组件,支持前端过滤,提升用户体验。更新退货明细表单,增加库存记录选择,优化表单布局,确保信息展示更为清晰。
Showing 32 changed files with 130 additions and 62 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/machinery/MesDvMachineryController.java
@@ -112,7 +112,7 @@ public class MesDvMachineryController { @@ -112,7 +112,7 @@ public class MesDvMachineryController {
112 @Operation(summary = "获得设备精简列表", description = "主要用于前端的下拉选项") 112 @Operation(summary = "获得设备精简列表", description = "主要用于前端的下拉选项")
113 @PreAuthorize("@ss.hasPermission('mes:dv-machinery:query')") 113 @PreAuthorize("@ss.hasPermission('mes:dv-machinery:query')")
114 public CommonResult<List<MesDvMachineryRespVO>> getMachinerySimpleList() { 114 public CommonResult<List<MesDvMachineryRespVO>> getMachinerySimpleList() {
115 - List<MesDvMachineryDO> list = machineryService.getMachinerySimpleList(); 115 + List<MesDvMachineryDO> list = machineryService.getMachineryList();
116 return success(BeanUtils.toBean(list, MesDvMachineryRespVO.class)); 116 return success(BeanUtils.toBean(list, MesDvMachineryRespVO.class));
117 } 117 }
118 118
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/subject/MesDvSubjectController.java
@@ -81,7 +81,7 @@ public class MesDvSubjectController { @@ -81,7 +81,7 @@ public class MesDvSubjectController {
81 @Operation(summary = "获得点检保养项目精简列表", description = "主要用于前端的下拉选项") 81 @Operation(summary = "获得点检保养项目精简列表", description = "主要用于前端的下拉选项")
82 @PreAuthorize("@ss.hasPermission('mes:dv-subject:query')") 82 @PreAuthorize("@ss.hasPermission('mes:dv-subject:query')")
83 public CommonResult<List<MesDvSubjectRespVO>> getSubjectSimpleList() { 83 public CommonResult<List<MesDvSubjectRespVO>> getSubjectSimpleList() {
84 - List<MesDvSubjectDO> list = subjectService.getSubjectSimpleList(); 84 + List<MesDvSubjectDO> list = subjectService.getSubjectList();
85 return success(BeanUtils.toBean(list, MesDvSubjectRespVO.class)); 85 return success(BeanUtils.toBean(list, MesDvSubjectRespVO.class));
86 } 86 }
87 87
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/tm/tool/MesTmToolController.java
@@ -113,7 +113,7 @@ public class MesTmToolController { @@ -113,7 +113,7 @@ public class MesTmToolController {
113 @Operation(summary = "获得工具精简列表") 113 @Operation(summary = "获得工具精简列表")
114 @PreAuthorize("@ss.hasPermission('mes:tm-tool:query')") 114 @PreAuthorize("@ss.hasPermission('mes:tm-tool:query')")
115 public CommonResult<List<MesTmToolRespVO>> getToolSimpleList() { 115 public CommonResult<List<MesTmToolRespVO>> getToolSimpleList() {
116 - List<MesTmToolDO> list = toolService.getToolSimpleList(); 116 + List<MesTmToolDO> list = toolService.getToolList();
117 return success(BeanUtils.toBean(list, MesTmToolRespVO.class)); 117 return success(BeanUtils.toBean(list, MesTmToolRespVO.class));
118 } 118 }
119 119
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
@@ -96,6 +96,13 @@ public class MesWmBatchController { @@ -96,6 +96,13 @@ public class MesWmBatchController {
96 return success(buildBatchRespVOList(list)); 96 return success(buildBatchRespVOList(list));
97 } 97 }
98 98
  99 + @GetMapping("/simple-list")
  100 + @Operation(summary = "获得批次精简列表", description = "主要用于前端下拉")
  101 + public CommonResult<List<MesWmBatchRespVO>> getBatchSimpleList() {
  102 + List<MesWmBatchDO> list = batchService.getBatchList();
  103 + return success(BeanUtils.toBean(list, MesWmBatchRespVO.class));
  104 + }
  105 +
99 // ==================== 拼接 VO ==================== 106 // ==================== 拼接 VO ====================
100 107
101 private List<MesWmBatchRespVO> buildBatchRespVOList(List<MesWmBatchDO> list) { 108 private List<MesWmBatchRespVO> buildBatchRespVOList(List<MesWmBatchDO> list) {
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/MesWmMaterialStockController.java
@@ -113,6 +113,15 @@ public class MesWmMaterialStockController { @@ -113,6 +113,15 @@ public class MesWmMaterialStockController {
113 buildRespVOList(pageResult.getList())); 113 buildRespVOList(pageResult.getList()));
114 } 114 }
115 115
  116 + @GetMapping("/simple-list")
  117 + @Operation(summary = "获得库存精简列表", description = "主要用于前端下拉,可按 itemId 过滤")
  118 + @Parameter(name = "itemId", description = "物料编号", example = "1")
  119 + public CommonResult<List<MesWmMaterialStockRespVO>> getMaterialStockSimpleList(
  120 + @RequestParam(value = "itemId", required = false) Long itemId) {
  121 + List<MesWmMaterialStockDO> list = materialStockService.getMaterialStockList(itemId);
  122 + return success(buildRespVOList(list));
  123 + }
  124 +
116 // ==================== 拼接 VO ==================== 125 // ==================== 拼接 VO ====================
117 126
118 private List<MesWmMaterialStockRespVO> buildRespVOList(List<MesWmMaterialStockDO> list) { 127 private List<MesWmMaterialStockRespVO> buildRespVOList(List<MesWmMaterialStockDO> list) {
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java
@@ -129,7 +129,7 @@ public class MesWmPackageController { @@ -129,7 +129,7 @@ public class MesWmPackageController {
129 @Operation(summary = "可添加为子箱的装箱单精简列表") 129 @Operation(summary = "可添加为子箱的装箱单精简列表")
130 @PreAuthorize("@ss.hasPermission('mes:wm-package:query')") 130 @PreAuthorize("@ss.hasPermission('mes:wm-package:query')")
131 public CommonResult<List<MesWmPackageRespVO>> getChildablePackageSimpleList() { 131 public CommonResult<List<MesWmPackageRespVO>> getChildablePackageSimpleList() {
132 - List<MesWmPackageDO> list = packageService.getChildablePackageSimpleList(); 132 + List<MesWmPackageDO> list = packageService.getChildablePackageList();
133 return success(buildRespVOList(list)); 133 return success(buildRespVOList(list));
134 } 134 }
135 135
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/vo/detail/MesWmReturnVendorDetailSaveReqVO.java
@@ -26,6 +26,9 @@ public class MesWmReturnVendorDetailSaveReqVO { @@ -26,6 +26,9 @@ public class MesWmReturnVendorDetailSaveReqVO {
26 @NotNull(message = "物料编号不能为空") 26 @NotNull(message = "物料编号不能为空")
27 private Long itemId; 27 private Long itemId;
28 28
  29 + @Schema(description = "库存记录编号", example = "1")
  30 + private Long materialStockId;
  31 +
29 @Schema(description = "退货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "300.00") 32 @Schema(description = "退货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "300.00")
30 @NotNull(message = "退货数量不能为空") 33 @NotNull(message = "退货数量不能为空")
31 @DecimalMin(value = "0", inclusive = false, message = "退货数量必须大于 0") 34 @DecimalMin(value = "0", inclusive = false, message = "退货数量必须大于 0")
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/vo/line/MesWmReturnVendorLineRespVO.java
@@ -37,6 +37,9 @@ public class MesWmReturnVendorLineRespVO { @@ -37,6 +37,9 @@ public class MesWmReturnVendorLineRespVO {
37 @Schema(description = "批次ID", example = "1") 37 @Schema(description = "批次ID", example = "1")
38 private Long batchId; 38 private Long batchId;
39 39
  40 + @Schema(description = "批次号", example = "BATCH20260101001")
  41 + private String batchCode;
  42 +
40 @Schema(description = "备注", example = "备注") 43 @Schema(description = "备注", example = "备注")
41 private String remark; 44 private String remark;
42 45
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/vo/line/MesWmReturnVendorLineSaveReqVO.java
@@ -30,6 +30,9 @@ public class MesWmReturnVendorLineSaveReqVO { @@ -30,6 +30,9 @@ public class MesWmReturnVendorLineSaveReqVO {
30 @Schema(description = "批次ID", example = "1") 30 @Schema(description = "批次ID", example = "1")
31 private Long batchId; 31 private Long batchId;
32 32
  33 + @Schema(description = "批次号", example = "BATCH20260101001")
  34 + private String batchCode;
  35 +
33 @Schema(description = "备注", example = "备注") 36 @Schema(description = "备注", example = "备注")
34 private String remark; 37 private String remark;
35 38
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/warehouse/MesWmWarehouseAreaController.java
@@ -26,7 +26,6 @@ import org.springframework.web.bind.annotation.*; @@ -26,7 +26,6 @@ import org.springframework.web.bind.annotation.*;
26 import java.util.Collections; 26 import java.util.Collections;
27 import java.util.List; 27 import java.util.List;
28 import java.util.Map; 28 import java.util.Map;
29 -import java.util.Set;  
30 29
31 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
32 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 31 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -94,7 +93,7 @@ public class MesWmWarehouseAreaController { @@ -94,7 +93,7 @@ public class MesWmWarehouseAreaController {
94 @Operation(summary = "获得库位精简列表", description = "可按库区过滤") 93 @Operation(summary = "获得库位精简列表", description = "可按库区过滤")
95 public CommonResult<List<MesWmWarehouseAreaRespVO>> getWarehouseAreaSimpleList( 94 public CommonResult<List<MesWmWarehouseAreaRespVO>> getWarehouseAreaSimpleList(
96 @Parameter(name = "locationId", description = "库区编号") @RequestParam(value = "locationId", required = false) Long locationId) { 95 @Parameter(name = "locationId", description = "库区编号") @RequestParam(value = "locationId", required = false) Long locationId) {
97 - List<MesWmWarehouseAreaDO> list = areaService.getWarehouseAreaSimpleList(locationId); 96 + List<MesWmWarehouseAreaDO> list = areaService.getWarehouseAreaList(locationId);
98 return success(buildWarehouseAreaRespVOList(list)); 97 return success(buildWarehouseAreaRespVOList(list));
99 } 98 }
100 99
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/warehouse/MesWmWarehouseController.java
@@ -74,7 +74,7 @@ public class MesWmWarehouseController { @@ -74,7 +74,7 @@ public class MesWmWarehouseController {
74 @GetMapping("/simple-list") 74 @GetMapping("/simple-list")
75 @Operation(summary = "获得仓库精简列表", description = "主要用于前端下拉") 75 @Operation(summary = "获得仓库精简列表", description = "主要用于前端下拉")
76 public CommonResult<List<MesWmWarehouseRespVO>> getWarehouseSimpleList() { 76 public CommonResult<List<MesWmWarehouseRespVO>> getWarehouseSimpleList() {
77 - List<MesWmWarehouseDO> list = warehouseService.getWarehouseSimpleList(); 77 + List<MesWmWarehouseDO> list = warehouseService.getWarehouseList();
78 return success(BeanUtils.toBean(list, MesWmWarehouseRespVO.class)); 78 return success(BeanUtils.toBean(list, MesWmWarehouseRespVO.class));
79 } 79 }
80 80
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/warehouse/MesWmWarehouseLocationController.java
@@ -90,7 +90,7 @@ public class MesWmWarehouseLocationController { @@ -90,7 +90,7 @@ public class MesWmWarehouseLocationController {
90 @Operation(summary = "获得库区精简列表", description = "可按仓库过滤") 90 @Operation(summary = "获得库区精简列表", description = "可按仓库过滤")
91 public CommonResult<List<MesWmWarehouseLocationRespVO>> getWarehouseLocationSimpleList( 91 public CommonResult<List<MesWmWarehouseLocationRespVO>> getWarehouseLocationSimpleList(
92 @Parameter(name = "warehouseId", description = "仓库编号") @RequestParam(value = "warehouseId", required = false) Long warehouseId) { 92 @Parameter(name = "warehouseId", description = "仓库编号") @RequestParam(value = "warehouseId", required = false) Long warehouseId) {
93 - List<MesWmWarehouseLocationDO> list = locationService.getWarehouseLocationSimpleList(warehouseId); 93 + List<MesWmWarehouseLocationDO> list = locationService.getWarehouseLocationList(warehouseId);
94 return success(buildWarehouseLocationRespVOList(list)); 94 return success(buildWarehouseLocationRespVOList(list));
95 } 95 }
96 96
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/returnvendor/MesWmReturnVendorLineDO.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor;
2 2
3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; 4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
  5 +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
5 import com.baomidou.mybatisplus.annotation.KeySequence; 6 import com.baomidou.mybatisplus.annotation.KeySequence;
6 import com.baomidou.mybatisplus.annotation.TableId; 7 import com.baomidou.mybatisplus.annotation.TableId;
7 import com.baomidou.mybatisplus.annotation.TableName; 8 import com.baomidou.mybatisplus.annotation.TableName;
@@ -45,9 +46,17 @@ public class MesWmReturnVendorLineDO extends BaseDO { @@ -45,9 +46,17 @@ public class MesWmReturnVendorLineDO extends BaseDO {
45 private BigDecimal quantity; 46 private BigDecimal quantity;
46 /** 47 /**
47 * 批次 ID 48 * 批次 ID
  49 + *
  50 + * 关联 {@link MesWmBatchDO#getId()}
48 */ 51 */
49 private Long batchId; 52 private Long batchId;
50 /** 53 /**
  54 + * 批次号
  55 + *
  56 + * 关联 {@link MesWmBatchDO#getCode()}
  57 + */
  58 + private String batchCode;
  59 + /**
51 * 备注 60 * 备注
52 */ 61 */
53 private String remark; 62 private String remark;
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/machinery/MesDvMachineryService.java
@@ -73,11 +73,11 @@ public interface MesDvMachineryService { @@ -73,11 +73,11 @@ public interface MesDvMachineryService {
73 void validateMachineryExists(Long id); 73 void validateMachineryExists(Long id);
74 74
75 /** 75 /**
76 - * 获得设备精简列表(下拉选项用) 76 + * 获得设备列表
77 * 77 *
78 * @return 设备列表 78 * @return 设备列表
79 */ 79 */
80 - List<MesDvMachineryDO> getMachinerySimpleList(); 80 + List<MesDvMachineryDO> getMachineryList();
81 81
82 /** 82 /**
83 * 获得设备列表 83 * 获得设备列表
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/machinery/MesDvMachineryServiceImpl.java
@@ -127,7 +127,7 @@ public class MesDvMachineryServiceImpl implements MesDvMachineryService { @@ -127,7 +127,7 @@ public class MesDvMachineryServiceImpl implements MesDvMachineryService {
127 } 127 }
128 128
129 @Override 129 @Override
130 - public List<MesDvMachineryDO> getMachinerySimpleList() { 130 + public List<MesDvMachineryDO> getMachineryList() {
131 return machineryMapper.selectList(); 131 return machineryMapper.selectList();
132 } 132 }
133 133
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/subject/MesDvSubjectService.java
@@ -65,11 +65,11 @@ public interface MesDvSubjectService { @@ -65,11 +65,11 @@ public interface MesDvSubjectService {
65 void validateSubjectExists(Long id); 65 void validateSubjectExists(Long id);
66 66
67 /** 67 /**
68 - * 获得点检保养项目精简列表(下拉选项用) 68 + * 获得点检保养项目列表
69 * 69 *
70 * @return 项目列表 70 * @return 项目列表
71 */ 71 */
72 - List<MesDvSubjectDO> getSubjectSimpleList(); 72 + List<MesDvSubjectDO> getSubjectList();
73 73
74 /** 74 /**
75 * 获得点检保养项目列表 75 * 获得点检保养项目列表
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/subject/MesDvSubjectServiceImpl.java
@@ -93,7 +93,7 @@ public class MesDvSubjectServiceImpl implements MesDvSubjectService { @@ -93,7 +93,7 @@ public class MesDvSubjectServiceImpl implements MesDvSubjectService {
93 } 93 }
94 94
95 @Override 95 @Override
96 - public List<MesDvSubjectDO> getSubjectSimpleList() { 96 + public List<MesDvSubjectDO> getSubjectList() {
97 return subjectMapper.selectList(); 97 return subjectMapper.selectList();
98 } 98 }
99 99
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolService.java
@@ -54,10 +54,10 @@ public interface MesTmToolService { @@ -54,10 +54,10 @@ public interface MesTmToolService {
54 PageResult<MesTmToolDO> getToolPage(MesTmToolPageReqVO pageReqVO); 54 PageResult<MesTmToolDO> getToolPage(MesTmToolPageReqVO pageReqVO);
55 55
56 /** 56 /**
57 - * 获得工具精简列表 57 + * 获得工具列表
58 * 58 *
59 * @return 工具列表 59 * @return 工具列表
60 */ 60 */
61 - List<MesTmToolDO> getToolSimpleList(); 61 + List<MesTmToolDO> getToolList();
62 62
63 } 63 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolServiceImpl.java
@@ -119,7 +119,7 @@ public class MesTmToolServiceImpl implements MesTmToolService { @@ -119,7 +119,7 @@ public class MesTmToolServiceImpl implements MesTmToolService {
119 } 119 }
120 120
121 @Override 121 @Override
122 - public List<MesTmToolDO> getToolSimpleList() { 122 + public List<MesTmToolDO> getToolList() {
123 return toolMapper.selectList(); 123 return toolMapper.selectList();
124 } 124 }
125 125
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java
@@ -68,4 +68,11 @@ public interface MesWmBatchService { @@ -68,4 +68,11 @@ public interface MesWmBatchService {
68 */ 68 */
69 List<MesWmBatchDO> getBackwardBatchList(String code); 69 List<MesWmBatchDO> getBackwardBatchList(String code);
70 70
  71 + /**
  72 + * 获取批次列表
  73 + *
  74 + * @return 批次列表
  75 + */
  76 + List<MesWmBatchDO> getBatchList();
  77 +
71 } 78 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
@@ -220,4 +220,9 @@ public class MesWmBatchServiceImpl implements MesWmBatchService { @@ -220,4 +220,9 @@ public class MesWmBatchServiceImpl implements MesWmBatchService {
220 return results; 220 return results;
221 } 221 }
222 222
  223 + @Override
  224 + public List<MesWmBatchDO> getBatchList() {
  225 + return batchMapper.selectList();
  226 + }
  227 +
223 } 228 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java
@@ -29,19 +29,6 @@ public interface MesWmMaterialStockService { @@ -29,19 +29,6 @@ public interface MesWmMaterialStockService {
29 MesWmMaterialStockDO getMaterialStock(Long id); 29 MesWmMaterialStockDO getMaterialStock(Long id);
30 30
31 /** 31 /**
32 - * 按组合键查询库存记录  
33 - *  
34 - * @param itemId 物料编号  
35 - * @param warehouseId 仓库编号  
36 - * @param locationId 库区编号  
37 - * @param areaId 库位编号  
38 - * @param batchId 批次编号  
39 - * @return 库存记录,不存在返回 null  
40 - */  
41 - MesWmMaterialStockDO getMaterialStockByCompositeKey(Long itemId, Long warehouseId, Long locationId,  
42 - Long areaId, Long batchId);  
43 -  
44 - /**  
45 * 查询指定库位的库存记录列表 32 * 查询指定库位的库存记录列表
46 * 33 *
47 * @param areaId 库位编号 34 * @param areaId 库位编号
@@ -109,6 +96,14 @@ public interface MesWmMaterialStockService { @@ -109,6 +96,14 @@ public interface MesWmMaterialStockService {
109 } 96 }
110 97
111 /** 98 /**
  99 + * 获得库存精简列表(用于前端下拉选择)
  100 + *
  101 + * @param itemId 物料编号(可为 null)
  102 + * @return 库存记录列表
  103 + */
  104 + List<MesWmMaterialStockDO> getMaterialStockList(Long itemId);
  105 +
  106 + /**
112 * 获取或创建库存记录(按组合键唯一) 107 * 获取或创建库存记录(按组合键唯一)
113 * 108 *
114 * @param itemId 物料编号 109 * @param itemId 物料编号
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
@@ -50,12 +50,6 @@ public class MesWmMaterialStockServiceImpl implements MesWmMaterialStockService @@ -50,12 +50,6 @@ public class MesWmMaterialStockServiceImpl implements MesWmMaterialStockService
50 } 50 }
51 51
52 @Override 52 @Override
53 - public MesWmMaterialStockDO getMaterialStockByCompositeKey(Long itemId, Long warehouseId, Long locationId,  
54 - Long areaId, Long batchId) {  
55 - return materialStockMapper.selectByCompositeKey(itemId, warehouseId, locationId, areaId, batchId);  
56 - }  
57 -  
58 - @Override  
59 public List<MesWmMaterialStockDO> getMaterialStockListByAreaId(Long areaId) { 53 public List<MesWmMaterialStockDO> getMaterialStockListByAreaId(Long areaId) {
60 return materialStockMapper.selectList(MesWmMaterialStockDO::getAreaId, areaId); 54 return materialStockMapper.selectList(MesWmMaterialStockDO::getAreaId, areaId);
61 } 55 }
@@ -127,6 +121,14 @@ public class MesWmMaterialStockServiceImpl implements MesWmMaterialStockService @@ -127,6 +121,14 @@ public class MesWmMaterialStockServiceImpl implements MesWmMaterialStockService
127 } 121 }
128 122
129 @Override 123 @Override
  124 + public List<MesWmMaterialStockDO> getMaterialStockList(Long itemId) {
  125 + if (itemId != null) {
  126 + return materialStockMapper.selectList(MesWmMaterialStockDO::getItemId, itemId);
  127 + }
  128 + return materialStockMapper.selectList();
  129 + }
  130 +
  131 + @Override
130 public MesWmMaterialStockDO getOrCreateMaterialStock(Long itemId, Long warehouseId, Long locationId, Long areaId, 132 public MesWmMaterialStockDO getOrCreateMaterialStock(Long itemId, Long warehouseId, Long locationId, Long areaId,
131 Long batchId, String batchCode, Long vendorId, LocalDateTime receiptTime) { 133 Long batchId, String batchCode, Long vendorId, LocalDateTime receiptTime) {
132 // 1. 查找已有库存记录 134 // 1. 查找已有库存记录
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java
@@ -83,10 +83,10 @@ public interface MesWmPackageService { @@ -83,10 +83,10 @@ public interface MesWmPackageService {
83 void removeChildPackage(Long childId); 83 void removeChildPackage(Long childId);
84 84
85 /** 85 /**
86 - * 可添加为子箱的装箱单精简列表(无父箱 + 已完成状态) 86 + * 可添加为子箱的装箱单列表(无父箱 + 已完成状态)
87 * 87 *
88 * @return 装箱单列表 88 * @return 装箱单列表
89 */ 89 */
90 - List<MesWmPackageDO> getChildablePackageSimpleList(); 90 + List<MesWmPackageDO> getChildablePackageList();
91 91
92 } 92 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java
@@ -137,7 +137,7 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { @@ -137,7 +137,7 @@ public class MesWmPackageServiceImpl implements MesWmPackageService {
137 } 137 }
138 138
139 @Override 139 @Override
140 - public List<MesWmPackageDO> getChildablePackageSimpleList() { 140 + public List<MesWmPackageDO> getChildablePackageList() {
141 return packageMapper.selectChildableList(); 141 return packageMapper.selectChildableList();
142 } 142 }
143 143
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
@@ -3,10 +3,12 @@ package cn.iocoder.yudao.module.mes.service.wm.returnvendor; @@ -3,10 +3,12 @@ package cn.iocoder.yudao.module.mes.service.wm.returnvendor;
3 import cn.hutool.core.util.ObjUtil; 3 import cn.hutool.core.util.ObjUtil;
4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailSaveReqVO; 5 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailSaveReqVO;
  6 +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
6 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO;
7 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO; 8 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO;
8 import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorDetailMapper; 9 import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorDetailMapper;
9 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; 10 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
  11 +import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
10 import jakarta.annotation.Resource; 12 import jakarta.annotation.Resource;
11 import org.springframework.context.annotation.Lazy; 13 import org.springframework.context.annotation.Lazy;
12 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
@@ -15,8 +17,7 @@ import org.springframework.validation.annotation.Validated; @@ -15,8 +17,7 @@ import org.springframework.validation.annotation.Validated;
15 import java.util.List; 17 import java.util.List;
16 18
17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 19 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
18 -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_VENDOR_DETAIL_ITEM_MISMATCH;  
19 -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_VENDOR_DETAIL_NOT_EXISTS; 20 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
20 21
21 /** 22 /**
22 * MES 供应商退货明细 Service 实现类 23 * MES 供应商退货明细 Service 实现类
@@ -35,14 +36,13 @@ public class MesWmReturnVendorDetailServiceImpl implements MesWmReturnVendorDeta @@ -35,14 +36,13 @@ public class MesWmReturnVendorDetailServiceImpl implements MesWmReturnVendorDeta
35 @Resource 36 @Resource
36 private MesMdItemService itemService; 37 private MesMdItemService itemService;
37 38
  39 + @Resource
  40 + private MesWmMaterialStockService materialStockService;
  41 +
38 @Override 42 @Override
39 public Long createReturnVendorDetail(MesWmReturnVendorDetailSaveReqVO createReqVO) { 43 public Long createReturnVendorDetail(MesWmReturnVendorDetailSaveReqVO createReqVO) {
40 - // 校验父数据存在  
41 - MesWmReturnVendorLineDO line = returnVendorLineService.validateReturnVendorLineExists(createReqVO.getLineId());  
42 - // 校验物料存在  
43 - itemService.validateItemExists(createReqVO.getItemId());  
44 - // 校验物料与行物料一致  
45 - validateItemConsistency(createReqVO.getItemId(), line); 44 + // 校验数据
  45 + validateDetailSaveData(createReqVO);
46 46
47 // 插入 47 // 插入
48 MesWmReturnVendorDetailDO detail = BeanUtils.toBean(createReqVO, MesWmReturnVendorDetailDO.class); 48 MesWmReturnVendorDetailDO detail = BeanUtils.toBean(createReqVO, MesWmReturnVendorDetailDO.class);
@@ -54,18 +54,28 @@ public class MesWmReturnVendorDetailServiceImpl implements MesWmReturnVendorDeta @@ -54,18 +54,28 @@ public class MesWmReturnVendorDetailServiceImpl implements MesWmReturnVendorDeta
54 public void updateReturnVendorDetail(MesWmReturnVendorDetailSaveReqVO updateReqVO) { 54 public void updateReturnVendorDetail(MesWmReturnVendorDetailSaveReqVO updateReqVO) {
55 // 校验存在 55 // 校验存在
56 validateReturnVendorDetailExists(updateReqVO.getId()); 56 validateReturnVendorDetailExists(updateReqVO.getId());
57 - // 校验父数据存在  
58 - MesWmReturnVendorLineDO line = returnVendorLineService.validateReturnVendorLineExists(updateReqVO.getLineId());  
59 - // 校验物料存在  
60 - itemService.validateItemExists(updateReqVO.getItemId());  
61 - // 校验物料与行物料一致  
62 - validateItemConsistency(updateReqVO.getItemId(), line); 57 + // 校验数据
  58 + validateDetailSaveData(updateReqVO);
63 59
64 // 更新 60 // 更新
65 MesWmReturnVendorDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmReturnVendorDetailDO.class); 61 MesWmReturnVendorDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmReturnVendorDetailDO.class);
66 returnVendorDetailMapper.updateById(updateObj); 62 returnVendorDetailMapper.updateById(updateObj);
67 } 63 }
68 64
  65 + /**
  66 + * 校验明细创建/修改的公共数据
  67 + */
  68 + private void validateDetailSaveData(MesWmReturnVendorDetailSaveReqVO reqVO) {
  69 + // 校验父数据(行)存在
  70 + MesWmReturnVendorLineDO line = returnVendorLineService.validateReturnVendorLineExists(reqVO.getLineId());
  71 + // 校验物料存在
  72 + itemService.validateItemExists(reqVO.getItemId());
  73 + // 校验物料与行物料一致
  74 + validateItemConsistency(reqVO.getItemId(), line);
  75 + // 校验库存记录存在且物料一致
  76 + validateMaterialStock(reqVO.getMaterialStockId(), line);
  77 + }
  78 +
69 @Override 79 @Override
70 public void deleteReturnVendorDetail(Long id) { 80 public void deleteReturnVendorDetail(Long id) {
71 // 校验存在 81 // 校验存在
@@ -114,4 +124,20 @@ public class MesWmReturnVendorDetailServiceImpl implements MesWmReturnVendorDeta @@ -114,4 +124,20 @@ public class MesWmReturnVendorDetailServiceImpl implements MesWmReturnVendorDeta
114 } 124 }
115 } 125 }
116 126
  127 + /**
  128 + * 校验库存记录存在且物料与行物料一致
  129 + */
  130 + private void validateMaterialStock(Long materialStockId, MesWmReturnVendorLineDO line) {
  131 + if (materialStockId == null) {
  132 + return;
  133 + }
  134 + MesWmMaterialStockDO stock = materialStockService.getMaterialStock(materialStockId);
  135 + if (stock == null) {
  136 + throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
  137 + }
  138 + if (ObjUtil.notEqual(stock.getItemId(), line.getItemId())) {
  139 + throw exception(WM_RETURN_VENDOR_DETAIL_ITEM_MISMATCH);
  140 + }
  141 + }
  142 +
117 } 143 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaService.java
@@ -64,12 +64,12 @@ public interface MesWmWarehouseAreaService { @@ -64,12 +64,12 @@ public interface MesWmWarehouseAreaService {
64 PageResult<MesWmWarehouseAreaDO> getWarehouseAreaPage(MesWmWarehouseAreaPageReqVO pageReqVO); 64 PageResult<MesWmWarehouseAreaDO> getWarehouseAreaPage(MesWmWarehouseAreaPageReqVO pageReqVO);
65 65
66 /** 66 /**
67 - * 按库区获得库位精简列表 67 + * 按库区获得库位列表
68 * 68 *
69 * @param locationId 库区编号 69 * @param locationId 库区编号
70 * @return 库位列表 70 * @return 库位列表
71 */ 71 */
72 - List<MesWmWarehouseAreaDO> getWarehouseAreaSimpleList(Long locationId); 72 + List<MesWmWarehouseAreaDO> getWarehouseAreaList(Long locationId);
73 73
74 /** 74 /**
75 * 按编号集合获得库位列表 75 * 按编号集合获得库位列表
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java
@@ -154,7 +154,7 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService @@ -154,7 +154,7 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService
154 } 154 }
155 155
156 @Override 156 @Override
157 - public List<MesWmWarehouseAreaDO> getWarehouseAreaSimpleList(Long locationId) { 157 + public List<MesWmWarehouseAreaDO> getWarehouseAreaList(Long locationId) {
158 return areaMapper.selectSimpleList(locationId); 158 return areaMapper.selectSimpleList(locationId);
159 } 159 }
160 160
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationService.java
@@ -64,12 +64,12 @@ public interface MesWmWarehouseLocationService { @@ -64,12 +64,12 @@ public interface MesWmWarehouseLocationService {
64 PageResult<MesWmWarehouseLocationDO> getWarehouseLocationPage(MesWmWarehouseLocationPageReqVO pageReqVO); 64 PageResult<MesWmWarehouseLocationDO> getWarehouseLocationPage(MesWmWarehouseLocationPageReqVO pageReqVO);
65 65
66 /** 66 /**
67 - * 按仓库获得库区精简列表 67 + * 按仓库获得库区列表
68 * 68 *
69 * @param warehouseId 仓库编号 69 * @param warehouseId 仓库编号
70 * @return 库区列表 70 * @return 库区列表
71 */ 71 */
72 - List<MesWmWarehouseLocationDO> getWarehouseLocationSimpleList(Long warehouseId); 72 + List<MesWmWarehouseLocationDO> getWarehouseLocationList(Long warehouseId);
73 73
74 /** 74 /**
75 * 按编号集合获得库区列表 75 * 按编号集合获得库区列表
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java
@@ -157,7 +157,7 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation @@ -157,7 +157,7 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation
157 } 157 }
158 158
159 @Override 159 @Override
160 - public List<MesWmWarehouseLocationDO> getWarehouseLocationSimpleList(Long warehouseId) { 160 + public List<MesWmWarehouseLocationDO> getWarehouseLocationList(Long warehouseId) {
161 return locationMapper.selectSimpleList(warehouseId); 161 return locationMapper.selectSimpleList(warehouseId);
162 } 162 }
163 163
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseService.java
@@ -64,11 +64,11 @@ public interface MesWmWarehouseService { @@ -64,11 +64,11 @@ public interface MesWmWarehouseService {
64 PageResult<MesWmWarehouseDO> getWarehousePage(MesWmWarehousePageReqVO pageReqVO); 64 PageResult<MesWmWarehouseDO> getWarehousePage(MesWmWarehousePageReqVO pageReqVO);
65 65
66 /** 66 /**
67 - * 获得仓库精简列表 67 + * 获得仓库列表
68 * 68 *
69 * @return 仓库列表 69 * @return 仓库列表
70 */ 70 */
71 - List<MesWmWarehouseDO> getWarehouseSimpleList(); 71 + List<MesWmWarehouseDO> getWarehouseList();
72 72
73 /** 73 /**
74 * 按编号集合获得仓库列表 74 * 按编号集合获得仓库列表
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java
@@ -151,7 +151,7 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { @@ -151,7 +151,7 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService {
151 } 151 }
152 152
153 @Override 153 @Override
154 - public List<MesWmWarehouseDO> getWarehouseSimpleList() { 154 + public List<MesWmWarehouseDO> getWarehouseList() {
155 return warehouseMapper.selectSimpleList(); 155 return warehouseMapper.selectSimpleList();
156 } 156 }
157 157