Commit 4a1a8777e200551fa93673a8ca6d29206c534c07

Authored by 王彪总
1 parent 2e849fc3

feat(garden): 添加物料管理重复校验和模糊搜索功能

- 新增物料名称、规格、单位重复校验逻辑
- 添加MATERIAL_NAME_EXISTS、MATERIAL_SPECIFICATION_NAME_EXISTS、MATERIAL_UNIT_NAME_EXISTS错误码
- 实现物料名称、规格、单位的模糊搜索接口
- 修改道路拦截查询的排序逻辑
- 优化代码结构并移除未使用的导入
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialname/MaterialNameController.java
@@ -88,6 +88,21 @@ public class MaterialNameController { @@ -88,6 +88,21 @@ public class MaterialNameController {
88 return success(BeanUtils.toBean(pageResult, MaterialNameRespVO.class)); 88 return success(BeanUtils.toBean(pageResult, MaterialNameRespVO.class));
89 } 89 }
90 90
  91 + @GetMapping("/list")
  92 + @Operation(summary = "获得物料名称列表(支持模糊搜索)")
  93 + @PreAuthorize("@ss.hasPermission('garden:material-name:query')")
  94 + public CommonResult<List<MaterialNameRespVO>> getMaterialNameList(
  95 + @RequestParam(value = "materialName", required = false) String materialName) {
  96 + // 构建查询条件
  97 + MaterialNamePageReqVO pageReqVO = new MaterialNamePageReqVO();
  98 + pageReqVO.setMaterialName(materialName);
  99 + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  100 +
  101 + // 查询数据
  102 + List<MaterialNameDO> list = materialNameService.getMaterialNamePage(pageReqVO).getList();
  103 + return success(BeanUtils.toBean(list, MaterialNameRespVO.class));
  104 + }
  105 +
91 @GetMapping("/export-excel") 106 @GetMapping("/export-excel")
92 @Operation(summary = "导出物料名称 Excel") 107 @Operation(summary = "导出物料名称 Excel")
93 @PreAuthorize("@ss.hasPermission('garden:material-name:export')") 108 @PreAuthorize("@ss.hasPermission('garden:material-name:export')")
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialspecification/MaterialSpecificationController.java
@@ -88,6 +88,21 @@ public class MaterialSpecificationController { @@ -88,6 +88,21 @@ public class MaterialSpecificationController {
88 return success(BeanUtils.toBean(pageResult, MaterialSpecificationRespVO.class)); 88 return success(BeanUtils.toBean(pageResult, MaterialSpecificationRespVO.class));
89 } 89 }
90 90
  91 + @GetMapping("/list")
  92 + @Operation(summary = "获得物料规格列表(支持模糊搜索)")
  93 + @PreAuthorize("@ss.hasPermission('garden:material-specification:query')")
  94 + public CommonResult<List<MaterialSpecificationRespVO>> getMaterialSpecificationList(
  95 + @RequestParam(value = "specifications", required = false) String specifications) {
  96 + // 构建查询条件
  97 + MaterialSpecificationPageReqVO pageReqVO = new MaterialSpecificationPageReqVO();
  98 + pageReqVO.setSpecifications(specifications);
  99 + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  100 +
  101 + // 查询数据
  102 + List<MaterialSpecificationDO> list = materialSpecificationService.getMaterialSpecificationPage(pageReqVO).getList();
  103 + return success(BeanUtils.toBean(list, MaterialSpecificationRespVO.class));
  104 + }
  105 +
