Commit 75729b30d207fb9c2112533376bc42318b46325c
1 parent
00a1a559
耗材基础迁移
Showing
18 changed files
with
642 additions
and
387 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/MaterialTypeController.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.admin.material; | ||
| 2 | + | ||
| 3 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; | ||
| 4 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeRespVO; | ||
| 5 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeSaveReqVO; | ||
| 6 | +import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | ||
| 7 | +import com.zteits.urbanops.module.garden.service.material.MaterialTypeService; | ||
| 8 | +import org.springframework.web.bind.annotation.*; | ||
| 9 | +import jakarta.annotation.Resource; | ||
| 10 | +import org.springframework.validation.annotation.Validated; | ||
| 11 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 12 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 13 | +import io.swagger.v3.oas.annotations.Parameter; | ||
| 14 | +import io.swagger.v3.oas.annotations.Operation; | ||
| 15 | + | ||
| 16 | +import jakarta.validation.*; | ||
| 17 | +import jakarta.servlet.http.*; | ||
| 18 | +import java.util.*; | ||
| 19 | +import java.io.IOException; | ||
| 20 | + | ||
| 21 | +import com.zteits.urbanops.framework.common.pojo.PageParam; | ||
| 22 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | ||
| 23 | +import com.zteits.urbanops.framework.common.pojo.CommonResult; | ||
| 24 | +import com.zteits.urbanops.framework.common.util.object.BeanUtils; | ||
| 25 | +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | ||
| 26 | + | ||
| 27 | +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; | ||
| 28 | + | ||
| 29 | +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; | ||
| 30 | +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; | ||
| 31 | + | ||
| 32 | +@Tag(name = "管理后台 - 物料类型") | ||
| 33 | +@RestController | ||
| 34 | +@RequestMapping("/garden/material-type") | ||
| 35 | +@Validated | ||
| 36 | +public class MaterialTypeController { | ||
| 37 | + | ||
| 38 | + @Resource | ||
| 39 | + private MaterialTypeService materialTypeService; | ||
| 40 | + | ||
| 41 | + @PostMapping("/create") | ||
| 42 | + @Operation(summary = "创建物料类型") | ||
| 43 | + @PreAuthorize("@ss.hasPermission('garden:material-type:create')") | ||
| 44 | + public CommonResult<Long> createMaterialType(@Valid @RequestBody MaterialTypeSaveReqVO createReqVO) { | ||
| 45 | + return success(materialTypeService.createMaterialType(createReqVO)); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + @PutMapping("/update") | ||
| 49 | + @Operation(summary = "更新物料类型") | ||
| 50 | + @PreAuthorize("@ss.hasPermission('garden:material-type:update')") | ||
| 51 | + public CommonResult<Boolean> updateMaterialType(@Valid @RequestBody MaterialTypeSaveReqVO updateReqVO) { | ||
| 52 | + materialTypeService.updateMaterialType(updateReqVO); | ||
| 53 | + return success(true); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + @DeleteMapping("/delete") | ||
| 57 | + @Operation(summary = "删除物料类型") | ||
| 58 | + @Parameter(name = "id", description = "编号", required = true) | ||
| 59 | + @PreAuthorize("@ss.hasPermission('garden:material-type:delete')") | ||
| 60 | + public CommonResult<Boolean> deleteMaterialType(@RequestParam("id") Long id) { | ||
| 61 | + materialTypeService.deleteMaterialType(id); | ||
| 62 | + return success(true); | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + @DeleteMapping("/delete-list") | ||
| 66 | + @Parameter(name = "ids", description = "编号", required = true) | ||
| 67 | + @Operation(summary = "批量删除物料类型") | ||
| 68 | + @PreAuthorize("@ss.hasPermission('garden:material-type:delete')") | ||
| 69 | + public CommonResult<Boolean> deleteMaterialTypeList(@RequestParam("ids") List<Long> ids) { | ||
| 70 | + materialTypeService.deleteMaterialTypeListByIds(ids); | ||
| 71 | + return success(true); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + @GetMapping("/get") | ||
| 75 | + @Operation(summary = "获得物料类型") | ||
| 76 | + @Parameter(name = "id", description = "编号", required = true, example = "1024") | ||
| 77 | + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") | ||
| 78 | + public CommonResult<MaterialTypeRespVO> getMaterialType(@RequestParam("id") Long id) { | ||
| 79 | + MaterialTypeDO materialType = materialTypeService.getMaterialType(id); | ||
| 80 | + return success(BeanUtils.toBean(materialType, MaterialTypeRespVO.class)); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + @GetMapping("/page") | ||
| 84 | + @Operation(summary = "获得物料类型分页") | ||
| 85 | + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") | ||
| 86 | + public CommonResult<PageResult<MaterialTypeRespVO>> getMaterialTypePage(@Valid MaterialTypePageReqVO pageReqVO) { | ||
| 87 | + PageResult<MaterialTypeDO> pageResult = materialTypeService.getMaterialTypePage(pageReqVO); | ||
| 88 | + return success(BeanUtils.toBean(pageResult, MaterialTypeRespVO.class)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + @GetMapping("/export-excel") | ||
| 92 | + @Operation(summary = "导出物料类型 Excel") | ||
| 93 | + @PreAuthorize("@ss.hasPermission('garden:material-type:export')") | ||
| 94 | + @ApiAccessLog(operateType = EXPORT) | ||
| 95 | + public void exportMaterialTypeExcel(@Valid MaterialTypePageReqVO pageReqVO, | ||
| 96 | + HttpServletResponse response) throws IOException { | ||
| 97 | + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); | ||
| 98 | + List<MaterialTypeDO> list = materialTypeService.getMaterialTypePage(pageReqVO).getList(); | ||
| 99 | + // 导出 Excel | ||
| 100 | + ExcelUtils.write(response, "物料类型.xls", "数据", MaterialTypeRespVO.class, | ||
| 101 | + BeanUtils.toBean(list, MaterialTypeRespVO.class)); | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + | ||
| 105 | + /** | ||
| 106 | + * 获取物料类型详细信息 | ||
| 107 | + */ | ||
| 108 | + @Operation(summary ="物料类型基础表-耗材类型List") | ||
| 109 | + @GetMapping(value = "/getMaterialBigTypeList") | ||
| 110 | + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") | ||
| 111 | + public CommonResult getInfo() { | ||
| 112 | + return success(materialTypeService.queryMaterialBigType(null)); | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + /** | ||
| 116 | + * 获取物料类型详细信息 | ||
| 117 | + */ | ||
| 118 | + @Operation(summary ="物料类型基础表-类别List") | ||
| 119 | + @GetMapping(value = "/getMaterialMidTypeList") | ||
| 120 | + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") | ||
| 121 | + public CommonResult getMaterialMidTypeList(@RequestParam("material_type_id") Long materialTypeId) { | ||
| 122 | + return success(materialTypeService.queryMaterialMidType(materialTypeId)); | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + /** | ||
| 126 | + * 获取物料类型详细信息 | ||
| 127 | + */ | ||
| 128 | + @Operation(summary ="物料类型基础表-类别List") | ||
| 129 | + @GetMapping(value = "/getMaterialDetailTypeList") | ||
| 130 | + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") | ||
| 131 | + public CommonResult getMaterialDetailTypeList(@RequestParam("parent_type_id") Long parentTypeId) { | ||
| 132 | + return success(materialTypeService.queryMaterialDetailType(parentTypeId)); | ||
| 133 | + } | ||
| 134 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypePageReqVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.admin.material.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 6 | +import com.zteits.urbanops.framework.common.pojo.PageParam; | ||
| 7 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 11 | + | ||
| 12 | +@Schema(description = "管理后台 - 物料类型分页 Request VO") | ||
| 13 | +@Data | ||
| 14 | +public class MaterialTypePageReqVO extends PageParam { | ||
| 15 | + | ||
| 16 | + @Schema(description = "物料类型ID", example = "31914") | ||
| 17 | + private Long materialTypeId; | ||
| 18 | + | ||
| 19 | + @Schema(description = "耗材类型名称:工具", example = "赵六") | ||
| 20 | + private String materialTypeName; | ||
| 21 | + | ||
| 22 | + @Schema(description = "类别ID", example = "13166") | ||
| 23 | + private Long typeId; | ||
| 24 | + | ||
| 25 | + @Schema(description = "类别名称:药品", example = "李四") | ||
| 26 | + private String typeName; | ||
| 27 | + | ||
| 28 | + @Schema(description = "付物料类型ID", example = "4908") | ||
| 29 | + private Long materialParentTypeId; | ||
| 30 | + | ||
| 31 | + @Schema(description = "类别明细ID", example = "2459") | ||
| 32 | + private Long typeDetailId; | ||
| 33 | + | ||
| 34 | + @Schema(description = "类别明细", example = "赵六") | ||
| 35 | + private String typeDetailName; | ||
| 36 | + | ||
| 37 | + @Schema(description = "父类别ID", example = "6341") | ||
| 38 | + private Long parentTypeId; | ||
| 39 | + | ||
| 40 | + @Schema(description = "备注", example = "你猜") | ||
| 41 | + private String remark; | ||
| 42 | + | ||
| 43 | + @Schema(description = "状态(0正常 1停用)", example = "2") | ||
| 44 | + private String status; | ||
| 45 | + | ||
| 46 | + @Schema(description = "创建者") | ||
| 47 | + private String createBy; | ||
| 48 | + | ||
| 49 | + @Schema(description = "创建时间") | ||
| 50 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 51 | + private LocalDateTime[] createTime; | ||
| 52 | + | ||
| 53 | + @Schema(description = "更新者") | ||
| 54 | + private String updateBy; | ||
| 55 | + | ||
| 56 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeResp.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.admin.material.vo; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Copyright: Copyright (c) 2017 zteits | ||
| 5 | + * | ||
| 6 | + * @ClassName: MaterialTypeManagerResp.java | ||
| 7 | + * @Description: | ||
| 8 | + * @version: v1.0.0 | ||
| 9 | + * @author: wangfs | ||
| 10 | + * @date: 2024-11-10 13:50 | ||
| 11 | + * Modification History: | ||
| 12 | + * Date Author Version Description | ||
| 13 | + * ---------------------------------------------------------* | ||
| 14 | + * 2024-11-10 wangfs v1.0.0 创建 | ||
| 15 | + */ | ||
| 16 | + | ||
| 17 | +public class MaterialTypeResp { | ||
| 18 | + | ||
| 19 | + private Long value; | ||
| 20 | + | ||
| 21 | + private String label; | ||
| 22 | + | ||
| 23 | + public Long getValue() { | ||
| 24 | + return value; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + public void setValue(Long value) { | ||
| 28 | + this.value = value; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + public String getLabel() { | ||
| 32 | + return label; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + public void setLabel(String label) { | ||
| 36 | + this.label = label; | ||
| 37 | + } | ||
| 38 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeRespVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.admin.material.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.util.*; | ||
| 6 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 7 | +import java.time.LocalDateTime; | ||
| 8 | +import cn.idev.excel.annotation.*; | ||
| 9 | + | ||
| 10 | +@Schema(description = "管理后台 - 物料类型 Response VO") | ||
| 11 | +@Data | ||
| 12 | +@ExcelIgnoreUnannotated | ||
| 13 | +public class MaterialTypeRespVO { | ||
| 14 | + | ||
| 15 | + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23621") | ||
| 16 | + @ExcelProperty("物料ID") | ||
| 17 | + private Long id; | ||
| 18 | + | ||
| 19 | + @Schema(description = "物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31914") | ||
| 20 | + @ExcelProperty("物料类型ID") | ||
| 21 | + private Long materialTypeId; | ||
| 22 | + | ||
| 23 | + @Schema(description = "耗材类型名称:工具", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | ||
| 24 | + @ExcelProperty("耗材类型名称:工具") | ||
| 25 | + private String materialTypeName; | ||
| 26 | + | ||
| 27 | + @Schema(description = "类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13166") | ||
| 28 | + @ExcelProperty("类别ID") | ||
| 29 | + private Long typeId; | ||
| 30 | + | ||
| 31 | + @Schema(description = "类别名称:药品", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") | ||
| 32 | + @ExcelProperty("类别名称:药品") | ||
| 33 | + private String typeName; | ||
| 34 | + | ||
| 35 | + @Schema(description = "付物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4908") | ||
| 36 | + @ExcelProperty("付物料类型ID") | ||
| 37 | + private Long materialParentTypeId; | ||
| 38 | + | ||
| 39 | + @Schema(description = "类别明细ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2459") | ||
| 40 | + @ExcelProperty("类别明细ID") | ||
| 41 | + private Long typeDetailId; | ||
| 42 | + | ||
| 43 | + @Schema(description = "类别明细", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | ||
| 44 | + @ExcelProperty("类别明细") | ||
| 45 | + private String typeDetailName; | ||
| 46 | + | ||
| 47 | + @Schema(description = "父类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6341") | ||
| 48 | + @ExcelProperty("父类别ID") | ||
| 49 | + private Long parentTypeId; | ||
| 50 | + | ||
| 51 | + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") | ||
| 52 | + @ExcelProperty("备注") | ||
| 53 | + private String remark; | ||
| 54 | + | ||
| 55 | + @Schema(description = "状态(0正常 1停用)", example = "2") | ||
| 56 | + @ExcelProperty("状态(0正常 1停用)") | ||
| 57 | + private String status; | ||
| 58 | + | ||
| 59 | + @Schema(description = "创建者") | ||
| 60 | + @ExcelProperty("创建者") | ||
| 61 | + private String createBy; | ||
| 62 | + | ||
| 63 | + @Schema(description = "创建时间") | ||
| 64 | + @ExcelProperty("创建时间") | ||
| 65 | + private LocalDateTime createTime; | ||
| 66 | + | ||
| 67 | + @Schema(description = "更新者") | ||
| 68 | + @ExcelProperty("更新者") | ||
| 69 | + private String updateBy; | ||
| 70 | + | ||
| 71 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeSaveReqVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.admin.material.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.util.*; | ||
| 6 | +import jakarta.validation.constraints.*; | ||
| 7 | + | ||
| 8 | +@Schema(description = "管理后台 - 物料类型新增/修改 Request VO") | ||
| 9 | +@Data | ||
| 10 | +public class MaterialTypeSaveReqVO { | ||
| 11 | + | ||
| 12 | + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23621") | ||
| 13 | + private Long id; | ||
| 14 | + | ||
| 15 | + @Schema(description = "物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31914") | ||
| 16 | + @NotNull(message = "物料类型ID不能为空") | ||
| 17 | + private Long materialTypeId; | ||
| 18 | + | ||
| 19 | + @Schema(description = "耗材类型名称:工具", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | ||
| 20 | + @NotEmpty(message = "耗材类型名称:工具不能为空") | ||
| 21 | + private String materialTypeName; | ||
| 22 | + | ||
| 23 | + @Schema(description = "类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13166") | ||
| 24 | + @NotNull(message = "类别ID不能为空") | ||
| 25 | + private Long typeId; | ||
| 26 | + | ||
| 27 | + @Schema(description = "类别名称:药品", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") | ||
| 28 | + @NotEmpty(message = "类别名称:药品不能为空") | ||
| 29 | + private String typeName; | ||
| 30 | + | ||
| 31 | + @Schema(description = "付物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4908") | ||
| 32 | + private Long materialParentTypeId; | ||
| 33 | + | ||
| 34 | + @Schema(description = "类别明细ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2459") | ||
| 35 | + private Long typeDetailId; | ||
| 36 | + | ||
| 37 | + @Schema(description = "类别明细", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | ||
| 38 | + @NotEmpty(message = "类别明细不能为空") | ||
| 39 | + private String typeDetailName; | ||
| 40 | + | ||
| 41 | + @Schema(description = "父类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6341") | ||
| 42 | + private Long parentTypeId; | ||
| 43 | + | ||
| 44 | + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") | ||
| 45 | + private String remark; | ||
| 46 | + | ||
| 47 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialtype/MaterialTypeAdminController.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.admin.materialtype; | ||
| 2 | - | ||
| 3 | -import com.zteits.urbanops.framework.common.pojo.CommonResult; | ||
| 4 | -import com.zteits.urbanops.framework.common.pojo.PageParam; | ||
| 5 | -import com.zteits.urbanops.framework.common.pojo.PageResult; | ||
| 6 | -import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | ||
| 7 | -import com.zteits.urbanops.module.garden.dal.mysql.material.MaterialTypeMapper; | ||
| 8 | -import io.swagger.v3.oas.annotations.Operation; | ||
| 9 | -import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 10 | -import jakarta.annotation.Resource; | ||
| 11 | -import org.springframework.security.access.prepost.PreAuthorize; | ||
| 12 | -import org.springframework.web.bind.annotation.*; | ||
| 13 | - | ||
| 14 | -import java.util.List; | ||
| 15 | - | ||
| 16 | -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | ||
| 17 | - | ||
| 18 | -@Tag(name = "管理后台 - 物料类型") | ||
| 19 | -@RestController | ||
| 20 | -@RequestMapping("/materialType/type") | ||
| 21 | -public class MaterialTypeAdminController { | ||
| 22 | - | ||
| 23 | - @Resource | ||
| 24 | - private MaterialTypeMapper mapper; | ||
| 25 | - | ||
| 26 | - @GetMapping("/getMaterialBigTypeList") | ||
| 27 | - @Operation(summary = "物料类型-大类列表") | ||
| 28 | - @PreAuthorize("@ss.hasPermission('material:type:list')") | ||
| 29 | - public CommonResult<List<MaterialTypeDO>> getMaterialBigTypeList() { | ||
| 30 | - return success(mapper.selectBigTypeList()); | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - @PostMapping("/listForPage") | ||
| 34 | - @Operation(summary = "物料类型-分页") | ||
| 35 | - @PreAuthorize("@ss.hasPermission('material:type:list')") | ||
| 36 | - public CommonResult<PageResult<MaterialTypeDO>> listForPage(@RequestBody MaterialTypeDO where, | ||
| 37 | - @RequestParam(value = "pageNum", required = false) Integer pageNum, | ||
| 38 | - @RequestParam(value = "pageSize", required = false) Integer pageSize) { | ||
| 39 | - PageParam page = new PageParam(); | ||
| 40 | - page.setPageNo(pageNum == null ? 1 : pageNum); | ||
| 41 | - page.setPageSize(pageSize == null ? 10 : pageSize); | ||
| 42 | - return success(mapper.selectPage(page, where)); | ||
| 43 | - } | ||
| 44 | -} | ||
| 45 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/AppMaterialTypeController.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.app; | ||
| 2 | - | ||
| 3 | -import com.zteits.urbanops.framework.common.pojo.CommonResult; | ||
| 4 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; | ||
| 5 | -import com.zteits.urbanops.module.garden.service.material.MaterialTypeService; | ||
| 6 | -import io.swagger.v3.oas.annotations.Operation; | ||
| 7 | -import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 8 | -import jakarta.annotation.Resource; | ||
| 9 | -import org.springframework.web.bind.annotation.GetMapping; | ||
| 10 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | -import org.springframework.web.bind.annotation.RestController; | ||
| 13 | - | ||
| 14 | -import java.util.List; | ||
| 15 | - | ||
| 16 | -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | ||
| 17 | - | ||
| 18 | -@Tag(name = "APP - 物料类型") | ||
| 19 | -@RestController | ||
| 20 | -@RequestMapping("/app/materialType/type") | ||
| 21 | -public class AppMaterialTypeController { | ||
| 22 | - | ||
| 23 | - @Resource | ||
| 24 | - private MaterialTypeService materialTypeService; | ||
| 25 | - | ||
| 26 | - @GetMapping("/getMaterialBigTypeList") | ||
| 27 | - @Operation(summary = "物料类型基础表-耗材类型List") | ||
| 28 | - public CommonResult<List<MaterialTypeManagerRespVO>> getMaterialBigTypeList() { | ||
| 29 | - return success(materialTypeService.queryMaterialBigType(30000L)); | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - @GetMapping("/getMaterialMidTypeList") | ||
| 33 | - @Operation(summary = "物料类型基础表-类别List") | ||
| 34 | - public CommonResult<List<MaterialTypeManagerRespVO>> getMaterialMidTypeList(@RequestParam("material_type_id") Long materialTypeId) { | ||
| 35 | - return success(materialTypeService.queryMaterialMidType(materialTypeId)); | ||
| 36 | - } | ||
| 37 | - | ||
| 38 | - @GetMapping("/getMaterialDetailTypeList") | ||
| 39 | - @Operation(summary = "物料类型基础表-类别明细List") | ||
| 40 | - public CommonResult<List<MaterialTypeManagerRespVO>> getMaterialDetailTypeList(@RequestParam("parent_type_id") Long parentTypeId) { | ||
| 41 | - return success(materialTypeService.queryMaterialDetailType(parentTypeId)); | ||
| 42 | - } | ||
| 43 | -} | ||
| 44 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/MaterialTypeController.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.business; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.bean.BeanUtil; | ||
| 4 | -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
| 5 | -import com.zteits.urbanops.framework.common.pojo.CommonResult; | ||
| 6 | -import com.zteits.urbanops.framework.common.pojo.PageResult; | ||
| 7 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeAddReqVO; | ||
| 8 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeEditReqVO; | ||
| 9 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; | ||
| 10 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypePageReqVO; | ||
| 11 | -import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | ||
| 12 | -import com.zteits.urbanops.module.garden.service.material.MaterialTypeService; | ||
| 13 | -import io.swagger.v3.oas.annotations.Operation; | ||
| 14 | -import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 15 | -import jakarta.annotation.Resource; | ||
| 16 | -import jakarta.validation.Valid; | ||
| 17 | -import org.springframework.web.bind.annotation.*; | ||
| 18 | - | ||
| 19 | -import java.time.LocalDateTime; | ||
| 20 | -import java.util.List; | ||
| 21 | - | ||
| 22 | -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | ||
| 23 | - | ||
| 24 | -@Tag(name = "园林养护 - 物料类型") | ||
| 25 | -@RestController | ||
| 26 | -@RequestMapping("/materialType/type") | ||
| 27 | -public class MaterialTypeController { | ||
| 28 | - | ||
| 29 | - @Resource | ||
| 30 | - private MaterialTypeService materialTypeService; | ||
| 31 | - | ||
| 32 | - @GetMapping("/getMaterialBigTypeList") | ||
| 33 | - @Operation(summary = "物料类型基础表-耗材类型List") | ||
| 34 | - public CommonResult<List<MaterialTypeManagerRespVO>> getMaterialBigTypeList() { | ||
| 35 | - return success(materialTypeService.queryMaterialBigType(null)); | ||
| 36 | - } | ||
| 37 | - | ||
| 38 | - @GetMapping("/getMaterialMidTypeList") | ||
| 39 | - @Operation(summary = "物料类型基础表-类别List") | ||
| 40 | - public CommonResult<List<MaterialTypeManagerRespVO>> getMaterialMidTypeList(@RequestParam("material_type_id") Long materialTypeId) { | ||
| 41 | - return success(materialTypeService.queryMaterialMidType(materialTypeId)); | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - @GetMapping("/getMaterialDetailTypeList") | ||
| 45 | - @Operation(summary = "物料类型基础表-类别明细List") | ||
| 46 | - public CommonResult<List<MaterialTypeManagerRespVO>> getMaterialDetailTypeList(@RequestParam("parent_type_id") Long parentTypeId) { | ||
| 47 | - return success(materialTypeService.queryMaterialDetailType(parentTypeId)); | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - @PostMapping("/listForPage") | ||
| 51 | - @Operation(summary = "耗材基础-分页") | ||
| 52 | - public CommonResult<PageResult<MaterialTypeDO>> listForPage(@Valid @RequestBody MaterialTypePageReqVO reqVO) { | ||
| 53 | - MaterialTypeDO where = new MaterialTypeDO(); | ||
| 54 | - String keyword = reqVO.getTypeName(); | ||
| 55 | - if (keyword == null || keyword.isEmpty()) { | ||
| 56 | - keyword = reqVO.getMaterialTypeName(); | ||
| 57 | - } | ||
| 58 | - if (keyword == null || keyword.isEmpty()) { | ||
| 59 | - keyword = reqVO.getTypeDetailName(); | ||
| 60 | - } | ||
| 61 | - where.setTypeName(keyword); | ||
| 62 | - Page<MaterialTypeDO> page = materialTypeService.selectPage(new Page<>(reqVO.getPageNum(), reqVO.getPageSize()), where); | ||
| 63 | - return success(new PageResult<>(page.getRecords(), page.getTotal())); | ||
| 64 | - } | ||
| 65 | - | ||
| 66 | - @PostMapping("/add") | ||
| 67 | - @Operation(summary = "耗材基础-添加") | ||
| 68 | - public CommonResult<Boolean> add(@Valid @RequestBody MaterialTypeAddReqVO reqVO) { | ||
| 69 | - MaterialTypeDO entity = new MaterialTypeDO(); | ||
| 70 | - entity.setTypeName(reqVO.getTypeDetailName()); | ||
| 71 | - entity.setParentId(reqVO.getTypeId()); | ||
| 72 | - entity.setLevel(3); | ||
| 73 | - entity.setCreator("system"); | ||
| 74 | - entity.setUpdater("system"); | ||
| 75 | - return success(materialTypeService.insert(entity)); | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | - @PostMapping("/edit") | ||
| 79 | - @Operation(summary = "耗材基础-修改") | ||
| 80 | - public CommonResult<Boolean> edit(@Valid @RequestBody MaterialTypeEditReqVO reqVO) { | ||
| 81 | - MaterialTypeDO entity = new MaterialTypeDO(); | ||
| 82 | - BeanUtil.copyProperties(reqVO, entity, true); | ||
| 83 | - return success(materialTypeService.update(entity)); | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - @GetMapping("/deleteById") | ||
| 87 | - @Operation(summary = "耗材基础-删除") | ||
| 88 | - public CommonResult<Boolean> deleteById(@RequestParam("id") Long id) { | ||
| 89 | - return success(materialTypeService.deleteById(id)); | ||
| 90 | - } | ||
| 91 | -} | ||
| 92 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeAddReqVO.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.business.vo; | ||
| 2 | - | ||
| 3 | -import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | -import jakarta.validation.constraints.NotEmpty; | ||
| 5 | -import jakarta.validation.constraints.NotNull; | ||
| 6 | -import lombok.Data; | ||
| 7 | - | ||
| 8 | -@Data | ||
| 9 | -public class MaterialTypeAddReqVO { | ||
| 10 | - @Schema(description = "物料类型ID") | ||
| 11 | - @NotNull | ||
| 12 | - private Long materialTypeId; | ||
| 13 | - | ||
| 14 | - @Schema(description = "耗材类型名称") | ||
| 15 | - @NotEmpty | ||
| 16 | - private String materialTypeName; | ||
| 17 | - | ||
| 18 | - @Schema(description = "类别ID") | ||
| 19 | - @NotNull | ||
| 20 | - private Long typeId; | ||
| 21 | - | ||
| 22 | - @Schema(description = "类别名称") | ||
| 23 | - @NotEmpty | ||
| 24 | - private String typeName; | ||
| 25 | - | ||
| 26 | - @Schema(description = "类别明细") | ||
| 27 | - @NotEmpty | ||
| 28 | - private String typeDetailName; | ||
| 29 | -} | ||
| 30 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeEditReqVO.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.business.vo; | ||
| 2 | - | ||
| 3 | -import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | -import jakarta.validation.constraints.NotNull; | ||
| 5 | -import lombok.Data; | ||
| 6 | - | ||
| 7 | -@Data | ||
| 8 | -public class MaterialTypeEditReqVO { | ||
| 9 | - @NotNull | ||
| 10 | - private Long id; | ||
| 11 | - | ||
| 12 | - @Schema(description = "物料类型ID") | ||
| 13 | - private Long materialTypeId; | ||
| 14 | - | ||
| 15 | - @Schema(description = "耗材类型名称") | ||
| 16 | - private String materialTypeName; | ||
| 17 | - | ||
| 18 | - @Schema(description = "类别ID") | ||
| 19 | - private Long typeId; | ||
| 20 | - | ||
| 21 | - @Schema(description = "类别名称") | ||
| 22 | - private String typeName; | ||
| 23 | - | ||
| 24 | - @Schema(description = "类别明细ID") | ||
| 25 | - private Long typeDetailId; | ||
| 26 | - | ||
| 27 | - @Schema(description = "类别明细") | ||
| 28 | - private String typeDetailName; | ||
| 29 | - | ||
| 30 | - private Long materialParentTypeId; | ||
| 31 | - | ||
| 32 | - private Long parentTypeId; | ||
| 33 | - | ||
| 34 | - private String status; | ||
| 35 | - | ||
| 36 | - private String remark; | ||
| 37 | -} | ||
| 38 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeManagerRespVO.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.business.vo; | ||
| 2 | - | ||
| 3 | -import lombok.Data; | ||
| 4 | - | ||
| 5 | -@Data | ||
| 6 | -public class MaterialTypeManagerRespVO { | ||
| 7 | - private Long value; | ||
| 8 | - private String label; | ||
| 9 | - private Long materialParentTypeId; | ||
| 10 | - private Long parentTypeId; | ||
| 11 | -} | ||
| 12 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypePageReqVO.java deleted
| 1 | -package com.zteits.urbanops.module.garden.controller.business.vo; | ||
| 2 | - | ||
| 3 | -import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | -import lombok.Data; | ||
| 5 | - | ||
| 6 | -@Data | ||
| 7 | -public class MaterialTypePageReqVO { | ||
| 8 | - | ||
| 9 | - @Schema(description = "页码") | ||
| 10 | - private Integer pageNum = 1; | ||
| 11 | - | ||
| 12 | - @Schema(description = "每页数量") | ||
| 13 | - private Integer pageSize = 10; | ||
| 14 | - | ||
| 15 | - private String materialTypeName; | ||
| 16 | - private String typeName; | ||
| 17 | - private String typeDetailName; | ||
| 18 | -} | ||
| 19 | \ No newline at end of file | 0 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/material/MaterialTypeDO.java
| 1 | package com.zteits.urbanops.module.garden.dal.dataobject.material; | 1 | package com.zteits.urbanops.module.garden.dal.dataobject.material; |
| 2 | 2 | ||
| 3 | -import com.baomidou.mybatisplus.annotation.TableId; | ||
| 4 | -import com.baomidou.mybatisplus.annotation.TableName; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import java.time.LocalDateTime; | ||
| 6 | +import java.time.LocalDateTime; | ||
| 7 | +import com.baomidou.mybatisplus.annotation.*; | ||
| 5 | import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; | 8 | import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; |
| 6 | -import lombok.Data; | ||
| 7 | 9 | ||
| 10 | +/** | ||
| 11 | + * 物料类型 DO | ||
| 12 | + * | ||
| 13 | + * @author 超级管理员 | ||
| 14 | + */ | ||
| 8 | @TableName("garden_material_type") | 15 | @TableName("garden_material_type") |
| 16 | +@KeySequence("garden_material_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | ||
| 9 | @Data | 17 | @Data |
| 18 | +@EqualsAndHashCode(callSuper = true) | ||
| 19 | +@ToString(callSuper = true) | ||
| 20 | +@Builder | ||
| 21 | +@NoArgsConstructor | ||
| 22 | +@AllArgsConstructor | ||
| 10 | public class MaterialTypeDO extends BaseDO { | 23 | public class MaterialTypeDO extends BaseDO { |
| 24 | + | ||
| 25 | + /** | ||
| 26 | + * 物料ID | ||
| 27 | + */ | ||
| 11 | @TableId | 28 | @TableId |
| 12 | private Long id; | 29 | private Long id; |
| 30 | + /** | ||
| 31 | + * 物料类型ID | ||
| 32 | + */ | ||
| 33 | + private Long materialTypeId; | ||
| 34 | + /** | ||
| 35 | + * 耗材类型名称:工具 | ||
| 36 | + */ | ||
| 37 | + private String materialTypeName; | ||
| 38 | + /** | ||
| 39 | + * 类别ID | ||
| 40 | + */ | ||
| 41 | + private Long typeId; | ||
| 42 | + /** | ||
| 43 | + * 类别名称:药品 | ||
| 44 | + */ | ||
| 13 | private String typeName; | 45 | private String typeName; |
| 14 | - private Long parentId; | ||
| 15 | - private Integer level; | ||
| 16 | -} | ||
| 17 | \ No newline at end of file | 46 | \ No newline at end of file |
| 47 | + /** | ||
| 48 | + * 付物料类型ID | ||
| 49 | + */ | ||
| 50 | + private Long materialParentTypeId; | ||
| 51 | + /** | ||
| 52 | + * 类别明细ID | ||
| 53 | + */ | ||
| 54 | + private Long typeDetailId; | ||
| 55 | + /** | ||
| 56 | + * 类别明细 | ||
| 57 | + */ | ||
| 58 | + private String typeDetailName; | ||
| 59 | + /** | ||
| 60 | + * 父类别ID | ||
| 61 | + */ | ||
| 62 | + private Long parentTypeId; | ||
| 63 | + /** | ||
| 64 | + * 备注 | ||
| 65 | + */ | ||
| 66 | + private String remark; | ||
| 67 | + /** | ||
| 68 | + * 状态(0正常 1停用) | ||
| 69 | + */ | ||
| 70 | + private String status; | ||
| 71 | + /** | ||
| 72 | + * 创建者 | ||
| 73 | + */ | ||
| 74 | + private String creator; | ||
| 75 | + /** | ||
| 76 | + * 更新者 | ||
| 77 | + */ | ||
| 78 | + private String updater; | ||
| 79 | + | ||
| 80 | + | ||
| 81 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/material/MaterialTypeMapper.java
| 1 | package com.zteits.urbanops.module.garden.dal.mysql.material; | 1 | package com.zteits.urbanops.module.garden.dal.mysql.material; |
| 2 | 2 | ||
| 3 | -import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; | 3 | +import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 4 | import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; | 4 | import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 5 | +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; | ||
| 6 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; | ||
| 5 | import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | 7 | import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; |
| 6 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 7 | 9 | ||
| 8 | -import java.util.List; | ||
| 9 | - | 10 | +/** |
| 11 | + * 物料类型 Mapper | ||
| 12 | + * | ||
| 13 | + * @author 超级管理员 | ||
| 14 | + */ | ||
| 10 | @Mapper | 15 | @Mapper |
| 11 | public interface MaterialTypeMapper extends BaseMapperX<MaterialTypeDO> { | 16 | public interface MaterialTypeMapper extends BaseMapperX<MaterialTypeDO> { |
| 12 | - default List<MaterialTypeDO> selectBigTypeList() { | ||
| 13 | - return selectList(new LambdaQueryWrapperX<MaterialTypeDO>().eq(MaterialTypeDO::getLevel, 1).orderByAsc(MaterialTypeDO::getTypeName)); | ||
| 14 | - } | ||
| 15 | 17 | ||
| 16 | - default com.zteits.urbanops.framework.common.pojo.PageResult<MaterialTypeDO> selectPage(com.zteits.urbanops.framework.common.pojo.PageParam pageParam, MaterialTypeDO where) { | ||
| 17 | - return selectPage(pageParam, null, new LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 18 | - .likeIfPresent(MaterialTypeDO::getTypeName, where.getTypeName()) | ||
| 19 | - .eqIfPresent(MaterialTypeDO::getParentId, where.getParentId()) | ||
| 20 | - .orderByAsc(MaterialTypeDO::getTypeName)); | 18 | + default PageResult<MaterialTypeDO> selectPage(MaterialTypePageReqVO reqVO) { |
| 19 | + return selectPage(reqVO, new LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 20 | + .likeIfPresent(MaterialTypeDO::getTypeName, reqVO.getTypeName()) | ||
| 21 | + .orderByDesc(MaterialTypeDO::getTypeName)); | ||
| 21 | } | 22 | } |
| 22 | -} | ||
| 23 | \ No newline at end of file | 23 | \ No newline at end of file |
| 24 | + | ||
| 25 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java
| @@ -72,4 +72,5 @@ public interface ErrorCodeConstants { | @@ -72,4 +72,5 @@ public interface ErrorCodeConstants { | ||
| 72 | ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-200-200-001, "养护频次已存在"); | 72 | ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-200-200-001, "养护频次已存在"); |
| 73 | ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-200-200-002, "养护等级重复"); | 73 | ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-200-200-002, "养护等级重复"); |
| 74 | 74 | ||
| 75 | + ErrorCode MATERIAL_TYPE_NOT_EXISTS = new ErrorCode(1-100-004-001, "物料类型不存在"); | ||
| 75 | } | 76 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeService.java
| 1 | package com.zteits.urbanops.module.garden.service.material; | 1 | package com.zteits.urbanops.module.garden.service.material; |
| 2 | 2 | ||
| 3 | -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
| 4 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; | ||
| 5 | -import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | 3 | +import java.util.*; |
| 6 | 4 | ||
| 7 | -import java.util.List; | 5 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; |
| 6 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeResp; | ||
| 7 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeSaveReqVO; | ||
| 8 | +import jakarta.validation.*; | ||
| 9 | +import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | ||
| 10 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | ||
| 8 | 11 | ||
| 12 | +/** | ||
| 13 | + * 物料类型 Service 接口 | ||
| 14 | + * | ||
| 15 | + * @author 超级管理员 | ||
| 16 | + */ | ||
| 9 | public interface MaterialTypeService { | 17 | public interface MaterialTypeService { |
| 10 | 18 | ||
| 11 | - MaterialTypeDO get(Long id); | 19 | + /** |
| 20 | + * 创建物料类型 | ||
| 21 | + * | ||
| 22 | + * @param createReqVO 创建信息 | ||
| 23 | + * @return 编号 | ||
| 24 | + */ | ||
| 25 | + Long createMaterialType(@Valid MaterialTypeSaveReqVO createReqVO); | ||
| 12 | 26 | ||
| 13 | - List<MaterialTypeDO> selectList(MaterialTypeDO req); | 27 | + /** |
| 28 | + * 更新物料类型 | ||
| 29 | + * | ||
| 30 | + * @param updateReqVO 更新信息 | ||
| 31 | + */ | ||
| 32 | + void updateMaterialType(@Valid MaterialTypeSaveReqVO updateReqVO); | ||
| 14 | 33 | ||
| 15 | - Page<MaterialTypeDO> selectPage(Page<MaterialTypeDO> page, MaterialTypeDO req); | 34 | + /** |
| 35 | + * 删除物料类型 | ||
| 36 | + * | ||
| 37 | + * @param id 编号 | ||
| 38 | + */ | ||
| 39 | + void deleteMaterialType(Long id); | ||
| 16 | 40 | ||
| 17 | - boolean insert(MaterialTypeDO entity); | 41 | + /** |
| 42 | + * 批量删除物料类型 | ||
| 43 | + * | ||
| 44 | + * @param ids 编号 | ||
| 45 | + */ | ||
| 46 | + void deleteMaterialTypeListByIds(List<Long> ids); | ||
| 18 | 47 | ||
| 19 | - boolean update(MaterialTypeDO entity); | 48 | + /** |
| 49 | + * 获得物料类型 | ||
| 50 | + * | ||
| 51 | + * @param id 编号 | ||
| 52 | + * @return 物料类型 | ||
| 53 | + */ | ||
| 54 | + MaterialTypeDO getMaterialType(Long id); | ||
| 20 | 55 | ||
| 21 | - boolean deleteById(Long id); | 56 | + /** |
| 57 | + * 获得物料类型分页 | ||
| 58 | + * | ||
| 59 | + * @param pageReqVO 分页查询 | ||
| 60 | + * @return 物料类型分页 | ||
| 61 | + */ | ||
| 62 | + PageResult<MaterialTypeDO> getMaterialTypePage(MaterialTypePageReqVO pageReqVO); | ||
| 22 | 63 | ||
| 23 | - List<MaterialTypeManagerRespVO> queryMaterialBigType(Long materialTypeId); | 64 | + List<MaterialTypeResp> queryMaterialBigType(Long materialTypeId); |
| 24 | 65 | ||
| 25 | - List<MaterialTypeManagerRespVO> queryMaterialMidType(Long materialTypeId); | 66 | + List<MaterialTypeResp> queryMaterialMidType(Long materialTypeId); |
| 26 | 67 | ||
| 27 | - List<MaterialTypeManagerRespVO> queryMaterialDetailType(Long parentTypeId); | 68 | + List<MaterialTypeResp> queryMaterialDetailType(Long parentTypeId); |
| 28 | 69 | ||
| 29 | Long selectMaxTypeDetailId(Long materialTypeId, Long typeId); | 70 | Long selectMaxTypeDetailId(Long materialTypeId, Long typeId); |
| 30 | -} | ||
| 31 | \ No newline at end of file | 71 | \ No newline at end of file |
| 72 | + | ||
| 73 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeServiceImpl.java
| 1 | package com.zteits.urbanops.module.garden.service.material; | 1 | package com.zteits.urbanops.module.garden.service.material; |
| 2 | 2 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 4 | -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
| 5 | -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; | 4 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; |
| 5 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeResp; | ||
| 6 | +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeSaveReqVO; | ||
| 7 | +import org.apache.commons.collections4.CollectionUtils; | ||
| 8 | +import org.springframework.stereotype.Service; | ||
| 9 | +import jakarta.annotation.Resource; | ||
| 10 | +import org.springframework.validation.annotation.Validated; | ||
| 11 | + | ||
| 12 | +import java.util.*; | ||
| 13 | +import java.util.stream.Collectors; | ||
| 14 | + | ||
| 6 | import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; | 15 | import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; |
| 16 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | ||
| 17 | +import com.zteits.urbanops.framework.common.util.object.BeanUtils; | ||
| 18 | + | ||
| 7 | import com.zteits.urbanops.module.garden.dal.mysql.material.MaterialTypeMapper; | 19 | import com.zteits.urbanops.module.garden.dal.mysql.material.MaterialTypeMapper; |
| 8 | -import jakarta.annotation.Resource; | ||
| 9 | -import org.springframework.stereotype.Service; | ||
| 10 | 20 | ||
| 11 | -import java.util.List; | 21 | +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; |
| 22 | +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 23 | +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; | ||
| 24 | +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; | ||
| 25 | +import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserDeptId; | ||
| 26 | +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; | ||
| 12 | 27 | ||
| 28 | +/** | ||
| 29 | + * 物料类型 Service 实现类 | ||
| 30 | + * | ||
| 31 | + * @author 超级管理员 | ||
| 32 | + */ | ||
| 13 | @Service | 33 | @Service |
| 34 | +@Validated | ||
| 14 | public class MaterialTypeServiceImpl implements MaterialTypeService { | 35 | public class MaterialTypeServiceImpl implements MaterialTypeService { |
| 15 | 36 | ||
| 16 | @Resource | 37 | @Resource |
| 17 | - private MaterialTypeMapper mapper; | 38 | + private MaterialTypeMapper materialTypeMapper; |
| 18 | 39 | ||
| 19 | @Override | 40 | @Override |
| 20 | - public MaterialTypeDO get(Long id) { | ||
| 21 | - return mapper.selectById(id); | 41 | + public Long createMaterialType(MaterialTypeSaveReqVO createReqVO) { |
| 42 | + // 插入 | ||
| 43 | + QueryWrapper<MaterialTypeDO> sql = new QueryWrapper<>(); | ||
| 44 | + sql.lambda().eq(MaterialTypeDO::getMaterialTypeId, createReqVO.getMaterialTypeId()) | ||
| 45 | + .eq(MaterialTypeDO::getTypeId, createReqVO.getTypeId()) | ||
| 46 | + .eq(MaterialTypeDO::getTypeDetailName, createReqVO.getTypeDetailName()); | ||
| 47 | + List<MaterialTypeDO> materialTypes = materialTypeMapper.selectList(sql); | ||
| 48 | + if (null != materialTypes && !materialTypes.isEmpty()) { | ||
| 49 | + MaterialTypeDO materialType1 = materialTypes.get(0); | ||
| 50 | + throw exception0(BAD_REQUEST.getCode(), "耗材类型:"+materialType1.getMaterialTypeName()+",类别:"+materialType1.getTypeName()+",类别明细:"+materialType1.getTypeDetailName() + " 的配置已存在"); | ||
| 51 | + } | ||
| 52 | + Long selectMaxTypeDetailId = selectMaxTypeDetailId(createReqVO.getMaterialTypeId(), createReqVO.getTypeId()); | ||
| 53 | + createReqVO.setTypeDetailId(selectMaxTypeDetailId + 1); | ||
| 54 | + MaterialTypeDO materialType = BeanUtils.toBean(createReqVO, MaterialTypeDO.class); | ||
| 55 | + materialType.setParentTypeId(createReqVO.getTypeId()); | ||
| 56 | + materialType.setMaterialParentTypeId(createReqVO.getMaterialTypeId()); | ||
| 57 | + materialType.setStatus("0"); | ||
| 58 | + materialType.setCreator(String.valueOf(getLoginUserDeptId())); | ||
| 59 | + materialType.setUpdater(materialType.getCreator()); | ||
| 60 | + materialTypeMapper.insert(materialType); | ||
| 61 | + | ||
| 62 | + // 返回 | ||
| 63 | + return materialType.getId(); | ||
| 22 | } | 64 | } |
| 23 | 65 | ||
| 24 | @Override | 66 | @Override |
| 25 | - public List<MaterialTypeDO> selectList(MaterialTypeDO req) { | ||
| 26 | - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO> wrapper = | ||
| 27 | - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 28 | - .likeIfPresent(MaterialTypeDO::getTypeName, req.getTypeName()) | ||
| 29 | - .eqIfPresent(MaterialTypeDO::getParentId, req.getParentId()) | ||
| 30 | - .eqIfPresent(MaterialTypeDO::getLevel, req.getLevel()) | ||
| 31 | - .orderByDesc(MaterialTypeDO::getId); | ||
| 32 | - return mapper.selectList(wrapper); | 67 | + public void updateMaterialType(MaterialTypeSaveReqVO updateReqVO) { |
| 68 | + // 校验存在 | ||
| 69 | + validateMaterialTypeExists(updateReqVO.getId()); | ||
| 70 | + // 更新 | ||
| 71 | + MaterialTypeDO updateObj = BeanUtils.toBean(updateReqVO, MaterialTypeDO.class); | ||
| 72 | + materialTypeMapper.updateById(updateObj); | ||
| 33 | } | 73 | } |
| 34 | 74 | ||
| 35 | @Override | 75 | @Override |
| 36 | - public Page<MaterialTypeDO> selectPage(Page<MaterialTypeDO> page, MaterialTypeDO req) { | ||
| 37 | - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO> wrapper = | ||
| 38 | - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 39 | - .likeIfPresent(MaterialTypeDO::getTypeName, req.getTypeName()) | ||
| 40 | - .eqIfPresent(MaterialTypeDO::getParentId, req.getParentId()) | ||
| 41 | - .eqIfPresent(MaterialTypeDO::getLevel, req.getLevel()) | ||
| 42 | - .orderByDesc(MaterialTypeDO::getId); | ||
| 43 | - return mapper.selectPage(page, wrapper); | 76 | + public void deleteMaterialType(Long id) { |
| 77 | + // 校验存在 | ||
| 78 | + validateMaterialTypeExists(id); | ||
| 79 | + // 删除 | ||
| 80 | + materialTypeMapper.deleteById(id); | ||
| 44 | } | 81 | } |
| 45 | 82 | ||
| 46 | @Override | 83 | @Override |
| 47 | - public boolean insert(MaterialTypeDO entity) { | ||
| 48 | - entity.clean(); | ||
| 49 | - return mapper.insert(entity) > 0; | 84 | + public void deleteMaterialTypeListByIds(List<Long> ids) { |
| 85 | + // 删除 | ||
| 86 | + materialTypeMapper.deleteByIds(ids); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + | ||
| 90 | + private void validateMaterialTypeExists(Long id) { | ||
| 91 | + if (materialTypeMapper.selectById(id) == null) { | ||
| 92 | + throw exception(MATERIAL_TYPE_NOT_EXISTS); | ||
| 93 | + } | ||
| 50 | } | 94 | } |
| 51 | 95 | ||
| 52 | @Override | 96 | @Override |
| 53 | - public boolean update(MaterialTypeDO entity) { | ||
| 54 | - entity.clean(); | ||
| 55 | - return mapper.updateById(entity) > 0; | 97 | + public MaterialTypeDO getMaterialType(Long id) { |
| 98 | + return materialTypeMapper.selectById(id); | ||
| 56 | } | 99 | } |
| 57 | 100 | ||
| 58 | @Override | 101 | @Override |
| 59 | - public boolean deleteById(Long id) { | ||
| 60 | - return mapper.deleteById(id) > 0; | 102 | + public PageResult<MaterialTypeDO> getMaterialTypePage(MaterialTypePageReqVO pageReqVO) { |
| 103 | + return materialTypeMapper.selectPage(pageReqVO); | ||
| 61 | } | 104 | } |
| 62 | 105 | ||
| 63 | @Override | 106 | @Override |
| 64 | - public List<MaterialTypeManagerRespVO> queryMaterialBigType(Long materialTypeId) { | ||
| 65 | - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO> wrapper = | ||
| 66 | - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 67 | - .eqIfPresent(MaterialTypeDO::getLevel, 1) | ||
| 68 | - .orderByDesc(MaterialTypeDO::getId); | ||
| 69 | - List<MaterialTypeDO> list = mapper.selectList(wrapper); | ||
| 70 | - return list.stream().filter(it -> materialTypeId == null || !it.getId().equals(materialTypeId)) | ||
| 71 | - .map(it -> { | ||
| 72 | - MaterialTypeManagerRespVO vo = new MaterialTypeManagerRespVO(); | ||
| 73 | - vo.setValue(it.getId()); | ||
| 74 | - vo.setLabel(it.getTypeName()); | ||
| 75 | - return vo; | ||
| 76 | - }).toList(); | 107 | + public List<MaterialTypeResp> queryMaterialBigType(Long materialTypeId) { |
| 108 | + List<MaterialTypeDO> list; | ||
| 109 | + // 入参为空时查询所有,非空时按ID查询 | ||
| 110 | + if (materialTypeId == null) { | ||
| 111 | + list = materialTypeMapper.selectList(); | ||
| 112 | + } else { | ||
| 113 | + list = materialTypeMapper.selectList(MaterialTypeDO::getMaterialTypeId, materialTypeId); | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + // 空列表判断,避免空指针 | ||
| 117 | + if (list == null || list.isEmpty()) { | ||
| 118 | + return List.of(); // 返回空列表而非null,更符合Java规范 | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + Set<Long> seenIds = new HashSet<>(); | ||
| 122 | + return list.stream() | ||
| 123 | + .map(doObj -> { | ||
| 124 | + MaterialTypeResp resp = new MaterialTypeResp(); | ||
| 125 | + resp.setValue(doObj.getMaterialTypeId()); | ||
| 126 | + resp.setLabel(doObj.getMaterialTypeName()); | ||
| 127 | + return resp; | ||
| 128 | + }) | ||
| 129 | + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) | ||
| 130 | + .collect(Collectors.toList()); | ||
| 77 | } | 131 | } |
| 78 | 132 | ||
| 79 | @Override | 133 | @Override |
| 80 | - public List<MaterialTypeManagerRespVO> queryMaterialMidType(Long materialTypeId) { | ||
| 81 | - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO> wrapper = | ||
| 82 | - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 83 | - .eqIfPresent(MaterialTypeDO::getLevel, 2) | ||
| 84 | - .eqIfPresent(MaterialTypeDO::getParentId, materialTypeId) | ||
| 85 | - .orderByDesc(MaterialTypeDO::getId); | ||
| 86 | - List<MaterialTypeDO> list = mapper.selectList(wrapper); | ||
| 87 | - return list.stream().map(it -> { | ||
| 88 | - MaterialTypeManagerRespVO vo = new MaterialTypeManagerRespVO(); | ||
| 89 | - vo.setValue(it.getId()); | ||
| 90 | - vo.setLabel(it.getTypeName()); | ||
| 91 | - vo.setMaterialParentTypeId(it.getParentId()); | ||
| 92 | - return vo; | ||
| 93 | - }).toList(); | 134 | + public List<MaterialTypeResp> queryMaterialMidType(Long materialParentTypeId) { |
| 135 | + List<MaterialTypeDO> list = materialTypeMapper.selectList(MaterialTypeDO::getMaterialParentTypeId, materialParentTypeId); | ||
| 136 | + // 2. 空列表判断,避免空指针 | ||
| 137 | + if (list == null || list.isEmpty()) { | ||
| 138 | + return List.of(); // 返回空列表而非null,更符合Java规范 | ||
| 139 | + } | ||
| 140 | + Set<Long> seenIds = new HashSet<>(); | ||
| 141 | + return list.stream() | ||
| 142 | + .map(doObj -> { | ||
| 143 | + MaterialTypeResp resp = new MaterialTypeResp(); | ||
| 144 | + resp.setValue(doObj.getTypeId()); | ||
| 145 | + resp.setLabel(doObj.getTypeName()); | ||
| 146 | + return resp; | ||
| 147 | + }) | ||
| 148 | + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) | ||
| 149 | + .collect(Collectors.toList()); | ||
| 94 | } | 150 | } |
| 95 | 151 | ||
| 96 | @Override | 152 | @Override |
| 97 | - public List<MaterialTypeManagerRespVO> queryMaterialDetailType(Long parentTypeId) { | ||
| 98 | - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO> wrapper = | ||
| 99 | - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX<MaterialTypeDO>() | ||
| 100 | - .eqIfPresent(MaterialTypeDO::getLevel, 3) | ||
| 101 | - .eqIfPresent(MaterialTypeDO::getParentId, parentTypeId) | ||
| 102 | - .orderByDesc(MaterialTypeDO::getId); | ||
| 103 | - List<MaterialTypeDO> list = mapper.selectList(wrapper); | ||
| 104 | - return list.stream().map(it -> { | ||
| 105 | - MaterialTypeManagerRespVO vo = new MaterialTypeManagerRespVO(); | ||
| 106 | - vo.setValue(it.getId()); | ||
| 107 | - vo.setLabel(it.getTypeName()); | ||
| 108 | - vo.setParentTypeId(it.getParentId()); | ||
| 109 | - return vo; | ||
| 110 | - }).toList(); | 153 | + public List<MaterialTypeResp> queryMaterialDetailType(Long parentTypeId) { |
| 154 | + List<MaterialTypeDO> list = materialTypeMapper.selectList(MaterialTypeDO::getParentTypeId, parentTypeId); | ||
| 155 | + // 2. 空列表判断,避免空指针 | ||
| 156 | + if (list == null || list.isEmpty()) { | ||
| 157 | + return List.of(); // 返回空列表而非null,更符合Java规范 | ||
| 158 | + } | ||
| 159 | + Set<Long> seenIds = new HashSet<>(); | ||
| 160 | + return list.stream() | ||
| 161 | + .map(doObj -> { | ||
| 162 | + MaterialTypeResp resp = new MaterialTypeResp(); | ||
| 163 | + resp.setValue(doObj.getTypeDetailId()); | ||
| 164 | + resp.setLabel(doObj.getTypeDetailName()); | ||
| 165 | + return resp; | ||
| 166 | + }) | ||
| 167 | + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) | ||
| 168 | + .collect(Collectors.toList()); | ||
| 111 | } | 169 | } |
| 112 | 170 | ||
| 113 | @Override | 171 | @Override |
| 114 | public Long selectMaxTypeDetailId(Long materialTypeId, Long typeId) { | 172 | public Long selectMaxTypeDetailId(Long materialTypeId, Long typeId) { |
| 115 | QueryWrapper<MaterialTypeDO> qw = new QueryWrapper<>(); | 173 | QueryWrapper<MaterialTypeDO> qw = new QueryWrapper<>(); |
| 116 | - qw.select("max(id) AS maxId") | ||
| 117 | - .eq("level", 3) | ||
| 118 | - .eq("parent_id", typeId); | ||
| 119 | - List<java.util.Map<String, Object>> maps = mapper.selectMaps(qw); | ||
| 120 | - if (maps.isEmpty() || maps.get(0).get("maxId") == null) { | ||
| 121 | - return 0L; | ||
| 122 | - } | ||
| 123 | - return ((Number) maps.get(0).get("maxId")).longValue(); | 174 | + qw.select("max(type_detail_id) AS maxId") |
| 175 | + .eq("material_type_id", materialTypeId) | ||
| 176 | + .eq("type_id", typeId); | ||
| 177 | + | ||
| 178 | + List<Map<String, Object>> maps = materialTypeMapper.selectMaps(qw); | ||
| 179 | + return CollectionUtils.isEmpty(maps) | ||
| 180 | + ? 0L | ||
| 181 | + : Optional.ofNullable((Number) maps.get(0).get("maxId")) | ||
| 182 | + .map(Number::longValue) | ||
| 183 | + .orElse(0L); | ||
| 124 | } | 184 | } |
| 125 | -} | ||
| 126 | \ No newline at end of file | 185 | \ No newline at end of file |
| 186 | + | ||
| 187 | +} |
urbanops-module-garden/src/main/resources/mapper/materialtype/MaterialTypeMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.material.MaterialTypeMapper"> | ||
| 4 | + | ||
| 5 | + <!-- | ||
| 6 | + 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。 | ||
| 7 | + 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。 | ||
| 8 | + 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 | ||
| 9 | + 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ | ||
| 10 | + --> | ||
| 11 | + | ||
| 12 | +</mapper> | ||
| 0 | \ No newline at end of file | 13 | \ No newline at end of file |