This commit is contained in:
lijiaqi 2024-09-06 15:11:40 +08:00
parent ccea6c874c
commit a1ee204c34
5 changed files with 211 additions and 1 deletions

View File

@ -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<AttributeDto> detail(String attributeId) {
return attributeService.getAttributeDetail(attributeId);
}
@GetMapping("/list")
@Operation(summary = "列表查询")
@Parameters({
@Parameter(name = "attributeClassificationId", description = "属性分类ID", required = false)
})
public Result<List<AttributeDto>> 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<AttributeDto>> page(@ParameterObject AttributeVo vo) {
return attributeService.getAttributePageList(getPage(), vo);
}
}

View File

@ -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;
}

View File

@ -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<AttributeMapper, Attribute> {
private String check(String id, AttributeVo vo) {
String message = "";
long count = this.count(new QueryWrapper<Attribute>()
.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<AttributeDto> getAttributeDetail(String id) {
Attribute obj = this.getById(id);
if (ObjUtil.isNull(obj)) {
return Result.fail("数据不存在");
}
return Result.data(AttributeWrapper.INSTANCE.toDto(obj));
}
public Result<Page<AttributeDto>> getAttributePageList(Page page, AttributeVo vo) {
return Result.data(AttributeWrapper.INSTANCE.toDto(this.page(page, new QueryWrapper<Attribute>()
.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<List<AttributeDto>> getAttributeList(String attributeClassificationId) {
return Result.data(AttributeWrapper.INSTANCE.toDto(this.list(new QueryWrapper<Attribute>()
.lambda()
.eq(StrUtil.isNotBlank(attributeClassificationId), Attribute::getAttributeClassificationId, attributeClassificationId)
)));
}
}

View File

@ -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;
}

View File

@ -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<Attribute, AttributeDto> {
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());
}
}
}