|
@@ -29,34 +29,36 @@ public class AssoProductPatentServiceImpl extends ServiceImpl<AssoProductPatentM
|
|
|
public void addNewAssoProductPatent(AssoProductPatentAddNewDTO assoProductPatentAddNewDTO) {
|
|
|
log.info("开始处理【新增专利和产品关联】的业务,参数为:{}", assoProductPatentAddNewDTO);
|
|
|
|
|
|
- //从DTO中获取要新增关联的专利号和产品ids
|
|
|
- String patentNo = assoProductPatentAddNewDTO.getPatentNo();
|
|
|
+ //从DTO中获取要新增关联的多个专利号和产品ids
|
|
|
+ List<String> patentNos = assoProductPatentAddNewDTO.getPatentNos();
|
|
|
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<>();
|
|
|
+ ArrayList<AssoProductPatent> newAssoProductPatents = new ArrayList<>();
|
|
|
+ for (String patentNo : patentNos) {
|
|
|
for (Integer newProductId : newProductIds) {
|
|
|
AssoProductPatent assoProductPatent = new AssoProductPatent()
|
|
|
.setPatentNo(patentNo)
|
|
|
.setProductId(newProductId);
|
|
|
- assoProductPatents.add(assoProductPatent);
|
|
|
+ newAssoProductPatents.add(assoProductPatent);
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ //先查库中已有的该专利号和产品关联数据
|
|
|
+ LambdaQueryWrapper<AssoProductPatent> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.in(AssoProductPatent::getPatentNo, patentNos);
|
|
|
+ List<AssoProductPatent> oldAssoProductPatents = this.list(wrapper);
|
|
|
+ if (oldAssoProductPatents != null && oldAssoProductPatents.size() > 0) {
|
|
|
+ for (AssoProductPatent assoProductPatent : oldAssoProductPatents) {
|
|
|
+ assoProductPatent.setId(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ newAssoProductPatents.removeAll(oldAssoProductPatents);
|
|
|
+
|
|
|
+ if (newAssoProductPatents.size() > 0) {
|
|
|
//产品和专利关联表插入数据
|
|
|
log.info("数据入产品和专利关联表");
|
|
|
- this.saveBatch(assoProductPatents);
|
|
|
+ this.saveBatch(newAssoProductPatents);
|
|
|
}
|
|
|
|
|
|
log.info("新增专利和产品关联完成");
|