Commit 84cc513a6995df14e6b493a204d1c65b88527955

Authored by YunaiV
1 parent b2f9adcf

✨ feat(mes): 优化库位和库区管理功能,合并混放规则设置接口

整合物料混放和批次混放的设置接口为一个更新接口,简化了API调用。
同时,增加了库位和库区编码的生成逻辑,提升了用户体验。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/warehouse/MesWmWarehouseLocationController.java
@@ -94,22 +94,20 @@ public class MesWmWarehouseLocationController { @@ -94,22 +94,20 @@ public class MesWmWarehouseLocationController {
94 return success(buildWarehouseLocationRespVOList(list)); 94 return success(buildWarehouseLocationRespVOList(list));
95 } 95 }
96 96
97 - // TODO @AI:是不是搞个批量的接口,把 set-item-mixing、set-batch-mixing 融合成一个?  
98 - @PutMapping("/set-item-mixing")  
99 - @Operation(summary = "批量设置库区下所有库位的物料混放规则") 97 + // TODO @AI:update-by-location;方法名也改下;
  98 + @PutMapping("/update-mixing")
  99 + @Operation(summary = "批量设置库区下所有库位的混放规则")
100 @PreAuthorize("@ss.hasPermission('mes:wm-warehouse:update')") 100 @PreAuthorize("@ss.hasPermission('mes:wm-warehouse:update')")
101 - public CommonResult<Boolean> setItemMixing(@RequestParam("locationId") Long locationId,  
102 - @RequestParam("allow") Boolean allow) {  
103 - areaService.updateAllowItemMixingByLocationId(locationId, allow);  
104 - return success(true);  
105 - }  
106 -  
107 - @PutMapping("/set-batch-mixing")  
108 - @Operation(summary = "批量设置库区下所有库位的批次混放规则")  
109 - @PreAuthorize("@ss.hasPermission('mes:wm-warehouse:update')")  
110 - public CommonResult<Boolean> setBatchMixing(@RequestParam("locationId") Long locationId,  
111 - @RequestParam("allow") Boolean allow) {  
112 - areaService.updateAllowBatchMixingByLocationId(locationId, allow); 101 + public CommonResult<Boolean> updateMixing(@RequestParam("locationId") Long locationId,
  102 + @RequestParam(value = "allowItemMixing", required = false) Boolean allowItemMixing,
  103 + @RequestParam(value = "allowBatchMixing", required = false) Boolean allowBatchMixing) {
  104 + // TODO @AI:统一放到 service 里;
  105 + if (allowItemMixing != null) {
  106 + areaService.updateAllowItemMixingByLocationId(locationId, allowItemMixing);
  107 + }
  108 + if (allowBatchMixing != null) {
  109 + areaService.updateAllowBatchMixingByLocationId(locationId, allowBatchMixing);
  110 + }
113 return success(true); 111 return success(true);
114 } 112 }
115 113
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java
@@ -23,7 +23,10 @@ public enum MesMdAutoCodeRuleCodeEnum { @@ -23,7 +23,10 @@ public enum MesMdAutoCodeRuleCodeEnum {
23 QC_IQC_CODE("QC_IQC_CODE", "来料检验单编码"), 23 QC_IQC_CODE("QC_IQC_CODE", "来料检验单编码"),
24 QC_IPQC_CODE("QC_IPQC_CODE", "过程检验单编码"), 24 QC_IPQC_CODE("QC_IPQC_CODE", "过程检验单编码"),
25 QC_OQC_CODE("QC_OQC_CODE", "出货检验单编码"), 25 QC_OQC_CODE("QC_OQC_CODE", "出货检验单编码"),
26 - QC_RQC_CODE("QC_RQC_CODE", "退货检验单编码"); 26 + QC_RQC_CODE("QC_RQC_CODE", "退货检验单编码"),
  27 + WM_WAREHOUSE_CODE("WM_WAREHOUSE_CODE", "仓库编码"),
  28 + WM_LOCATION_CODE("WM_LOCATION_CODE", "库区编码"),
  29 + WM_AREA_CODE("WM_AREA_CODE", "库位编码");
27 30
28 /** 31 /**
29 * 规则代码 32 * 规则代码
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java
@@ -51,12 +51,8 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService @@ -51,12 +51,8 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService
51 51
52 @Override 52 @Override
53 public Long createWarehouseArea(MesWmWarehouseAreaSaveReqVO createReqVO) { 53 public Long createWarehouseArea(MesWmWarehouseAreaSaveReqVO createReqVO) {
54 - // 校验库区存在  
55 - locationService.validateWarehouseLocationExists(createReqVO.getLocationId());  
56 - // 校验编码唯一  
57 - validateWarehouseAreaCodeUnique(null, createReqVO.getLocationId(), createReqVO.getCode());  
58 - // 校验名称唯一  
59 - validateWarehouseAreaNameUnique(null, createReqVO.getLocationId(), createReqVO.getName()); 54 + // 校验数据
  55 + validateWarehouseAreaSaveData(createReqVO);
60 56
61 // 插入 57 // 插入
62 MesWmWarehouseAreaDO area = BeanUtils.toBean(createReqVO, MesWmWarehouseAreaDO.class); 58 MesWmWarehouseAreaDO area = BeanUtils.toBean(createReqVO, MesWmWarehouseAreaDO.class);
@@ -72,18 +68,23 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService @@ -72,18 +68,23 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService
72 public void updateWarehouseArea(MesWmWarehouseAreaSaveReqVO updateReqVO) { 68 public void updateWarehouseArea(MesWmWarehouseAreaSaveReqVO updateReqVO) {
73 // 校验存在 69 // 校验存在
74 validateWarehouseAreaExists(updateReqVO.getId()); 70 validateWarehouseAreaExists(updateReqVO.getId());
75 - // 校验库区存在  
76 - locationService.validateWarehouseLocationExists(updateReqVO.getLocationId());  
77 - // 校验编码唯一  
78 - validateWarehouseAreaCodeUnique(updateReqVO.getId(), updateReqVO.getLocationId(), updateReqVO.getCode());  
79 - // 校验名称唯一  
80 - validateWarehouseAreaNameUnique(updateReqVO.getId(), updateReqVO.getLocationId(), updateReqVO.getName()); 71 + // 校验数据
  72 + validateWarehouseAreaSaveData(updateReqVO);
81 73
82 // 更新 74 // 更新
83 MesWmWarehouseAreaDO updateObj = BeanUtils.toBean(updateReqVO, MesWmWarehouseAreaDO.class); 75 MesWmWarehouseAreaDO updateObj = BeanUtils.toBean(updateReqVO, MesWmWarehouseAreaDO.class);
84 areaMapper.updateById(updateObj); 76 areaMapper.updateById(updateObj);
85 } 77 }
86 78
  79 + private void validateWarehouseAreaSaveData(MesWmWarehouseAreaSaveReqVO reqVO) {
  80 + // 校验库区存在
  81 + locationService.validateWarehouseLocationExists(reqVO.getLocationId());
  82 + // 校验编码唯一
  83 + validateWarehouseAreaCodeUnique(reqVO.getId(), reqVO.getLocationId(), reqVO.getCode());
  84 + // 校验名称唯一
  85 + validateWarehouseAreaNameUnique(reqVO.getId(), reqVO.getLocationId(), reqVO.getName());
  86 + }
  87 +
87 @Override 88 @Override
88 public void deleteWarehouseArea(Long id) { 89 public void deleteWarehouseArea(Long id) {
89 // 校验存在 90 // 校验存在
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java
@@ -50,12 +50,8 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation @@ -50,12 +50,8 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation
50 50
51 @Override 51 @Override
52 public Long createWarehouseLocation(MesWmWarehouseLocationSaveReqVO createReqVO) { 52 public Long createWarehouseLocation(MesWmWarehouseLocationSaveReqVO createReqVO) {
53 - // 校验仓库存在  
54 - warehouseService.validateWarehouseExists(createReqVO.getWarehouseId());  
55 - // 校验编码唯一  
56 - validateWarehouseLocationCodeUnique(null, createReqVO.getWarehouseId(), createReqVO.getCode());  
57 - // 校验名称唯一  
58 - validateWarehouseLocationNameUnique(null, createReqVO.getWarehouseId(), createReqVO.getName()); 53 + // 校验数据
  54 + validateWarehouseLocationSaveData(createReqVO);
59 55
60 // 插入 56 // 插入
61 MesWmWarehouseLocationDO location = BeanUtils.toBean(createReqVO, MesWmWarehouseLocationDO.class); 57 MesWmWarehouseLocationDO location = BeanUtils.toBean(createReqVO, MesWmWarehouseLocationDO.class);
@@ -71,18 +67,23 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation @@ -71,18 +67,23 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation
71 public void updateWarehouseLocation(MesWmWarehouseLocationSaveReqVO updateReqVO) { 67 public void updateWarehouseLocation(MesWmWarehouseLocationSaveReqVO updateReqVO) {
72 // 校验存在 68 // 校验存在
73 validateWarehouseLocationExists(updateReqVO.getId()); 69 validateWarehouseLocationExists(updateReqVO.getId());
74 - // 校验仓库存在  
75 - warehouseService.validateWarehouseExists(updateReqVO.getWarehouseId());  
76 - // 校验编码唯一  
77 - validateWarehouseLocationCodeUnique(updateReqVO.getId(), updateReqVO.getWarehouseId(), updateReqVO.getCode());  
78 - // 校验名称唯一  
79 - validateWarehouseLocationNameUnique(updateReqVO.getId(), updateReqVO.getWarehouseId(), updateReqVO.getName()); 70 + // 校验数据
  71 + validateWarehouseLocationSaveData(updateReqVO);
80 72
81 // 更新 73 // 更新
82 MesWmWarehouseLocationDO updateObj = BeanUtils.toBean(updateReqVO, MesWmWarehouseLocationDO.class); 74 MesWmWarehouseLocationDO updateObj = BeanUtils.toBean(updateReqVO, MesWmWarehouseLocationDO.class);
83 locationMapper.updateById(updateObj); 75 locationMapper.updateById(updateObj);
84 } 76 }
85 77
  78 + private void validateWarehouseLocationSaveData(MesWmWarehouseLocationSaveReqVO reqVO) {
  79 + // 校验仓库存在
  80 + warehouseService.validateWarehouseExists(reqVO.getWarehouseId());
  81 + // 校验编码唯一
  82 + validateWarehouseLocationCodeUnique(reqVO.getId(), reqVO.getWarehouseId(), reqVO.getCode());
  83 + // 校验名称唯一
  84 + validateWarehouseLocationNameUnique(reqVO.getId(), reqVO.getWarehouseId(), reqVO.getName());
  85 + }
  86 +
86 @Override 87 @Override
87 public void deleteWarehouseLocation(Long id) { 88 public void deleteWarehouseLocation(Long id) {
88 // 校验存在 89 // 校验存在
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java
@@ -46,10 +46,8 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { @@ -46,10 +46,8 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService {
46 46
47 @Override 47 @Override
48 public Long createWarehouse(MesWmWarehouseSaveReqVO createReqVO) { 48 public Long createWarehouse(MesWmWarehouseSaveReqVO createReqVO) {
49 - // 校验编码唯一  
50 - validateWarehouseCodeUnique(null, createReqVO.getCode());  
51 - // 校验名称唯一  
52 - validateWarehouseNameUnique(null, createReqVO.getName()); 49 + // 校验数据
  50 + validateWarehouseSaveData(createReqVO);
53 51
54 // 插入 52 // 插入
55 MesWmWarehouseDO warehouse = BeanUtils.toBean(createReqVO, MesWmWarehouseDO.class); 53 MesWmWarehouseDO warehouse = BeanUtils.toBean(createReqVO, MesWmWarehouseDO.class);
@@ -65,16 +63,21 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { @@ -65,16 +63,21 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService {
65 public void updateWarehouse(MesWmWarehouseSaveReqVO updateReqVO) { 63 public void updateWarehouse(MesWmWarehouseSaveReqVO updateReqVO) {
66 // 校验存在 64 // 校验存在
67 validateWarehouseExists(updateReqVO.getId()); 65 validateWarehouseExists(updateReqVO.getId());
68 - // 校验编码唯一  
69 - validateWarehouseCodeUnique(updateReqVO.getId(), updateReqVO.getCode());  
70 - // 校验名称唯一  
71 - validateWarehouseNameUnique(updateReqVO.getId(), updateReqVO.getName()); 66 + // 校验数据
  67 + validateWarehouseSaveData(updateReqVO);
72 68
73 // 更新 69 // 更新
74 MesWmWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, MesWmWarehouseDO.class); 70 MesWmWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, MesWmWarehouseDO.class);
75 warehouseMapper.updateById(updateObj); 71 warehouseMapper.updateById(updateObj);
76 } 72 }
77 73
  74 + private void validateWarehouseSaveData(MesWmWarehouseSaveReqVO reqVO) {
  75 + // 校验编码唯一
  76 + validateWarehouseCodeUnique(reqVO.getId(), reqVO.getCode());
  77 + // 校验名称唯一
  78 + validateWarehouseNameUnique(reqVO.getId(), reqVO.getName());
  79 + }
  80 +
78 @Override 81 @Override
79 public void deleteWarehouse(Long id) { 82 public void deleteWarehouse(Long id) {
80 // 校验存在 83 // 校验存在