package cn.cslg.pas.service;
import cn.cslg.pas.domain.Patent;
import cn.cslg.pas.domain.PatentApplicant;
import cn.cslg.pas.domain.PatentSimpleFamilyLink;
import cn.cslg.pas.common.model.vo.PatentSimpleFamilyVO;
import cn.cslg.pas.common.utils.StringUtils;
import cn.cslg.pas.mapper.PatentSimpleFamilyLinkMapper;
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 lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 同族关联专利表 服务类
*
*
* @author 王岩
* @since 2022-02-24
*/
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class PatentSimpleFamilyLinkService extends ServiceImpl {
private final PatentService patentService;
private final PatentApplicantService patentApplicantService;
public IPage getPageList(PatentSimpleFamilyVO params) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(params.getPatentNo())) {
queryWrapper.like(PatentSimpleFamilyLink::getPatentNo, params.getPatentNo());
}
queryWrapper.eq(PatentSimpleFamilyLink::getFamilyId, params.getFamilyId());
IPage pageList = this.page(new Page<>(params.getCurrent(), params.getSize()), queryWrapper);
List patentList = patentService.getPatentListByPatentNo(pageList.getRecords().stream().map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
List patentApplicantList = patentApplicantService.getPatentApplicantByPatentIds(patentList.stream().map(Patent::getId).collect(Collectors.toList()));
pageList.getRecords().forEach(patentSimpleFamily -> {
Patent patent = patentList.stream().filter(item -> item.getPatentNo().equals(patentSimpleFamily.getPatentNo())).findFirst().orElse(null);
if (patent == null) {
patentSimpleFamily.setPatentId(-1);
patentSimpleFamily.setName("暂未收录");
} else {
patentSimpleFamily.setPatentId(patent.getId());
patentSimpleFamily.setName(patent.getName());
patentSimpleFamily.setAbstractPath(patent.getAbstractPath());
patentSimpleFamily.setApplicant(patentApplicantList.stream().filter(item -> item.getPatentId().equals(patentSimpleFamily.getPatentId())).collect(Collectors.toList()));
}
});
return pageList;
}
public List getPatentSimpleFamilyLinkByPatentNo(List patentNos) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(PatentSimpleFamilyLink::getPatentNo, patentNos);
return this.list(queryWrapper);
}
public List getPatentSimpleFamilyLinkByPatentNoAndFamilyId(List patentNo, Integer familyId) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(PatentSimpleFamilyLink::getPatentNo, patentNo);
queryWrapper.eq(PatentSimpleFamilyLink::getFamilyId, familyId);
return this.list(queryWrapper);
}
public List getPatentSimpleFamilyLinkByFamilyIds(List familyIds) {
if (familyIds == null || familyIds.size() == 0) {
return new ArrayList<>();
}
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(PatentSimpleFamilyLink::getFamilyId, familyIds);
return this.list(queryWrapper);
}
}