Commit 2e849fc3d2ebfbedc43321cbf1f8262d75c6ed0b
1 parent
b755577c
feat(garden): 新增物料管理功能模块
- 创建物料名称相关实体类、控制器、服务接口及实现类 - 创建物料规格相关实体类、控制器、服务接口及实现类 - 创建物料单位相关实体类、控制器、服务接口及实现类 - 实现物料名称、规格、单位的CRUD操作功能 - 添加分页查询、批量删除和Excel导出功能 - 配置权限验证和数据校验机制
Showing
6 changed files
with
89 additions
and
8 deletions
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 | 13 | private Long id; |
| 14 | 14 | |
| 15 | 15 | @Schema(description = "物料名称ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14631") |
| 16 | - @NotNull(message = "物料名称ID不能为空") | |
| 17 | 16 | private Long materialId; |
| 18 | 17 | |
| 18 | + @NotEmpty(message = "物料名称不能为空") | |
| 19 | 19 | @Schema(description = "物料名称", example = "张三") |
| 20 | 20 | private String materialName; |
| 21 | 21 | |
| 22 | 22 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") |
| 23 | - @NotEmpty(message = "备注不能为空") | |
| 24 | 23 | private String remark; |
| 25 | 24 | |
| 26 | 25 | @Schema(description = "部门ID", example = "23084") |
| 27 | 26 | private Long deptId; |
| 28 | 27 | |
| 29 | -} | |
| 30 | 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 | 20 | private String specifications; |
| 21 | 21 | |
| 22 | 22 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") |
| 23 | - @NotEmpty(message = "备注不能为空") | |
| 24 | 23 | private String remark; |
| 25 | 24 | |
| 26 | 25 | @Schema(description = "部门ID", example = "18158") |
| 27 | 26 | private Long deptId; |
| 28 | 27 | |
| 29 | -} | |
| 30 | 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 | 13 | private Long id; |
| 14 | 14 | |
| 15 | 15 | @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22342") |
| 16 | - @NotNull(message = "单位ID不能为空") | |
| 17 | 16 | private Long unitId; |
| 18 | 17 | |
| 19 | 18 | @Schema(description = "单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") |
| ... | ... | @@ -21,10 +20,9 @@ public class MaterialUnitSaveReqVO { |
| 21 | 20 | private String unitName; |
| 22 | 21 | |
| 23 | 22 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") |
| 24 | - @NotEmpty(message = "备注不能为空") | |
| 25 | 23 | private String remark; |
| 26 | 24 | |
| 27 | 25 | @Schema(description = "部门ID", example = "8809") |
| 28 | 26 | private Long deptId; |
| 29 | 27 | |
| 30 | -} | |
| 31 | 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 | 34 | |
| 35 | 35 | @Override |
| 36 | 36 | public Long createMaterialName(MaterialNameSaveReqVO createReqVO) { |
| 37 | + // 生成物料名称ID:获取数据库中最大的值然后+1 | |
| 38 | + Long materialId = generateMaterialId(); | |
| 39 | + | |
| 37 | 40 | // 插入 |
| 38 | 41 | MaterialNameDO materialName = BeanUtils.toBean(createReqVO, MaterialNameDO.class); |
| 42 | + materialName.setMaterialId(materialId); | |
| 39 | 43 | materialNameMapper.insert(materialName); |
| 40 | 44 | |
| 41 | 45 | // 返回 |
| 42 | 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 | 71 | @Override |
| 46 | 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 | 34 | |
| 35 | 35 | @Override |
| 36 | 36 | public Long createMaterialSpecification(MaterialSpecificationSaveReqVO createReqVO) { |
| 37 | + // 生成规格编码:获取数据库中最大的值然后+1 | |
| 38 | + String specCode = generateSpecCode(); | |
| 39 | + | |
| 37 | 40 | // 插入 |
| 38 | 41 | MaterialSpecificationDO materialSpecification = BeanUtils.toBean(createReqVO, MaterialSpecificationDO.class); |
| 42 | + materialSpecification.setSpecCode(specCode); | |
| 39 | 43 | materialSpecificationMapper.insert(materialSpecification); |
| 40 | 44 | |
| 41 | 45 | // 返回 |
| 42 | 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 | 78 | @Override |
| 46 | 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 | 34 | |
| 35 | 35 | @Override |
| 36 | 36 | public Long createMaterialUnit(MaterialUnitSaveReqVO createReqVO) { |
| 37 | + // 生成单位ID:获取数据库中最大的值然后+1 | |
| 38 | + Long unitId = generateUnitId(); | |
| 39 | + | |
| 37 | 40 | // 插入 |
| 38 | 41 | MaterialUnitDO materialUnit = BeanUtils.toBean(createReqVO, MaterialUnitDO.class); |
| 42 | + materialUnit.setUnitId(unitId); | |
| 39 | 43 | materialUnitMapper.insert(materialUnit); |
| 40 | 44 | |
| 41 | 45 | // 返回 |
| 42 | 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 | 71 | @Override |
| 46 | 72 | public void updateMaterialUnit(MaterialUnitSaveReqVO updateReqVO) { |
| 47 | 73 | // 校验存在 | ... | ... |