Parcourir la source

多线程导入

pengcheng il y a 2 semaines
Parent
commit
25ea2deba5

+ 0 - 12
jeesite.iml

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 0 - 204
modules/core/jeesite-module-core.iml

@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-    <facet type="web" name="Web">
-      <configuration>
-        <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
-      </configuration>
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.30" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle:ojdbc6:11.2.0.3" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: net.sourceforge.jtds:jtds:1.3.1" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.postgresql:postgresql:42.3.7" level="project" />
-    <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
-    <orderEntry type="module" module-name="jeesite-common" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-text:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
-    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
-    <orderEntry type="library" name="Maven: de.ruedigermoeller:fst:2.57" level="project" />
-    <orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
-    <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.5.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:4.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.woodstox:woodstox-core:6.3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.83_noneautotype" level="project" />
-    <orderEntry type="library" name="Maven: jaxen:jaxen:1.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.30" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-email:1.5" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.mail:javax.mail:1.5.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
-    <orderEntry type="library" name="Maven: eu.bitwalker:UserAgentUtils:1.21" level="project" />
-    <orderEntry type="library" name="Maven: net.coobird:thumbnailator:0.4.17" level="project" />
-    <orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-jpeg:3.8.2" level="project" />
-    <orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-core:3.8.2" level="project" />
-    <orderEntry type="library" name="Maven: com.twelvemonkeys.imageio:imageio-metadata:3.8.2" level="project" />
-    <orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-lang:3.8.2" level="project" />
-    <orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-io:3.8.2" level="project" />
-    <orderEntry type="library" name="Maven: com.twelvemonkeys.common:common-image:3.8.2" level="project" />
-    <orderEntry type="library" name="Maven: com.bladejava:blade-patchca:1.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.24" level="project" />
-    <orderEntry type="library" name="Maven: net.sf.jmimemagic:jmimemagic:0.1.5" level="project" />
-    <orderEntry type="library" name="Maven: com.google.zxing:core:3.4.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.zxing:javase:3.4.1" level="project" />
-    <orderEntry type="library" name="Maven: com.beust:jcommander:1.78" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: com.github.jai-imageio:jai-imageio-core:1.4.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
-    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-scratchpad:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.36" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.36" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.36" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.36" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.11" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.11" level="project" />
-    <orderEntry type="library" name="Maven: junit:junit:4.13.2" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.jeesite:jeesite-framework:5.2.0-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.jeesite:jeesite-confmeta:5.2.0-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jta-atomikos:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.18.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.18.0" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
-    <orderEntry type="library" name="Maven: com.atomikos:transactions-jms:4.0.6" level="project" />
-    <orderEntry type="library" name="Maven: com.atomikos:transactions-jta:4.0.6" level="project" />
-    <orderEntry type="library" name="Maven: com.atomikos:transactions-api:4.0.6" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: com.atomikos:transactions:4.0.6" level="project" />
-    <orderEntry type="library" name="Maven: com.atomikos:atomikos-util:4.0.6" level="project" />
-    <orderEntry type="library" name="Maven: com.atomikos:transactions-jdbc:4.0.6" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.10" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.7" level="project" />
-    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.5" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cas:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.jasig.cas.client:cas-client-core:3.2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.10.0" level="project" />
-    <orderEntry type="library" name="Maven: org.owasp.encoder:encoder:1.2.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.11.1" level="project" />
-    <orderEntry type="library" name="Maven: net.oschina.j2cache:j2cache-core:2.8.0-release" level="project" />
-    <orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.9.3" level="project" />
-    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.10.0" level="project" />
-    <orderEntry type="library" name="Maven: jline:jline:2.14.2" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.7.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.7.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.7.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.9.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.82.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.23" level="project" />
-    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-test:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.65" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.65" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.23" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.7.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.65" level="project" />
-    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.3.Final" level="project" />
-    <orderEntry type="library" name="Maven: com.jeesite:beetl:3.10-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.6.6" level="project" />
-    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.15" level="project" />
-    <orderEntry type="library" name="Maven: com.jeesite:jeesite-module-swagger:5.0.2-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.jeesite:jeesite-module-core:5.0.2-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.6.0" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.12.17" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.1.7" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:2.0.0.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:2.0.0.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.3.1.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-webmvc:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.10.5" level="project" />
-    <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:2.0.9" level="project" />
-  </component>
-</module>

