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 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 106 @GetMapping("/export-excel")
92 107 @Operation(summary = "导出物料名称 Excel")
93 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 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 106 @GetMapping("/export-excel")
92 107 @Operation(summary = "导出物料规格 Excel")
93 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 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 106 @GetMapping("/export-excel")
92 107 @Operation(summary = "导出物料单位 Excel")
93 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 20 default PageResult<MaterialSpecificationDO> selectPage(MaterialSpecificationPageReqVO reqVO) {
21 21 return selectPage(reqVO, new LambdaQueryWrapperX<MaterialSpecificationDO>()
22 22 .eqIfPresent(MaterialSpecificationDO::getSpecCode, reqVO.getSpecCode())
23   - .eqIfPresent(MaterialSpecificationDO::getSpecifications, reqVO.getSpecifications())
  23 + .likeIfPresent(MaterialSpecificationDO::getSpecifications, reqVO.getSpecifications())
24 24 .eqIfPresent(MaterialSpecificationDO::getRemark, reqVO.getRemark())
25 25 .betweenIfPresent(MaterialSpecificationDO::getCreateTime, reqVO.getCreateTime())
26 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 43 .likeIfPresent(RoadDO::getCreatorName, reqVO.getCreatorName())
44 44 .betweenIfPresent(RoadDO::getCreateTime, reqVO.getCreateTime())
45 45 .likeIfPresent(RoadDO::getUpdaterName, reqVO.getUpdaterName())
46   - .orderBy(true, reqVO.getSortAsc(),
  46 + .orderBy(false, reqVO.getSortAsc(),
47 47 RoadPageReqVO.SORT_FIELD_MAP.get(reqVO.getOrderByColumn())
48 48 )
49 49 );
50 50 }
51 51  
52   -}
53 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 115 ErrorCode MATERIAL_INVENTORY_OUT_NOT_EXISTS = new ErrorCode(1-100-004-005, "物料出库不存在");
116 116 ErrorCode MATERIAL_INVENTORY_NOT_EXISTS = new ErrorCode(1-100-004-006, "物料库存不存在");
117 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 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 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 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 17  
18 18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
19 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 21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
22 22  
23 23 /**
... ... @@ -34,9 +34,12 @@ public class MaterialNameServiceImpl implements MaterialNameService {
34 34  
35 35 @Override
36 36 public Long createMaterialName(MaterialNameSaveReqVO createReqVO) {
  37 + // 校验物料名称是否重复
  38 + validateMaterialNameUnique(null, createReqVO.getMaterialName());
  39 +
37 40 // 生成物料名称ID:获取数据库中最大的值然后+1
38 41 Long materialId = generateMaterialId();
39   -
  42 +
40 43 // 插入
41 44 MaterialNameDO materialName = BeanUtils.toBean(createReqVO, MaterialNameDO.class);
42 45 materialName.setMaterialId(materialId);
... ... @@ -53,7 +56,7 @@ public class MaterialNameServiceImpl implements MaterialNameService {
53 56 private Long generateMaterialId() {
54 57 // 获取所有物料名称
55 58 List<MaterialNameDO> allMaterials = materialNameMapper.selectList();
56   -
  59 +
57 60 long maxId = 0;
58 61 if (CollUtil.isNotEmpty(allMaterials)) {
59 62 // 遍历找到最大的ID值
... ... @@ -63,7 +66,7 @@ public class MaterialNameServiceImpl implements MaterialNameService {
63 66 }
64 67 }
65 68 }
66   -
  69 +
67 70 // 生成新ID:最大ID+1
68 71 return maxId + 1;
69 72 }
... ... @@ -72,11 +75,25 @@ public class MaterialNameServiceImpl implements MaterialNameService {
72 75 public void updateMaterialName(MaterialNameSaveReqVO updateReqVO) {
73 76 // 校验存在
74 77 validateMaterialNameExists(updateReqVO.getId());
  78 + // 校验物料名称是否重复
  79 + validateMaterialNameUnique(updateReqVO.getId(), updateReqVO.getMaterialName());
75 80 // 更新
76 81 MaterialNameDO updateObj = BeanUtils.toBean(updateReqVO, MaterialNameDO.class);
77 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 97 @Override
81 98 public void deleteMaterialName(Long id) {
82 99 // 校验存在
... ... @@ -108,4 +125,4 @@ public class MaterialNameServiceImpl implements MaterialNameService {
108 125 return materialNameMapper.selectPage(pageReqVO);
109 126 }
110 127  
111   -}
112 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 17  
18 18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
19 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 21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
22 22  
23 23 /**
... ... @@ -34,9 +34,12 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
34 34  
35 35 @Override
36 36 public Long createMaterialSpecification(MaterialSpecificationSaveReqVO createReqVO) {
  37 + // 校验规格名称是否重复
  38 + validateSpecificationsUnique(null, createReqVO.getSpecifications());
  39 +
37 40 // 生成规格编码:获取数据库中最大的值然后+1
38 41 String specCode = generateSpecCode();
39   -
  42 +
40 43 // 插入
41 44 MaterialSpecificationDO materialSpecification = BeanUtils.toBean(createReqVO, MaterialSpecificationDO.class);
42 45 materialSpecification.setSpecCode(specCode);
... ... @@ -53,7 +56,7 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
53 56 private String generateSpecCode() {
54 57 // 获取所有物料规格
55 58 List<MaterialSpecificationDO> allSpecifications = materialSpecificationMapper.selectList();
56   -
  59 +
57 60 int maxCode = 0;
58 61 if (CollUtil.isNotEmpty(allSpecifications)) {
59 62 // 遍历找到最大的编码
... ... @@ -70,7 +73,7 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
70 73 }
71 74 }
72 75 }
73   -
  76 +
74 77 // 生成新编码:最大编码+1
75 78 return String.valueOf(maxCode + 1);
76 79 }
... ... @@ -79,11 +82,25 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
79 82 public void updateMaterialSpecification(MaterialSpecificationSaveReqVO updateReqVO) {
80 83 // 校验存在
81 84 validateMaterialSpecificationExists(updateReqVO.getId());
  85 + // 校验规格名称是否重复
  86 + validateSpecificationsUnique(updateReqVO.getId(), updateReqVO.getSpecifications());
82 87 // 更新
83 88 MaterialSpecificationDO updateObj = BeanUtils.toBean(updateReqVO, MaterialSpecificationDO.class);
84 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 104 @Override
88 105 public void deleteMaterialSpecification(Long id) {
89 106 // 校验存在
... ... @@ -115,4 +132,4 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
115 132 return materialSpecificationMapper.selectPage(pageReqVO);
116 133 }
117 134  
118   -}
119 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 17  
18 18 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
19 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 21 import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
22 22  
23 23 /**
... ... @@ -34,9 +34,12 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
34 34  
35 35 @Override
36 36 public Long createMaterialUnit(MaterialUnitSaveReqVO createReqVO) {
  37 + // 校验单位名称是否重复
  38 + validateUnitNameUnique(null, createReqVO.getUnitName());
  39 +
37 40 // 生成单位ID:获取数据库中最大的值然后+1
38 41 Long unitId = generateUnitId();
39   -
  42 +
40 43 // 插入
41 44 MaterialUnitDO materialUnit = BeanUtils.toBean(createReqVO, MaterialUnitDO.class);
42 45 materialUnit.setUnitId(unitId);
... ... @@ -53,7 +56,7 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
53 56 private Long generateUnitId() {
54 57 // 获取所有物料单位
55 58 List<MaterialUnitDO> allUnits = materialUnitMapper.selectList();
56   -
  59 +
57 60 long maxId = 0;
58 61 if (CollUtil.isNotEmpty(allUnits)) {
59 62 // 遍历找到最大的ID值
... ... @@ -63,7 +66,7 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
63 66 }
64 67 }
65 68 }
66   -
  69 +
67 70 // 生成新ID:最大ID+1
68 71 return maxId + 1;
69 72 }
... ... @@ -72,11 +75,25 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
72 75 public void updateMaterialUnit(MaterialUnitSaveReqVO updateReqVO) {
73 76 // 校验存在
74 77 validateMaterialUnitExists(updateReqVO.getId());
  78 + // 校验单位名称是否重复
  79 + validateUnitNameUnique(updateReqVO.getId(), updateReqVO.getUnitName());
75 80 // 更新
76 81 MaterialUnitDO updateObj = BeanUtils.toBean(updateReqVO, MaterialUnitDO.class);
77 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 97 @Override
81 98 public void deleteMaterialUnit(Long id) {
82 99 // 校验存在
... ... @@ -108,4 +125,4 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
108 125 return materialUnitMapper.selectPage(pageReqVO);
109 126 }
110 127  
111   -}
112 128 \ No newline at end of file
  129 +}
... ...