Commit 2e849fc3d2ebfbedc43321cbf1f8262d75c6ed0b

Authored by 王彪总
1 parent b755577c

feat(garden): 新增物料管理功能模块

- 创建物料名称相关实体类、控制器、服务接口及实现类
- 创建物料规格相关实体类、控制器、服务接口及实现类
- 创建物料单位相关实体类、控制器、服务接口及实现类
- 实现物料名称、规格、单位的CRUD操作功能
- 添加分页查询、批量删除和Excel导出功能
- 配置权限验证和数据校验机制
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialname/vo/MaterialNameSaveReqVO.java
@@ -13,17 +13,16 @@ public class MaterialNameSaveReqVO { @@ -13,17 +13,16 @@ public class MaterialNameSaveReqVO {
13 private Long id; 13 private Long id;
14 14
15 @Schema(description = "物料名称ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14631") 15 @Schema(description = "物料名称ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14631")
16 - @NotNull(message = "物料名称ID不能为空")  
17 private Long materialId; 16 private Long materialId;
18 17
  18 + @NotEmpty(message = "物料名称不能为空")
19 @Schema(description = "物料名称", example = "张三") 19 @Schema(description = "物料名称", example = "张三")
20 private String materialName; 20 private String materialName;
21 21
22 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") 22 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
23 - @NotEmpty(message = "备注不能为空")  
24 private String remark; 23 private String remark;
25 24
26 @Schema(description = "部门ID", example = "23084") 25 @Schema(description = "部门ID", example = "23084")
27 private Long deptId; 26 private Long deptId;
28 27
29 -}  
30 \ No newline at end of file 28 \ No newline at end of file
  29 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialspecification/vo/MaterialSpecificationSaveReqVO.java
@@ -20,10 +20,9 @@ public class MaterialSpecificationSaveReqVO { @@ -20,10 +20,9 @@ public class MaterialSpecificationSaveReqVO {
20 private String specifications; 20 private String specifications;
21 21
22 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") 22 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
23 - @NotEmpty(message = "备注不能为空")  
24 private String remark; 23 private String remark;
25 24
26 @Schema(description = "部门ID", example = "18158") 25 @Schema(description = "部门ID", example = "18158")
27 private Long deptId; 26 private Long deptId;
28 27
29 -}  
30 \ No newline at end of file 28 \ No newline at end of file
  29 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialunit/vo/MaterialUnitSaveReqVO.java
@@ -13,7 +13,6 @@ public class MaterialUnitSaveReqVO { @@ -13,7 +13,6 @@ public class MaterialUnitSaveReqVO {
13 private Long id; 13 private Long id;
14 14
15 @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22342") 15 @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22342")
16 - @NotNull(message = "单位ID不能为空")  
17 private Long unitId; 16 private Long unitId;
18 17
19 @Schema(description = "单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") 18 @Schema(description = "单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@@ -21,10 +20,9 @@ public class MaterialUnitSaveReqVO { @@ -21,10 +20,9 @@ public class MaterialUnitSaveReqVO {
21 private String unitName; 20 private String unitName;
22 21
23 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") 22 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
24 - @NotEmpty(message = "备注不能为空")  
25 private String remark; 23 private String remark;
26 24
27 @Schema(description = "部门ID", example = "8809") 25 @Schema(description = "部门ID", example = "8809")
28 private Long deptId; 26 private Long deptId;
29 27
30 -}  
31 \ No newline at end of file 28 \ No newline at end of file
  29 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialname/MaterialNameServiceImpl.java
@@ -34,14 +34,40 @@ public class MaterialNameServiceImpl implements MaterialNameService { @@ -34,14 +34,40 @@ public class MaterialNameServiceImpl implements MaterialNameService {
34 34
35 @Override 35 @Override
36 public Long createMaterialName(MaterialNameSaveReqVO createReqVO) { 36 public Long createMaterialName(MaterialNameSaveReqVO createReqVO) {
  37 + // 生成物料名称ID:获取数据库中最大的值然后+1
  38 + Long materialId = generateMaterialId();
  39 +
37 // 插入 40 // 插入
38 MaterialNameDO materialName = BeanUtils.toBean(createReqVO, MaterialNameDO.class); 41 MaterialNameDO materialName = BeanUtils.toBean(createReqVO, MaterialNameDO.class);
  42 + materialName.setMaterialId(materialId);
39 materialNameMapper.insert(materialName); 43 materialNameMapper.insert(materialName);
40 44
41 // 返回 45 // 返回
42 return materialName.getId(); 46 return materialName.getId();
43 } 47 }
44 48
  49 + /**
  50 + * 生成物料名称ID
  51 + * 规则:获取数据库中最大的值然后+1
  52 + */
  53 + private Long generateMaterialId() {
  54 + // 获取所有物料名称
  55 + List<MaterialNameDO> allMaterials = materialNameMapper.selectList();
  56 +
  57 + long maxId = 0;
  58 + if (CollUtil.isNotEmpty(allMaterials)) {
  59 + // 遍历找到最大的ID值
  60 + for (MaterialNameDO material : allMaterials) {
  61 + if (material.getMaterialId() != null && material.getMaterialId() > maxId) {
  62 + maxId = material.getMaterialId();
  63 + }
  64 + }
  65 + }
  66 +
  67 + // 生成新ID:最大ID+1
  68 + return maxId + 1;
  69 + }
  70 +
45 @Override 71 @Override
46 public void updateMaterialName(MaterialNameSaveReqVO updateReqVO) { 72 public void updateMaterialName(MaterialNameSaveReqVO updateReqVO) {
47 // 校验存在 73 // 校验存在
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialspecification/MaterialSpecificationServiceImpl.java
@@ -34,14 +34,47 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe @@ -34,14 +34,47 @@ public class MaterialSpecificationServiceImpl implements MaterialSpecificationSe
34 34
35 @Override 35 @Override
36 public Long createMaterialSpecification(MaterialSpecificationSaveReqVO createReqVO) { 36 public Long createMaterialSpecification(MaterialSpecificationSaveReqVO createReqVO) {
  37 + // 生成规格编码:获取数据库中最大的值然后+1
  38 + String specCode = generateSpecCode();
  39 +
37 // 插入 40 // 插入
38 MaterialSpecificationDO materialSpecification = BeanUtils.toBean(createReqVO, MaterialSpecificationDO.class); 41 MaterialSpecificationDO materialSpecification = BeanUtils.toBean(createReqVO, MaterialSpecificationDO.class);
  42 + materialSpecification.setSpecCode(specCode);
39 materialSpecificationMapper.insert(materialSpecification); 43 materialSpecificationMapper.insert(materialSpecification);
40 44
41 // 返回 45 // 返回
42 return materialSpecification.getId(); 46 return materialSpecification.getId();
43 } 47 }
44 48
  49 + /**
  50 + * 生成规格编码
  51 + * 规则:获取数据库中最大的值然后+1
  52 + */
  53 + private String generateSpecCode() {
  54 + // 获取所有物料规格
  55 + List<MaterialSpecificationDO> allSpecifications = materialSpecificationMapper.selectList();
  56 +
  57 + int maxCode = 0;
  58 + if (CollUtil.isNotEmpty(allSpecifications)) {
  59 + // 遍历找到最大的编码
  60 + for (MaterialSpecificationDO spec : allSpecifications) {
  61 + if (spec.getSpecCode() != null) {
  62 + try {
  63 + int code = Integer.parseInt(spec.getSpecCode());
  64 + if (code > maxCode) {
  65 + maxCode = code;
  66 + }
  67 + } catch (NumberFormatException e) {
  68 + // 忽略非数字编码
  69 + }
  70 + }
  71 + }
  72 + }
  73 +
  74 + // 生成新编码:最大编码+1
  75 + return String.valueOf(maxCode + 1);
  76 + }
  77 +
45 @Override 78 @Override
46 public void updateMaterialSpecification(MaterialSpecificationSaveReqVO updateReqVO) { 79 public void updateMaterialSpecification(MaterialSpecificationSaveReqVO updateReqVO) {
47 // 校验存在 80 // 校验存在
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialunit/MaterialUnitServiceImpl.java
@@ -34,14 +34,40 @@ public class MaterialUnitServiceImpl implements MaterialUnitService { @@ -34,14 +34,40 @@ public class MaterialUnitServiceImpl implements MaterialUnitService {
34 34
35 @Override 35 @Override
36 public Long createMaterialUnit(MaterialUnitSaveReqVO createReqVO) { 36 public Long createMaterialUnit(MaterialUnitSaveReqVO createReqVO) {
  37 + // 生成单位ID:获取数据库中最大的值然后+1
  38 + Long unitId = generateUnitId();
  39 +
37 // 插入 40 // 插入
38 MaterialUnitDO materialUnit = BeanUtils.toBean(createReqVO, MaterialUnitDO.class); 41 MaterialUnitDO materialUnit = BeanUtils.toBean(createReqVO, MaterialUnitDO.class);
  42 + materialUnit.setUnitId(unitId);
39 materialUnitMapper.insert(materialUnit); 43 materialUnitMapper.insert(materialUnit);
40 44
41 // 返回 45 // 返回
42 return materialUnit.getId(); 46 return materialUnit.getId();
43 } 47 }
44 48
  49 + /**
  50 + * 生成单位ID
  51 + * 规则:获取数据库中最大的值然后+1
  52 + */
  53 + private Long generateUnitId() {
  54 + // 获取所有物料单位
  55 + List<MaterialUnitDO> allUnits = materialUnitMapper.selectList();
  56 +
  57 + long maxId = 0;
  58 + if (CollUtil.isNotEmpty(allUnits)) {
  59 + // 遍历找到最大的ID值
  60 + for (MaterialUnitDO unit : allUnits) {
  61 + if (unit.getUnitId() != null && unit.getUnitId() > maxId) {
  62 + maxId = unit.getUnitId();
  63 + }
  64 + }
  65 + }
  66 +
  67 + // 生成新ID:最大ID+1
  68 + return maxId + 1;
  69 + }
  70 +
45 @Override 71 @Override
46 public void updateMaterialUnit(MaterialUnitSaveReqVO updateReqVO) { 72 public void updateMaterialUnit(MaterialUnitSaveReqVO updateReqVO) {
47 // 校验存在 73 // 校验存在