浏览代码

导入开发

lwhhszx 2 年之前
父节点
当前提交
3fc07df594

+ 5 - 4
PAS/src/main/java/cn/cslg/pas/common/core/CreateTaskThread.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -21,11 +22,11 @@ import java.util.stream.Collectors;
  * @Date 2023/6/2
  */
 @Component
-@RequiredArgsConstructor
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CreateTaskThread implements InitializingBean {
 
     private final TaskService taskService;
-
+    private final PantentQueueService pantentQueueService;
     @Override
     public void afterPropertiesSet() throws Exception {
         //初始化任务列表数据(taskQueueList)
@@ -33,13 +34,12 @@ public class CreateTaskThread implements InitializingBean {
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getStatus, new ArrayList<>(Arrays.asList(0, 1))));
         List<Integer> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
         //将任务ids存入 taskQueueList
-        PantentQueueService pantentQueueService =PantentQueueService.getInstance();
         pantentQueueService.setTaskQueueList(taskIds);
         //一个线程执行解析专利并入队列
         Thread thread1 = new Thread(() -> {
             pantentQueueService.addPatnetToQueue();
         });
-
+       thread1.start();
         //一个线程执行保存专利并出队列
         Thread thread2 = new Thread(() -> {
             try {
@@ -48,6 +48,7 @@ public class CreateTaskThread implements InitializingBean {
                 e.printStackTrace();
             }
         });
+        thread2.start();
     }
 
 }

+ 12 - 1
PAS/src/main/java/cn/cslg/pas/controller/TaskController.java

@@ -1,15 +1,19 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
+import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.domain.Task;
 import cn.cslg.pas.common.model.vo.TaskVO;
 import cn.cslg.pas.service.TaskService;
