|
@@ -1,10 +1,28 @@
|
|
|
package com.usky.iot.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.usky.common.core.bean.CommonPage;
|
|
|
+import com.usky.common.core.exception.BusinessException;
|
|
|
+import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
import com.usky.iot.domain.DmpProductAttribute;
|
|
|
+import com.usky.iot.domain.DmpProductAttributeAttach;
|
|
|
import com.usky.iot.mapper.DmpProductAttributeMapper;
|
|
|
+import com.usky.iot.service.DmpProductAttributeAttachService;
|
|
|
import com.usky.iot.service.DmpProductAttributeService;
|
|
|
-import com.usky.common.mvc.base.AbstractCrudService;
|
|
|
+import com.usky.iot.service.vo.DmpProductAttributeRequest;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -17,4 +35,80 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class DmpProductAttributeServiceImpl extends AbstractCrudService<DmpProductAttributeMapper, DmpProductAttribute> implements DmpProductAttributeService {
|
|
|
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DmpProductAttributeAttachService dmpProductAttributeAttachService;
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public boolean add(DmpProductAttribute dmpProductAttribute) {
|
|
|
+ if (checkNameUnique(dmpProductAttribute)){
|
|
|
+ throw new BusinessException("新增产品属性信息'" + dmpProductAttribute.getAttributeName() + "'失败,产品信息已存在");
|
|
|
+ }
|
|
|
+ this.save(dmpProductAttribute);
|
|
|
+ dmpProductAttributeAttachService.addBatch(dmpProductAttribute);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void update(DmpProductAttribute dmpProductAttribute) {
|
|
|
+ if (checkNameUnique(dmpProductAttribute)){
|
|
|
+ throw new BusinessException("新增产品属性信息'" + dmpProductAttribute.getAttributeName() + "'失败,产品信息已存在");
|
|
|
+ }
|
|
|
+ this.updateById(dmpProductAttribute);
|
|
|
+ dmpProductAttributeAttachService.deleteBatch(dmpProductAttribute);
|
|
|
+ dmpProductAttributeAttachService.addBatch(dmpProductAttribute);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean checkNameUnique(DmpProductAttribute dmpProductAttribute) {
|
|
|
+ Integer id = null == dmpProductAttribute.getId() ? -1 : dmpProductAttribute.getId();
|
|
|
+ LambdaQueryWrapper<DmpProductAttribute> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(DmpProductAttribute::getAttributeName,dmpProductAttribute.getAttributeName())
|
|
|
+ .eq(DmpProductAttribute::getDeleteFlag,0);
|
|
|
+ DmpProductAttribute one = this.getOne(queryWrapper);
|
|
|
+ return null != one && !Objects.equals(one.getId(), id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonPage<DmpProductAttribute> page(DmpProductAttributeRequest paRequest) {
|
|
|
+ IPage<DmpProductAttribute> page = new Page<>(paRequest.getCurrent(), paRequest.getSize());
|
|
|
+ LambdaQueryWrapper<DmpProductAttribute> lambdaQuery = Wrappers.lambdaQuery();
|
|
|
+ lambdaQuery
|
|
|
+ .eq(StringUtils.isNotBlank(paRequest.getAttributeName()),DmpProductAttribute::getAttributeName,paRequest.getAttributeName())
|
|
|
+ .eq(null != paRequest.getProductId(),DmpProductAttribute::getProductId,paRequest.getProductId())
|
|
|
+ .eq(DmpProductAttribute::getDeleteFlag,0);
|
|
|
+ page = this.page(page,lambdaQuery);
|
|
|
+ List<DmpProductAttribute> records = page.getRecords();
|
|
|
+ List<DmpProductAttributeAttach> dmpProductAttributeAttaches = dmpProductAttributeAttachService.listByAttributeIds(records.stream().map(DmpProductAttribute::getId).collect(Collectors.toList()));
|
|
|
+ page.getRecords().forEach(s ->
|
|
|
+ enhanceDmpProductAttribute(s,dmpProductAttributeAttaches));
|
|
|
+ return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
|
|
|
+ }
|
|
|
+
|
|
|
+ public void enhanceDmpProductAttribute(DmpProductAttribute dmpProductAttribute, List<DmpProductAttributeAttach> dmpProductAttributeAttachList){
|
|
|
+ List<DmpProductAttributeAttach> collect = dmpProductAttributeAttachList
|
|
|
+ .stream()
|
|
|
+ .filter(s -> s.getAttributeId().equals(dmpProductAttribute.getProductId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ dmpProductAttribute.setDmpProductAttributeAttachList(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean remove(Integer id) {
|
|
|
+ DmpProductAttribute dmpProductAttribute = this.getById(id);
|
|
|
+ Optional.ofNullable(dmpProductAttribute).orElseThrow(() -> new BusinessException("产品不存在"));
|
|
|
+ dmpProductAttribute.setDeleteFlag(1);
|
|
|
+ return this.updateById(dmpProductAttribute);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateBatchBind(List<Integer> ids) {
|
|
|
+ LambdaUpdateWrapper<DmpProductAttribute> updateWrapper = Wrappers.lambdaUpdate();
|
|
|
+ updateWrapper
|
|
|
+ .set(DmpProductAttribute::getBindStatus,2)
|
|
|
+ .in(DmpProductAttribute::getId,ids);
|
|
|
+ this.update(updateWrapper);
|
|
|
+ }
|
|
|
}
|