From ea6905fce075d46888241038d83b1f577ef06687 Mon Sep 17 00:00:00 2001 From: lijiaqi Date: Mon, 9 Sep 2024 16:01:08 +0800 Subject: [PATCH] init --- .../controller/AttributeValueController.java | 32 ----- .../coding/controller/BatchesController.java | 7 +- .../coding/controller/MfcController.java | 26 ++++ .../dto/AttributeClassificationDto.java | 16 +++ .../drone/coding/entity/AttributeValue.java | 4 +- .../drone/coding/service/BatchesService.java | 30 +++++ .../drone/coding/service/MfcService.java | 114 ++++++++++++++++++ .../drone/coding/vo/AttributeValueVo.java | 5 +- .../module/drone/coding/vo/BatchesVo.java | 8 +- 9 files changed, 201 insertions(+), 41 deletions(-) delete mode 100644 src/main/java/cn/workde/module/drone/coding/controller/AttributeValueController.java create mode 100644 src/main/java/cn/workde/module/drone/coding/dto/AttributeClassificationDto.java diff --git a/src/main/java/cn/workde/module/drone/coding/controller/AttributeValueController.java b/src/main/java/cn/workde/module/drone/coding/controller/AttributeValueController.java deleted file mode 100644 index 5678a7f..0000000 --- a/src/main/java/cn/workde/module/drone/coding/controller/AttributeValueController.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.workde.module.drone.coding.controller; - - -import cn.workde.core.constant.GrapeConst; -import cn.workde.module.drone.coding.service.AttributeValueService; -import cn.workde.module.upms.controller._BaseController; - -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.*; - - - -/** - * 无人机属性数值(AttributeValue)表控制层 - * - * @author makejava - * @since 2024-09-06 10:49:54 - */ -@Tag(name = "无人机属性数值") -@RestController -@RequestMapping(value = GrapeConst.API + "/attributeValue") -public class AttributeValueController extends _BaseController { - /** - * 服务对象 - */ - @Resource - private AttributeValueService attributeValueService; - - -} - diff --git a/src/main/java/cn/workde/module/drone/coding/controller/BatchesController.java b/src/main/java/cn/workde/module/drone/coding/controller/BatchesController.java index 90f83d3..a247214 100644 --- a/src/main/java/cn/workde/module/drone/coding/controller/BatchesController.java +++ b/src/main/java/cn/workde/module/drone/coding/controller/BatchesController.java @@ -1,11 +1,13 @@ package cn.workde.module.drone.coding.controller; - +import cn.hutool.core.util.StrUtil; import cn.workde.core.constant.GrapeConst; +import cn.workde.core.data.dto.OptionResult; import cn.workde.core.data.dto.Result; import cn.workde.module.drone.coding.entity.Batches; import cn.workde.module.drone.coding.service.BatchesService; +import cn.workde.module.drone.coding.vo.AttributeValueVo; import cn.workde.module.drone.coding.vo.BatchesVo; import cn.workde.module.upms.controller._BaseController; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -15,8 +17,11 @@ 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; + /** * 无人机批次表(Batches)表控制层 * diff --git a/src/main/java/cn/workde/module/drone/coding/controller/MfcController.java b/src/main/java/cn/workde/module/drone/coding/controller/MfcController.java index f085b68..cb5fc42 100644 --- a/src/main/java/cn/workde/module/drone/coding/controller/MfcController.java +++ b/src/main/java/cn/workde/module/drone/coding/controller/MfcController.java @@ -2,10 +2,14 @@ package cn.workde.module.drone.coding.controller; +import cn.hutool.core.util.StrUtil; import cn.workde.core.constant.GrapeConst; +import cn.workde.core.data.dto.OptionResult; import cn.workde.core.data.dto.Result; +import cn.workde.module.drone.coding.dto.AttributeClassificationDto; import cn.workde.module.drone.coding.entity.Mfc; import cn.workde.module.drone.coding.service.MfcService; +import cn.workde.module.drone.coding.vo.AttributeValueVo; import cn.workde.module.drone.coding.vo.MfcVo; import cn.workde.module.upms.controller._BaseController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -89,5 +93,27 @@ public class MfcController extends _BaseController { public Result> list() { return mfcService.getMfcList(); } + + @GetMapping("/attributeOptions") + @Operation(summary = "分类 属性树形 下拉列表") + public Result> getAttributeOptions() { + return mfcService.getAttributeOptions(); + } + + @GetMapping("/attributeByBatchId") + @Operation(summary = "根据MFC ID获取属性ID集合") + public Result> getAttributeByBatchId(String mfcId) { + if (StrUtil.isBlank(mfcId)) { + return Result.fail("MFC ID不能为空"); + } + return mfcService.getAttributeByBatchId(mfcId); + } + + @PostMapping("/editAttribute") + @Operation(summary = "设置属性") + public Result editAttribute(@RequestBody @Validated AttributeValueVo vo) { + return mfcService.editBatchesAttribute(vo); + } + } diff --git a/src/main/java/cn/workde/module/drone/coding/dto/AttributeClassificationDto.java b/src/main/java/cn/workde/module/drone/coding/dto/AttributeClassificationDto.java new file mode 100644 index 0000000..4ba386b --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/dto/AttributeClassificationDto.java @@ -0,0 +1,16 @@ +package cn.workde.module.drone.coding.dto; + +import cn.workde.module.drone.coding.entity.Attribute; +import cn.workde.module.drone.coding.entity.AttributeClassification; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AttributeClassificationDto extends AttributeClassification { + @Schema(description = "关联属性") + private List attributeList; +} diff --git a/src/main/java/cn/workde/module/drone/coding/entity/AttributeValue.java b/src/main/java/cn/workde/module/drone/coding/entity/AttributeValue.java index c757e5e..252c1f1 100644 --- a/src/main/java/cn/workde/module/drone/coding/entity/AttributeValue.java +++ b/src/main/java/cn/workde/module/drone/coding/entity/AttributeValue.java @@ -22,8 +22,8 @@ import java.io.Serializable; @TableName(value = "dss_drone_coding_attribute_value") public class AttributeValue extends BaseEntity { - @Schema(description = "批次ID") - private String batchesId; + @Schema(description = "MFC ID") + private String mfcId; @Schema(description = "属性分类ID") private String attributeClassificationId; diff --git a/src/main/java/cn/workde/module/drone/coding/service/BatchesService.java b/src/main/java/cn/workde/module/drone/coding/service/BatchesService.java index 8bf95ea..068ae36 100644 --- a/src/main/java/cn/workde/module/drone/coding/service/BatchesService.java +++ b/src/main/java/cn/workde/module/drone/coding/service/BatchesService.java @@ -1,17 +1,28 @@ package cn.workde.module.drone.coding.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import cn.workde.core.base.BaseService; +import cn.workde.core.data.dto.OptionResult; import cn.workde.core.data.dto.Result; +import cn.workde.module.drone.coding.entity.Attribute; +import cn.workde.module.drone.coding.entity.AttributeClassification; +import cn.workde.module.drone.coding.entity.AttributeValue; import cn.workde.module.drone.coding.entity.Batches; import cn.workde.module.drone.coding.mapper.BatchesMapper; +import cn.workde.module.drone.coding.vo.AttributeValueVo; import cn.workde.module.drone.coding.vo.BatchesVo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * 无人机批次表(Batches)表服务实现类 * @@ -21,6 +32,22 @@ import org.springframework.stereotype.Service; @Service("batchesService") public class BatchesService extends BaseService { + @Resource + @Lazy + private MfcService mfcService; + + @Resource + @Lazy + private AttributeClassificationService attributeClassificationService; + + @Resource + @Lazy + private AttributeService attributeService; + + @Resource + @Lazy + private AttributeValueService attributeValueService; + public Result addBatches(BatchesVo vo) { Long count = this.getBaseMapper().selectCount(new QueryWrapper() .lambda() @@ -71,9 +98,12 @@ public class BatchesService extends BaseService { .like(StrUtil.isNotBlank(vo.getBatchesCode()), Batches::getBatchesCode, vo.getBatchesCode()) .like(StrUtil.isNotBlank(vo.getBatchesName()), Batches::getBatchesName, vo.getBatchesName()) .like(StrUtil.isNotBlank(vo.getBatchesDescription()), Batches::getBatchesDescription, vo.getBatchesDescription()) + .eq(StrUtil.isNotBlank(vo.getMfcId()), Batches::getMfcId, vo.getMfcId()) ); return Result.data(paged); } + + } diff --git a/src/main/java/cn/workde/module/drone/coding/service/MfcService.java b/src/main/java/cn/workde/module/drone/coding/service/MfcService.java index 996f2b6..7eb6110 100644 --- a/src/main/java/cn/workde/module/drone/coding/service/MfcService.java +++ b/src/main/java/cn/workde/module/drone/coding/service/MfcService.java @@ -1,17 +1,26 @@ package cn.workde.module.drone.coding.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import cn.workde.core.base.BaseService; import cn.workde.core.data.dto.Result; +import cn.workde.module.drone.coding.dto.AttributeClassificationDto; +import cn.workde.module.drone.coding.entity.Attribute; +import cn.workde.module.drone.coding.entity.AttributeClassification; +import cn.workde.module.drone.coding.entity.AttributeValue; import cn.workde.module.drone.coding.entity.Mfc; import cn.workde.module.drone.coding.mapper.MfcMapper; +import cn.workde.module.drone.coding.vo.AttributeValueVo; import cn.workde.module.drone.coding.vo.MfcVo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -23,6 +32,19 @@ import java.util.List; @Service("mfcService") public class MfcService extends BaseService { + @Resource + @Lazy + private AttributeClassificationService attributeClassificationService; + + @Resource + @Lazy + private AttributeService attributeService; + + @Resource + @Lazy + private AttributeValueService attributeValueService; + + private String check(String id, MfcVo vo) { String message = ""; // 校验MFC编号 编号长度必须为4位 @@ -96,5 +118,97 @@ public class MfcService extends BaseService { List list = this.list(); return Result.data(list); } + + + public Result> getAttributeOptions() { + //获取所有属性分类 + List attributeClassificationList = attributeClassificationService.list(); + if (ObjUtil.isNotNull(attributeClassificationList)) { + List attributeClassificationDtoList = new ArrayList(); + attributeClassificationList.forEach(attributeClassification -> { + AttributeClassificationDto attributeClassificationDto = new AttributeClassificationDto(); + BeanUtil.copyProperties(attributeClassification, attributeClassificationDto); + //获取属性 + List attributeList = attributeService.list(new QueryWrapper() + .lambda() + .eq(Attribute::getAttributeClassificationId, attributeClassification.getId()) + ); + attributeClassificationDto.setAttributeList(attributeList); + attributeClassificationDtoList.add(attributeClassificationDto); + }); + return Result.data(attributeClassificationDtoList); + } + return Result.fail("数据不存在"); + } + + public Result> getAttributeByBatchId(String mfcId) { + List attributeValueList = attributeValueService.list( + new QueryWrapper() + .lambda() + .eq(AttributeValue::getMfcId, mfcId) + ); + if (ObjUtil.isNotNull(attributeValueList)) { + List attributeValueListStr = attributeValueList.stream().map(AttributeValue::getAttributeId).toList(); + return Result.data(attributeValueListStr); + } + return Result.data(null); + } + + public Result editBatchesAttribute(AttributeValueVo vo) { + String mfcId = vo.getMfcId(); + List attributeIdList = vo.getAttributeIdList(); + + // attributeIdList为空的话全部删除 + if (CollUtil.isEmpty(attributeIdList)) { + boolean flag = attributeValueService.remove(new QueryWrapper() + .lambda() + .eq(AttributeValue::getMfcId, mfcId) + ); + return flag ? Result.success("操作成功") : Result.fail("操作失败"); + } + + List attributeValueList = attributeValueService.list(new QueryWrapper() + .lambda() + .eq(AttributeValue::getMfcId, mfcId) + ); + + List addAttributeIdList = new ArrayList<>(); + if (CollUtil.isNotEmpty(attributeValueList)) { + // 删除 + List attributeValueListStr = attributeValueList.stream().map(AttributeValue::getAttributeId).toList(); + //找到数据库attributeValueListStr中不存在于前端传输的attributeIdList的属性 + List removeAttributeIdList = attributeValueListStr.stream().filter(attributeId -> !attributeIdList.contains(attributeId)).toList(); + boolean flag = attributeValueService.remove(new QueryWrapper() + .lambda() + .eq(AttributeValue::getMfcId, mfcId) + .in(AttributeValue::getAttributeId, removeAttributeIdList) + ); + if (!flag) return Result.fail("操作失败"); + + //找到前端传输的attributeIdList中不存在于数据库attributeValueListStr的属性 + addAttributeIdList = attributeIdList.stream().filter(attributeId -> !attributeValueListStr.contains(attributeId)).toList(); + } + + if (CollUtil.isEmpty(addAttributeIdList)) { + addAttributeIdList = attributeIdList; + } + + + //新增 + List attributeValueListNew = addAttributeIdList.stream().map(attributeId -> { + AttributeValue attributeValue = new AttributeValue(); + attributeValue.setMfcId(mfcId); + Attribute attribute = attributeService.getById(attributeId); + attributeValue.setAttributeClassificationId(ObjUtil.isNotNull(attribute) ? attribute.getAttributeClassificationId() : null); + attributeValue.setAttributeId(attributeId); + return attributeValue; + }).toList(); + + boolean flag = attributeValueService.saveBatch(attributeValueListNew); + + return flag ? Result.success("操作成功") : Result.fail("操作失败"); + } + + } diff --git a/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo.java b/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo.java index 7aa6de0..631da59 100644 --- a/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo.java +++ b/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo.java @@ -9,8 +9,9 @@ import java.util.List; @Data public class AttributeValueVo { - @Schema(description = "批次ID") - private String batchesId; + @Schema(description = "MFC ID") + @NotBlank(message = "MFC ID不能为空") + private String mfcId; @Schema(description = "属性ID集合") private List attributeIdList; diff --git a/src/main/java/cn/workde/module/drone/coding/vo/BatchesVo.java b/src/main/java/cn/workde/module/drone/coding/vo/BatchesVo.java index f41f4f4..a4fe3a6 100644 --- a/src/main/java/cn/workde/module/drone/coding/vo/BatchesVo.java +++ b/src/main/java/cn/workde/module/drone/coding/vo/BatchesVo.java @@ -16,15 +16,15 @@ public class BatchesVo { private String batchesName; @Schema(description = "批次描述") - @NotBlank(message = "批次描述不能为空") +// @NotBlank(message = "批次描述不能为空") private String batchesDescription; @Schema(description = "所属MFC ID") @NotBlank(message = "请选择所属MFC") private String mfcId; - @Schema(description = "规则ID") - @NotBlank(message = "请选择规则") - private String ruleId; +// @Schema(description = "规则ID") +// @NotBlank(message = "请选择规则") +// private String ruleId; }