Jelajahi Sumber

下载接口初版

chendayu 2 tahun lalu
induk
melakukan
9f7df0fc91

+ 37 - 0
src/main/java/com/example/demo/controller/QrtzTaskDetailController.java

@@ -0,0 +1,37 @@
+package com.example.demo.controller;
+
+import com.example.demo.base.Constants;
+import com.example.demo.domain.dto.QrtzTaskAddNewDTO;
+import com.example.demo.domain.dto.QrtzTaskUpdateDTO;
+import com.example.demo.domain.dto.QueryPageDTO;
+import com.example.demo.domain.dto.QueryTaskDetailsDTO;
+import com.example.demo.domain.entity.QrtzTask;
+import com.example.demo.service.JobService;
+import com.example.demo.service.QrTaskDetailService;
+import com.example.demo.service.QrTaskService;
+import com.example.demo.util.Response;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.quartz.SchedulerException;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+@RestController
+@Tag(name = "任务执行情况管理")
+@RequestMapping(Constants.QUARTZ_API + "/taskDetail")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class QrtzTaskDetailController {
+    private final QrTaskDetailService qrTaskDetailService;
+
+    @Operation(summary = "删除任务执行情况")
+    @PostMapping("/deleteTasks")
+    public String deleteTasks(List<Integer> ids) {
+
+        return Response.success(qrTaskDetailService.deleteTasks(ids));
+    }
+
+}

+ 8 - 8
src/main/java/com/example/demo/controller/QuartzController.java

@@ -21,10 +21,10 @@ import java.util.List;
 
 
 @RestController
