This commit is contained in:
lijiaqi 2024-09-10 13:12:04 +08:00
parent efed6f6583
commit c685cd320a
6 changed files with 170 additions and 24 deletions

View File

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

View File

@ -12,7 +12,7 @@ public class AttributeValueDto {
private List<AttributeClassificationDTO> 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")

View File

@ -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<AttributeValueBackup> {
}

View File

@ -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<AttributeValueBackupMapper, AttributeValueBackup> {
}

View File

@ -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<MfcMapper, Mfc> {
public Result editBatchesAttribute(AttributeValueVo vo) {
String mfcId = vo.getMfcId();
List<String> attributeIdList = vo.getAttributeIdList();
// attributeIdList为空的话全部删除
if (CollUtil.isEmpty(attributeIdList)) {
if (CollUtil.isEmpty(vo.getAttributeIdList())) {
boolean flag = attributeValueService.remove(new QueryWrapper<AttributeValue>()
.lambda()
.eq(AttributeValue::getMfcId, mfcId)
@ -167,6 +168,9 @@ public class MfcService extends BaseService<MfcMapper, Mfc> {
return flag ? Result.success("操作成功") : Result.fail("操作失败");
}
// 去除重复Id
List<String> attributeIdList = vo.getAttributeIdList().stream().distinct().toList();
List<AttributeValue> attributeValueList = attributeValueService.list(new QueryWrapper<AttributeValue>()
.lambda()
.eq(AttributeValue::getMfcId, mfcId)
@ -178,34 +182,111 @@ public class MfcService extends BaseService<MfcMapper, Mfc> {
List<String> attributeValueListStr = attributeValueList.stream().map(AttributeValue::getAttributeId).toList();
//找到数据库attributeValueListStr中不存在于前端传输的attributeIdList的属性
List<String> removeAttributeIdList = attributeValueListStr.stream().filter(attributeId -> !attributeIdList.contains(attributeId)).toList();
boolean flag = attributeValueService.remove(new QueryWrapper<AttributeValue>()
.lambda()
.eq(AttributeValue::getMfcId, mfcId)
.in(AttributeValue::getAttributeId, removeAttributeIdList)
);
if (!flag) return Result.fail("操作失败");
// 判断是否有删除的元素
if (CollUtil.isNotEmpty(removeAttributeIdList)) {
boolean flag = attributeValueService.remove(new QueryWrapper<AttributeValue>()
.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<AttributeValue> 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<AttributeValue> 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<AttributeValueDto> getAttributeValueDetail(String mfcId) {
AttributeValueDto attributeValueDto = new AttributeValueDto();
//获取分类
List<AttributeClassification> attributeClassifications = attributeClassificationService.list(
new QueryWrapper<AttributeClassification>()
.lambda()
.inSql(AttributeClassification::getId, "select distinct attribute_classification_id from dss_drone_coding_attribute_value where mfc_id = '" + mfcId + "'")
);
if (CollUtil.isNotEmpty(attributeClassifications)) {
List<AttributeValueDto.AttributeClassificationDTO> attributeClassificationDtoList = new ArrayList<AttributeValueDto.AttributeClassificationDTO>();
attributeClassifications.forEach(attributeClassification -> {
AttributeValueDto.AttributeClassificationDTO attributeClassificationDTO = new AttributeValueDto.AttributeClassificationDTO();
attributeClassificationDTO.setAttributeClassificationId(attributeClassification.getId());
attributeClassificationDTO.setAttributeClassificationName(attributeClassification.getAttributeClassificationName());
//获取属性值
List<AttributeValue> attributeValues = attributeValueService.list(
new QueryWrapper<AttributeValue>()
.lambda()
.eq(AttributeValue::getMfcId, mfcId)
.eq(AttributeValue::getAttributeClassificationId, attributeClassification.getId())
);
if (CollUtil.isNotEmpty(attributeValues)) {
List<AttributeValueDto.AttributeDTO> attributeDtoList = new ArrayList<AttributeValueDto.AttributeDTO>();
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<AttributeValue> attributeValues = new ArrayList<>();
for (AttributeValueVo2.AttributeValueDto attributeValue : vo.getAttributeValueList()) {
AttributeValue value = attributeValueService.getOne(new QueryWrapper<AttributeValue>()
.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("操作失败");
}

View File

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