文档生成添加 11.23

master
zhc077 13 hours ago
parent 2250cb1137
commit ee3036e477
  1. 1
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java
  2. 14
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/Project4WordServiceImpl.java
  3. 54
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/config/AsyncExecutor.java

@ -610,6 +610,7 @@ public class ProjectController extends JeecgController<Project, IProjectService>
log.setOperationMark("申请人提交项目书,申请人提交预算书"); log.setOperationMark("申请人提交项目书,申请人提交预算书");
//提交项目时,生成项目书pdf文件 //提交项目时,生成项目书pdf文件
// System.out.println("提交项目-the thread exec end:" + Thread.currentThread().getName());
iProject4WordService.createXiangMuShu4Word(project); iProject4WordService.createXiangMuShu4Word(project);
} }
//申请单位审核通过,并向上级提交->科技主管部门待提交(区/县管理员) //申请单位审核通过,并向上级提交->科技主管部门待提交(区/县管理员)

@ -35,6 +35,7 @@ import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
@ -257,7 +258,16 @@ public class Project4WordServiceImpl extends ServiceImpl<ProjectMapper, Project>
private String uploadPath;*/ private String uploadPath;*/
@Override @Override
@Async("getAsyncExecutorMethod")
public Object createXiangMuShu4Word(Project obj) { public Object createXiangMuShu4Word(Project obj) {
log.info("---------createXiangMuShu4Word start,the thread name: {}", Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
long startTime = System.currentTimeMillis();
ProjectDto dto = getData4Xiangmushu(obj); ProjectDto dto = getData4Xiangmushu(obj);
if (ObjectUtil.isEmpty(dto)) { if (ObjectUtil.isEmpty(dto)) {
return null; return null;
@ -326,6 +336,9 @@ public class Project4WordServiceImpl extends ServiceImpl<ProjectMapper, Project>
} catch (Exception e2) { } catch (Exception e2) {
e2.printStackTrace(); e2.printStackTrace();
} }
long s = (System.currentTimeMillis() - startTime) / 1000;
log.info("---------createXiangMuShu4Word,the thread name:{},生成pdf文件用时: {}", Thread.currentThread().getName(), s + "秒");
return dto; return dto;
} }
@ -333,6 +346,7 @@ public class Project4WordServiceImpl extends ServiceImpl<ProjectMapper, Project>
public Object createPdf(String wordPath, File file, String padFileName) { public Object createPdf(String wordPath, File file, String padFileName) {
if (wordPath.equals("")) { if (wordPath.equals("")) {
log.error("---------------word文件路径不能为空!"); log.error("---------------word文件路径不能为空!");
return null;
} else { } else {
try { try {
// FileUtils.convertDocxToPdf(wordPath, file + File.separator + padFileName); // FileUtils.convertDocxToPdf(wordPath, file + File.separator + padFileName);

@ -0,0 +1,54 @@
package org.jeecg.modules.system.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @Description: TODO
* @Author: Z.H.C
* @CreateTime: 2024-11-23 16:52
* @Version: 1.0
*/
@Configuration
@EnableAsync
public class AsyncExecutor {
private static final Logger logger = LoggerFactory.getLogger(AsyncExecutor.class);
//核心线程数
private static final int CORE_POOL_SIZE = 5;
//最大线程数
private static final int MAX_POOL_SIZE = 5;
//队列大小
private static final int QUEUE_CAPACITY = 30;
//线程池中的线程的名称前缀
private static final String THREAD_NAME = "MyExecutor-";
@Bean
public ThreadPoolTaskExecutor getAsyncExecutorMethod() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//配置核心线程数
executor.setCorePoolSize(CORE_POOL_SIZE);
//配置最大线程数
executor.setMaxPoolSize(MAX_POOL_SIZE);
//配置队列大小
executor.setQueueCapacity(QUEUE_CAPACITY);
//配置线程池中的线程的名称前缀
executor.setThreadNamePrefix(THREAD_NAME);
//配置线程池拒绝策略,我设置为CallerRunsPolicy,当线程和队列都满了,由发起线程的主线程自己执行
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}
Loading…
Cancel
Save