浏览代码

加入重新生成pdf接口

wangliang 4 年之前
父节点
当前提交
f25e0af05f

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TaskListResult.java

@@ -55,6 +55,28 @@ public class TaskListResult implements Serializable {
     @ApiModelProperty(value = "是否有报告文件")
     Boolean hasReportFile;
 
+    @ApiModelProperty(value = "是否重新生成pdf")
+    boolean resetCreatePdf;
+
+    @ApiModelProperty(value = "重新生成次数")
+    int resetCount;
+
+    public int getResetCount() {
+        return resetCount;
+    }
+
+    public void setResetCount(int resetCount) {
+        this.resetCount = resetCount;
+    }
+
+    public boolean isResetCreatePdf() {
+        return resetCreatePdf;
+    }
+
+    public void setResetCreatePdf(boolean resetCreatePdf) {
+        this.resetCreatePdf = resetCreatePdf;
+    }
+
     public Long getId() {
         return id;
     }

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/domain/SysDomain.java

@@ -34,6 +34,26 @@ public class SysDomain implements Serializable {
 
     String htmlToPdfUrl;
 
+    Integer autoCreatePdfResetMaxCount;
+
+    Integer threadPoolCoreSize;
+
+    public Integer getAutoCreatePdfResetMaxCount() {
+        return autoCreatePdfResetMaxCount;
+    }
+
+    public void setAutoCreatePdfResetMaxCount(Integer autoCreatePdfResetMaxCount) {
+        this.autoCreatePdfResetMaxCount = autoCreatePdfResetMaxCount;
+    }
+
+    public Integer getThreadPoolCoreSize() {
+        return threadPoolCoreSize;
+    }
+
+    public void setThreadPoolCoreSize(Integer threadPoolCoreSize) {
+        this.threadPoolCoreSize = threadPoolCoreSize;
+    }
+
     public String getHtmlToPdfUrl() {
         return htmlToPdfUrl;
     }

+ 5 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBTaskServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.params.ArraysParams;
 import com.qmth.distributed.print.business.bean.result.TaskListResult;
+import com.qmth.distributed.print.business.config.DictionaryConfig;
 import com.qmth.distributed.print.business.entity.BasicAttachment;
 import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.entity.TBTask;
@@ -59,6 +60,9 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
     @Resource
     SysUserService sysUserService;
 
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
     /**
      * 保存任务
      *
@@ -334,7 +338,7 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
         List<TBTask> tbTasks = this.list(tbTaskQueryWrapper);
         if (Objects.nonNull(tbTasks) && tbTasks.size() > 0) {
             for (TBTask tbTask : tbTasks) {
-                if (tbTask.getResetCount() < SystemConstant.MAX_RETRY_CREATE_PDF_COUNT) {
+                if (tbTask.getResetCount() < dictionaryConfig.sysDomain().getAutoCreatePdfResetMaxCount()) {
                     Map<String, Object> map = new HashMap<>();
                     tbTask.setVersion(new AtomicInteger(tbTask.getVersion()).incrementAndGet());
                     map.computeIfAbsent(SystemConstant.TASK, v -> tbTask);

+ 5 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/threadPool/MyThreadPool.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.threadPool;//package com.qmth.themis.business.threadPool;
 
 import com.qmth.distributed.print.common.contant.SystemConstant;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -22,6 +23,9 @@ public class MyThreadPool extends ThreadPoolTaskExecutor {
 
     public MyThreadPool arbitratePoolTaskExecutor = null;
 
+    @Value("${sys.config.threadPoolCoreSize}")
+    Integer threadPoolCoreSize;
+
     @PostConstruct
     public void init() {
         arbitrateThreadPool();
@@ -36,7 +40,7 @@ public class MyThreadPool extends ThreadPoolTaskExecutor {
     public Executor arbitrateThreadPool() {
         if (Objects.isNull(arbitratePoolTaskExecutor)) {
             arbitratePoolTaskExecutor = new MyThreadPool();
-            arbitratePoolTaskExecutor.setCorePoolSize(SystemConstant.THREAD_POOL_CORE_POOL_SIZE);//核心线程数
+            arbitratePoolTaskExecutor.setCorePoolSize(threadPoolCoreSize);//核心线程数
             arbitratePoolTaskExecutor.setMaxPoolSize(SystemConstant.THREAD_POOL_MAX_POOL_SIZE);//最大线程数
             arbitratePoolTaskExecutor.setKeepAliveSeconds(SystemConstant.THREAD_POOL_KEEP_ALIVE_SECONDS);//线程空闲时间
             arbitratePoolTaskExecutor.setQueueCapacity(SystemConstant.THREAD_POOL_QUEUE_CAPACITY);//队列容量

+ 2 - 1
distributed-print-business/src/main/resources/mapper/TBTaskMapper.xml

@@ -20,7 +20,8 @@
             where
             t.id = tbt.create_id) as createName,
             if(ISNULL(tbt.result_file_path),false,true) as hasResultFile,
-            if(ISNULL(tbt.report_file_path),false,true) as hasReportFile
+            if(ISNULL(tbt.report_file_path),false,true) as hasReportFile,
+            tbt.reset_count as resetCount
             from
             t_b_task tbt
             left join exam_print_plan epp on

+ 2 - 2
distributed-print-common/src/main/java/com/qmth/distributed/print/common/contant/SystemConstant.java

@@ -60,7 +60,7 @@ public class SystemConstant {
     public static final int PAGE_SIZE = 10000000;
     public static final int ALL_CARD = -1;
     public static final String DELIMITER = ":";
-    public static final int MAX_RETRY_CREATE_PDF_COUNT = 6;
+//    public static final int MAX_RETRY_CREATE_PDF_COUNT = 5;
 
     /**
      * oss url过期时间
@@ -126,7 +126,7 @@ public class SystemConstant {
      * 线程池配置
      */
     public static final String THREAD_POOL_NAME = "arbitrateThreadPool";
-    public static final int THREAD_POOL_CORE_POOL_SIZE = 5;
+//    public static final int THREAD_POOL_CORE_POOL_SIZE = 5;
     public static final int THREAD_POOL_MAX_POOL_SIZE = 100;
     public static final int THREAD_POOL_KEEP_ALIVE_SECONDS = 10;
     public static final int THREAD_POOL_QUEUE_CAPACITY = 500;

+ 40 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java

@@ -1,15 +1,18 @@
 package com.qmth.distributed.print.api;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.boot.core.enums.Platform;
+import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.TaskListResult;
+import com.qmth.distributed.print.business.config.DictionaryConfig;
+import com.qmth.distributed.print.business.entity.SysUser;
+import com.qmth.distributed.print.business.entity.TBTask;
 import com.qmth.distributed.print.business.enums.TaskResultEnum;
 import com.qmth.distributed.print.business.enums.TaskStatusEnum;
 import com.qmth.distributed.print.business.enums.TaskTypeEnum;
 import com.qmth.distributed.print.business.service.TBTaskService;
+import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.util.Result;
@@ -21,6 +24,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -39,6 +46,12 @@ public class TBTaskController {
     @Resource
     TBTaskService tbTaskService;
 
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
+    @Resource
+    AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
+
     @ApiOperation(value = "任务管理查询接口")
     @RequestMapping(value = "/task/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
@@ -48,7 +61,30 @@ public class TBTaskController {
                             @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
                             @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
-        return ResultUtil.ok(tbTaskService.query(new Page<>(pageNumber, pageSize), Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result));
+        IPage<TaskListResult> taskListResultIPage = tbTaskService.query(new Page<>(pageNumber, pageSize), Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result);
+        if (Objects.nonNull(taskListResultIPage) && Objects.nonNull(taskListResultIPage.getRecords()) && taskListResultIPage.getRecords().size() > 0) {
+            List<TaskListResult> taskListResultList = taskListResultIPage.getRecords();
+            for (TaskListResult taskListResult : taskListResultList) {
+                if (Objects.equals(taskListResult.getStatus(), TaskStatusEnum.FINISH.getTitle()) && Objects.equals(taskListResult.getResult(), TaskResultEnum.ERROR.getTitle()) && taskListResult.getResetCount() == dictionaryConfig.sysDomain().getAutoCreatePdfResetMaxCount()) {
+                    taskListResult.setResetCreatePdf(true);
+                }
+            }
+        }
+        return ResultUtil.ok(taskListResultIPage);
+    }
+
+    @ApiOperation(value = "重新生成pdf")
+    @RequestMapping(value = "/task/reset_create_pdf", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "重新生成pdf", response = EditResult.class)})
+    public Result resetCreatePdf(@ApiParam(value = "任务id", required = true) @RequestParam String id) throws IOException {
+        Long taskId = Long.parseLong(id);
+        TBTask tbTask = tbTaskService.getById(taskId);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Map<String, Object> map = new HashMap<>();
+        map.computeIfAbsent(SystemConstant.TASK, v -> tbTask);
+        map.computeIfAbsent(SystemConstant.USER, v -> sysUser);
+        asyncCreatePdfTempleteService.createPdf(map, null);
+        return ResultUtil.ok(new EditResult());
     }
 
 //    @ApiOperation(value = "任务管理_批量删除&清空接口")

+ 2 - 0
distributed-print/src/main/resources/application.properties

@@ -57,6 +57,8 @@ sys.config.accessSecret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
 #sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
 sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
+sys.config.autoCreatePdfResetMaxCount=5
+sys.config.threadPoolCoreSize=5
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 org.center.url=https://solar.qmth.com.cn