-@Tag(name = "任务管理")
+@Tag(name = "任务条件管理")
 @RequestMapping(Constants.QUARTZ_API + "/task")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class QuartzController {
+public class QuartzTaskController {
     private final JobService jobService;
     private final QrTaskService qrTaskService;
     private final QrTaskDetailService qrTaskDetailService;
@@ -71,27 +71,27 @@ public class QuartzController {
 
     @Operation(summary = "暂停任务条件")
     @GetMapping("/pauseJob")
-    public void pauseJob(Integer taskId) throws SchedulerException {
+    public String pauseJob(Integer taskId) throws SchedulerException {
         jobService.pauseJob(taskId);
-
+        return Response.success();
     }
 
     @Operation(summary = "继续任务")
     @GetMapping("/resumeJob")
-    public void resumeJob(Integer taskId) throws SchedulerException {
+    public String resumeJob(Integer taskId) throws SchedulerException {
         jobService.resumeJob(taskId);
-
+        return Response.success();
     }
 
+
     @Operation(summary = "更改任务详情状态")
     @GetMapping("/setDetailState")
     public String setDetailState(Integer taskId, Integer state) throws SchedulerException {
         Integer flag = qrTaskDetailService.setDetailState(taskId, state);
-        if (flag.equals(0)) {
+        if (flag.equals(-1)) {
             return Response.error("更改状态失败");
         }
         return Response.success("更改状态成功");
-
     }
 
 }

+ 8 - 0
src/main/java/com/example/demo/domain/dto/QueryPageDTO.java

@@ -20,5 +20,13 @@ public class QueryPageDTO {
      * 每页条数
      */
     private Integer size;
+    /**
+     * 根据什么字段排序
+     */
+    private String orderBy;
+    /**
+     * 排序类型(asc升序 desc降序)
+     */
+    private String orderType;
 
 }

+ 5 - 0
src/main/java/com/example/demo/domain/entity/QrtzTaskDetail.java

@@ -50,6 +50,11 @@ public class QrtzTaskDetail extends BaseEntity<QrtzTaskDetail>{
     @TableField(value = "task_order")
     private Integer taskOrder;
     /**
+     * 任务顺序
+     */
+    @TableField(value = "task_process")
+    private double taskProcess;
+    /**
      * 开始时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

+ 2 - 0
src/main/java/com/example/demo/model/dto/TaskWebSocketDTO.java

@@ -16,4 +16,6 @@ public class TaskWebSocketDTO {
     private Integer taskType;
     private Double percentage;
     private String oldName;
+    private Integer taskDetailState;
+    private Integer id;
 }

+ 30 - 2
src/main/java/com/example/demo/service/QrTaskDetailService.java

@@ -1,5 +1,6 @@
 package com.example.demo.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.demo.domain.entity.QrtzTaskDetail;
 import com.example.demo.mapper.QrtzTaskDetailMapper;
@@ -27,11 +28,16 @@ public class QrTaskDetailService extends ServiceImpl<QrtzTaskDetailMapper, QrtzT
      * @return 返回更改后的状态
      */
     public Integer setDetailState(Integer taskId, Integer state) {
-        Integer flag = 0;
-        List<Integer> states = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8));
+        int flag = -1;
+        List<Integer> states = new ArrayList<>(Arrays.asList(0,1, 2, 3, 4, 5, 6, 7, 8));
         if (states.contains(state) && taskId != null) {
             QrtzTaskDetail qrtzTaskDetail = this.getById(taskId);
             if (qrtzTaskDetail != null) {
+                if (qrtzTaskDetail.getTaskDetailState() != 1 && state == 7) {
+                    state = 5;
+                } else if (qrtzTaskDetail.getTaskDetailState() != 1 && state == 8) {
+                    state = 6;
+                }
                 qrtzTaskDetail.setTaskDetailState(state);
                 qrtzTaskDetail.updateById();
                 flag = state;
@@ -40,4 +46,26 @@ public class QrTaskDetailService extends ServiceImpl<QrtzTaskDetailMapper, QrtzT
         return flag;
     }
 
+    /**
+     * 删除任务执行情况
+     *
+     * @param ids 任务执行情况ids
+     */
+    public List<Integer> deleteTasks(List<Integer> ids) {
+        log.info("开始处理【删除任务执行情况】的业务,参数为:{}", ids);
+        List<Integer> notRemoveIds = new ArrayList<>();
+        LambdaQueryWrapper<QrtzTaskDetail> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(QrtzTaskDetail::getId, ids);
+        List<QrtzTaskDetail> qrtzTaskDetails = this.list(queryWrapper);
+        for (QrtzTaskDetail qrtzTaskDetail : qrtzTaskDetails) {
+            Integer taskDetailState = qrtzTaskDetail.getTaskDetailState();
+            if (taskDetailState != 1 && taskDetailState != 7 && taskDetailState != 8) {
+                this.removeById(qrtzTaskDetail.getId());
+            } else {
+                notRemoveIds.add(qrtzTaskDetail.getId());
+            }
+        }
+        return notRemoveIds;
+    }
+
 }

+ 45 - 13
src/main/java/com/example/demo/service/QrTaskService.java

@@ -20,7 +20,10 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author admin
@@ -57,13 +60,14 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         log.info("数据入任务条件表");
         qrtzTask.insert();
 
-        //任务执行情况表实体类
-        QrtzTaskDetail qrtzTaskDetail = new QrtzTaskDetail()
-                .setTaskId(qrtzTask.getId())
-                .setTaskDetailState(0);
-        log.info("数据入任务执行情况表");
-        qrtzTaskDetail.insert();
-
+        //若是普通任务则新增一条任务执行情况
+        if (qrtzTask.getTaskType() != 1) {
+            QrtzTaskDetail qrtzTaskDetail = new QrtzTaskDetail()
+                    .setTaskId(qrtzTask.getId())
+                    .setTaskDetailState(0);
+            log.info("新增一条普通任务入任务执行情况表");
+            qrtzTaskDetail.insert();
+        }
         return qrtzTask;
     }
 
@@ -103,13 +107,24 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         wrapper.in(QrtzTask::getId, taskIds);
         List<QrtzTask> qrtzTaskList = this.list(wrapper);
         for (QrtzTask qrtzTask : qrtzTaskList) {
-            Boolean flag = this.removeById(qrtzTask.getId());
-            if (flag) {
-                reIds.add(qrtzTask.getId());
+            //根据任务条件id查找是否有正在进行的任务
+            LambdaQueryWrapper<QrtzTaskDetail> queryWrapper =new LambdaQueryWrapper<>();
+            queryWrapper.eq(QrtzTaskDetail::getTaskId,qrtzTask.getId())
+                    .in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1,7,8));
+            List<QrtzTaskDetail> qrtzTaskDetails =qrTaskDetailService.list(queryWrapper);
+            if(qrtzTaskDetails.size()==0){
+                Boolean flag = this.removeById(qrtzTask.getId());
+                if (!flag) {
+                    reIds.add(qrtzTask.getId());
+                }
+                if (qrtzTask.getTaskType().equals(1)) {
+                    jobService.deleteJob(qrtzTask.getId());
+                }
             }
-            if (qrtzTask.getTaskType().equals(1)) {
-                jobService.deleteJob(qrtzTask.getId());
+            else {
+                reIds.add(qrtzTask.getId());
             }
+
         }
         return reIds;
     }
@@ -117,8 +132,25 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
     public Page<QrtzTask> getTasks(QueryPageDTO queryPageDTO) {
         log.info("开始处理【查询任务条件列表】的业务,参数为:{}", queryPageDTO);
 
+        String orderBy = queryPageDTO.getOrderBy();
+        String orderType = queryPageDTO.getOrderType();
         QueryWrapper<QrtzTask> queryWrapper = new QueryWrapper<>();
-        Page<QrtzTask> page = this.page(new Page<>(queryPageDTO.getCurrent(), queryPageDTO.getSize()), queryWrapper);
+        if (orderBy != null && !orderBy.equals("")) {
+            String regex = "[A-Z]+";
+            Pattern pattern = Pattern.compile(regex);
+            Matcher matcher = pattern.matcher(orderBy);
+            while (matcher.find()) {
+                orderBy = orderBy.replaceFirst(matcher.group(), "_" + matcher.group().toLowerCase());
+            }
+            if (orderType.equals("asc")) {
+                queryWrapper.orderByAsc(orderBy);
+            } else {
+                queryWrapper.orderByDesc(orderBy);
+            }
+        } else {
+            queryWrapper.orderByDesc("modified_time");
+        }
+        Page<QrtzTask> page = this.page(new Page<>(queryPageDTO.getCurrent(), queryPageDTO.getSize()), queryWrapper.orderByDesc("modified_time"));
         return page;
     }
 

+ 89 - 54
src/main/java/com/example/demo/service/UploadFromWebService.java

@@ -50,13 +50,12 @@ public class UploadFromWebService {
         List<PatentCell> patentCells = new ArrayList<>();
         //当前任务执行情况
         QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getById(webQueryDTO.getTaskId());
-        Integer successNum1 = qrtzTaskDetail.getSuccessNum();
-        Integer startPage = successNum1 / 5;
-        Integer startNum = successNum1 % 5;
+        Integer successNum = qrtzTaskDetail.getSuccessNum();
+        int startPage = successNum / 5;
+        int startNum = successNum % 5;
         //当前任务条件
         QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
         //专利成功条数
-        int successNum = 0;
         try {
             List<String> cells = webQueryDTO.getConCells();
             String conditions = webQueryDTO.getConditions();
@@ -68,7 +67,10 @@ public class UploadFromWebService {
             System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
             // 2.页面最大化
             ChromeOptions chromeOptions = new ChromeOptions();
-            chromeOptions.addArguments("--start-maximized");
+            // 设置无头模式
+            chromeOptions.setHeadless(Boolean.TRUE);
+            // 设置无轨 开发时还是不要加,可以看到浏览器效果
+            chromeOptions.addArguments("-headless");
             // 3.创建驱动
             WebDriver driver = new ChromeDriver(chromeOptions);
             // 4.创建动作
@@ -116,10 +118,13 @@ public class UploadFromWebService {
             handleMap.put("mainPage", Handle);
             WebElement pagNum = driver.findElement(By.className("page_num"));
             pagNum.clear();
-            pagNum.sendKeys("4");
+            pagNum.sendKeys(startPage+1+"");
             WebElement pagBtn = driver.findElement(By.className("page_btn"));
             pagBtn.click();
             TimeUnit.MILLISECONDS.sleep(10000);//毫秒
+            //计算进度值
+            double percentage = count == 0 ? 0 : (count.equals(successNum) ? (successNum * 1D) : (successNum + 1D) / count * 100D);
+            percentage = MathUtils.saveTwoDecimal(percentage);
             for (int p = startPage; p < page; p++) {
                 //等待数据加载
                 wait1.until(ExpectedConditions.presenceOfElementLocated(By.className("patent")));
@@ -127,7 +132,37 @@ public class UploadFromWebService {
                 //获得列表
                 List<WebElement> patentContents = driver.findElements(By.className("patent"));
                 // 页面元素标签
-                for (int i = 1; i < patentContents.size(); i++) {
+                for (int i = startNum; i < patentContents.size(); i++) {
+                    //查看任务状态
+                    QrtzTaskDetail qrtzTaskDetail1 = qrTaskDetailService.getById(webQueryDTO.getTaskId());
+                    if (qrtzTaskDetail1.getTaskDetailState().equals(7)) {
+                        qrtzTaskDetail1.setTaskDetailState(5);
+                        qrtzTaskDetail1.setSuccessNum(successNum);
+                        qrtzTaskDetail1.setTaskProcess(percentage);
+                        qrtzTaskDetail1.updateById();
+                        WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                                .setId(webQueryDTO.getTaskId())
+                                .setProjectId(webQueryDTO.getProjectId())
+                                .setComplete(false)
+                                .setIndex(successNum)
+                                .setTaskDetailState(5)
+                                .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
+                        return null;
+                    } else if (qrtzTaskDetail1.getTaskDetailState().equals(8)) {
+                        qrtzTaskDetail1.setTaskDetailState(6);
+                        qrtzTaskDetail1.setSuccessNum(successNum);
+                        qrtzTaskDetail1.setTaskProcess(percentage);
+                        qrtzTaskDetail1.updateById();
+                        WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                                .setId(webQueryDTO.getTaskId())
+                                .setProjectId(webQueryDTO.getProjectId())
+                                .setComplete(false)
+                                .setIndex(successNum)
+                                .setTaskDetailState(6)
+                                .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
+                        return null;
+
+                    }
                     PatentCell patentCell = new PatentCell();
                     patentCell.setProjectId(webQueryDTO.getProjectId());
                     patentCell.setReportId(webQueryDTO.getReportId());
@@ -148,21 +183,7 @@ public class UploadFromWebService {
                     wait1.until(ExpectedConditions.presenceOfElementLocated(By.className("item-content")));
                     WebElement itemContent = driver.findElement(By.className("item-content"));
                     List<WebElement> divItems = itemContent.findElements(By.tagName("div"));
-                    for (int t = startNum; t < divItems.size(); t++) {
-                        //查看任务状态
-                        QrtzTaskDetail qrtzTaskDetail1 = qrTaskDetailService.getById(webQueryDTO.getTaskId());
-                        if (qrtzTaskDetail1.getTaskDetailState().equals(7)) {
-                            qrtzTaskDetail1.setTaskDetailState(5);
-                            qrtzTaskDetail1.setSuccessNum(successNum);
-                            qrtzTaskDetail1.updateById();
-                            return null;
-                        } else if (qrtzTaskDetail1.getTaskDetailState().equals(8)) {
-                            qrtzTaskDetail1.setTaskDetailState(6);
-                            qrtzTaskDetail1.setSuccessNum(successNum);
-                            qrtzTaskDetail1.updateById();
-                            return null;
-
-                        }
+                    for (int t = 0; t < divItems.size(); t++) {
                         WebElement temEle = divItems.get(t);
                         String text = temEle.getText();
                         String value = "";
@@ -242,43 +263,59 @@ public class UploadFromWebService {
                     url = fileUtils.uploadToLocal(url, ".jpg").getPath();
                     patentCell.setPicUrl(url);
                     if (cells.contains("2")) {
+                        TimeUnit.MILLISECONDS.sleep(10000);//毫秒
+                        WebElement CLElement = driver.findElement(By.id("itemCL"));
+                        CLElement.click();
                         //获得主权要
                         String mainRight = spans.get(1).getText();
                         patentCell.setMainRignt(mainRight);
                         //获得权要
-                        WebElement CLElement = driver.findElement(By.id("itemCL"));
-                        CLElement.click();
-                        TimeUnit.MILLISECONDS.sleep(10000);//毫秒
-                        wait1.until(ExpectedConditions.presenceOfElementLocated(By.tagName("claim-text")));
+                        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                         List<WebElement> rightElements = driver.findElements(By.tagName("claim-text"));
-                        List<String> rights = new ArrayList<>();
-                        rightElements.forEach(item -> {
-                            rights.add(item.getText());
-                        });
-                        patentCell.setRights(rights);
+                        if (rightElements.size() == 0) {
+                            WebElement suBtn = driver.findElement(By.className("layui-layer-btn0"));
+                            suBtn.click();
+                            TimeUnit.MILLISECONDS.sleep(10000);//毫秒
+                        } else {
+                            TimeUnit.MILLISECONDS.sleep(10000);//毫秒
+                            List<String> rights = new ArrayList<>();
+                            rightElements.forEach(item -> {
+                                rights.add(item.getText());
+                            });
+                            patentCell.setRights(rights);
+                        }
                     }
                     if (cells.contains("3")) {
                         //获得说明书
                         WebElement DSElement = driver.findElement(By.id("itemDS"));
                         DSElement.click();
                         TimeUnit.MILLISECONDS.sleep(10000);//毫秒
-                        wait1.until(ExpectedConditions.presenceOfElementLocated(By.tagName("invention-title")));
-                        WebElement titleElement = driver.findElement(By.tagName("invention-title"));
-                        patentCell.setTitle(titleElement.getText());
-                        StringBuilder stringBuilder = new StringBuilder();
-                        int flag = 1;
-                        //技术领域
-                        WebElement textElement1 = driver.findElement(By.tagName("description"));
-                        List<WebElement> textP1 = textElement1.findElements(By.tagName("p"));
-                        stringBuilder.append(textP1.get(0).getText());
-                        stringBuilder.append("\r\n");
-                        for (int t = 1; t < textP1.size(); t++) {
-                            String tem = String.format("%04d", flag);
-                            stringBuilder.append("[" + tem + "]" + textP1.get(t).getText());
+                        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
+                        List<WebElement> titleElements = driver.findElements(By.tagName("invention-title"));
+                        if(titleElements.size()==0){
+                            WebElement suBtn = driver.findElement(By.className("layui-layer-btn0"));
+                            suBtn.click();
+                            TimeUnit.MILLISECONDS.sleep(10000);//毫秒
+                        }
+                        else{
+                            WebElement titleElement =titleElements.get(0);
+                            patentCell.setTitle(titleElement.getText());
+                            StringBuilder stringBuilder = new StringBuilder();
+                            int flag = 1;
+                            //技术领域
+                            WebElement textElement1 = driver.findElement(By.tagName("description"));
+                            List<WebElement> textP1 = textElement1.findElements(By.tagName("p"));
+                            stringBuilder.append(textP1.get(0).getText());
                             stringBuilder.append("\r\n");
-                            flag += 1;
+                            for (int t = 1; t < textP1.size(); t++) {
+                                String tem = String.format("%04d", flag);
+                                stringBuilder.append("[" + tem + "]" + textP1.get(t).getText());
+                                stringBuilder.append("\r\n");
+                                flag += 1;
+                            }
+                            patentCell.setPatentInstructionText(stringBuilder.toString());
                         }
-                        patentCell.setPatentInstructionText(stringBuilder.toString());
+
                     }
                     //获得pdf文档
                     if (cells.contains("4")) {
@@ -358,17 +395,14 @@ public class UploadFromWebService {
                             return null;
                         }
                     }
-
-                    //计算进度值
-                    double percentage = count == 0 ? 0 : (count.equals(successNum) ? (successNum * 1D) : (successNum + 1D) / count * 100D);
-                    percentage = MathUtils.saveTwoDecimal(percentage);
+                       QrtzTaskDetail qrtzTaskDetail11 =qrTaskDetailService.getById(qrtzTaskDetail.getId());
                     WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
-                            .setTaskId(webQueryDTO.getTaskId())
+                            .setId(webQueryDTO.getTaskId())
                             .setProjectId(webQueryDTO.getProjectId())
                             .setComplete(false)
                             .setIndex(successNum)
-                            .setTaskType(Constants.TASK_IMPORT_PATENT)
                             .setPercentage(percentage)
+                            .setTaskDetailState(qrtzTaskDetail11.getTaskDetailState())
                             .setFileName("")
                             .setUrl("")
                             .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
@@ -387,12 +421,12 @@ public class UploadFromWebService {
             }
 
             WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
-                    .setTaskId(webQueryDTO.getTaskId())
+                    .setId(webQueryDTO.getTaskId())
                     .setProjectId(webQueryDTO.getProjectId())
                     .setComplete(true)
                     .setIndex(count)
-                    .setTaskType(Constants.TASK_IMPORT_PATENT)
                     .setPercentage(100D)
+                    .setTaskDetailState(qrtzTaskDetail.getTaskDetailState())
                     .setFileName("")
                     .setUrl("")
                     .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "");
@@ -400,6 +434,7 @@ public class UploadFromWebService {
             qrtzTaskDetail.setTaskDetailState(2);
             qrtzTaskDetail.setSuccessNum(successNum);
             qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
+            qrtzTaskDetail.setTaskProcess(100);
             qrtzTaskDetail.setEndTime(new Date());
             qrtzTaskDetail.updateById();
             if (qrtzTask.getTaskType() == 1) {

+ 16 - 0
src/main/java/com/example/demo/service/WebUploadJob.java

@@ -3,7 +3,12 @@ package com.example.demo.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.demo.domain.entity.QrtzTask;
 import com.example.demo.domain.entity.QrtzTaskDetail;
+import com.example.demo.model.dto.TaskWebSocketDTO;
 import com.example.demo.model.dto.WebQueryDTO;
+import com.example.demo.util.MathUtils;
+import com.example.demo.util.Response;
+import com.example.demo.util.ResponseEnum;
+import com.example.demo.util.WebSocketServer;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.quartz.DisallowConcurrentExecution;
@@ -52,6 +57,17 @@ public class WebUploadJob extends QuartzJobBean {
                 QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
                 qrtzTask.setTaskState(1);
                 qrtzTask.updateById();
+                //向前端发送信息
+                double percentage = qrtzTaskDetail.getAllNum() == 0 ? 0 : (qrtzTaskDetail.getAllNum().equals(qrtzTaskDetail.getSuccessNum()) ? (qrtzTaskDetail.getSuccessNum() * 1D) : (qrtzTaskDetail.getSuccessNum() + 1D) / qrtzTaskDetail.getAllNum() * 100D);
+                percentage = MathUtils.saveTwoDecimal(percentage);
+                WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                        .setId(qrtzTaskDetail.getId())
+                        .setComplete(false)
+                        .setIndex(qrtzTaskDetail.getSuccessNum())
+                        .setTotal(qrtzTaskDetail.getAllNum())
+                        .setTaskDetailState(1)
+                        .setPercentage(percentage)
+                        , ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
                 String[] cells = qrtzTask.getConfigCells().split(",");
                 List<String> conCells = new ArrayList<>(Arrays.asList(cells));
                 WebQueryDTO webQueryDTO = new WebQueryDTO();

+ 2 - 0
src/main/resources/application.yml

@@ -1,4 +1,6 @@
 server:
+  servlet:
+    context-path: /
   port: 8111
 
 spring: