From c685cd320a899e02a286e98c7867dd262a89df33 Mon Sep 17 00:00:00 2001 From: lijiaqi Date: Tue, 10 Sep 2024 13:12:04 +0800 Subject: [PATCH] init --- .../coding/controller/MfcController.java | 20 +++ .../drone/coding/dto/AttributeValueDto.java | 4 +- .../mapper/AttributeValueBackupMapper.java | 9 ++ .../service/AttributeValueBackupService.java | 10 ++ .../drone/coding/service/MfcService.java | 125 +++++++++++++++--- .../drone/coding/vo/AttributeValueVo2.java | 26 ++++ 6 files changed, 170 insertions(+), 24 deletions(-) create mode 100644 src/main/java/cn/workde/module/drone/coding/mapper/AttributeValueBackupMapper.java create mode 100644 src/main/java/cn/workde/module/drone/coding/service/AttributeValueBackupService.java create mode 100644 src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo2.java 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 cb5fc42..e2df60f 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 @@ -7,9 +7,11 @@ 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.dto.AttributeValueDto; 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.AttributeValueVo2; import cn.workde.module.drone.coding.vo.MfcVo; import cn.workde.module.upms.controller._BaseController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -115,5 +117,23 @@ public class MfcController extends _BaseController { return mfcService.editBatchesAttribute(vo); } + @GetMapping("/attributeValueDetail") + @Operation(summary = "获取属性值详情") + @Parameters({ + @Parameter(name = "mfcId", description = "MFC ID", required = true) + }) + public Result getAttributeValueDetail(String mfcId) { + if (StrUtil.isBlank(mfcId)) { + return Result.fail("MFC ID不能为空"); + } + return mfcService.getAttributeValueDetail(mfcId); + } + + @PostMapping("/editAttributeValueBatch") + @Operation(summary = "批量设置属性值") + public Result editAttributeValueBatch(@RequestBody @Validated AttributeValueVo2 vo) { + return mfcService.editAttributeValueBatch(vo); + } + } diff --git a/src/main/java/cn/workde/module/drone/coding/dto/AttributeValueDto.java b/src/main/java/cn/workde/module/drone/coding/dto/AttributeValueDto.java index 4616455..d1a6fec 100644 --- a/src/main/java/cn/workde/module/drone/coding/dto/AttributeValueDto.java +++ b/src/main/java/cn/workde/module/drone/coding/dto/AttributeValueDto.java @@ -12,7 +12,7 @@ public class AttributeValueDto { private List attributeClassificationList; @Data - static class AttributeClassificationDTO { + public static class AttributeClassificationDTO { @Schema(description = "属性分类Id") private String attributeClassificationId; @Schema(description = "属性分类名称") @@ -22,7 +22,7 @@ public class AttributeValueDto { } @Data - static class AttributeDTO { + public static class AttributeDTO { @Schema(description = "MFC ID") private String mfcId; @Schema(description = "批次ID") diff --git a/src/main/java/cn/workde/module/drone/coding/mapper/AttributeValueBackupMapper.java b/src/main/java/cn/workde/module/drone/coding/mapper/AttributeValueBackupMapper.java new file mode 100644 index 0000000..1a7554e --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/mapper/AttributeValueBackupMapper.java @@ -0,0 +1,9 @@ +package cn.workde.module.drone.coding.mapper; + +import cn.workde.module.drone.coding.entity.AttributeValueBackup; +import com.github.yulichang.base.MPJBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AttributeValueBackupMapper extends MPJBaseMapper { +} diff --git a/src/main/java/cn/workde/module/drone/coding/service/AttributeValueBackupService.java b/src/main/java/cn/workde/module/drone/coding/service/AttributeValueBackupService.java new file mode 100644 index 0000000..d0df40f --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/service/AttributeValueBackupService.java @@ -0,0 +1,10 @@ +package cn.workde.module.drone.coding.service; + +import cn.workde.core.base.BaseService; +import cn.workde.module.drone.coding.entity.AttributeValueBackup; +import cn.workde.module.drone.coding.mapper.AttributeValueBackupMapper; +import org.springframework.stereotype.Service; + +@Service("attributeValueBackupService") +public class AttributeValueBackupService extends BaseService { +} 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 7eb6110..87a842e 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 @@ -7,12 +7,14 @@ 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.dto.AttributeValueDto; 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.AttributeValueVo2; import cn.workde.module.drone.coding.vo.MfcVo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -156,10 +158,9 @@ public class MfcService extends BaseService { public Result editBatchesAttribute(AttributeValueVo vo) { String mfcId = vo.getMfcId(); - List attributeIdList = vo.getAttributeIdList(); // attributeIdList为空的话全部删除 - if (CollUtil.isEmpty(attributeIdList)) { + if (CollUtil.isEmpty(vo.getAttributeIdList())) { boolean flag = attributeValueService.remove(new QueryWrapper() .lambda() .eq(AttributeValue::getMfcId, mfcId) @@ -167,6 +168,9 @@ public class MfcService extends BaseService { return flag ? Result.success("操作成功") : Result.fail("操作失败"); } + // 去除重复Id + List attributeIdList = vo.getAttributeIdList().stream().distinct().toList(); + List attributeValueList = attributeValueService.list(new QueryWrapper() .lambda() .eq(AttributeValue::getMfcId, mfcId) @@ -178,34 +182,111 @@ public class MfcService extends BaseService { 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("操作失败"); - + // 判断是否有删除的元素 + if (CollUtil.isNotEmpty(removeAttributeIdList)) { + 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)) { + } else { 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(); + //判断是否有新增的元素 + if (CollUtil.isNotEmpty(addAttributeIdList)) { + //新增 + List attributeValueListNew = new ArrayList<>(addAttributeIdList.stream().map(attributeId -> { + AttributeValue attributeValue = new AttributeValue(); + attributeValue.setMfcId(mfcId); + Attribute attribute = attributeService.getById(attributeId); + if (ObjUtil.isNull(attribute)) { + return null; + } + attributeValue.setAttributeClassificationId(ObjUtil.isNotNull(attribute) ? attribute.getAttributeClassificationId() : null); + attributeValue.setAttributeId(attributeId); + return attributeValue; + }).toList()); + // 移除null + attributeValueListNew.removeIf(ObjUtil::isNull); - boolean flag = attributeValueService.saveBatch(attributeValueListNew); + boolean flag = attributeValueService.saveBatch(attributeValueListNew); + return flag ? Result.success("操作成功") : Result.fail("操作失败"); + } + return Result.success("操作成功"); + } + + public Result getAttributeValueDetail(String mfcId) { + AttributeValueDto attributeValueDto = new AttributeValueDto(); + //获取分类 + List attributeClassifications = attributeClassificationService.list( + new QueryWrapper() + .lambda() + .inSql(AttributeClassification::getId, "select distinct attribute_classification_id from dss_drone_coding_attribute_value where mfc_id = '" + mfcId + "'") + ); + if (CollUtil.isNotEmpty(attributeClassifications)) { + List attributeClassificationDtoList = new ArrayList(); + attributeClassifications.forEach(attributeClassification -> { + AttributeValueDto.AttributeClassificationDTO attributeClassificationDTO = new AttributeValueDto.AttributeClassificationDTO(); + attributeClassificationDTO.setAttributeClassificationId(attributeClassification.getId()); + attributeClassificationDTO.setAttributeClassificationName(attributeClassification.getAttributeClassificationName()); + //获取属性值 + List attributeValues = attributeValueService.list( + new QueryWrapper() + .lambda() + .eq(AttributeValue::getMfcId, mfcId) + .eq(AttributeValue::getAttributeClassificationId, attributeClassification.getId()) + ); + if (CollUtil.isNotEmpty(attributeValues)) { + List attributeDtoList = new ArrayList(); + for (AttributeValue attributeValue : attributeValues) { + AttributeValueDto.AttributeDTO attributeDTO = new AttributeValueDto.AttributeDTO(); + // 获取属性具体信息 + Attribute attribute = attributeService.getById(attributeValue.getAttributeId()); + if (ObjUtil.isNotNull(attribute)) { + attributeDTO.setAttributeDescription(attribute.getAttributeDescription()); + attributeDTO.setAttributeName(attribute.getAttributeName()); + attributeDTO.setAttributeRemarks(attribute.getAttributeRemarks()); + attributeDTO.setLocked(attribute.getLocked()); + } else { + continue; + } + attributeDTO.setMfcId(attributeValue.getMfcId()); + attributeDTO.setBatchesId(null); + attributeDTO.setAttributeId(attributeValue.getAttributeId()); + attributeDTO.setAttributeValue(attributeValue.getAttributeValue()); + attributeDtoList.add(attributeDTO); + } + attributeClassificationDTO.setAttributeList(attributeDtoList); + } + attributeClassificationDtoList.add(attributeClassificationDTO); + }); + attributeValueDto.setAttributeClassificationList(attributeClassificationDtoList); + } + return Result.data(attributeValueDto); + } + + public Result editAttributeValueBatch(AttributeValueVo2 vo) { + ArrayList attributeValues = new ArrayList<>(); + for (AttributeValueVo2.AttributeValueDto attributeValue : vo.getAttributeValueList()) { + AttributeValue value = attributeValueService.getOne(new QueryWrapper() + .lambda() + .eq(AttributeValue::getMfcId, attributeValue.getMfcId()) + .eq(AttributeValue::getAttributeId, attributeValue.getAttributeId()) + .eq(AttributeValue::getAttributeClassificationId, attributeValue.getAttributeClassificationId()) + ); + if (ObjUtil.isNotNull(value)) { + value.setAttributeValue(attributeValue.getAttributeValue()); + attributeValues.add(value); + } + } + boolean flag = attributeValueService.updateBatchById(attributeValues); return flag ? Result.success("操作成功") : Result.fail("操作失败"); } diff --git a/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo2.java b/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo2.java new file mode 100644 index 0000000..5393345 --- /dev/null +++ b/src/main/java/cn/workde/module/drone/coding/vo/AttributeValueVo2.java @@ -0,0 +1,26 @@ +package cn.workde.module.drone.coding.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class AttributeValueVo2 { + @Schema(description = "属性值集合 MFC ID与批次ID示具体情况二选一") + private List attributeValueList; + + @Data + public static class AttributeValueDto { + @Schema(description = "MFC ID") + private String mfcId; + @Schema(description = "批次ID ") + private String batchesId; + @Schema(description = "属性分类ID") + private String attributeClassificationId; + @Schema(description = "属性ID") + private String attributeId; + @Schema(description = "属性数值") + private String attributeValue; + } +}