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,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 | // 校验存在 |