ProjectImportController.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package cn.cslg.pas.controller;
  2. import cn.cslg.pas.common.core.annotation.Permission;
  3. import cn.cslg.pas.common.core.base.Constants;
  4. import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
  5. import cn.cslg.pas.common.model.vo.ProjectImportVO;
  6. import cn.cslg.pas.common.model.vo.TaskParams;
  7. import cn.cslg.pas.common.utils.*;
  8. import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
  9. import cn.cslg.pas.common.utils.auth.checkAuth;
  10. import cn.cslg.pas.service.ProjectImportService;
  11. import cn.cslg.pas.service.ProjectImportStatusService;
  12. import cn.cslg.pas.service.ProjectService;
  13. import cn.cslg.pas.service.UploadPatentBatchService;
  14. import cn.dev33.satoken.stp.StpUtil;
  15. import io.swagger.v3.oas.annotations.Operation;
  16. import io.swagger.v3.oas.annotations.tags.Tag;
  17. import lombok.RequiredArgsConstructor;
  18. import org.springframework.context.annotation.Lazy;
  19. import org.springframework.scheduling.annotation.Async;
  20. import org.springframework.web.bind.annotation.*;
  21. import org.springframework.web.multipart.MultipartFile;
  22. import java.io.IOException;
  23. import java.util.List;
  24. /**
  25. * <p>
  26. * 专题库导入 前端控制器
  27. * </p>
  28. *
  29. * @author 王岩
  30. * @since 2021-12-24
  31. */
  32. @Tag(name = "专题库导入")
  33. @RestController
  34. @RequestMapping(Constants.API_VERSION_V2 + "/project/import")
  35. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  36. public class ProjectImportController {
  37. private final ProjectService projectService;
  38. private final CacheUtils cacheUtils;
  39. private final ProjectImportService projectImportService;
  40. private final ProjectImportStatusService projectImportStatusService;
  41. private final LoginUtils loginUtils;
  42. private final UploadPatentBatchService uploadPatentBatchService;
  43. @Permission(roles = {2})
  44. @PostMapping("patent")
  45. @Operation(summary = "为专题库导入专利")
  46. public String importPatent(MultipartFile file, String json) {
  47. ProjectImportPatentVO params = JsonUtils.jsonToPojo(json, ProjectImportPatentVO.class);
  48. if (params == null) {
  49. return Response.error("参数错误");
  50. }
  51. TaskParams taskParams = projectService.getImportPatentTaskParams(file, params.getProjectId());
  52. //projectService.importPatent(taskParams, params);
  53. uploadPatentBatchService.uploadPatentBatch(taskParams, params);
  54. return Response.success(true);
  55. }
  56. @PostMapping("sysPatent")
  57. @Operation(summary = "导入专利")
  58. // @Async("singleThreadAsyncTaskExecutor")
  59. public String importSysPatent(@RequestBody TaskParams taskParams) {
  60. return uploadPatentBatchService.uploadPatentBatchBro(taskParams);
  61. }
  62. @GetMapping("list")
  63. @Operation(summary = "导入任务列表")
  64. public String getPageList(ProjectImportVO params) throws IOException {
  65. return Response.success(projectImportService.getPageList(params));
  66. }
  67. @checkAuth(FunId = "/workspace/common/taskDelete")
  68. @PostMapping("delete")
  69. @Operation(summary = "删除导入任务")
  70. public String delete(Integer id) {
  71. return projectImportService.delete(id);
  72. }
  73. @GetMapping("status")
  74. @Operation(summary = "获取导入进度")
  75. public String getProjectImportStatusList(Integer importId) {
  76. return Response.success(projectImportStatusService.getProjectImportByImportId(importId));
  77. }
  78. @checkAuth(FunId = "/workspace/project/patent_import")
  79. @PostMapping
  80. @Operation(summary = "数据导入")
  81. public String importData(String url, ProjectImportVO params) {
  82. Integer userId = loginUtils.getId();
  83. String tempId = cacheUtils.getUserImportId(userId);
  84. if (StringUtils.isNotEmpty(tempId)) {
  85. return Response.error("有导入任务在进行中");
  86. }
  87. Integer importId = projectImportService.add(userId, url);
  88. projectService.importData(url, params, userId, importId);
  89. cacheUtils.setUserImportId(userId, importId);
  90. return Response.success(importId);
  91. }
  92. @GetMapping("ongoing")
  93. @Operation(summary = "获取用户是否存在导入中的任务")
  94. public String getProjectImportOngoing() {
  95. Integer userId = loginUtils.getId();
  96. String tempId = cacheUtils.getUserImportId(userId);
  97. if (StringUtils.isNotEmpty(tempId)) {
  98. return Response.success(tempId);
  99. }
  100. return Response.success(false);
  101. }
  102. @PostMapping("importByNos")
  103. @Operation(summary = "根据专利号导入专利到专题库")
  104. public String importByNos( @RequestBody ProjectImportVO patentDTO) {
  105. List<String> notQuery = projectImportService.importByNos(patentDTO);
  106. if (notQuery.size() > 0) {
  107. return Response.successBut(notQuery);
  108. }
  109. return Response.success(true);
  110. }
  111. }