Commit f21eb8d4 authored by 霍传世's avatar 霍传世

线程测试生成pdf

parent ba34ecd5
...@@ -11,6 +11,7 @@ import com.qcloud.cos.model.PutObjectResult; ...@@ -11,6 +11,7 @@ import com.qcloud.cos.model.PutObjectResult;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
...@@ -25,6 +26,8 @@ import java.util.Arrays; ...@@ -25,6 +26,8 @@ import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -43,7 +46,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -43,7 +46,7 @@ public class GeneratorAllTypePdfByProvinceController {
private static final String bucketName = "schoolreportpdf-1317275686"; private static final String bucketName = "schoolreportpdf-1317275686";
@RequestMapping("/GeneratorByProvinceName") @RequestMapping("/GeneratorByProvinceName")
public void generatorName(@RequestParam("examId")String examId,@RequestParam(value = "provinceName",required = false)String provinceName) throws IOException, InterruptedException { public ResponseEntity generatorName(@RequestParam("examId")String examId, @RequestParam(value = "provinceName",required = false)String provinceName) throws IOException, InterruptedException {
String suffix = examId.trim().replace("TDA","").replace("G3","").replace("G2","").trim(); String suffix = examId.trim().replace("TDA","").replace("G3","").replace("G2","").trim();
...@@ -202,6 +205,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -202,6 +205,7 @@ public class GeneratorAllTypePdfByProvinceController {
Map<String, List<ClassBasicReportParameters>> classSubjectReport = synthesisClassSubjectReportParameters.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getProvince)); Map<String, List<ClassBasicReportParameters>> classSubjectReport = synthesisClassSubjectReportParameters.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getProvince));
ExecutorService executorService = Executors.newFixedThreadPool(8);
//分组开始执行记录 //分组开始执行记录
for (String key : schoolReport.keySet()) { for (String key : schoolReport.keySet()) {
...@@ -211,89 +215,43 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -211,89 +215,43 @@ public class GeneratorAllTypePdfByProvinceController {
List<ClassBasicReportParameters> classBasicReport = classReport.get(key); List<ClassBasicReportParameters> classBasicReport = classReport.get(key);
List<ClassBasicReportParameters> classSubject = classSubjectReport.get(key); List<ClassBasicReportParameters> classSubject = classSubjectReport.get(key);
for (BasicReportParameters schoolLevel : schoolBasicReport) { for (BasicReportParameters schoolLevel : schoolBasicReport) {
logger.info("school:"+schoolLevel.getSchool()+"loading---------------------------------------------------------------"); executorService.submit(() -> {
Map<String, List<BasicReportParameters>> schoolMap= schoolSubject.stream().collect(Collectors.groupingBy(BasicReportParameters::getSchool)); logger.info("school:"+schoolLevel.getSchool()+"loading---------------------------------------------------------------");
Map<String, List<ClassBasicReportParameters>> classBasic = classBasicReport.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool)); Map<String, List<BasicReportParameters>> schoolMap= schoolSubject.stream().collect(Collectors.groupingBy(BasicReportParameters::getSchool));
final Map<String, List<ClassBasicReportParameters>> subjectClass = classSubject.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool)); Map<String, List<ClassBasicReportParameters>> classBasic = classBasicReport.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool));
List<BasicReportParameters> schoolSelf = schoolMap.get(schoolLevel.getSchool()); final Map<String, List<ClassBasicReportParameters>> subjectClass = classSubject.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool));
logger.info("basicReport:loading******************************************"); List<BasicReportParameters> schoolSelf = schoolMap.get(schoolLevel.getSchool());
logger.info("exitCode:"+schoolLevel.getSchool()); logger.info("basicReport:loading******************************************");
ProcessBuilder processBuilder = new ProcessBuilder(); logger.info("exitCode:"+schoolLevel.getSchool());
processBuilder.command("bash", "-c", schoolLevel.getCommand()); ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.redirectErrorStream(true); // 合并标准输出和错误输出 processBuilder.command("bash", "-c", schoolLevel.getCommand());
Process process = processBuilder.start(); processBuilder.redirectErrorStream(true); // 合并标准输出和错误输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); Process process = null;
String line;
while ((line = reader.readLine()) != null) {
}
int exitCode = process.waitFor();
//上传文件
File basicFile = new File("/myworkSpace/basic/");
File[] basicFiles = basicFile.listFiles();
assert basicFiles != null;
for (File file : basicFiles) {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, "PdfTest/"+file.getName(), file);
try { try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); process = processBuilder.start();
logger.info(putObjectResult.getRequestId()); } catch (IOException e) {
file.delete(); throw new RuntimeException(e);
} catch (CosServiceException e) {
logger.info("cos服务出现问题");
e.printStackTrace();
} catch (CosClientException e) {
logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传");
e.printStackTrace();
} }
} BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
for (BasicReportParameters parameters : schoolSelf) { String line;
logger.info("subjectReport:loading***************************************************************"); while (true) {
logger.info("exitCode:"+parameters.getSubSubject());
ProcessBuilder processBuilderSubject = new ProcessBuilder();
processBuilderSubject.command("bash", "-c", parameters.getCommand());
processBuilderSubject.redirectErrorStream(true); // 合并标准输出和错误输出
Process processSubject = processBuilderSubject.start();
BufferedReader readerSubject = new BufferedReader(new InputStreamReader(processSubject.getInputStream()));
String lineSubject;
while ((lineSubject = readerSubject.readLine()) != null) {
}
int exitCodeSubject = processSubject.waitFor();
File subjectFile = new File("/myworkSpace/subject/");
File[] subjectFiles = subjectFile.listFiles();
assert subjectFiles != null;
for (File file : subjectFiles) {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, "PdfSubjectTest/"+file.getName(), file);
try { try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); if (!((line = reader.readLine()) != null)) break;
logger.info(putObjectResult.getRequestId()); } catch (IOException e) {
file.delete(); throw new RuntimeException(e);
} catch (CosServiceException e) {
logger.info("cos服务出现问题");
e.printStackTrace();
} catch (CosClientException e) {
logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传");
e.printStackTrace();
} }
} }
} try {
List<ClassBasicReportParameters> args = classBasic.get(schoolLevel.getSchool()); int exitCode = process.waitFor();
List<ClassBasicReportParameters> params = subjectClass.get(schoolLevel.getSchool()); } catch (InterruptedException e) {
for (ClassBasicReportParameters arg : args) { throw new RuntimeException(e);
logger.info("classBasic:loading++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
logger.info("exitCode:"+arg.getClassName());
ProcessBuilder processBuilderClass = new ProcessBuilder();
processBuilderClass.command("bash", "-c", arg.getCommand());
processBuilderClass.redirectErrorStream(true); // 合并标准输出和错误输出
Process processClass = processBuilderClass.start();
BufferedReader readerClass = new BufferedReader(new InputStreamReader(processClass.getInputStream()));
String lineClass;
while ((lineClass = readerClass.readLine()) != null) {
} }
int exitCodeSubject = processClass.waitFor(); //上传文件
File classBasicFile = new File("/myworkSpace/Class/Basic/"); File basicFile = new File("/myworkSpace/basic/");
File[] classBasicFiles = classBasicFile.listFiles(); File[] basicFiles = basicFile.listFiles();
assert classBasicFiles != null; assert basicFiles != null;
for (File file : classBasicFiles) { for (File file : basicFiles) {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileToUrl.get(file.getName()), file); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, "PdfTest/"+file.getName(), file);
try { try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
logger.info(putObjectResult.getRequestId()); logger.info(putObjectResult.getRequestId());
...@@ -306,25 +264,82 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -306,25 +264,82 @@ public class GeneratorAllTypePdfByProvinceController {
e.printStackTrace(); e.printStackTrace();
} }
} }
final Map<String, List<ClassBasicReportParameters>> collect = params.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getClassName)); for (BasicReportParameters parameters : schoolSelf) {
List<ClassBasicReportParameters> list = collect.get(arg.getClassName()); logger.info("subjectReport:loading***************************************************************");
for (ClassBasicReportParameters classBasicReportParameters : list) { logger.info("exitCode:"+parameters.getSubSubject());
logger.info("classSubject:loading++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); ProcessBuilder processBuilderSubject = new ProcessBuilder();
logger.info("exitCode:"+classBasicReportParameters.getSubSubject()); processBuilderSubject.command("bash", "-c", parameters.getCommand());
ProcessBuilder processBuilderClassSubject = new ProcessBuilder(); processBuilderSubject.redirectErrorStream(true); // 合并标准输出和错误输出
processBuilderClassSubject.command("bash", "-c", classBasicReportParameters.getCommand()); Process processSubject = null;
processBuilderClassSubject.redirectErrorStream(true); // 合并标准输出和错误输出 try {
Process processClassSubject = processBuilderClassSubject.start(); processSubject = processBuilderSubject.start();
BufferedReader readerClassSubject = new BufferedReader(new InputStreamReader(processClassSubject.getInputStream())); } catch (IOException e) {
String lineClassSubject; throw new RuntimeException(e);
while ((lineClassSubject = readerClassSubject.readLine()) != null) {
} }
int exitCodeSubjectClass = processClassSubject.waitFor(); BufferedReader readerSubject = new BufferedReader(new InputStreamReader(processSubject.getInputStream()));
File classSubjectFile = new File("/myworkSpace/Class/subject/"); String lineSubject;
File[] classSubjectFiles = classSubjectFile.listFiles(); while (true) {
assert classSubjectFiles != null; try {
for (File file : classSubjectFiles) { if (!((lineSubject = readerSubject.readLine()) != null)) break;
logger.info(file.getName()+"=file—>key="+fileToUrl.get(file.getName())); } catch (IOException e) {
throw new RuntimeException(e);
}
}
try {
int exitCodeSubject = processSubject.waitFor();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
File subjectFile = new File("/myworkSpace/subject/");
File[] subjectFiles = subjectFile.listFiles();
assert subjectFiles != null;
for (File file : subjectFiles) {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, "PdfSubjectTest/"+file.getName(), file);
try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
logger.info(putObjectResult.getRequestId());
file.delete();
} catch (CosServiceException e) {
logger.info("cos服务出现问题");
e.printStackTrace();
} catch (CosClientException e) {
logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传");
e.printStackTrace();
}
}
}
List<ClassBasicReportParameters> args = classBasic.get(schoolLevel.getSchool());
List<ClassBasicReportParameters> params = subjectClass.get(schoolLevel.getSchool());
for (ClassBasicReportParameters arg : args) {
logger.info("classBasic:loading++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
logger.info("exitCode:"+arg.getClassName());
ProcessBuilder processBuilderClass = new ProcessBuilder();
processBuilderClass.command("bash", "-c", arg.getCommand());
processBuilderClass.redirectErrorStream(true); // 合并标准输出和错误输出
Process processClass = null;
try {
processClass = processBuilderClass.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
BufferedReader readerClass = new BufferedReader(new InputStreamReader(processClass.getInputStream()));
String lineClass;
while (true) {
try {
if (!((lineClass = readerClass.readLine()) != null)) break;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
try {
int exitCodeSubject = processClass.waitFor();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
File classBasicFile = new File("/myworkSpace/Class/Basic/");
File[] classBasicFiles = classBasicFile.listFiles();
assert classBasicFiles != null;
for (File file : classBasicFiles) {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileToUrl.get(file.getName()), file); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileToUrl.get(file.getName()), file);
try { try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
...@@ -338,17 +353,64 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -338,17 +353,64 @@ public class GeneratorAllTypePdfByProvinceController {
e.printStackTrace(); e.printStackTrace();
} }
} }
final Map<String, List<ClassBasicReportParameters>> collect = params.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getClassName));
List<ClassBasicReportParameters> list = collect.get(arg.getClassName());
for (ClassBasicReportParameters classBasicReportParameters : list) {
logger.info("classSubject:loading++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
logger.info("exitCode:"+classBasicReportParameters.getSubSubject());
ProcessBuilder processBuilderClassSubject = new ProcessBuilder();
processBuilderClassSubject.command("bash", "-c", classBasicReportParameters.getCommand());
processBuilderClassSubject.redirectErrorStream(true); // 合并标准输出和错误输出
Process processClassSubject = null;
try {
processClassSubject = processBuilderClassSubject.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
BufferedReader readerClassSubject = new BufferedReader(new InputStreamReader(processClassSubject.getInputStream()));
String lineClassSubject;
while (true) {
try {
if (!((lineClassSubject = readerClassSubject.readLine()) != null)) break;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
try {
int exitCodeSubjectClass = processClassSubject.waitFor();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
File classSubjectFile = new File("/myworkSpace/Class/subject/");
File[] classSubjectFiles = classSubjectFile.listFiles();
assert classSubjectFiles != null;
for (File file : classSubjectFiles) {
logger.info(file.getName()+"=file—>key="+fileToUrl.get(file.getName()));
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileToUrl.get(file.getName()), file);
try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
logger.info(putObjectResult.getRequestId());
file.delete();
} catch (CosServiceException e) {
logger.info("cos服务出现问题");
e.printStackTrace();
} catch (CosClientException e) {
logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传");
e.printStackTrace();
}
}
}
} }
} //插入数据
//插入数据 int rowsAffected = reportJdbcTemplate.update("UPDATE school_report_task_generate SET status = ? WHERE exam_id = ? AND region = ? AND province = ? AND school = ?",1,schoolLevel.getExamId(),schoolLevel.getRegion(),schoolLevel.getProvince(),schoolLevel.getSchool());
int rowsAffected = reportJdbcTemplate.update("UPDATE school_report_task_generate SET status = ? WHERE exam_id = ? AND region = ? AND province = ? AND school = ?",1,schoolLevel.getExamId(),schoolLevel.getRegion(),schoolLevel.getProvince(),schoolLevel.getSchool());
logger.info("Rows affected:" + rowsAffected); logger.info("Rows affected:" + rowsAffected);
});
} }
} }
return null;
} }
} }
...@@ -273,6 +273,7 @@ public class PDFGeByProvinceBatchController { ...@@ -273,6 +273,7 @@ public class PDFGeByProvinceBatchController {
// } // }
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment