ProjectImportController.java 5.2 KB

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