From 75729b30d207fb9c2112533376bc42318b46325c Mon Sep 17 00:00:00 2001 From: wangqian <1406304305@qq.com> Date: Fri, 28 Nov 2025 14:05:28 +0800 Subject: [PATCH] 耗材基础迁移 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/MaterialTypeController.java | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypePageReqVO.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeResp.java | 38 ++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeRespVO.java | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeSaveReqVO.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialtype/MaterialTypeAdminController.java | 44 -------------------------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/AppMaterialTypeController.java | 43 ------------------------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/MaterialTypeController.java | 91 ------------------------------------------------------------------------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeAddReqVO.java | 29 ----------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeEditReqVO.java | 37 ------------------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeManagerRespVO.java | 11 ----------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypePageReqVO.java | 18 ------------------ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/material/MaterialTypeDO.java | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/material/MaterialTypeMapper.java | 26 ++++++++++++++------------ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java | 1 + urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeService.java | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeServiceImpl.java | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------- urbanops-module-garden/src/main/resources/mapper/materialtype/MaterialTypeMapper.xml | 12 ++++++++++++ 18 files changed, 642 insertions(+), 387 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/MaterialTypeController.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypePageReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeResp.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeRespVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeSaveReqVO.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialtype/MaterialTypeAdminController.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/AppMaterialTypeController.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/MaterialTypeController.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeAddReqVO.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeEditReqVO.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeManagerRespVO.java delete mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypePageReqVO.java create mode 100644 urbanops-module-garden/src/main/resources/mapper/materialtype/MaterialTypeMapper.xml diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/MaterialTypeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/MaterialTypeController.java new file mode 100644 index 0000000..9be7bcc --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/MaterialTypeController.java @@ -0,0 +1,134 @@ +package com.zteits.urbanops.module.garden.controller.admin.material; + +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeRespVO; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; +import com.zteits.urbanops.module.garden.service.material.MaterialTypeService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; + +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; + +@Tag(name = "管理后台 - 物料类型") +@RestController +@RequestMapping("/garden/material-type") +@Validated +public class MaterialTypeController { + + @Resource + private MaterialTypeService materialTypeService; + + @PostMapping("/create") + @Operation(summary = "创建物料类型") + @PreAuthorize("@ss.hasPermission('garden:material-type:create')") + public CommonResult createMaterialType(@Valid @RequestBody MaterialTypeSaveReqVO createReqVO) { + return success(materialTypeService.createMaterialType(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料类型") + @PreAuthorize("@ss.hasPermission('garden:material-type:update')") + public CommonResult updateMaterialType(@Valid @RequestBody MaterialTypeSaveReqVO updateReqVO) { + materialTypeService.updateMaterialType(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料类型") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:material-type:delete')") + public CommonResult deleteMaterialType(@RequestParam("id") Long id) { + materialTypeService.deleteMaterialType(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除物料类型") + @PreAuthorize("@ss.hasPermission('garden:material-type:delete')") + public CommonResult deleteMaterialTypeList(@RequestParam("ids") List ids) { + materialTypeService.deleteMaterialTypeListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料类型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getMaterialType(@RequestParam("id") Long id) { + MaterialTypeDO materialType = materialTypeService.getMaterialType(id); + return success(BeanUtils.toBean(materialType, MaterialTypeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料类型分页") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult> getMaterialTypePage(@Valid MaterialTypePageReqVO pageReqVO) { + PageResult pageResult = materialTypeService.getMaterialTypePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialTypeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料类型 Excel") + @PreAuthorize("@ss.hasPermission('garden:material-type:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialTypeExcel(@Valid MaterialTypePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialTypeService.getMaterialTypePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料类型.xls", "数据", MaterialTypeRespVO.class, + BeanUtils.toBean(list, MaterialTypeRespVO.class)); + } + + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料类型基础表-耗材类型List") + @GetMapping(value = "/getMaterialBigTypeList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getInfo() { + return success(materialTypeService.queryMaterialBigType(null)); + } + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料类型基础表-类别List") + @GetMapping(value = "/getMaterialMidTypeList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getMaterialMidTypeList(@RequestParam("material_type_id") Long materialTypeId) { + return success(materialTypeService.queryMaterialMidType(materialTypeId)); + } + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料类型基础表-类别List") + @GetMapping(value = "/getMaterialDetailTypeList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getMaterialDetailTypeList(@RequestParam("parent_type_id") Long parentTypeId) { + return success(materialTypeService.queryMaterialDetailType(parentTypeId)); + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypePageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypePageReqVO.java new file mode 100644 index 0000000..45ae432 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypePageReqVO.java @@ -0,0 +1,56 @@ +package com.zteits.urbanops.module.garden.controller.admin.material.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料类型分页 Request VO") +@Data +public class MaterialTypePageReqVO extends PageParam { + + @Schema(description = "物料类型ID", example = "31914") + private Long materialTypeId; + + @Schema(description = "耗材类型名称:工具", example = "赵六") + private String materialTypeName; + + @Schema(description = "类别ID", example = "13166") + private Long typeId; + + @Schema(description = "类别名称:药品", example = "李四") + private String typeName; + + @Schema(description = "付物料类型ID", example = "4908") + private Long materialParentTypeId; + + @Schema(description = "类别明细ID", example = "2459") + private Long typeDetailId; + + @Schema(description = "类别明细", example = "赵六") + private String typeDetailName; + + @Schema(description = "父类别ID", example = "6341") + private Long parentTypeId; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "状态(0正常 1停用)", example = "2") + private String status; + + @Schema(description = "创建者") + private String createBy; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新者") + private String updateBy; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeResp.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeResp.java new file mode 100644 index 0000000..a838ba7 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeResp.java @@ -0,0 +1,38 @@ +package com.zteits.urbanops.module.garden.controller.admin.material.vo; + +/** + * Copyright: Copyright (c) 2017 zteits + * + * @ClassName: MaterialTypeManagerResp.java + * @Description: + * @version: v1.0.0 + * @author: wangfs + * @date: 2024-11-10 13:50 + * Modification History: + * Date Author Version Description + * ---------------------------------------------------------* + * 2024-11-10 wangfs v1.0.0 创建 + */ + +public class MaterialTypeResp { + + private Long value; + + private String label; + + public Long getValue() { + return value; + } + + public void setValue(Long value) { + this.value = value; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeRespVO.java new file mode 100644 index 0000000..77cd2bb --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeRespVO.java @@ -0,0 +1,71 @@ +package com.zteits.urbanops.module.garden.controller.admin.material.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 物料类型 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialTypeRespVO { + + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23621") + @ExcelProperty("物料ID") + private Long id; + + @Schema(description = "物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31914") + @ExcelProperty("物料类型ID") + private Long materialTypeId; + + @Schema(description = "耗材类型名称:工具", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("耗材类型名称:工具") + private String materialTypeName; + + @Schema(description = "类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13166") + @ExcelProperty("类别ID") + private Long typeId; + + @Schema(description = "类别名称:药品", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("类别名称:药品") + private String typeName; + + @Schema(description = "付物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4908") + @ExcelProperty("付物料类型ID") + private Long materialParentTypeId; + + @Schema(description = "类别明细ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2459") + @ExcelProperty("类别明细ID") + private Long typeDetailId; + + @Schema(description = "类别明细", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("类别明细") + private String typeDetailName; + + @Schema(description = "父类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6341") + @ExcelProperty("父类别ID") + private Long parentTypeId; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态(0正常 1停用)", example = "2") + @ExcelProperty("状态(0正常 1停用)") + private String status; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String createBy; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updateBy; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeSaveReqVO.java new file mode 100644 index 0000000..0e58545 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/material/vo/MaterialTypeSaveReqVO.java @@ -0,0 +1,47 @@ +package com.zteits.urbanops.module.garden.controller.admin.material.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 物料类型新增/修改 Request VO") +@Data +public class MaterialTypeSaveReqVO { + + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23621") + private Long id; + + @Schema(description = "物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31914") + @NotNull(message = "物料类型ID不能为空") + private Long materialTypeId; + + @Schema(description = "耗材类型名称:工具", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "耗材类型名称:工具不能为空") + private String materialTypeName; + + @Schema(description = "类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13166") + @NotNull(message = "类别ID不能为空") + private Long typeId; + + @Schema(description = "类别名称:药品", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "类别名称:药品不能为空") + private String typeName; + + @Schema(description = "付物料类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4908") + private Long materialParentTypeId; + + @Schema(description = "类别明细ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2459") + private Long typeDetailId; + + @Schema(description = "类别明细", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "类别明细不能为空") + private String typeDetailName; + + @Schema(description = "父类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6341") + private Long parentTypeId; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + private String remark; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialtype/MaterialTypeAdminController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialtype/MaterialTypeAdminController.java deleted file mode 100644 index e5d1df0..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialtype/MaterialTypeAdminController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.admin.materialtype; - -import com.zteits.urbanops.framework.common.pojo.CommonResult; -import com.zteits.urbanops.framework.common.pojo.PageParam; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; -import com.zteits.urbanops.module.garden.dal.mysql.material.MaterialTypeMapper; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 物料类型") -@RestController -@RequestMapping("/materialType/type") -public class MaterialTypeAdminController { - - @Resource - private MaterialTypeMapper mapper; - - @GetMapping("/getMaterialBigTypeList") - @Operation(summary = "物料类型-大类列表") - @PreAuthorize("@ss.hasPermission('material:type:list')") - public CommonResult> getMaterialBigTypeList() { - return success(mapper.selectBigTypeList()); - } - - @PostMapping("/listForPage") - @Operation(summary = "物料类型-分页") - @PreAuthorize("@ss.hasPermission('material:type:list')") - public CommonResult> listForPage(@RequestBody MaterialTypeDO where, - @RequestParam(value = "pageNum", required = false) Integer pageNum, - @RequestParam(value = "pageSize", required = false) Integer pageSize) { - PageParam page = new PageParam(); - page.setPageNo(pageNum == null ? 1 : pageNum); - page.setPageSize(pageSize == null ? 10 : pageSize); - return success(mapper.selectPage(page, where)); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/AppMaterialTypeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/AppMaterialTypeController.java deleted file mode 100644 index 649472f..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/AppMaterialTypeController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.app; - -import com.zteits.urbanops.framework.common.pojo.CommonResult; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; -import com.zteits.urbanops.module.garden.service.material.MaterialTypeService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; - -@Tag(name = "APP - 物料类型") -@RestController -@RequestMapping("/app/materialType/type") -public class AppMaterialTypeController { - - @Resource - private MaterialTypeService materialTypeService; - - @GetMapping("/getMaterialBigTypeList") - @Operation(summary = "物料类型基础表-耗材类型List") - public CommonResult> getMaterialBigTypeList() { - return success(materialTypeService.queryMaterialBigType(30000L)); - } - - @GetMapping("/getMaterialMidTypeList") - @Operation(summary = "物料类型基础表-类别List") - public CommonResult> getMaterialMidTypeList(@RequestParam("material_type_id") Long materialTypeId) { - return success(materialTypeService.queryMaterialMidType(materialTypeId)); - } - - @GetMapping("/getMaterialDetailTypeList") - @Operation(summary = "物料类型基础表-类别明细List") - public CommonResult> getMaterialDetailTypeList(@RequestParam("parent_type_id") Long parentTypeId) { - return success(materialTypeService.queryMaterialDetailType(parentTypeId)); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/MaterialTypeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/MaterialTypeController.java deleted file mode 100644 index fc4624c..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/MaterialTypeController.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.business; - -import cn.hutool.core.bean.BeanUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zteits.urbanops.framework.common.pojo.CommonResult; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeAddReqVO; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeEditReqVO; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypePageReqVO; -import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; -import com.zteits.urbanops.module.garden.service.material.MaterialTypeService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.web.bind.annotation.*; - -import java.time.LocalDateTime; -import java.util.List; - -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; - -@Tag(name = "园林养护 - 物料类型") -@RestController -@RequestMapping("/materialType/type") -public class MaterialTypeController { - - @Resource - private MaterialTypeService materialTypeService; - - @GetMapping("/getMaterialBigTypeList") - @Operation(summary = "物料类型基础表-耗材类型List") - public CommonResult> getMaterialBigTypeList() { - return success(materialTypeService.queryMaterialBigType(null)); - } - - @GetMapping("/getMaterialMidTypeList") - @Operation(summary = "物料类型基础表-类别List") - public CommonResult> getMaterialMidTypeList(@RequestParam("material_type_id") Long materialTypeId) { - return success(materialTypeService.queryMaterialMidType(materialTypeId)); - } - - @GetMapping("/getMaterialDetailTypeList") - @Operation(summary = "物料类型基础表-类别明细List") - public CommonResult> getMaterialDetailTypeList(@RequestParam("parent_type_id") Long parentTypeId) { - return success(materialTypeService.queryMaterialDetailType(parentTypeId)); - } - - @PostMapping("/listForPage") - @Operation(summary = "耗材基础-分页") - public CommonResult> listForPage(@Valid @RequestBody MaterialTypePageReqVO reqVO) { - MaterialTypeDO where = new MaterialTypeDO(); - String keyword = reqVO.getTypeName(); - if (keyword == null || keyword.isEmpty()) { - keyword = reqVO.getMaterialTypeName(); - } - if (keyword == null || keyword.isEmpty()) { - keyword = reqVO.getTypeDetailName(); - } - where.setTypeName(keyword); - Page page = materialTypeService.selectPage(new Page<>(reqVO.getPageNum(), reqVO.getPageSize()), where); - return success(new PageResult<>(page.getRecords(), page.getTotal())); - } - - @PostMapping("/add") - @Operation(summary = "耗材基础-添加") - public CommonResult add(@Valid @RequestBody MaterialTypeAddReqVO reqVO) { - MaterialTypeDO entity = new MaterialTypeDO(); - entity.setTypeName(reqVO.getTypeDetailName()); - entity.setParentId(reqVO.getTypeId()); - entity.setLevel(3); - entity.setCreator("system"); - entity.setUpdater("system"); - return success(materialTypeService.insert(entity)); - } - - @PostMapping("/edit") - @Operation(summary = "耗材基础-修改") - public CommonResult edit(@Valid @RequestBody MaterialTypeEditReqVO reqVO) { - MaterialTypeDO entity = new MaterialTypeDO(); - BeanUtil.copyProperties(reqVO, entity, true); - return success(materialTypeService.update(entity)); - } - - @GetMapping("/deleteById") - @Operation(summary = "耗材基础-删除") - public CommonResult deleteById(@RequestParam("id") Long id) { - return success(materialTypeService.deleteById(id)); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeAddReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeAddReqVO.java deleted file mode 100644 index 81c3f38..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeAddReqVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.business.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class MaterialTypeAddReqVO { - @Schema(description = "物料类型ID") - @NotNull - private Long materialTypeId; - - @Schema(description = "耗材类型名称") - @NotEmpty - private String materialTypeName; - - @Schema(description = "类别ID") - @NotNull - private Long typeId; - - @Schema(description = "类别名称") - @NotEmpty - private String typeName; - - @Schema(description = "类别明细") - @NotEmpty - private String typeDetailName; -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeEditReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeEditReqVO.java deleted file mode 100644 index efc0e4e..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeEditReqVO.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.business.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class MaterialTypeEditReqVO { - @NotNull - private Long id; - - @Schema(description = "物料类型ID") - private Long materialTypeId; - - @Schema(description = "耗材类型名称") - private String materialTypeName; - - @Schema(description = "类别ID") - private Long typeId; - - @Schema(description = "类别名称") - private String typeName; - - @Schema(description = "类别明细ID") - private Long typeDetailId; - - @Schema(description = "类别明细") - private String typeDetailName; - - private Long materialParentTypeId; - - private Long parentTypeId; - - private String status; - - private String remark; -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeManagerRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeManagerRespVO.java deleted file mode 100644 index 0f46453..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypeManagerRespVO.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.business.vo; - -import lombok.Data; - -@Data -public class MaterialTypeManagerRespVO { - private Long value; - private String label; - private Long materialParentTypeId; - private Long parentTypeId; -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypePageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypePageReqVO.java deleted file mode 100644 index 2e17e00..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/business/vo/MaterialTypePageReqVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.business.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class MaterialTypePageReqVO { - - @Schema(description = "页码") - private Integer pageNum = 1; - - @Schema(description = "每页数量") - private Integer pageSize = 10; - - private String materialTypeName; - private String typeName; - private String typeDetailName; -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/material/MaterialTypeDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/material/MaterialTypeDO.java index db44d91..0ff1b99 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/material/MaterialTypeDO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/material/MaterialTypeDO.java @@ -1,16 +1,80 @@ package com.zteits.urbanops.module.garden.dal.dataobject.material; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; -import lombok.Data; +/** + * 物料类型 DO + * + * @author 超级管理员 + */ @TableName("garden_material_type") +@KeySequence("garden_material_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor public class MaterialTypeDO extends BaseDO { + + /** + * 物料ID + */ @TableId private Long id; + /** + * 物料类型ID + */ + private Long materialTypeId; + /** + * 耗材类型名称:工具 + */ + private String materialTypeName; + /** + * 类别ID + */ + private Long typeId; + /** + * 类别名称:药品 + */ private String typeName; - private Long parentId; - private Integer level; -} \ No newline at end of file + /** + * 付物料类型ID + */ + private Long materialParentTypeId; + /** + * 类别明细ID + */ + private Long typeDetailId; + /** + * 类别明细 + */ + private String typeDetailName; + /** + * 父类别ID + */ + private Long parentTypeId; + /** + * 备注 + */ + private String remark; + /** + * 状态(0正常 1停用) + */ + private String status; + /** + * 创建者 + */ + private String creator; + /** + * 更新者 + */ + private String updater; + + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/material/MaterialTypeMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/material/MaterialTypeMapper.java index fb0ebd7..6274d2a 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/material/MaterialTypeMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/material/MaterialTypeMapper.java @@ -1,22 +1,24 @@ package com.zteits.urbanops.module.garden.dal.mysql.material; -import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; import org.apache.ibatis.annotations.Mapper; -import java.util.List; - +/** + * 物料类型 Mapper + * + * @author 超级管理员 + */ @Mapper public interface MaterialTypeMapper extends BaseMapperX { - default List selectBigTypeList() { - return selectList(new LambdaQueryWrapperX().eq(MaterialTypeDO::getLevel, 1).orderByAsc(MaterialTypeDO::getTypeName)); - } - default com.zteits.urbanops.framework.common.pojo.PageResult selectPage(com.zteits.urbanops.framework.common.pojo.PageParam pageParam, MaterialTypeDO where) { - return selectPage(pageParam, null, new LambdaQueryWrapperX() - .likeIfPresent(MaterialTypeDO::getTypeName, where.getTypeName()) - .eqIfPresent(MaterialTypeDO::getParentId, where.getParentId()) - .orderByAsc(MaterialTypeDO::getTypeName)); + default PageResult selectPage(MaterialTypePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(MaterialTypeDO::getTypeName, reqVO.getTypeName()) + .orderByDesc(MaterialTypeDO::getTypeName)); } -} \ No newline at end of file + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java index 74e1655..3ffe6a3 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java @@ -72,4 +72,5 @@ public interface ErrorCodeConstants { ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-200-200-001, "养护频次已存在"); ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-200-200-002, "养护等级重复"); + ErrorCode MATERIAL_TYPE_NOT_EXISTS = new ErrorCode(1-100-004-001, "物料类型不存在"); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeService.java index 807718a..1f4e0f8 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeService.java @@ -1,30 +1,72 @@ package com.zteits.urbanops.module.garden.service.material; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; -import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; +import java.util.*; -import java.util.List; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeResp; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeSaveReqVO; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +/** + * 物料类型 Service 接口 + * + * @author 超级管理员 + */ public interface MaterialTypeService { - MaterialTypeDO get(Long id); + /** + * 创建物料类型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMaterialType(@Valid MaterialTypeSaveReqVO createReqVO); - List selectList(MaterialTypeDO req); + /** + * 更新物料类型 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialType(@Valid MaterialTypeSaveReqVO updateReqVO); - Page selectPage(Page page, MaterialTypeDO req); + /** + * 删除物料类型 + * + * @param id 编号 + */ + void deleteMaterialType(Long id); - boolean insert(MaterialTypeDO entity); + /** + * 批量删除物料类型 + * + * @param ids 编号 + */ + void deleteMaterialTypeListByIds(List ids); - boolean update(MaterialTypeDO entity); + /** + * 获得物料类型 + * + * @param id 编号 + * @return 物料类型 + */ + MaterialTypeDO getMaterialType(Long id); - boolean deleteById(Long id); + /** + * 获得物料类型分页 + * + * @param pageReqVO 分页查询 + * @return 物料类型分页 + */ + PageResult getMaterialTypePage(MaterialTypePageReqVO pageReqVO); - List queryMaterialBigType(Long materialTypeId); + List queryMaterialBigType(Long materialTypeId); - List queryMaterialMidType(Long materialTypeId); + List queryMaterialMidType(Long materialTypeId); - List queryMaterialDetailType(Long parentTypeId); + List queryMaterialDetailType(Long parentTypeId); Long selectMaxTypeDetailId(Long materialTypeId, Long typeId); -} \ No newline at end of file + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeServiceImpl.java index 31235d9..87467a3 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/material/MaterialTypeServiceImpl.java @@ -1,125 +1,186 @@ package com.zteits.urbanops.module.garden.service.material; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zteits.urbanops.module.garden.controller.business.vo.MaterialTypeManagerRespVO; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeResp; +import com.zteits.urbanops.module.garden.controller.admin.material.vo.MaterialTypeSaveReqVO; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import java.util.stream.Collectors; + import com.zteits.urbanops.module.garden.dal.dataobject.material.MaterialTypeDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; + import com.zteits.urbanops.module.garden.dal.mysql.material.MaterialTypeMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import java.util.List; +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; +import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserDeptId; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; +/** + * 物料类型 Service 实现类 + * + * @author 超级管理员 + */ @Service +@Validated public class MaterialTypeServiceImpl implements MaterialTypeService { @Resource - private MaterialTypeMapper mapper; + private MaterialTypeMapper materialTypeMapper; @Override - public MaterialTypeDO get(Long id) { - return mapper.selectById(id); + public Long createMaterialType(MaterialTypeSaveReqVO createReqVO) { + // 插入 + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(MaterialTypeDO::getMaterialTypeId, createReqVO.getMaterialTypeId()) + .eq(MaterialTypeDO::getTypeId, createReqVO.getTypeId()) + .eq(MaterialTypeDO::getTypeDetailName, createReqVO.getTypeDetailName()); + List materialTypes = materialTypeMapper.selectList(sql); + if (null != materialTypes && !materialTypes.isEmpty()) { + MaterialTypeDO materialType1 = materialTypes.get(0); + throw exception0(BAD_REQUEST.getCode(), "耗材类型:"+materialType1.getMaterialTypeName()+",类别:"+materialType1.getTypeName()+",类别明细:"+materialType1.getTypeDetailName() + " 的配置已存在"); + } + Long selectMaxTypeDetailId = selectMaxTypeDetailId(createReqVO.getMaterialTypeId(), createReqVO.getTypeId()); + createReqVO.setTypeDetailId(selectMaxTypeDetailId + 1); + MaterialTypeDO materialType = BeanUtils.toBean(createReqVO, MaterialTypeDO.class); + materialType.setParentTypeId(createReqVO.getTypeId()); + materialType.setMaterialParentTypeId(createReqVO.getMaterialTypeId()); + materialType.setStatus("0"); + materialType.setCreator(String.valueOf(getLoginUserDeptId())); + materialType.setUpdater(materialType.getCreator()); + materialTypeMapper.insert(materialType); + + // 返回 + return materialType.getId(); } @Override - public List selectList(MaterialTypeDO req) { - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX wrapper = - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .likeIfPresent(MaterialTypeDO::getTypeName, req.getTypeName()) - .eqIfPresent(MaterialTypeDO::getParentId, req.getParentId()) - .eqIfPresent(MaterialTypeDO::getLevel, req.getLevel()) - .orderByDesc(MaterialTypeDO::getId); - return mapper.selectList(wrapper); + public void updateMaterialType(MaterialTypeSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialTypeExists(updateReqVO.getId()); + // 更新 + MaterialTypeDO updateObj = BeanUtils.toBean(updateReqVO, MaterialTypeDO.class); + materialTypeMapper.updateById(updateObj); } @Override - public Page selectPage(Page page, MaterialTypeDO req) { - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX wrapper = - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .likeIfPresent(MaterialTypeDO::getTypeName, req.getTypeName()) - .eqIfPresent(MaterialTypeDO::getParentId, req.getParentId()) - .eqIfPresent(MaterialTypeDO::getLevel, req.getLevel()) - .orderByDesc(MaterialTypeDO::getId); - return mapper.selectPage(page, wrapper); + public void deleteMaterialType(Long id) { + // 校验存在 + validateMaterialTypeExists(id); + // 删除 + materialTypeMapper.deleteById(id); } @Override - public boolean insert(MaterialTypeDO entity) { - entity.clean(); - return mapper.insert(entity) > 0; + public void deleteMaterialTypeListByIds(List ids) { + // 删除 + materialTypeMapper.deleteByIds(ids); + } + + + private void validateMaterialTypeExists(Long id) { + if (materialTypeMapper.selectById(id) == null) { + throw exception(MATERIAL_TYPE_NOT_EXISTS); + } } @Override - public boolean update(MaterialTypeDO entity) { - entity.clean(); - return mapper.updateById(entity) > 0; + public MaterialTypeDO getMaterialType(Long id) { + return materialTypeMapper.selectById(id); } @Override - public boolean deleteById(Long id) { - return mapper.deleteById(id) > 0; + public PageResult getMaterialTypePage(MaterialTypePageReqVO pageReqVO) { + return materialTypeMapper.selectPage(pageReqVO); } @Override - public List queryMaterialBigType(Long materialTypeId) { - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX wrapper = - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .eqIfPresent(MaterialTypeDO::getLevel, 1) - .orderByDesc(MaterialTypeDO::getId); - List list = mapper.selectList(wrapper); - return list.stream().filter(it -> materialTypeId == null || !it.getId().equals(materialTypeId)) - .map(it -> { - MaterialTypeManagerRespVO vo = new MaterialTypeManagerRespVO(); - vo.setValue(it.getId()); - vo.setLabel(it.getTypeName()); - return vo; - }).toList(); + public List queryMaterialBigType(Long materialTypeId) { + List list; + // 入参为空时查询所有,非空时按ID查询 + if (materialTypeId == null) { + list = materialTypeMapper.selectList(); + } else { + list = materialTypeMapper.selectList(MaterialTypeDO::getMaterialTypeId, materialTypeId); + } + + // 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getMaterialTypeId()); + resp.setLabel(doObj.getMaterialTypeName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); } @Override - public List queryMaterialMidType(Long materialTypeId) { - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX wrapper = - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .eqIfPresent(MaterialTypeDO::getLevel, 2) - .eqIfPresent(MaterialTypeDO::getParentId, materialTypeId) - .orderByDesc(MaterialTypeDO::getId); - List list = mapper.selectList(wrapper); - return list.stream().map(it -> { - MaterialTypeManagerRespVO vo = new MaterialTypeManagerRespVO(); - vo.setValue(it.getId()); - vo.setLabel(it.getTypeName()); - vo.setMaterialParentTypeId(it.getParentId()); - return vo; - }).toList(); + public List queryMaterialMidType(Long materialParentTypeId) { + List list = materialTypeMapper.selectList(MaterialTypeDO::getMaterialParentTypeId, materialParentTypeId); + // 2. 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getTypeId()); + resp.setLabel(doObj.getTypeName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); } @Override - public List queryMaterialDetailType(Long parentTypeId) { - com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX wrapper = - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .eqIfPresent(MaterialTypeDO::getLevel, 3) - .eqIfPresent(MaterialTypeDO::getParentId, parentTypeId) - .orderByDesc(MaterialTypeDO::getId); - List list = mapper.selectList(wrapper); - return list.stream().map(it -> { - MaterialTypeManagerRespVO vo = new MaterialTypeManagerRespVO(); - vo.setValue(it.getId()); - vo.setLabel(it.getTypeName()); - vo.setParentTypeId(it.getParentId()); - return vo; - }).toList(); + public List queryMaterialDetailType(Long parentTypeId) { + List list = materialTypeMapper.selectList(MaterialTypeDO::getParentTypeId, parentTypeId); + // 2. 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getTypeDetailId()); + resp.setLabel(doObj.getTypeDetailName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); } @Override public Long selectMaxTypeDetailId(Long materialTypeId, Long typeId) { QueryWrapper qw = new QueryWrapper<>(); - qw.select("max(id) AS maxId") - .eq("level", 3) - .eq("parent_id", typeId); - List> maps = mapper.selectMaps(qw); - if (maps.isEmpty() || maps.get(0).get("maxId") == null) { - return 0L; - } - return ((Number) maps.get(0).get("maxId")).longValue(); + qw.select("max(type_detail_id) AS maxId") + .eq("material_type_id", materialTypeId) + .eq("type_id", typeId); + + List> maps = materialTypeMapper.selectMaps(qw); + return CollectionUtils.isEmpty(maps) + ? 0L + : Optional.ofNullable((Number) maps.get(0).get("maxId")) + .map(Number::longValue) + .orElse(0L); } -} \ No newline at end of file + +} diff --git a/urbanops-module-garden/src/main/resources/mapper/materialtype/MaterialTypeMapper.xml b/urbanops-module-garden/src/main/resources/mapper/materialtype/MaterialTypeMapper.xml new file mode 100644 index 0000000..2a09fee --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/materialtype/MaterialTypeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file -- libgit2 0.21.4