NoveltyReportReferencesService.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. package cn.cslg.pas.service.novelty;
  2. import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceDTO;
  3. import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceQueryDTO;
  4. import cn.cslg.pas.common.dto.NoveltyProjectDTO.QueryNoveltyCompareRecordDTO;
  5. import cn.cslg.pas.common.dto.QuerySearchRecordDTO;
  6. import cn.cslg.pas.common.dto.TechnicalCaseIdDTO;
  7. import cn.cslg.pas.common.dto.business.GetReferencesDTO;
  8. import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
  9. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  10. import cn.cslg.pas.common.model.cronModel.Records;
  11. import cn.cslg.pas.common.model.cronModel.SystemFile;
  12. import cn.cslg.pas.common.model.request.QueryRequest;
  13. import cn.cslg.pas.common.model.request.StringRequest;
  14. import cn.cslg.pas.common.utils.*;
  15. import cn.cslg.pas.common.vo.CompareLiteratureVO;
  16. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
  17. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
  18. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyReferencesVO;
  19. import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
  20. import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
  21. import cn.cslg.pas.common.vo.TechnicalCaseVO;
  22. import cn.cslg.pas.common.vo.business.ReferencesVO;
  23. import cn.cslg.pas.domain.business.References;
  24. import cn.cslg.pas.domain.business.ReportTemple;
  25. import cn.cslg.pas.domain.business.novelty.NoveltyReportTemplate;
  26. import cn.cslg.pas.domain.es.Patent;
  27. import cn.cslg.pas.domain.es.PatentPerson;
  28. import cn.cslg.pas.factorys.noveltyTemplateFacotry.GetTemplateMapsImp;
  29. import cn.cslg.pas.factorys.noveltyTemplateFacotry.NoveltyTemplateFactory;
  30. import cn.cslg.pas.service.business.NoveltyProjectService;
  31. import cn.cslg.pas.service.business.ReferencesService;
  32. import cn.cslg.pas.service.business.TechnicalCaseService;
  33. import cn.cslg.pas.service.business.es.EsPatentService;
  34. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  35. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  36. import cn.cslg.pas.domain.business.novelty.NoveltyReportReferences;
  37. import cn.cslg.pas.mapper.novelty.NoveltyReportReferencesMapper;
  38. import lombok.RequiredArgsConstructor;
  39. import org.apache.poi.hslf.record.Record;
  40. import org.springframework.beans.BeanUtils;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.context.annotation.Lazy;
  43. import org.springframework.stereotype.Service;
  44. import java.util.*;
  45. import java.util.stream.Collectors;
  46. /**
  47. * @author admin
  48. * @description 针对表【novelty_report_references(查新报告文档)】的数据库操作Service实现
  49. * @createDate 2024-09-30 15:33:57
  50. */
  51. @Service
  52. @RequiredArgsConstructor(onConstructor_={@Lazy})
  53. public class NoveltyReportReferencesService extends ServiceImpl<NoveltyReportReferencesMapper, NoveltyReportReferences> {
  54. private final NoveltyReportTemplateService noveltyReportTemplateService;
  55. private final ReferencesService referencesService;
  56. private final NoveltyProjectService noveltyProjectService;
  57. private final TechnicalCaseService technicalCaseService;
  58. private final NoveltyCompareLiteratureService noveltyCompareLiteratureService;
  59. private final NoveltyCompareRecordService noveltyCompareRecordService;
  60. private final NoveltySearchRecordService noveltySearchRecordService;
  61. private final EsPatentService esPatentService;
  62. private final NoveltyTemplateFactory noveltyTemplateFactory;
  63. private final NoveltyExportReportService noveltyExportReportService;
  64. @Autowired
  65. private CacheUtils cacheUtils;
  66. @Autowired
  67. private LoginUtils loginUtils;
  68. public Integer addOrUpdate(NoveltyReportReferenceDTO noveltyReportReferenceDTO) {
  69. Integer id = noveltyReportReferenceDTO.getId();
  70. if (id != null) {
  71. return this.updateReference(noveltyReportReferenceDTO);
  72. } else {
  73. return this.addReference(noveltyReportReferenceDTO);
  74. }
  75. }
  76. private Integer addReference(NoveltyReportReferenceDTO noveltyReportReferenceDTO) {
  77. Integer templateId = noveltyReportReferenceDTO.getTemplateId();
  78. Integer projectId = noveltyReportReferenceDTO.getProjectId();
  79. NoveltyReportTemplate noveltyReportTemplate = noveltyReportTemplateService.getById(templateId);
  80. String dataSource = noveltyReportReferenceDTO.getDataSource();
  81. //添加附件
  82. References references = new References();
  83. String name = noveltyReportTemplate.getTemplateName().replace("模板", "报告");
  84. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  85. references.setReferencesName(name);
  86. references.setProjectId(projectId);
  87. references.setCreateId(personnelVO.getId());
  88. references.insert();
  89. //添加查新报告附件
  90. NoveltyReportReferences noveltyReportReferences = new NoveltyReportReferences();
  91. noveltyReportReferences.setReportReferenceId(references.getId());
  92. noveltyReportReferences.setIfHaveFinalFile(false);
  93. noveltyReportReferences.setTemplateId(templateId);
  94. noveltyReportReferences.setDataSource(dataSource);
  95. noveltyReportReferences.setConfigMessage(noveltyReportTemplate.getConfigMessage());
  96. noveltyReportReferences.insert();
  97. return references.getId();
  98. }
  99. private Integer updateReference(NoveltyReportReferenceDTO noveltyReportReferenceDTO) {
  100. Integer templateId = noveltyReportReferenceDTO.getTemplateId();
  101. String dataSource = noveltyReportReferenceDTO.getDataSource();
  102. Integer id = noveltyReportReferenceDTO.getId();
  103. LambdaQueryWrapper<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
  104. queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id);
  105. NoveltyReportReferences noveltyReportReferences = this.getOne(queryWrapper, false);
  106. noveltyReportReferences.setDataSource(dataSource);
  107. noveltyReportReferences.updateById();
  108. return id;
  109. }
  110. public Integer addFinalReference(Integer id, String fileGuid) {
  111. References references = referencesService.getById(id);
  112. references.setFileGuid(fileGuid);
  113. references.updateById();
  114. LambdaQueryWrapper<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
  115. queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id);
  116. NoveltyReportReferences noveltyReportReferences = this.getOne(queryWrapper, false);
  117. noveltyReportReferences.setIfHaveFinalFile(true);
  118. noveltyReportReferences.updateById();
  119. return id;
  120. }
  121. public Records queryReference(NoveltyReportReferenceQueryDTO noveltyReportReferenceQueryDTO) {
  122. List<NoveltyReferencesVO> noveltyReferencesVOS = new ArrayList<>();
  123. GetReferencesDTO getReferencesDTO = new GetReferencesDTO();
  124. BeanUtils.copyProperties(noveltyReportReferenceQueryDTO, getReferencesDTO);
  125. Records records = referencesService.query(getReferencesDTO);
  126. List<ReferencesVO> referencesVOS = (List<ReferencesVO>) records.getData();
  127. List<Integer> ids = referencesVOS.stream().map(ReferencesVO::getId).collect(Collectors.toList());
  128. if (ids == null || ids.size() == 0) {
  129. records.setData(noveltyReferencesVOS);
  130. return records;
  131. }
  132. LambdaQueryWrapper<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
  133. queryWrapper.in(NoveltyReportReferences::getReportReferenceId, ids);
  134. List<NoveltyReportReferences> noveltyReportReferences = this.list(queryWrapper);
  135. referencesVOS.forEach(item -> {
  136. NoveltyReferencesVO noveltyReferencesVO = new NoveltyReferencesVO();
  137. BeanUtils.copyProperties(item, noveltyReferencesVO);
  138. NoveltyReportReferences noveltyReportReference = noveltyReportReferences.stream().filter(tem -> tem.getReportReferenceId().equals(item.getId())).findFirst().orElse(null);
  139. if (noveltyReportReference != null) {
  140. noveltyReferencesVO.setIfHaveFinalFile(noveltyReportReference.getIfHaveFinalFile());
  141. noveltyReferencesVO.setDataSource(noveltyReportReference.getDataSource());
  142. noveltyReferencesVO.setConfigMessage(noveltyReportReference.getConfigMessage());
  143. noveltyReferencesVO.setTemplateId(noveltyReportReference.getTemplateId());
  144. }
  145. noveltyReferencesVOS.add(noveltyReferencesVO);
  146. });
  147. records.setData(noveltyReferencesVOS);
  148. return records;
  149. }
  150. public List<Integer> delete(List<Integer> ids) {
  151. //删除文件
  152. referencesService.removeBatchByIds(ids);
  153. //删除
  154. LambdaQueryWrapper<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
  155. queryWrapper.in(NoveltyReportReferences::getReportReferenceId, ids);
  156. this.remove(queryWrapper);
  157. return ids;
  158. }
  159. public Integer addOrUpdate2(NoveltyReportReferenceDTO noveltyReportReferenceDTO) throws Exception {
  160. Integer id = noveltyReportReferenceDTO.getId();
  161. Integer projectId = noveltyReportReferenceDTO.getProjectId();
  162. Integer templateId = noveltyReportReferenceDTO.getTemplateId();
  163. GetTemplateMapsImp getTemplateMapsImp = noveltyTemplateFactory.getClass(templateId);
  164. List<QueryNoveltyProjectVO> queryNoveltyProjectVOs = this.getQueryNoveltyProjectVOs(projectId);
  165. // String searchTime = noveltySearchRecordService.getLastRecordTime(projectId);
  166. // baseMap.put("searchTime", searchTime);
  167. TechnicalCaseVO technicalCaseVO = this.getTechnicalCaseVO(projectId);
  168. List<CompareLiteratureVO> compareLiteratureVOS = this.getCompareCompareLiteratureVO(projectId);
  169. List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS = this.getNoveltyCompareRecordQueryVOs(projectId);
  170. List<RetrieveRecordVO> retrieveRecordVOS = this.getRetrieveRecordVOs(projectId);
  171. Map<String, Object> map = getTemplateMapsImp.getMap(queryNoveltyProjectVOs, technicalCaseVO, compareLiteratureVOS, noveltyCompareRecordQueryVOS, retrieveRecordVOS);
  172. String json = JsonUtils.objectToJson(map);
  173. noveltyReportReferenceDTO.setDataSource(json);
  174. id = this.addOrUpdate(noveltyReportReferenceDTO);
  175. noveltyExportReportService.exportReport(id);
  176. return id;
  177. }
  178. public TechnicalCaseVO getTechnicalCaseVO(Integer projectId) {
  179. TechnicalCaseIdDTO technicalCaseIdDTO = new TechnicalCaseIdDTO();
  180. technicalCaseIdDTO.setProjectId(projectId);
  181. TechnicalCaseVO technicalCaseVO = technicalCaseService.queryTechnicalCase(technicalCaseIdDTO);
  182. return technicalCaseVO;
  183. }
  184. public List<QueryNoveltyProjectVO> getQueryNoveltyProjectVOs(Integer projectId) throws Exception {
  185. StringRequest queryRequest = new StringRequest();
  186. queryRequest.setProjectId(projectId);
  187. Object projectRecordsObject = noveltyProjectService.queryMessage(queryRequest);
  188. Records projectRecords = (Records) projectRecordsObject;
  189. List<QueryNoveltyProjectVO> queryNoveltyProjectVOs = (List<QueryNoveltyProjectVO>) projectRecords.getData();
  190. return queryNoveltyProjectVOs;
  191. }
  192. public List<CompareLiteratureVO> getCompareCompareLiteratureVO(Integer projectId) throws Exception {
  193. LiteratureQueryDTO literatureQueryDTO = new LiteratureQueryDTO();
  194. literatureQueryDTO.setProjectId(projectId);
  195. Records records = noveltyCompareLiteratureService.queryNoveltyCompareLiterature(literatureQueryDTO);
  196. List<CompareLiteratureVO> compareLiteratureVOS1 = (List<CompareLiteratureVO>) records.getData();
  197. return compareLiteratureVOS1;
  198. }
  199. public List<NoveltyCompareRecordQueryVO> getNoveltyCompareRecordQueryVOs(Integer projectId) throws Exception {
  200. QueryNoveltyCompareRecordDTO queryNoveltyCompareRecordDTO = new QueryNoveltyCompareRecordDTO();
  201. queryNoveltyCompareRecordDTO.setProjectId(projectId);
  202. List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs = noveltyCompareRecordService.queryCompareRecord(queryNoveltyCompareRecordDTO);
  203. return noveltyCompareRecordQueryVOs;
  204. }
  205. public List<RetrieveRecordVO> getRetrieveRecordVOs(Integer projectId) throws Exception {
  206. cn.cslg.pas.common.dto.QuerySearchRecordDTO querySearchRecordDTO = new QuerySearchRecordDTO();
  207. querySearchRecordDTO.setProjectId(projectId);
  208. Records records = noveltySearchRecordService.querySearchRecord(querySearchRecordDTO);
  209. List<RetrieveRecordVO> retrieveRecordVOS = (List<RetrieveRecordVO>) records.getData();
  210. return retrieveRecordVOS;
  211. }
  212. }