|
@@ -1,175 +0,0 @@
|
|
|
-package cn.cslg.pas.service.asso;
|
|
|
-
|
|
|
-import cn.cslg.pas.common.core.base.Constants;
|
|
|
-import cn.cslg.pas.common.model.QueryPatentVO;
|
|
|
-import cn.cslg.pas.common.model.dto.PatentDTO;
|
|
|
-import cn.cslg.pas.common.model.dto.ProductPatentDTO;
|
|
|
-import cn.cslg.pas.common.utils.*;
|
|
|
-import cn.cslg.pas.domain.*;
|
|
|
-import cn.cslg.pas.domain.asso.AssoPatentStructure;
|
|
|
-import cn.cslg.pas.domain.asso.AssoProductPatent;
|
|
|
-import cn.cslg.pas.mapper.DepartmentMapper;
|
|
|
-import cn.cslg.pas.mapper.PatentMapper;
|
|
|
-import cn.cslg.pas.mapper.asso.AssoProductPatentMapper;
|
|
|
-import cn.cslg.pas.service.*;
|
|
|
-import cn.hutool.core.collection.CollUtil;
|
|
|
-import cn.hutool.core.lang.tree.Tree;
|
|
|
-import cn.hutool.core.lang.tree.TreeNode;
|
|
|
-import cn.hutool.core.lang.tree.TreeNodeConfig;
|
|
|
-import cn.hutool.core.lang.tree.TreeUtil;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.graphbuilder.math.func.Function;
|
|
|
-import lombok.RequiredArgsConstructor;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.context.annotation.Lazy;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
-import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-/**
|
|
|
- * <p>
|
|
|
- * 后台部门表 服务类
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @author 王岩
|
|
|
- * @since 2022-03-25
|
|
|
- */
|
|
|
-@Service
|
|
|
-@RequiredArgsConstructor(onConstructor_ = {@Lazy})
|
|
|
-public class AssoProductPatentService extends ServiceImpl<AssoProductPatentMapper, AssoProductPatent> {
|
|
|
- private final PatentApplicantService patentApplicantService;
|
|
|
- private final PatentAffairService patentAffairService;
|
|
|
- private final PatentLabelService patentLabelService;
|
|
|
- private final ProjectFieldService projectFieldService;
|
|
|
- private final PatentInventorService patentInventorService;
|
|
|
- private final PatentAgencyService patentAgencyService;
|
|
|
- private final PatentAgentService patentAgentService;
|
|
|
- private final PatentClassNumberLinkService patentClassNumberLinkService;
|
|
|
- private final SystemDictService systemDictService;
|
|
|
- private final PatentSimpleFamilyLinkService patentSimpleFamilyLinkService;
|
|
|
- private final AssoStructurePatentService assoStructurePatentService;
|
|
|
-
|
|
|
- /**
|
|
|
- * 给产品添加相关专利
|
|
|
- */
|
|
|
- public int addPatents(ProductPatentDTO patentDTO) {
|
|
|
- patentDTO.setIsIn(0);
|
|
|
- List<String> patentNos = this.baseMapper.getPatentNos(patentDTO);
|
|
|
- if (patentNos.size() == 0) {
|
|
|
- return -1;
|
|
|
- }
|
|
|
- return this.baseMapper.insertBatch(patentNos, patentDTO.getProductId());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public int addPatents(List<String> patentNos, Integer productId) {
|
|
|
- LambdaQueryWrapper<AssoProductPatent> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.select(AssoProductPatent::getPatentNo);
|
|
|
- wrapper.eq(AssoProductPatent::getProductId, productId);
|
|
|
- wrapper.in(AssoProductPatent::getPatentNo, patentNos);
|
|
|
- List<String> patentNo = this.listObjs(wrapper, Object::toString);
|
|
|
- patentNos.removeAll(patentNo);
|
|
|
- if (patentNos.size() == 0) {
|
|
|
- return -1;
|
|
|
- }
|
|
|
- return this.baseMapper.insertBatch(patentNos, productId);
|
|
|
- }
|
|
|
-
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public List<String> deletePatents(ProductPatentDTO patentDTO) {
|
|
|
- patentDTO.setIsIn(1);
|
|
|
- List<String> patentNos= new ArrayList<>();
|
|
|
- if (patentDTO.getStartNumber() != null && patentDTO.getEndNumber() != null&&patentDTO.getEndNumber() >patentDTO.getStartNumber()) {
|
|
|
- patentDTO.setEndNumber(patentDTO.getEndNumber() - patentDTO.getStartNumber()+1);
|
|
|
- patentNos = this.baseMapper.getPatentNos(patentDTO);
|
|
|
- }
|
|
|
- if(patentDTO.getPatentNos()!=null&&patentDTO.getPatentNos().size()>0){
|
|
|
- for(String item:patentDTO.getPatentNos()){
|
|
|
- if(!patentNos.contains(item)){
|
|
|
- patentNos.add(item);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if(patentDTO.getNotInPatentNos()!=null) {
|
|
|
- patentNos.removeAll(patentDTO.getNotInPatentNos());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- List<String> assoPatents = new ArrayList<>();
|
|
|
- if (patentNos.size() != 0) {
|
|
|
- LambdaQueryWrapper<AssoPatentStructure> assoWrapper = new LambdaQueryWrapper<>();
|
|
|
- assoWrapper.select(AssoPatentStructure::getPatentNo);
|
|
|
- assoWrapper.eq(AssoPatentStructure::getProjectId, patentDTO.getProductId())
|
|
|
- .in(AssoPatentStructure::getPatentNo, patentNos);
|
|
|
- assoPatents = assoStructurePatentService.listObjs(assoWrapper, Object::toString);
|
|
|
- LambdaQueryWrapper<AssoProductPatent> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(AssoProductPatent::getProductId, patentDTO.getProductId());
|
|
|
- wrapper.in(AssoProductPatent::getPatentNo, patentNos);
|
|
|
- this.remove(wrapper);
|
|
|
- return assoPatents;
|
|
|
- }
|
|
|
- return assoPatents;
|
|
|
- }
|
|
|
-
|
|
|
- public IPage<PatentDTO> getPageList(QueryPatentVO params) {
|
|
|
- IPage<Patent> dataPage = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
|
|
|
- IPage<PatentDTO> pageList = new Page<>();
|
|
|
- List<PatentDTO> records = new ArrayList<>();
|
|
|
- List<Integer> patentIds = dataPage.getRecords().stream().map(Patent::getId).collect(Collectors.toList());
|
|
|
- List<PatentApplicant> patentApplicantList = patentApplicantService.getPatentApplicantByPatentIds(patentIds);
|
|
|
- List<PatentInventor> patentInventorList = patentInventorService.getPatentInventorByPatentIds(patentIds);
|
|
|
- List<PatentLabel> patentLabelList = patentLabelService.getPatentLabelByPatentIdsAndProjectId(patentIds, params.getProjectId());
|
|
|
- List<PatentClassNumberLink> patentClassNumberLinkList = patentClassNumberLinkService.getPatentClassNumberLinkByPatentIds(patentIds);
|
|
|
- List<PatentAgent> patentAgentList = patentAgentService.getPatentAgentByPatentIds(patentIds);
|
|
|
- List<PatentAgency> patentAgencyList = patentAgencyService.getPatentAgencyByIds(dataPage.getRecords().stream().filter(item -> StringUtils.isNotEmpty(item.getAgencyId())).map(item -> Integer.parseInt(item.getAgencyId())).distinct().collect(Collectors.toList()));
|
|
|
- List<PatentSimpleFamilyLink> patentSimpleFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByFamilyIds(dataPage.getRecords().stream().map(Patent::getSimpleFamily).collect(Collectors.toList()));
|
|
|
- List<PatentSimpleFamilyLink> patentInpadocFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByFamilyIds(dataPage.getRecords().stream().map(Patent::getInpadocFamily).collect(Collectors.toList()));
|
|
|
- List<PatentSimpleFamilyLink> patentPatSnapFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByFamilyIds(dataPage.getRecords().stream().map(Patent::getPatSnapFamily).collect(Collectors.toList()));
|
|
|
- List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS));
|
|
|
- dataPage.getRecords().forEach(item -> {
|
|
|
- PatentDTO patentDTO = new PatentDTO();
|
|
|
- BeanUtils.copyProperties(item, patentDTO);
|
|
|
- patentDTO.setApplicationDate(DateUtils.formatDate(item.getApplicationDate(), DateUtils.YYYY_MM_DD));
|
|
|
- patentDTO.setPriorityDate(DateUtils.formatDate(item.getPriorityDate(), DateUtils.YYYY_MM_DD));
|
|
|
- patentDTO.setPublicDate(DateUtils.formatDate(item.getPublicDate(), DateUtils.YYYY_MM_DD));
|
|
|
- patentDTO.setPublicAccreditDate(DateUtils.formatDate(item.getPublicAccreditDate(), DateUtils.YYYY_MM_DD));
|
|
|
- patentDTO.setFirstPublicDate(DateUtils.formatDate(item.getFirstPublicDate(), DateUtils.YYYY_MM_DD));
|
|
|
- patentDTO.setSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(item.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
|
|
|
- patentDTO.setType(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_TYPE) && systemDict.getValue().equals(String.valueOf(item.getType()))).findFirst().orElse(new SystemDict()).getLabel());
|
|
|
- patentDTO.setApplicant(patentApplicantList.stream().filter(patentApplicant -> patentApplicant.getPatentId().equals(item.getId())).collect(Collectors.toList()));
|
|
|
- patentDTO.setInventor(patentInventorList.stream().filter(patentInventor -> patentInventor.getPatentId().equals(item.getId())).collect(Collectors.toList()));
|
|
|
- patentDTO.setLabel(patentLabelList.stream().filter(patentLabel -> patentLabel.getPatentId().equals(item.getId())).collect(Collectors.toList()));
|
|
|
- patentDTO.setIpcList(patentClassNumberLinkList.stream().filter(patentClassNumber -> patentClassNumber.getPatentId().equals(item.getId()) && patentClassNumber.getType().equals(Constants.PATENT_CLASS_NUMBER_IPC)).map(PatentClassNumberLink::getCode).distinct().collect(Collectors.toList()));
|
|
|
- patentDTO.setCpcList(patentClassNumberLinkList.stream().filter(patentClassNumber -> patentClassNumber.getPatentId().equals(item.getId()) && patentClassNumber.getType().equals(Constants.PATENT_CLASS_NUMBER_CPC)).map(PatentClassNumberLink::getCode).distinct().collect(Collectors.toList()));
|
|
|
- patentDTO.setUpcList(patentClassNumberLinkList.stream().filter(patentClassNumber -> patentClassNumber.getPatentId().equals(item.getId()) && patentClassNumber.getType().equals(Constants.PATENT_CLASS_NUMBER_UPC)).map(PatentClassNumberLink::getCode).distinct().collect(Collectors.toList()));
|
|
|
- patentDTO.setLocList(patentClassNumberLinkList.stream().filter(patentClassNumber -> patentClassNumber.getPatentId().equals(item.getId()) && patentClassNumber.getType().equals(Constants.PATENT_CLASS_NUMBER_LOC)).map(PatentClassNumberLink::getCode).distinct().collect(Collectors.toList()));
|
|
|
- patentDTO.setAffair(patentAffairService.getPatentAffairByPatentId(item.getId()));
|
|
|
- if (StringUtils.isNotEmpty(item.getAgencyId())) {
|
|
|
- patentDTO.setAgency(patentAgencyList.stream().filter(patentAgency -> patentAgency.getId().equals(Integer.parseInt(item.getAgencyId()))).findFirst().orElse(null));
|
|
|
- }
|
|
|
- PatentDTO.PatentFamily patentFamily = new PatentDTO.PatentFamily();
|
|
|
- patentFamily.setSimple(patentSimpleFamilyLinkList.stream().filter(patentSimpleFamilyLink -> patentSimpleFamilyLink.getFamilyId().equals(item.getSimpleFamily())).map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
|
|
|
- patentFamily.setInpadoc(patentInpadocFamilyLinkList.stream().filter(patentSimpleFamilyLink -> patentSimpleFamilyLink.getFamilyId().equals(item.getInpadocFamily())).map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
|
|
|
- patentFamily.setPatSnap(patentPatSnapFamilyLinkList.stream().filter(patentSimpleFamilyLink -> patentSimpleFamilyLink.getFamilyId().equals(item.getPatSnapFamily())).map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
|
|
|
- patentDTO.setFamily(patentFamily);
|
|
|
- patentDTO.setAgent(patentAgentList.stream().filter(patentAgent -> patentAgent.getPatentId().equals(item.getId())).collect(Collectors.toList()));
|
|
|
- // TODO 性能优化
|
|
|
- patentDTO.setField(projectFieldService.getPatentFieldByPatentIdAndProjectId(params.getProjectId(), item.getId()));
|
|
|
- records.add(patentDTO);
|
|
|
- });
|
|
|
- pageList.setTotal(dataPage.getTotal());
|
|
|
- pageList.setRecords(records);
|
|
|
- pageList.setPages(dataPage.getPages());
|
|
|
- pageList.setSize(dataPage.getSize());
|
|
|
- pageList.setCurrent(dataPage.getCurrent());
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- return pageList;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-}
|