91 @GetMapping("/export-excel") 106 @GetMapping("/export-excel")
92 @Operation(summary = "导出物料规格 Excel") 107 @Operation(summary = "导出物料规格 Excel")
93 @PreAuthorize("@ss.hasPermission('garden:material-specification:export')") 108 @PreAuthorize("@ss.hasPermission('garden:material-specification:export')")
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialunit/MaterialUnitController.java
@@ -88,6 +88,21 @@ public class MaterialUnitController { @@ -88,6 +88,21 @@ public class MaterialUnitController {
88 return success(BeanUtils.toBean(pageResult, MaterialUnitRespVO.class)); 88 return success(BeanUtils.toBean(pageResult, MaterialUnitRespVO.class));
89 } 89 }
90 90
  91 + @GetMapping("/list")
  92 + @Operation(summary = "获得物料单位列表(支持模糊搜索)")
  93 + @PreAuthorize("@ss.hasPermission('garden:material-unit:query')")
  94 + public CommonResult<List<MaterialUnitRespVO>> getMaterialUnitList(
  95 + @RequestParam(value = "unitName", required = false) String unitName) {
  96 + // 构建查询条件
  97 + MaterialUnitPageReqVO pageReqVO = new MaterialUnitPageReqVO();
  98 + pageReqVO.setUnitName(unitName);
  99 + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  100 +
  101 + // 查询数据
  102 + List<MaterialUnitDO> list = materialUnitService.getMaterialUnitPage(pageReqVO).getList();
  103 + return success(BeanUtils.toBean(list, MaterialUnitRespVO.class));
  104 + }
  105 +