+ 19 - 0
modules/report/src/main/java/com/jeesite/modules/report/dto/ImportMarketScaleMessage.java

@@ -0,0 +1,19 @@
+package com.jeesite.modules.report.dto;
+
+
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+@RequiredArgsConstructor
+@Slf4j
+@Data
+public class ImportMarketScaleMessage {
+
+   private Integer successNum;
+
+   private Integer failureNum;
+
+   private StringBuilder failureMsg = new StringBuilder();
+
+}

+ 84 - 18
modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java

@@ -14,6 +14,7 @@ import com.jeesite.modules.basedata.entity.TemplateInfo;
 import com.jeesite.modules.report.dao.ReportHtmlDao;
 import com.jeesite.modules.report.dao.ResearchReportDao;
 import com.jeesite.modules.report.dao.SiteInfoDao;
+import com.jeesite.modules.report.dto.ImportMarketScaleMessage;
 import com.jeesite.modules.report.dto.ResearchReportDto;
 import com.jeesite.modules.report.dto.ResearchReportMarketDrivenDto;
 import com.jeesite.modules.report.dto.ResearchReportMarketScaleDto;
@@ -28,12 +29,16 @@ import com.jeesite.modules.sys.entity.DictData;
 import com.jeesite.modules.sys.utils.RedisUtil;
 import org.dom4j.DocumentException;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
 import java.util.regex.Matcher;
 
 /**
@@ -47,14 +52,15 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 	private TemplateInfoDao templateInfoDao;
 	@Resource
 	private SiteInfoDao siteInfoDao;
-
 	@Resource
 	private DictCusDataDao dictCusDataDao;
-
 	@Resource
 	private ReportHtmlDao reportHtmlDao;
 	@Resource
 	private RedisUtil redisUtil;
+	@Resource
+	private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
 
 	/**
 	 * 获取单条数据
@@ -941,24 +947,72 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 		if(file.isEmpty()){
 			throw new ServiceException("请选择要导入的文件");
 		}
-		int saveCount = 0;
 		StringBuffer msg = new StringBuffer();
 		ExcelImport ei = new ExcelImport(file,2,0);
+
+		List<ImportMarketScaleMessage> importMarketScaleMessages = new ArrayList<>();
 		List<ResearchReportMarketScaleDto> list = ei.getDataList(ResearchReportMarketScaleDto.class, new String[0]);
+
+		List<CompletableFuture<Boolean>> futures = new ArrayList<>();
+		for (List<ResearchReportMarketScaleDto> reportMarketScaleData : splitList(list, 500)) {
+			CompletableFuture<Boolean> future = CompletableFuture.supplyAsync(() -> {
+				ImportMarketScaleMessage importMarketScaleMessage = importMarketScale(reportMarketScaleData);
+				importMarketScaleMessages.add(importMarketScaleMessage);
+				return true;
+			}, threadPoolTaskExecutor);
+			futures.add(future);
+		}
+		try {
+			CompletableFuture[] futureArr = {};
+			CompletableFuture.allOf(futures.toArray(futureArr)).get();
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		} catch (ExecutionException e) {
+			e.printStackTrace();
+		}
+
+		int successNum = 0;
+
+		StringBuilder failureMsg = new StringBuilder();
+		for (ImportMarketScaleMessage i:importMarketScaleMessages)
+		{
+			successNum += i.getSuccessNum();
+			failureMsg.append(i.getFailureMsg());
+		}
+
+		// 全部保存
+		int total = list.size();
+		if(total == successNum){
+			failureMsg.insert(0,"数据导入成功,共"+successNum+"条");
+		}else if(successNum > 0){
+			failureMsg.insert(0,"数据部分导入成功,成功"+successNum+"条,失败"+(total - successNum)+"条!<br/>");
+		}
+		return failureMsg.toString();
+	}
+
+	public ImportMarketScaleMessage importMarketScale(List<ResearchReportMarketScaleDto> list){
+
+		int successNum = 0;
+		int failureNum = 0;
+		StringBuilder msg = new StringBuilder();
+
 		if(list != null && list.size() > 0){
 			for(int i = 0; i < list.size(); i++){
 				boolean isSave = true;
 				ResearchReportMarketScaleDto dto = list.get(i);
 				if(StringUtils.isBlank(dto.getReportCode())){
-					msg.append("第"+(i+1)+"行,报告代码不能为空!");
+					//msg.append("第"+(i+1)+"行,报告代码不能为空!");
+					msg.append("<br/>").append("报告代码 ").append(dto.getReportCode()).append(" 不能为空");
 					isSave = false;
 				}
 				if(StringUtils.isBlank(dto.getReportRegion())){
-					msg.append("第"+(i+1)+"行,版本不能为空!");
+					//msg.append("第"+(i+1)+"行,版本不能为空!");
+					msg.append("<br/>").append("版本 ").append(dto.getReportRegion()).append(" 不能为空");
 					isSave = false;
 				}
 				if(StringUtils.isBlank(dto.getMarketScale())){
-					msg.append("第"+(i+1)+"行,市场规模不能为空!");
+					//msg.append("第"+(i+1)+"行,市场规模不能为空!");
+					msg.append("<br/>").append("市场规模 ").append(dto.getMarketScale()).append(" 不能为空");
 					isSave = false;
 				}
 				if(isSave){
@@ -969,29 +1023,41 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 						ResearchReport researchReport = dao.getByEntity(where);
 						if (researchReport != null) {
 							researchReport.setMarketScale(String.format(Constants.textFormat, dto.getMarketScale()).replaceAll("\\n", "<br/>"));
-							saveCount += dao.update(researchReport);
+							successNum += dao.update(researchReport);
 						} else {
-							msg.append("第"+(i+1)+"行,研究报告对应为空!");
+							//msg.append("第"+(i+1)+"行,研究报告对应为空!");
+							msg.append("<br/>").append(dto.getReportCode()).append(" 不能为空");
 						}
 					} catch (Exception e) {
-						msg.append("第"+(i+1)+"行,研究报告报告代码与版本存在重复!");
+						msg.append("<br/>").append("研究报告报告代码与版本存在重复!");
 					}
 				}
 			}
-		}else {
-			msg.append("数据为空,导入失败!");
 		}
 
-		// 全部保存
-		int total = list.size();
-		if(total == saveCount){
-			msg.insert(0,"数据导入成功,共"+saveCount+"条");
-		}else if(saveCount > 0){
-			msg.insert(0,"数据部分导入成功,成功"+saveCount+"条,失败"+(total - saveCount)+"条!<br/>");
+		ImportMarketScaleMessage importMarketScaleMessage = new ImportMarketScaleMessage();
+		importMarketScaleMessage.setFailureMsg(msg);
+		importMarketScaleMessage.setSuccessNum(successNum);
+		importMarketScaleMessage.setFailureNum(failureNum);
+		return importMarketScaleMessage;
+	}
+
+	/**
+	 * 按照数量切分导入列表
+	 * @param list
+	 * @param chunkSize
+	 * @return
+	 */
+	public List<List<ResearchReportMarketScaleDto>> splitList(List<ResearchReportMarketScaleDto> list, int chunkSize) {
+		List<List<ResearchReportMarketScaleDto>> result = new ArrayList<>();
+		for (int i = 0; i < list.size(); i += chunkSize) {
+			int end = Math.min(i + chunkSize, list.size());
+			result.add(list.subList(i, end));
 		}
-		return msg.toString();
+		return result;
 	}
 
+
 	@Transactional
 	public String marketDrivenImportData(MultipartFile file) throws Exception {
 		if(file.isEmpty()){