From a1ee204c3486df8829fb054b457f55cfa37ee852 Mon Sep 17 00:00:00 2001 From: lijiaqi Date: Fri, 6 Sep 2024 15:11:40 +0800 Subject: [PATCH] init --- .../controller/AttributeController.java | 62 ++++++++++++++ .../module/drone/coding/dto/AttributeDto.java | 15 ++++ .../coding/service/AttributeService.java | 81 ++++++++++++++++++- .../module/drone/coding/vo/AttributeVo.java | 24 ++++++ .../coding/wrapper/AttributeWrapper.java | 30 +++++++ 5 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/workde/module/drone/coding/dto/AttributeDto.java create mode 100644 src/main/java/cn/workde/module/drone/coding/vo/AttributeVo.java create mode 100644 src/main/java/cn/workde/module/drone/coding/wrapper/AttributeWrapper.java diff --git a/src/main/java/cn/workde/module/drone/coding/controller/AttributeController.java b/src/main/java/cn/workde/module/drone/coding/controller/AttributeController.java index 6a59f30..44bfc40 100644 --- a/src/main/java/cn/workde/module/drone/coding/controller/AttributeController.java +++ b/src/main/java/cn/workde/module/drone/coding/controller/AttributeController.java @@ -2,13 +2,23 @@ package cn.workde.module.drone.coding.controller; import cn.workde.core.constant.GrapeConst; +import cn.workde.core.data.dto.Result; +import cn.workde.module.drone.coding.dto.AttributeDto; import cn.workde.module.drone.coding.service.AttributeService; +import cn.workde.module.drone.coding.vo.AttributeVo; import cn.workde.module.upms.controller._BaseController; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; /** @@ -27,6 +37,58 @@ public class AttributeController extends _BaseController { @Resource private AttributeService attributeService; + @PostMapping("/add") + @Operation(summary = "增加") + public Result add(@RequestBody @Validated AttributeVo vo) { + return attributeService.addAttribute(vo); + } + + @DeleteMapping("/delete/{attributeId}") + @Operation(summary = "删除") + @Parameters({ + @Parameter(name = "attributeId", description = "属性ID", required = true) + }) + public Result delete(@PathVariable String attributeId) { + return attributeService.deleteAttribute(attributeId); + } + + @PutMapping("/edit/{attributeId}") + @Operation(summary = "编辑") + @Parameters({ + @Parameter(name = "attributeId", description = "属性ID", required = true) + }) + public Result edit(@RequestBody @Validated AttributeVo vo, @PathVariable String attributeId) { + return attributeService.editAttribute(attributeId, vo); + } + + @GetMapping("/detail") + @Operation(summary = "详情") + @Parameters({ + @Parameter(name = "attributeId", description = "属性ID", required = true) + }) + public Result detail(String attributeId) { + return attributeService.getAttributeDetail(attributeId); + } + + @GetMapping("/list") + @Operation(summary = "列表查询") + @Parameters({ + @Parameter(name = "attributeClassificationId", description = "属性分类ID", required = false) + }) + public Result> list(String attributeClassificationId) { + return attributeService.getAttributeList(attributeClassificationId); + } + + @GetMapping("/page") + @Operation(summary = "分页查询") + @Parameters({ + @Parameter(name = "current", description = "当前页", required = true), + @Parameter(name = "size", description = "每页数量", required = true) + }) + public Result> page(@ParameterObject AttributeVo vo) { + return attributeService.getAttributePageList(getPage(), vo); + } + } diff --git a/src/main/java/cn/workde/module/drone/coding/dto/AttributeDto.java b/src/main/java/cn/workde/module/drone/coding/dto/AttributeDto.java new file mode 100644 index 0000000..50696fc --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/dto/AttributeDto.java @@ -0,0 +1,15 @@ +package cn.workde.module.drone.coding.dto; + +import cn.workde.module.drone.coding.entity.Attribute; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AttributeDto extends Attribute { + + @Schema(description = "属性分类名称") + private String attributeClassificationName; + +} diff --git a/src/main/java/cn/workde/module/drone/coding/service/AttributeService.java b/src/main/java/cn/workde/module/drone/coding/service/AttributeService.java index 8de23cb..19b6896 100644 --- a/src/main/java/cn/workde/module/drone/coding/service/AttributeService.java +++ b/src/main/java/cn/workde/module/drone/coding/service/AttributeService.java @@ -1,10 +1,21 @@ package cn.workde.module.drone.coding.service; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; import cn.workde.core.base.BaseService; -import cn.workde.module.drone.coding.mapper.AttributeMapper; +import cn.workde.core.data.dto.Result; +import cn.workde.module.drone.coding.dto.AttributeDto; import cn.workde.module.drone.coding.entity.Attribute; +import cn.workde.module.drone.coding.mapper.AttributeMapper; +import cn.workde.module.drone.coding.vo.AttributeVo; +import cn.workde.module.drone.coding.wrapper.AttributeWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.stereotype.Service; +import java.util.List; + /** * 无人机属性(Attribute)表服务实现类 * @@ -14,5 +25,73 @@ import org.springframework.stereotype.Service; @Service("attributeService") public class AttributeService extends BaseService { + private String check(String id, AttributeVo vo) { + String message = ""; + long count = this.count(new QueryWrapper() + .lambda() + .eq(Attribute::getAttributeName, vo.getAttributeName()) + .eq(Attribute::getAttributeClassificationId, vo.getAttributeClassificationId()) + .ne(StrUtil.isNotBlank(id), Attribute::getId, id) + ); + if (count > 0) { + message = " 该属性分类中属性名称重复 "; + } + return message; + } + + public Result addAttribute(AttributeVo vo) { + String message = check("", vo); + if (StrUtil.isNotBlank(message)) { + return Result.fail(message); + } + Attribute obj = BeanUtil.copyProperties(vo, Attribute.class); + return this.saveOrUpdate(obj) ? Result.success("操作成功") : Result.fail("操作失败"); + } + + public Result editAttribute(String id, AttributeVo vo) { + String message = check(id, vo); + if (StrUtil.isNotBlank(message)) { + return Result.fail(message); + } + Attribute obj = getById(id); + if (ObjUtil.isNull(obj)) { + return Result.fail("数据不存在"); + } + BeanUtil.copyProperties(vo, obj); + return this.saveOrUpdate(obj) ? Result.success("操作成功") : Result.fail("操作失败"); + } + + public Result deleteAttribute(String id) { + if (ObjUtil.isNull(this.getById(id))) { + return Result.fail("数据不存在"); + } + return this.removeById(id) ? Result.success("操作成功") : Result.fail("操作失败"); + } + + public Result getAttributeDetail(String id) { + Attribute obj = this.getById(id); + if (ObjUtil.isNull(obj)) { + return Result.fail("数据不存在"); + } + return Result.data(AttributeWrapper.INSTANCE.toDto(obj)); + } + + public Result> getAttributePageList(Page page, AttributeVo vo) { + return Result.data(AttributeWrapper.INSTANCE.toDto(this.page(page, new QueryWrapper() + .lambda() + .eq(StrUtil.isNotBlank(vo.getAttributeClassificationId()), Attribute::getAttributeClassificationId, vo.getAttributeClassificationId()) + .like(StrUtil.isNotBlank(vo.getAttributeDescription()), Attribute::getAttributeDescription, vo.getAttributeDescription()) + .like(StrUtil.isNotBlank(vo.getAttributeRemarks()), Attribute::getAttributeRemarks, vo.getAttributeRemarks()) + .like(StrUtil.isNotBlank(vo.getAttributeName()), Attribute::getAttributeName, vo.getAttributeName()) + ))); + } + + public Result> getAttributeList(String attributeClassificationId) { + return Result.data(AttributeWrapper.INSTANCE.toDto(this.list(new QueryWrapper() + .lambda() + .eq(StrUtil.isNotBlank(attributeClassificationId), Attribute::getAttributeClassificationId, attributeClassificationId) + ))); + } + } diff --git a/src/main/java/cn/workde/module/drone/coding/vo/AttributeVo.java b/src/main/java/cn/workde/module/drone/coding/vo/AttributeVo.java new file mode 100644 index 0000000..9ddc996 --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/vo/AttributeVo.java @@ -0,0 +1,24 @@ +package cn.workde.module.drone.coding.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class AttributeVo { + @Schema(description = "属性分类id") + @NotBlank(message = "请选择属性分类") + private String attributeClassificationId; + + @Schema(description = "属性名称") + @NotBlank(message = "属性名称不能为空") + private String attributeName; + + @Schema(description = "属性描述") + @NotBlank(message = "属性描述不能为空") + private String attributeDescription; + + @Schema(description = "属性备注") + @NotBlank(message = "属性备注不能为空") + private String attributeRemarks; +} diff --git a/src/main/java/cn/workde/module/drone/coding/wrapper/AttributeWrapper.java b/src/main/java/cn/workde/module/drone/coding/wrapper/AttributeWrapper.java new file mode 100644 index 0000000..75c051d --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/wrapper/AttributeWrapper.java @@ -0,0 +1,30 @@ +package cn.workde.module.drone.coding.wrapper; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.extra.spring.SpringUtil; +import cn.workde.core.base.BaseWrapper; +import cn.workde.module.drone.coding.dto.AttributeDto; +import cn.workde.module.drone.coding.entity.Attribute; +import cn.workde.module.drone.coding.entity.AttributeClassification; +import cn.workde.module.drone.coding.service.AttributeClassificationService; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.AfterMapping; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface AttributeWrapper extends BaseWrapper { + + AttributeWrapper INSTANCE = Mappers.getMapper(AttributeWrapper.class); + + @AfterMapping + default void setOtherField(@Param("obj") Attribute obj, @Param("dto") AttributeDto dto) { + BeanUtil.copyProperties(obj, dto); + AttributeClassificationService attributeClassificationService = SpringUtil.getBean(AttributeClassificationService.class); + AttributeClassification attributeClassification = attributeClassificationService.getById(obj.getAttributeClassificationId()); + if (ObjUtil.isNotNull(attributeClassification)) { + dto.setAttributeClassificationName(attributeClassification.getAttributeClassificationName()); + } + } +}