91 @GetMapping("/export-excel") 106 @GetMapping("/export-excel")
92 @Operation(summary = "导出物料单位 Excel") 107 @Operation(summary = "导出物料单位 Excel")
93 @PreAuthorize("@ss.hasPermission('garden:material-unit:export')") 108 @PreAuthorize("@ss.hasPermission('garden:material-unit:export')")
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/materialspecification/MaterialSpecificationMapper.java
@@ -20,7 +20,7 @@ public interface MaterialSpecificationMapper extends BaseMapperX&lt;MaterialSpecifi @@ -20,7 +20,7 @@ public interface MaterialSpecificationMapper extends BaseMapperX&lt;MaterialSpecifi
20 default PageResult<MaterialSpecificationDO> selectPage(MaterialSpecificationPageReqVO reqVO) { 20 default PageResult<MaterialSpecificationDO> selectPage(MaterialSpecificationPageReqVO reqVO) {
21 return selectPage(reqVO, new LambdaQueryWrapperX<MaterialSpecificationDO>() 21 return selectPage(reqVO, new LambdaQueryWrapperX<MaterialSpecificationDO>()
22 .eqIfPresent(MaterialSpecificationDO::getSpecCode, reqVO.getSpecCode()) 22 .eqIfPresent(MaterialSpecificationDO::getSpecCode, reqVO.getSpecCode())
23 - .eqIfPresent(MaterialSpecificationDO::getSpecifications, reqVO.getSpecifications()) 23 + .likeIfPresent(MaterialSpecificationDO::getSpecifications, reqVO.getSpecifications())
24 .eqIfPresent(MaterialSpecificationDO::getRemark, reqVO.getRemark()) 24 .eqIfPresent(MaterialSpecificationDO::getRemark, reqVO.getRemark())
25 .betweenIfPresent(MaterialSpecificationDO::getCreateTime, reqVO.getCreateTime()) 25 .betweenIfPresent(MaterialSpecificationDO::getCreateTime, reqVO.getCreateTime())
26 .eqIfPresent(MaterialSpecificationDO::getDeptId, reqVO.getDeptId()) 26 .eqIfPresent(MaterialSpecificationDO::getDeptId, reqVO.getDeptId())
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadInterceptMapper.java
@@ -43,10 +43,10 @@ public interface RoadInterceptMapper extends BaseMapperX&lt;RoadDO&gt; { @@ -43,10 +43,10 @@ public interface RoadInterceptMapper extends BaseMapperX&lt;RoadDO&gt; {
43 .likeIfPresent(RoadDO::getCreatorName, reqVO.getCreatorName()) 43 .likeIfPresent(RoadDO::getCreatorName, reqVO.getCreatorName())
44 .betweenIfPresent(RoadDO::getCreateTime, reqVO.getCreateTime()) 44 .betweenIfPresent(RoadDO::getCreateTime, reqVO.getCreateTime())
45 .likeIfPresent(RoadDO::getUpdaterName, reqVO.getUpdaterName()) 45 .likeIfPresent(RoadDO::getUpdaterName, reqVO.getUpdaterName())
46 - .orderBy(true, reqVO.getSortAsc(), 46 + .orderBy(false, reqVO.getSortAsc(),
47 RoadPageReqVO.SORT_FIELD_MAP.get(reqVO.getOrderByColumn()) 47 RoadPageReqVO.SORT_FIELD_MAP.get(reqVO.getOrderByColumn())
48 ) 48 )
49 ); 49 );
50 } 50 }
51 51
52 -}  
53 \ No newline at end of file 52 \ No newline at end of file
  53 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java
@@ -115,9 +115,13 @@ public interface ErrorCodeConstants { @@ -115,9 +115,13 @@ public interface ErrorCodeConstants {
115 ErrorCode MATERIAL_INVENTORY_OUT_NOT_EXISTS = new ErrorCode(1-100-004-005, "物料出库不存在"); 115 ErrorCode MATERIAL_INVENTORY_OUT_NOT_EXISTS = new ErrorCode(1-100-004-005, "物料出库不存在");
116 ErrorCode MATERIAL_INVENTORY_NOT_EXISTS = new ErrorCode(1-100-004-006, "物料库存不存在"); 116 ErrorCode MATERIAL_INVENTORY_NOT_EXISTS = new ErrorCode(1-100-004-006, "物料库存不存在");
117 ErrorCode MATERIAL_NAME_NOT_EXISTS = new ErrorCode(1-100-004-007, "物料名称不存在"); 117 ErrorCode MATERIAL_NAME_NOT_EXISTS = new ErrorCode(1-100-004-007, "物料名称不存在");
  118 + ErrorCode MATERIAL_NAME_EXISTS = new ErrorCode(1-100-004-0013, "物料名称已经存在");
118 119
119 ErrorCode MATERIAL_SPECIFICATION_NOT_EXISTS = new ErrorCode(1-100-004-010, "物料规格不存在"); 120 ErrorCode MATERIAL_SPECIFICATION_NOT_EXISTS = new ErrorCode(1-100-004-010, "物料规格不存在");
  121 + ErrorCode MATERIAL_SPECIFICATION_NAME_EXISTS = new ErrorCode(1-100-004-014, "物料规格名称已经存在");
  122 +
120 ErrorCode MATERIAL_UNIT_NOT_EXISTS = new ErrorCode(1-100-004-011, "物料单位不存在"); 123 ErrorCode MATERIAL_UNIT_NOT_EXISTS = new ErrorCode(1-100-004-011, "物料单位不存在");
  124 + ErrorCode MATERIAL_UNIT_NAME_EXISTS = new ErrorCode(1-100-004-012, "物料单位名称存在");
121 125
122 ErrorCode OLDTREES_NOT_EXISTS = new ErrorCode(1-100-005-001, "古树名木不存在"); 126 ErrorCode OLDTREES_NOT_EXISTS = new ErrorCode(1-100-005-001, "古树名木不存在");
123 127
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialname/MaterialNameServiceImpl.java
@@ -17,7 +17,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.materialname.MaterialNameMapp @@ -17,7 +17,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.materialname.MaterialNameMapp
17 17
18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
19 import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; 19 import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;
20 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; 20 +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX;
21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; 21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
22 22
23 /** 23 /**
@@ -34,9 +34,12 @@ public class MaterialNameServiceImpl implements MaterialNameService { @@ -34,9 +34,12 @@ public class MaterialNameServiceImpl implements MaterialNameService {
34 34
35 @Override 35 @Override
36 public Long createMaterialName(MaterialNameSaveReqVO createReqVO) { 36 public Long createMaterialName(MaterialNameSaveReqVO createReqVO) {
  37 + // 校验物料名称是否重复
  38 + validateMaterialNameUnique(null, createReqVO.getMaterialName());
  39 +
37 // 生成物料名称ID:获取数据库中最大的值然后+1 40 // 生成物料名称ID:获取数据库中最大的值然后+1
38 Long materialId = generateMaterialId(); 41 Long materialId = generateMaterialId();
39 - 42 +
40 // 插入 43 // 插入
41 MaterialNameDO materialName = BeanUtils.toBean(createReqVO, MaterialNameDO.class); 44 MaterialNameDO materialName = BeanUtils.toBean(createReqVO, MaterialNameDO.class);
42 materialName.setMaterialId(materialId); 45 materialName.setMaterialId(materialId);
@@ -53,7 +56,7 @@ public class MaterialNameServiceImpl implements MaterialNameService { @@ -53,7 +56,7 @@ public class MaterialNameServiceImpl implements MaterialNameService {
53 private Long generateMaterialId() { 56 private Long generateMaterialId() {
54 // 获取所有物料名称 57 // 获取所有物料名称
55 List<MaterialNameDO> allMaterials = materialNameMapper.selectList(); 58 List<MaterialNameDO> allMaterials = materialNameMapper.selectList();
56 - 59 +
57 long maxId = 0; 60 long maxId = 0;
58 if (CollUtil.isNotEmpty(allMaterials)) { 61 if (CollUtil.isNotEmpty(allMaterials)) {
59 // 遍历找到最大的ID值 62 // 遍历找到最大的ID值
@@ -63,7 +66,7 @@ public class MaterialNameServiceImpl implements MaterialNameService { @@ -63,7 +66,7 @@ public class MaterialNameServiceImpl implements MaterialNameService {
63 } 66 }
64 } 67 }
65 } 68 }
66 - 69 +
67 // 生成新ID:最大ID+1 70 // 生成新ID:最大ID+1
68 return maxId + 1; 71 return maxId + 1;
69 } 72 }
@@ -72,11 +75,25 @@ public class MaterialNameServiceImpl implements MaterialNameService { @@ -72,11 +75,25 @@ public class MaterialNameServiceImpl implements MaterialNameService {
72 public void updateMaterialName(MaterialNameSaveReqVO updateReqVO) { 75 public void updateMaterialName(MaterialNameSaveReqVO updateReqVO) {
73 // 校验存在 76 // 校验存在
74 validateMaterialNameExists(updateReqVO.getId()); 77 validateMaterialNameExists(updateReqVO.getId());
  78 + // 校验物料名称是否重复
  79 + validateMaterialNameUnique(updateReqVO.getId(), updateReqVO.getMaterialName());
75 // 更新 80 // 更新
76 MaterialNameDO updateObj = BeanUtils.toBean(updateReqVO, MaterialNameDO.class); 81 MaterialNameDO updateObj = BeanUtils.toBean(updateReqVO, MaterialNameDO.class);
77 materialNameMapper.updateById(updateObj); 82 materialNameMapper.updateById(updateObj);
78 } 83 }
79 84
  85 + /**
  86 + * 校验物料名称是否唯一
  87 + */
  88 + private void validateMaterialNameUnique(Long id, String materialName) {
  89 + List<MaterialNameDO> existingMaterials = materialNameMapper.selectList(new LambdaQueryWrapperX<MaterialNameDO>()
  90 + .eq(MaterialNameDO::getMaterialName, materialName)
  91 + .neIfPresent(MaterialNameDO::getId, id));
  92 + if (CollUtil.isNotEmpty(existingMaterials)) {
  93 + throw exception(MATERIAL_NAME_EXISTS);
  94 + }
  95 + }
  96 +
80 @Override 97 @Override
81 public void deleteMaterialName(Long id) { 98 public void deleteMaterialName(Long id) {
82 // 校验存在 99 // 校验存在
@@ -108,4 +125,4 @@ public class MaterialNameServiceImpl implements MaterialNameService { @@ -108,4 +125,4 @@ public class MaterialNameServiceImpl implements MaterialNameService {
108 return materialNameMapper.selectPage(pageReqVO); 125 return materialNameMapper.selectPage(pageReqVO);
109 } 126 }
110 127
111 -}  
112 \ No newline at end of file 128 \ No newline at end of file
  129 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialspecification/MaterialSpecificationServiceImpl.java
@@ -17,7 +17,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.materialspecification.Materia @@ -17,7 +17,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.materialspecification.Materia
17 17
18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
19 import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; 19 import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;
20 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; 20 +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX;
21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; 21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
22 22
23 /** 23 /**
@@ -34,9 +34,12 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe @@ -34,9 +34,12 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
34 34
35 @Override 35 @Override
36 public Long createMaterialSpecification(MaterialSpecificationSaveReqVO createReqVO) { 36 public Long createMaterialSpecification(MaterialSpecificationSaveReqVO createReqVO) {
  37 + // 校验规格名称是否重复
  38 + validateSpecificationsUnique(null, createReqVO.getSpecifications());
  39 +
37 // 生成规格编码:获取数据库中最大的值然后+1 40 // 生成规格编码:获取数据库中最大的值然后+1
38 String specCode = generateSpecCode(); 41 String specCode = generateSpecCode();
39 - 42 +
40 // 插入 43 // 插入
41 MaterialSpecificationDO materialSpecification = BeanUtils.toBean(createReqVO, MaterialSpecificationDO.class); 44 MaterialSpecificationDO materialSpecification = BeanUtils.toBean(createReqVO, MaterialSpecificationDO.class);
42 materialSpecification.setSpecCode(specCode); 45 materialSpecification.setSpecCode(specCode);
@@ -53,7 +56,7 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe @@ -53,7 +56,7 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
53 private String generateSpecCode() { 56 private String generateSpecCode() {
54 // 获取所有物料规格 57 // 获取所有物料规格
55 List<MaterialSpecificationDO> allSpecifications = materialSpecificationMapper.selectList(); 58 List<MaterialSpecificationDO> allSpecifications = materialSpecificationMapper.selectList();
56 - 59 +
57 int maxCode = 0; 60 int maxCode = 0;
58 if (CollUtil.isNotEmpty(allSpecifications)) { 61 if (CollUtil.isNotEmpty(allSpecifications)) {
59 // 遍历找到最大的编码 62 // 遍历找到最大的编码
@@ -70,7 +73,7 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe @@ -70,7 +73,7 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
70 } 73 }
71 } 74 }
72 } 75 }
73 - 76 +
74 // 生成新编码:最大编码+1 77 // 生成新编码:最大编码+1
75 return String.valueOf(maxCode + 1); 78 return String.valueOf(maxCode + 1);
76 } 79 }
@@ -79,11 +82,25 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe @@ -79,11 +82,25 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
79 public void updateMaterialSpecification(MaterialSpecificationSaveReqVO updateReqVO) { 82 public void updateMaterialSpecification(MaterialSpecificationSaveReqVO updateReqVO) {
80 // 校验存在 83 // 校验存在
81 validateMaterialSpecificationExists(updateReqVO.getId()); 84 validateMaterialSpecificationExists(updateReqVO.getId());
  85 + // 校验规格名称是否重复
  86 + validateSpecificationsUnique(updateReqVO.getId(), updateReqVO.getSpecifications());
82 // 更新 87 // 更新
83 MaterialSpecificationDO updateObj = BeanUtils.toBean(updateReqVO, MaterialSpecificationDO.class); 88 MaterialSpecificationDO updateObj = BeanUtils.toBean(updateReqVO, MaterialSpecificationDO.class);
84 materialSpecificationMapper.updateById(updateObj); 89 materialSpecificationMapper.updateById(updateObj);
85 } 90 }
86 91
  92 + /**
  93 + * 校验规格名称是否唯一
  94 + */
  95 + private void validateSpecificationsUnique(Long id, String specifications) {
  96 + List<MaterialSpecificationDO> existingSpecifications = materialSpecificationMapper.selectList(new LambdaQueryWrapperX<MaterialSpecificationDO>()
  97 + .eq(MaterialSpecificationDO::getSpecifications, specifications)
  98 + .neIfPresent(MaterialSpecificationDO::getId, id));
  99 + if (CollUtil.isNotEmpty(existingSpecifications)) {
  100 + throw exception(MATERIAL_SPECIFICATION_NAME_EXISTS);
  101 + }
  102 + }
  103 +
87 @Override 104 @Override
88 public void deleteMaterialSpecification(Long id) { 105 public void deleteMaterialSpecification(Long id) {
89 // 校验存在 106 // 校验存在
@@ -115,4 +132,4 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe @@ -115,4 +132,4 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
115 return materialSpecificationMapper.selectPage(pageReqVO); 132 return materialSpecificationMapper.selectPage(pageReqVO);
116 } 133 }
117 134
118 -}  
119 \ No newline at end of file 135 \ No newline at end of file
  136 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialunit/MaterialUnitServiceImpl.java
@@ -17,7 +17,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.materialunit.MaterialUnitMapp @@ -17,7 +17,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.materialunit.MaterialUnitMapp
17 17
18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
19 import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; 19 import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;
20 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; 20 +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX;
21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; 21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
22 22
23 /** 23 /**
@@ -34,9 +34,12 @@ public class MaterialUnitServiceImpl implements MaterialUnitService { @@ -34,9 +34,12 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
34 34
35 @Override 35 @Override
36 public Long createMaterialUnit(MaterialUnitSaveReqVO createReqVO) { 36 public Long createMaterialUnit(MaterialUnitSaveReqVO createReqVO) {
  37 + // 校验单位名称是否重复
  38 + validateUnitNameUnique(null, createReqVO.getUnitName());
  39 +
37 // 生成单位ID:获取数据库中最大的值然后+1 40 // 生成单位ID:获取数据库中最大的值然后+1
38 Long unitId = generateUnitId(); 41 Long unitId = generateUnitId();
39 - 42 +
40 // 插入 43 // 插入
41 MaterialUnitDO materialUnit = BeanUtils.toBean(createReqVO, MaterialUnitDO.class); 44 MaterialUnitDO materialUnit = BeanUtils.toBean(createReqVO, MaterialUnitDO.class);
42 materialUnit.setUnitId(unitId); 45 materialUnit.setUnitId(unitId);
@@ -53,7 +56,7 @@ public class MaterialUnitServiceImpl implements MaterialUnitService { @@ -53,7 +56,7 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
53 private Long generateUnitId() { 56 private Long generateUnitId() {
54 // 获取所有物料单位 57 // 获取所有物料单位
55 List<MaterialUnitDO> allUnits = materialUnitMapper.selectList(); 58 List<MaterialUnitDO> allUnits = materialUnitMapper.selectList();
56 - 59 +
57 long maxId = 0; 60 long maxId = 0;
58 if (CollUtil.isNotEmpty(allUnits)) { 61 if (CollUtil.isNotEmpty(allUnits)) {
59 // 遍历找到最大的ID值 62 // 遍历找到最大的ID值
@@ -63,7 +66,7 @@ public class MaterialUnitServiceImpl implements MaterialUnitService { @@ -63,7 +66,7 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
63 } 66 }
64 } 67 }
65 } 68 }
66 - 69 +
67 // 生成新ID:最大ID+1 70 // 生成新ID:最大ID+1
68 return maxId + 1; 71 return maxId + 1;
69 } 72 }
@@ -72,11 +75,25 @@ public class MaterialUnitServiceImpl implements MaterialUnitService { @@ -72,11 +75,25 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
72 public void updateMaterialUnit(MaterialUnitSaveReqVO updateReqVO) { 75 public void updateMaterialUnit(MaterialUnitSaveReqVO updateReqVO) {
73 // 校验存在 76 // 校验存在
74 validateMaterialUnitExists(updateReqVO.getId()); 77 validateMaterialUnitExists(updateReqVO.getId());
  78 + // 校验单位名称是否重复
  79 + validateUnitNameUnique(updateReqVO.getId(), updateReqVO.getUnitName());
75 // 更新 80 // 更新
76 MaterialUnitDO updateObj = BeanUtils.toBean(updateReqVO, MaterialUnitDO.class); 81 MaterialUnitDO updateObj = BeanUtils.toBean(updateReqVO, MaterialUnitDO.class);
77 materialUnitMapper.updateById(updateObj); 82 materialUnitMapper.updateById(updateObj);
78 } 83 }
79 84
  85 + /**
  86 + * 校验单位名称是否唯一
  87 + */
  88 + private void validateUnitNameUnique(Long id, String unitName) {
  89 + List<MaterialUnitDO> existingUnits = materialUnitMapper.selectList(new LambdaQueryWrapperX<MaterialUnitDO>()
  90 + .eq(MaterialUnitDO::getUnitName, unitName)
  91 + .neIfPresent(MaterialUnitDO::getId, id));
  92 + if (CollUtil.isNotEmpty(existingUnits)) {
  93 + throw exception(MATERIAL_UNIT_NAME_EXISTS);
  94 + }
  95 + }
  96 +
80 @Override 97 @Override
81 public void deleteMaterialUnit(Long id) { 98 public void deleteMaterialUnit(Long id) {
82 // 校验存在 99 // 校验存在
@@ -108,4 +125,4 @@ public class MaterialUnitServiceImpl implements MaterialUnitService { @@ -108,4 +125,4 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
108 return materialUnitMapper.selectPage(pageReqVO); 125 return materialUnitMapper.selectPage(pageReqVO);
109 } 126 }
110 127
111 -}  
112 \ No newline at end of file 128 \ No newline at end of file
  129 +}