123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package cn.cslg.pas.service.business;
- import cn.cslg.pas.common.model.addPatentToReport.AddProjectPatentToReportDTO;
- import cn.cslg.pas.common.model.addPatentToReport.PatentNoWithIdVO;
- import cn.cslg.pas.common.model.cronModel.PersonnelVO;
- import cn.cslg.pas.common.model.request.StringRequest;
- import cn.cslg.pas.common.utils.CacheUtils;
- import cn.cslg.pas.common.utils.LoginUtils;
- import cn.cslg.pas.common.vo.PatentWithIdVO;
- import cn.cslg.pas.domain.business.AssoProjectPerson;
- import cn.cslg.pas.domain.business.Project;
- import cn.cslg.pas.domain.es.Patent;
- import cn.cslg.pas.domain.es.PatentJoin;
- import cn.cslg.pas.mapper.ProjectMapper;
- import cn.cslg.pas.service.business.es.EsPatentService;
- import cn.cslg.pas.service.business.es.EsService;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- /**
- * 项目业务层
- *
- * @Author lirj
- * @Date 2023/11/1
- */
- @Service
- public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
- @Autowired
- private ProjectMapper projectMapper;
- @Autowired
- private CacheUtils cacheUtils;
- @Autowired
- private LoginUtils loginUtils;
- @Autowired
- private AssoProjectPersonService assoProjectPersonService;
- @Autowired
- private EsPatentService esPatentService;
- @Autowired
- private EsService esService;
- public Optional<Project> getByIdOpt(Integer id) {
- Project project = projectMapper.selectById(id);
- return Optional.ofNullable(project);
- }
- public Map<Integer, List<String>> getProjectPermissions(List<Integer> projectIds) {
- Map<Integer, List<String>> map = new HashMap<>();
- if (projectIds == null || projectIds.size() == 0) {
- return map;
- }
- projectIds.forEach(
- item -> {
- map.put(item, new ArrayList<>());
- }
- );
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- String id = personnelVO.getId();
- LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.select(Project::getId, Project::getCreateId, Project::getHeadId);
- queryWrapper.in(Project::getId, projectIds);
- List<Project> projects = this.list(queryWrapper);
- projects.forEach(item -> {
- Integer projectId = item.getId();
- String createId = item.getCreateId();
- String headId = item.getHeadId();
- List<String> roles = map.get(projectId);
- if (id.equals(createId)) {
- roles.add("0");
- }
- if (id.equals(headId)) {
- roles.add("1");
- }
- });
- LambdaQueryWrapper<AssoProjectPerson> queryWrapper1 = new LambdaQueryWrapper<>();
- queryWrapper1.in(AssoProjectPerson::getProjectId, projectIds);
- queryWrapper1.eq(AssoProjectPerson::getPersonId, id);
- List<AssoProjectPerson> assoProjectPersonList = assoProjectPersonService.list(queryWrapper1);
- assoProjectPersonList.forEach(item -> {
- Integer projectId = item.getProjectId();
- List<String> roles = map.get(projectId);
- if (!roles.contains(item.getRole() + "")) {
- roles.add(item.getRole() + "");
- }
- });
- return map;
- }
- /**
- * 复制专利到另一个报告或专题库
- * @param addProjectPatentToReportDTO
- */
- public void addProjectPatentToReport(AddProjectPatentToReportDTO addProjectPatentToReportDTO) {
- //查询专利号
- StringRequest stringRequest = addProjectPatentToReportDTO.getStringRequest();
- Integer toProjectId = addProjectPatentToReportDTO.getToProjectId();
- List<String> notInNos = addProjectPatentToReportDTO.getNotInPatentNos();
- List<PatentNoWithIdVO> patentWithIdVOS = new ArrayList<>();
- List<String> InPatentNos = addProjectPatentToReportDTO.getInPatentNos();
- try {
- patentWithIdVOS = esPatentService.getPatentIdsWithNotNo(stringRequest, notInNos);
- if (patentWithIdVOS != null && patentWithIdVOS.size() > 0) {
- this.addAssoToEs(patentWithIdVOS, toProjectId);
- }
- if(InPatentNos!=null&&InPatentNos.size()>0){
- List<PatentNoWithIdVO> patentNoWithIdVOS =new ArrayList<>();
- InPatentNos.forEach(item->{
- PatentNoWithIdVO patentNoWithIdVO =new PatentNoWithIdVO();
- patentNoWithIdVO.setPatentNo(item);
- patentNoWithIdVOS.add(patentNoWithIdVO);
- });
- this.addAssoToEs(patentNoWithIdVOS,toProjectId);
- }
- } catch (Exception e) {
- }
- }
- /**
- * 添加报告或专题库与专利关联
- * @param patentWithIdVOS
- * @param projectId
- * @throws Exception
- */
- private void addAssoToEs(List<PatentNoWithIdVO> patentWithIdVOS, Integer projectId) throws Exception {
- if (patentWithIdVOS == null || patentWithIdVOS.size() == 0) {
- return;
- } else {
- patentWithIdVOS.forEach(item -> {
- if (item != null) {
- try {
- String id = item.getId();
- if(id==null){
- PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(item.getPatentNo());
- id =patentWithIdVO.getId();
- }
- Boolean ifInproject = esService.searchPatent(id, projectId);
- if (!ifInproject && id != null && !id.trim().equals("")) {
- Patent patent = new Patent();
- PatentJoin patentJoin = new PatentJoin();
- patentJoin.setParent(id);
- patentJoin.setName("project");
- patent.setPatentJoin(patentJoin);
- patent.setProjectId(projectId);
- esService.addChildPatent(patent, id);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- }
- }
|