+import cn.cslg.pas.service.upLoadPatent.UploadTaskService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 
@@ -28,7 +32,7 @@ import java.io.IOException;
 public class TaskController {
 
     private final TaskService taskService;
-
+    private final UploadTaskService uploadTaskService;
     @GetMapping("list")
     @Operation(summary = "任务列表")
     public String getPageList(TaskVO params) throws IOException {
@@ -54,6 +58,13 @@ public class TaskController {
         return Response.success(true);
     }
 
+    @PostMapping("add")
+    @Operation(summary = "添加任务")
+    public String add(MultipartFile file, String json) throws IOException {
+        ProjectImportPatentVO params = JsonUtils.jsonToPojo(json, ProjectImportPatentVO.class);
+        uploadTaskService.addTask(file,params);
+        return Response.success(true);
+    }
 
 }
 

+ 1 - 2
PAS/src/main/java/cn/cslg/pas/controller/UserController.java

@@ -59,10 +59,9 @@ public class UserController {
         return userService.delete(id);
     }
 
-    @PostMapping("test")
+    @PostMapping("addTask")
     @Operation(summary = "删除用户")
     public String test(Integer id) {
-        //uploadTaskService.test();
         return "test";
     }
 

+ 0 - 39
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcuteTaskService.java

@@ -1,39 +0,0 @@
-package cn.cslg.pas.service.upLoadPatent;
-
-
-import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
-import cn.cslg.pas.domain.Task;
-import lombok.RequiredArgsConstructor;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-
-import java.io.IOException;
-
-/**
- * 执行任务类
- *
- * @Author 李仁杰
- */
-@Service
-@RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class ExcuteTaskService {
-    private final PantentQueueService pantentQueueService;
-
-    //执行Excel导入任务
-    public void executeExcelTask(Task task, ProjectImportPatentVO projectImportPatentVO) {
-        //一个线程执行入队列
-        Thread thread1 = new Thread(() -> {
-            pantentQueueService.addPatnetToQueue();
-
-        });
-
-
-        //一个线程执行出队列
-        Thread thread2 = new Thread(() -> {
-
-
-        });
-
-
-    }
-}

+ 10 - 34
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.service.upLoadPatent;
 
-import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.UploadSettingVO;
 import cn.cslg.pas.common.utils.ReadExcelUtils;
@@ -8,52 +7,36 @@ import cn.cslg.pas.domain.PatentData;
 import cn.cslg.pas.domain.Task;
 import cn.cslg.pas.service.TaskService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import lombok.Data;
 import lombok.RequiredArgsConstructor;
-import org.apache.poi.ss.formula.functions.T;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
-import java.io.IOException;
+import javax.annotation.PostConstruct;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * 将专利信息存入队列或从队列取出
  *
  * @author 李仁杰
  */
+
 @Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PantentQueueService {
-    @Autowired
-    private  ExcuteDataToVOService excuteDataToVOService;
-    @Autowired
-    private  ExcuteUploadSettingService excuteUploadSettingService;
-    @Autowired
-    private  MessageService messageService;
-    @Autowired
-    private  TaskService taskService;
-
+    private final ExcuteDataToVOService excuteDataToVOService;
+    private final ExcuteUploadSettingService excuteUploadSettingService;
+    private final  MessageService messageService;
+    private final  TaskService taskService;
     private Queue<UploadParamsVO> queue = new LinkedList<>();
     private  List<Integer> taskQueueList = new ArrayList<>();
     private Boolean flag = false;
     private CountDownLatch patentLatch = new CountDownLatch(10);
     private CountDownLatch taskLatch = new CountDownLatch(10);
-    private static PantentQueueService pantentQueueService =new PantentQueueService();
-    //构造函数
-    private PantentQueueService(){
-
-    }
-    public static PantentQueueService getInstance(){
-        return pantentQueueService;
-    }
     //将专利信息存入队列
     public void addPatnetToQueue() {
         try {
@@ -61,7 +44,6 @@ public class PantentQueueService {
             if (taskQueueList.size() == 0) {
                 taskLatch.await();
             }
-
             //查找 taskQueueList 中有没有进行中的任务
             long count = taskService.count(new LambdaQueryWrapper<Task>().in(Task::getId, taskQueueList).eq(Task::getStatus, 1));
             //若没有,则取出第一个队列中的任务开始执行
@@ -81,7 +63,7 @@ public class PantentQueueService {
             //检查文件合法性
             Integer totalRow = ReadExcelUtils.textExcel(filePath);
             //调用解析数据类,根据数据来源id(如1:智慧芽)解析数据源配置文件信息
-            List<UploadSettingVO.Column> jsonData = excuteUploadSettingService.ExcuteUploadSetting(projectImportPatentVO.getSourceId());
+            List<UploadSettingVO.Column> jsonData = excuteUploadSettingService.ExcuteUploadSetting(1+"");
             //遍历专利总数量,在循环中保存专利
             for (int i = 1; i <= totalRow; i++) {
                 //解析读取一行专利
@@ -103,10 +85,8 @@ public class PantentQueueService {
             e.printStackTrace();
         } finally {
         }
-
         flag = true;
     }
-
     //将专利信息从队列取出
     public void pushPantentToDb() throws InterruptedException {
         try {
@@ -123,19 +103,15 @@ public class PantentQueueService {
                     System.out.println("出队列" + uploadParamsVO);
                 }
             }
-
         } finally {
 
         }
     }
-
     public void setTaskQueueList(List<Integer> taskQueueList) {
-        this.taskQueueList = taskQueueList;
+        this.taskQueueList.addAll(taskQueueList);
     }
-
     public void awakeTasktch(){
         taskLatch.countDown();
 
     }
-
 }

+ 0 - 1
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PatentToDbTaskJob.java

@@ -14,7 +14,6 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
 @DisallowConcurrentExecution
 @RequiredArgsConstructor
 public class PatentToDbTaskJob extends QuartzJobBean {
-    private final ExcuteTaskService excuteTaskService;
 
     @Override
     public void executeInternal(JobExecutionContext context) throws JobExecutionException {

+ 5 - 5
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadTaskService.java

@@ -15,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -29,6 +30,7 @@ import java.util.Map;
 public class UploadTaskService {
     private final FileUtils fileUtils;
     private final TaskService taskService;
+    private final PantentQueueService pantentQueueService;
 
     /**
      * 添加导入任务
@@ -36,16 +38,14 @@ public class UploadTaskService {
     public void addTask(MultipartFile file, ProjectImportPatentVO projectImportPatentVO) throws IOException {
         //将包含多件专利的Excel文件上传至本地,并返回文件对象fileDTO
         UploadFileDTO fileDTO = fileUtils.uploadFile(file);
-
         //获得文件路径
         String filePath = fileUtils.getPath(fileDTO.getPath());
-
         //获取专利总数量
         Integer total = ReadExcelUtils.textExcel(filePath);
-
         //新增任务(专利导入导出任务表)
-        taskService.add(fileDTO, projectImportPatentVO.getProjectId(), null, total, 1, 0, file.getOriginalFilename());
-
+      Integer taskId =  taskService.add(fileDTO, projectImportPatentVO.getProjectId(), null, total, 1, 0, file.getOriginalFilename());
+       pantentQueueService.setTaskQueueList(Arrays.asList(taskId));
+       pantentQueueService.awakeTasktch();
     }
 
     public void pauseTask() {