UploadTaskService.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package cn.cslg.pas.service.upLoadPatent;
  2. import cn.cslg.pas.common.model.PersonnelVO;
  3. import cn.cslg.pas.common.model.dto.QrtzTaskAddNewDTO;
  4. import cn.cslg.pas.common.model.dto.UploadFileDTO;
  5. import cn.cslg.pas.common.model.outApi.PatentStarListDto;
  6. import cn.cslg.pas.common.utils.CacheUtils;
  7. import cn.cslg.pas.common.utils.FileUtils;
  8. import cn.cslg.pas.common.utils.ReadExcelUtils;
  9. import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
  10. import cn.cslg.pas.common.utils.ThrowException;
  11. import cn.cslg.pas.domain.SerachBiblioData;
  12. import cn.cslg.pas.domain.WebLoginConfig;
  13. import cn.cslg.pas.domain.asso.AssoOsTaskQrtzTask;
  14. import cn.cslg.pas.service.TaskService;
  15. import cn.cslg.pas.service.WebLoginConfigService;
  16. import cn.cslg.pas.service.asso.AssoOsTaskQrtzTaskService;
  17. import cn.cslg.pas.service.outApi.PatentStarApiService;
  18. import lombok.RequiredArgsConstructor;
  19. import org.springframework.context.annotation.Lazy;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.web.multipart.MultipartFile;
  22. import java.io.IOException;
  23. import java.util.Arrays;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * 导入专利任务的业务层
  28. *
  29. * @Author 李仁杰
  30. * 导入任务类
  31. */
  32. @Service
  33. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  34. public class UploadTaskService {
  35. private final FileUtils fileUtils;
  36. private final TaskService taskService;
  37. private final PantentQueueService pantentQueueService;
  38. private final AssoOsTaskQrtzTaskService assoOsTaskQrtzTaskService;
  39. private final ExcutePatentDataEpo excutePatentDataEpo;
  40. private final CacheUtils cacheUtils;
  41. private final LoginUtils loginUtils;
  42. private final WebLoginConfigService webLoginConfigService;
  43. private final PatentStarApiService patentStarApiService;
  44. /**
  45. * 新增Excel导入任务
  46. *
  47. * @param file Excel文件
  48. * @param json 前台参数(与专题库关联信息、自定义字段、文件夹等)
  49. */
  50. public void addExcelTask(MultipartFile file, String json) throws IOException {
  51. //将包含多件专利的Excel文件上传至本地,并返回文件对象fileDTO
  52. UploadFileDTO fileDTO = fileUtils.uploadFile(file);
  53. //获得文件路径(绝对路径)
  54. String filePath = fileUtils.getPath(fileDTO.getPath());
  55. //检查文件合法性并获取专利总数量
  56. Integer total = ReadExcelUtils.textExcel(filePath);
  57. //新增任务(专利导入导出任务表)
  58. Integer taskId = taskService.addTask2(fileDTO, total, json);
  59. //任务存入生产者任务队列并唤醒生产者线程
  60. pantentQueueService.taskQueueAddTask(Arrays.asList(taskId));
  61. pantentQueueService.awakeTasktch();
  62. }
  63. /**
  64. * 新增Epo网站导入任务
  65. *
  66. * @param qrtzTaskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
  67. */
  68. public AssoOsTaskQrtzTask addEpoTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws IOException {
  69. Integer webId = qrtzTaskAddNewDTO.getConfigId();
  70. PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
  71. //根据网站id获得配置
  72. WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
  73. if (webLoginConfig == null) {
  74. ThrowException.throwXiaoShiException("未配置网站登录信息");
  75. }
  76. //检查任务合法性(检查当前检索式能否检索出专利)
  77. //根据检索式conditions检索一件专利著录信息
  78. SerachBiblioData serachBiblioData = excutePatentDataEpo.getSerachBiblioData(qrtzTaskAddNewDTO.getConditions(), 1, 1);
  79. if (serachBiblioData == null || serachBiblioData.getTotals() == 0) {
  80. ThrowException.throwXiaoShiException("根据检索信息未检索到相关专利,请尝试更换检索信息");
  81. }
  82. //任务与任务条件关联表新增数据
  83. AssoOsTaskQrtzTask assoOsTaskQrtzTask = new AssoOsTaskQrtzTask();
  84. assoOsTaskQrtzTask
  85. .setTaskType(qrtzTaskAddNewDTO.getTaskType())
  86. .setConditions(qrtzTaskAddNewDTO.getConditions())
  87. .setCrons(qrtzTaskAddNewDTO.getCrons())
  88. .setConfigId(qrtzTaskAddNewDTO.getConfigId())
  89. .setTaskName(qrtzTaskAddNewDTO.getTaskName())
  90. .setTotal(serachBiblioData.getTotals());
  91. List<String> cells = qrtzTaskAddNewDTO.getConfigCells();
  92. if (cells == null) {
  93. assoOsTaskQrtzTask.setConfigCells("");
  94. } else {
  95. assoOsTaskQrtzTask.setConfigCells(String.join(",", cells));
  96. }
  97. assoOsTaskQrtzTaskService.save(assoOsTaskQrtzTask);
  98. //任务表新增任务
  99. Integer taskId = taskService.addTask3(qrtzTaskAddNewDTO, serachBiblioData.getTotals(), assoOsTaskQrtzTask);
  100. //任务与任务条件关联表更新数据
  101. assoOsTaskQrtzTask.setTaskId(taskId);
  102. assoOsTaskQrtzTaskService.updateById(assoOsTaskQrtzTask);
  103. //任务存入生产者任务队列并唤醒生产者线程
  104. pantentQueueService.taskQueueAddTask(Arrays.asList(taskId));
  105. pantentQueueService.awakeTasktch();
  106. return assoOsTaskQrtzTask;
  107. }
  108. /**
  109. * 新增专利之星导入任务
  110. *
  111. * @param qrtzTaskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
  112. */
  113. public AssoOsTaskQrtzTask addPatentStarTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws IOException {
  114. Integer webId = qrtzTaskAddNewDTO.getConfigId();
  115. PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
  116. //根据网站id获得配置
  117. WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
  118. if (webLoginConfig == null) {
  119. ThrowException.throwXiaoShiException("未配置网站登录信息");
  120. }
  121. //检查任务合法性(检查当前检索式能否检索出专利)
  122. //根据检索式conditions检索一件专利著录信息
  123. PatentStarListDto patentStarListDto = new PatentStarListDto()
  124. .setCurrentQuery(qrtzTaskAddNewDTO.getConditions())
  125. .setOrderBy("AD")
  126. .setOrderByType("DESC")
  127. .setPageNum(1)
  128. .setRowCount(10)
  129. .setDBType("cN");
  130. Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
  131. if (resultMap == null || (Integer) resultMap.get("total") == 0) {
  132. ThrowException.throwXiaoShiException("根据检索信息未检索到相关专利,请尝试更换检索信息");
  133. }
  134. //专利总数量
  135. Integer total = (Integer) resultMap.get("total");
  136. //任务与任务条件关联表新增数据
  137. AssoOsTaskQrtzTask assoOsTaskQrtzTask = new AssoOsTaskQrtzTask();
  138. assoOsTaskQrtzTask
  139. .setTaskType(qrtzTaskAddNewDTO.getTaskType())
  140. .setConditions(qrtzTaskAddNewDTO.getConditions())
  141. .setCrons(qrtzTaskAddNewDTO.getCrons())
  142. .setConfigId(qrtzTaskAddNewDTO.getConfigId())
  143. .setTaskName(qrtzTaskAddNewDTO.getTaskName())
  144. .setTotal(total);
  145. List<String> cells = qrtzTaskAddNewDTO.getConfigCells();
  146. if (cells == null) {
  147. assoOsTaskQrtzTask.setConfigCells("");
  148. } else {
  149. assoOsTaskQrtzTask.setConfigCells(String.join(",", cells));
  150. }
  151. assoOsTaskQrtzTaskService.save(assoOsTaskQrtzTask);
  152. //任务表新增任务
  153. Integer taskId = taskService.addTask3(qrtzTaskAddNewDTO, total, assoOsTaskQrtzTask);
  154. //任务与任务条件关联表更新数据
  155. assoOsTaskQrtzTask.setTaskId(taskId);
  156. assoOsTaskQrtzTaskService.updateById(assoOsTaskQrtzTask);
  157. //任务存入生产者任务队列并唤醒生产者线程
  158. pantentQueueService.taskQueueAddTask(Arrays.asList(taskId));
  159. pantentQueueService.awakeTasktch();
  160. return assoOsTaskQrtzTask;
  161. }
  162. }