ProjectImportService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.common.model.PersonnelVO;
  3. import cn.cslg.pas.common.model.QueryPatentVO;
  4. import cn.cslg.pas.common.model.dto.ProductPatentDTO;
  5. import cn.cslg.pas.common.model.vo.ProjectImportVO;
  6. import cn.cslg.pas.common.model.vo.ProjectVO;
  7. import cn.cslg.pas.common.utils.*;
  8. import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
  9. import cn.cslg.pas.domain.*;
  10. import cn.cslg.pas.mapper.PatentMapper;
  11. import cn.cslg.pas.mapper.ProjectImportMapper;
  12. import cn.hutool.core.io.FileUtil;
  13. import com.alibaba.fastjson.JSON;
  14. import com.alibaba.fastjson.JSONArray;
  15. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  16. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  17. import com.baomidou.mybatisplus.core.metadata.IPage;
  18. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import lombok.RequiredArgsConstructor;
  21. import org.springframework.context.annotation.Lazy;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import java.io.File;
  25. import java.io.IOException;
  26. import java.util.*;
  27. import java.util.stream.Collectors;
  28. /**
  29. * @author Administrator
  30. * @description 针对表【os_thematic_import(专题库数据导入记录)】的数据库操作Service
  31. * @createDate 2022-05-19 10:55:10
  32. */
  33. @Service
  34. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  35. public class ProjectImportService extends ServiceImpl<ProjectImportMapper, ProjectImport> {
  36. private final FileUtils fileUtils;
  37. private final ProjectImportStatusService projectImportStatusService;
  38. private final PatentMapper patentMapper;
  39. private final ProjectPatentLinkService projectPatentLinkService;
  40. private final RequestService requestService;
  41. private final CacheUtils cacheUtils;
  42. private final LoginUtils loginUtils;
  43. public IPage<ProjectImport> getPageList(ProjectImportVO params) throws IOException {
  44. //当查询使用发起人名称时
  45. if (params.getCreateName() != null && !params.getCreateName().equals("")) {
  46. String res = requestService.getPersonIdByNamePCS(params.getCreateName());
  47. List<Integer> createIds = JSONArray.parseArray(res, Integer.class);
  48. params.setCreateIds(createIds);
  49. //当未查询到时直接返回空页
  50. if (createIds == null || createIds.size() == 0) {
  51. //params.setCreateIds(Arrays.asList(-1));
  52. params.setCreateIds(Collections.singletonList(-1));
  53. }
  54. }
  55. PersonnelVO personnelVO =cacheUtils.getLoginUserPersonnel(loginUtils.getId());
  56. params.setTenantId(personnelVO.getTenantId());
  57. IPage<ProjectImport> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
  58. this.setDataList(pageList.getRecords());
  59. return pageList;
  60. }
  61. @Transactional
  62. public String delete(Integer id) {
  63. ProjectImport temp = this.getById(id);
  64. this.removeById(id);
  65. projectImportStatusService.deleteByImportId(id);
  66. if (StringUtils.isNotEmpty(temp.getUrl())) {
  67. FileUtil.del(fileUtils.getSystemPath(temp.getUrl()));
  68. }
  69. return Response.success(true);
  70. }
  71. public Integer add(Integer userId, String url,Integer tenantId) {
  72. File file = new File(fileUtils.getSystemPath(url));
  73. ProjectImport projectImport = new ProjectImport();
  74. projectImport.setCreateBy(userId);
  75. projectImport.setCreateTime(new Date());
  76. projectImport.setUrl(url);
  77. projectImport.setFileSize(FileUtil.size(file));
  78. projectImport.setFileName(file.getName());
  79. projectImport.setTenantId(tenantId);
  80. projectImport.insert();
  81. return projectImport.getId();
  82. }
  83. /**
  84. * 给产品添加相关专利
  85. */
  86. @Transactional
  87. public List<String> importByNos(ProjectImportVO patentDTO) {
  88. List<String> orgPatentNos = new ArrayList<>();
  89. if (patentDTO.getPatentNo() != null) {
  90. patentDTO.setPatentNo(patentDTO.getPatentNo().replace(" ", ""));
  91. if (!patentDTO.getPatentNo().equals("")) {
  92. String[] strs = patentDTO.getPatentNo().split("\\|");
  93. orgPatentNos = new ArrayList<>(Arrays.asList(strs));
  94. QueryPatentVO params = new QueryPatentVO();
  95. params.setPatentNo(patentDTO.getPatentNo());
  96. params.setPatentNos(orgPatentNos);
  97. List<Patent> patents = patentMapper.getConPantents(params);
  98. List<String> patentNos = patents.stream().map(Patent::getPatentNo).collect(Collectors.toList());
  99. orgPatentNos.removeAll(patentNos);
  100. if (patents.size() > 0) {
  101. List<ProjectPatentLink> projectPatentLinkList = new ArrayList<>();
  102. patents.forEach(item -> {
  103. ProjectPatentLink projectPatentLink = new ProjectPatentLink();
  104. projectPatentLink.setProjectId(patentDTO.getProjectId());
  105. projectPatentLink.setPatentId(item.getId());
  106. projectPatentLinkList.add(projectPatentLink);
  107. });
  108. projectPatentLinkService.saveBatch(projectPatentLinkList);
  109. }
  110. }
  111. }
  112. return orgPatentNos;
  113. }
  114. private void setDataList(List<ProjectImport> importList) throws IOException {
  115. //获得创建人的id集合
  116. //List<Integer> createIds = importList.stream().map(ProjectImport::getCreateBy).collect(Collectors.toList());
  117. ArrayList<Integer> createPersonIds = new ArrayList<>();
  118. for (ProjectImport projectImport : importList) {
  119. createPersonIds.add(projectImport.getCreateBy());
  120. }
  121. //获取专题库负责人对应信息
  122. String jsonObject1 = requestService.getPersonnelFromPCS(createPersonIds);
  123. JSONArray jsonArray = JSON.parseArray(jsonObject1);
  124. List<ProjectVO.Personnel> personnelList = jsonArray.toJavaList(ProjectVO.Personnel.class);
  125. for (ProjectImport projectImport : importList) {
  126. for (ProjectVO.Personnel personnel : personnelList) {
  127. //装载创建人名
  128. if (projectImport.getCreateBy() != null) {
  129. if (projectImport.getCreateBy().equals(personnel.getId())) {
  130. projectImport.setCreateName(personnel.getPersonnelName());
  131. }
  132. }
  133. }
  134. }
  135. }
  136. }