|
@@ -0,0 +1,66 @@
|
|
|
+package cn.cslg.pas.service.impl;
|
|
|
+
|
|
|
+import cn.cslg.pas.common.model.dto.AssoProductPatentAddNewDTO;
|
|
|
+import cn.cslg.pas.domain.asso.AssoProductPatent;
|
|
|
+import cn.cslg.pas.mapper.asso.AssoProductPatentMapper;
|
|
|
+import cn.cslg.pas.service.IAssoProductPatentService;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author chenyu
|
|
|
+ * @Date 2023/4/14
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class AssoProductPatentServiceImpl extends ServiceImpl<AssoProductPatentMapper, AssoProductPatent> implements IAssoProductPatentService {
|
|
|
+ /**
|
|
|
+ * 新增专利和产品关联
|
|
|
+ *
|
|
|
+ * @param assoProductPatentAddNewDTO 新增专利和多个产品关联的DTO类
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void addNewAssoProductPatent(AssoProductPatentAddNewDTO assoProductPatentAddNewDTO) {
|
|
|
+ log.info("开始处理【新增专利和产品关联】的业务,参数为:{}", assoProductPatentAddNewDTO);
|
|
|
+
|
|
|
+ //从DTO中获取要新增关联的专利号和产品ids
|
|
|
+ String patentNo = assoProductPatentAddNewDTO.getPatentNo();
|
|
|
+ List<Integer> newProductIds = assoProductPatentAddNewDTO.getProductIds();
|
|
|
+
|
|
|
+ //先查库中已有的该专利号和产品关联数据
|
|
|
+ LambdaQueryWrapper<AssoProductPatent> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(AssoProductPatent::getPatentNo, patentNo);
|
|
|
+ List<AssoProductPatent> assoProductPatents = this.list(wrapper);
|
|
|
+ if (assoProductPatents != null && assoProductPatents.size() > 0) {
|
|
|
+ ArrayList<Integer> oldProductIds = new ArrayList<>();
|
|
|
+ for (AssoProductPatent assoProductPatent : assoProductPatents) {
|
|
|
+ oldProductIds.add(assoProductPatent.getProductId());
|
|
|
+ }
|
|
|
+ //产品ids去重
|
|
|
+ newProductIds.removeAll(oldProductIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (newProductIds.size() > 0) {
|
|
|
+ assoProductPatents = new ArrayList<>();
|
|
|
+ for (Integer newProductId : newProductIds) {
|
|
|
+ AssoProductPatent assoProductPatent = new AssoProductPatent()
|
|
|
+ .setPatentNo(patentNo)
|
|
|
+ .setProductId(newProductId);
|
|
|
+ assoProductPatents.add(assoProductPatent);
|
|
|
+ }
|
|
|
+ //产品和专利关联表插入数据
|
|
|
+ log.info("数据入产品和专利关联表");
|
|
|
+ this.saveBatch(assoProductPatents);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("新增专利和产品关联完成");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|