Commit 8ecd6a50 authored by 霍传世's avatar 霍传世

单线程测试生成pdf

parent ead7ef44
...@@ -21,4 +21,6 @@ public class BasicReportParameters { ...@@ -21,4 +21,6 @@ public class BasicReportParameters {
private String command; private String command;
private String prefix;
} }
...@@ -20,4 +20,6 @@ public class ClassBasicReportParameters { ...@@ -20,4 +20,6 @@ public class ClassBasicReportParameters {
private String command; private String command;
private String prefix;
} }
package com.example.pdfgenerator.Dto;
import lombok.Data;
@Data
public class RetryCommand {
private String retryCommand;
private Object params;
}
...@@ -2,6 +2,7 @@ package com.example.pdfgenerator.controller; ...@@ -2,6 +2,7 @@ package com.example.pdfgenerator.controller;
import com.example.pdfgenerator.Dto.BasicReportParameters; import com.example.pdfgenerator.Dto.BasicReportParameters;
import com.example.pdfgenerator.Dto.ClassBasicReportParameters; import com.example.pdfgenerator.Dto.ClassBasicReportParameters;
import com.example.pdfgenerator.Dto.RetryCommand;
import com.example.pdfgenerator.config.MyDataSourceConfig; import com.example.pdfgenerator.config.MyDataSourceConfig;
import com.qcloud.cos.COSClient; import com.qcloud.cos.COSClient;
import com.qcloud.cos.exception.CosClientException; import com.qcloud.cos.exception.CosClientException;
...@@ -21,10 +22,9 @@ import java.io.BufferedReader; ...@@ -21,10 +22,9 @@ import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.Arrays; import java.util.*;
import java.util.HashMap; import java.util.concurrent.ExecutorService;
import java.util.List; import java.util.concurrent.Executors;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -117,14 +117,21 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -117,14 +117,21 @@ public class GeneratorAllTypePdfByProvinceController {
for (BasicReportParameters parameter : synthesisSchoolSubjectReportParameters) { for (BasicReportParameters parameter : synthesisSchoolSubjectReportParameters) {
if(parameter.getRegion().equals("改革")||parameter.getRegion().equals("改革A")){ if(parameter.getRegion().equals("改革")||parameter.getRegion().equals("改革A")){
String command = "node /myworkSpace/puppeteer2.js \"http://localhost:8080/pdf/subject?province=condition5&school=condition1&examId=condition4&region=conditionC&subSubject=condition6&subjectType=常规\" pdf"; String command = "node /myworkSpace/puppeteer2.js \"http://localhost:8080/pdf/subject?province=condition5&school=condition1&examId=condition4&region=conditionC&subSubject=condition6&subjectType=常规\" pdf";
String fileName = "/myworkSpace/subject/" + parameter.getRegion() + parameter.getProvince() + parameter.getSchool() + parameter.getSubSubject() + parameter.getExamId() + ".pdf";
command = command.replace("condition1", parameter.getSchool()).replace("condition5", parameter.getProvince()).replace("conditionC", parameter.getRegion()).replace("condition4", parameter.getExamId()).replace("condition6", parameter.getSubSubject()) command = command.replace("condition1", parameter.getSchool()).replace("condition5", parameter.getProvince()).replace("conditionC", parameter.getRegion()).replace("condition4", parameter.getExamId()).replace("condition6", parameter.getSubSubject())
.concat(" ").concat("/myworkSpace/subject/" + parameter.getRegion() + parameter.getProvince() + parameter.getSchool() + parameter.getSubSubject() + parameter.getExamId() + ".pdf"); .concat(" ").concat(fileName);
parameter.setCommand(command); parameter.setCommand(command);
parameter.setPrefix("/myworkSpace/subject/");
fileToUrl.put(fileName.replace("/myworkSpace/subject/",""),"PdfSubjectTest/"+fileName.replace("/myworkSpace/subject/",""));
}else{ }else{
String command = "node /myworkSpace/puppeteer2.js \"http://localhost:8080/pdf/subject?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subSubject=condition6&subjectType=常规\" pdf"; String command = "node /myworkSpace/puppeteer2.js \"http://localhost:8080/pdf/subject?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subSubject=condition6&subjectType=常规\" pdf";
String fileName = "/myworkSpace/subject/" + parameter.getRegion() + parameter.getProvince() + parameter.getSchool() + parameter.getSubSubject() + parameter.getExamId() + ".pdf";
command = command.replace("condition1", parameter.getSchool()).replace("condition5", parameter.getProvince()).replace("condition3", parameter.getRegion()).replace("condition4", parameter.getExamId()).replace("condition6", parameter.getSubSubject()) command = command.replace("condition1", parameter.getSchool()).replace("condition5", parameter.getProvince()).replace("condition3", parameter.getRegion()).replace("condition4", parameter.getExamId()).replace("condition6", parameter.getSubSubject())
.concat(" ").concat("/myworkSpace/subject/" + parameter.getRegion() + parameter.getProvince() + parameter.getSchool() + parameter.getSubSubject() + parameter.getExamId() + ".pdf"); .concat(" ").concat(fileName);
parameter.setCommand(command); parameter.setCommand(command);
parameter.setPrefix("/myworkSpace/subject/");
fileToUrl.put(fileName.replace("/myworkSpace/subject/",""),"PdfSubjectTest/"+fileName.replace("/myworkSpace/subject/",""));
} }
} }
...@@ -133,14 +140,21 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -133,14 +140,21 @@ public class GeneratorAllTypePdfByProvinceController {
for (BasicReportParameters synthesisSchoolReportParameter : synthesisSchoolReportParameters) { for (BasicReportParameters synthesisSchoolReportParameter : synthesisSchoolReportParameters) {
if(synthesisSchoolReportParameter.getRegion().equals("改革")||synthesisSchoolReportParameter.getRegion().equals("改革A")){ if(synthesisSchoolReportParameter.getRegion().equals("改革")||synthesisSchoolReportParameter.getRegion().equals("改革A")){
String command = "node /myworkSpace/puppeteer.js \"http://localhost:8080/pdf/basic?province=condition5&school=condition1&examId=condition4&region=conditionC&subjectType=常规\" pdf "; String command = "node /myworkSpace/puppeteer.js \"http://localhost:8080/pdf/basic?province=condition5&school=condition1&examId=condition4&region=conditionC&subjectType=常规\" pdf ";
String fileName = "/myworkSpace/basic/"+synthesisSchoolReportParameter.getRegion()+synthesisSchoolReportParameter.getProvince()+synthesisSchoolReportParameter.getSchool()+synthesisSchoolReportParameter.getExamId()+".pdf";
command = command.replace("condition1", synthesisSchoolReportParameter.getSchool()).replace("condition5", synthesisSchoolReportParameter.getProvince()).replace("conditionC",synthesisSchoolReportParameter.getRegion()).replace("condition4", synthesisSchoolReportParameter.getExamId()) command = command.replace("condition1", synthesisSchoolReportParameter.getSchool()).replace("condition5", synthesisSchoolReportParameter.getProvince()).replace("conditionC",synthesisSchoolReportParameter.getRegion()).replace("condition4", synthesisSchoolReportParameter.getExamId())
.concat(" ").concat("/myworkSpace/basic/"+synthesisSchoolReportParameter.getRegion()+synthesisSchoolReportParameter.getProvince()+synthesisSchoolReportParameter.getSchool()+synthesisSchoolReportParameter.getExamId()+".pdf"); .concat(" ").concat(fileName);
synthesisSchoolReportParameter.setCommand(command); synthesisSchoolReportParameter.setCommand(command);
synthesisSchoolReportParameter.setPrefix("/myworkSpace/basic/");
fileToUrl.put(fileName.replace("/myworkSpace/basic/",""),"PdfSubjectTest/"+fileName.replace("/myworkSpace/subject/",""));
}else{ }else{
String command = "node /myworkSpace/puppeteer.js \"http://localhost:8080/pdf/basic?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subjectType=常规\" pdf "; String command = "node /myworkSpace/puppeteer.js \"http://localhost:8080/pdf/basic?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subjectType=常规\" pdf ";
String fileName = "/myworkSpace/basic/"+synthesisSchoolReportParameter.getRegion()+synthesisSchoolReportParameter.getProvince()+synthesisSchoolReportParameter.getSchool()+synthesisSchoolReportParameter.getExamId()+".pdf";
command = command.replace("condition1", synthesisSchoolReportParameter.getSchool()).replace("condition5", synthesisSchoolReportParameter.getProvince()).replace("condition3",synthesisSchoolReportParameter.getRegion()).replace("condition4", synthesisSchoolReportParameter.getExamId()) command = command.replace("condition1", synthesisSchoolReportParameter.getSchool()).replace("condition5", synthesisSchoolReportParameter.getProvince()).replace("condition3",synthesisSchoolReportParameter.getRegion()).replace("condition4", synthesisSchoolReportParameter.getExamId())
.concat(" ").concat("/myworkSpace/basic/"+synthesisSchoolReportParameter.getRegion()+synthesisSchoolReportParameter.getProvince()+synthesisSchoolReportParameter.getSchool()+synthesisSchoolReportParameter.getExamId()+".pdf"); .concat(" ").concat(fileName);
synthesisSchoolReportParameter.setCommand(command); synthesisSchoolReportParameter.setCommand(command);
synthesisSchoolReportParameter.setPrefix("/myworkSpace/basic/");
fileToUrl.put(fileName.replace("/myworkSpace/basic/",""),"PdfSubjectTest/"+fileName.replace("/myworkSpace/subject/",""));
} }
} }
...@@ -155,6 +169,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -155,6 +169,7 @@ public class GeneratorAllTypePdfByProvinceController {
.concat(" ").concat(fileName); .concat(" ").concat(fileName);
fileToUrl.put(fileName.replace("/myworkSpace/Class/subject/",""),"/testClass/"+synthesisClassSubjectReportParameter.getExamId()+"/"+synthesisClassSubjectReportParameter.getProvince()+"/"+synthesisClassSubjectReportParameter.getSchool()+"/班级学科报告/"+synthesisClassSubjectReportParameter.getClassName()+"/"+synthesisClassSubjectReportParameter.getSubSubject()+"/"+fileName.replace("/myworkSpace/Class/subject/","")); fileToUrl.put(fileName.replace("/myworkSpace/Class/subject/",""),"/testClass/"+synthesisClassSubjectReportParameter.getExamId()+"/"+synthesisClassSubjectReportParameter.getProvince()+"/"+synthesisClassSubjectReportParameter.getSchool()+"/班级学科报告/"+synthesisClassSubjectReportParameter.getClassName()+"/"+synthesisClassSubjectReportParameter.getSubSubject()+"/"+fileName.replace("/myworkSpace/Class/subject/",""));
synthesisClassSubjectReportParameter.setCommand(command); synthesisClassSubjectReportParameter.setCommand(command);
synthesisClassSubjectReportParameter.setPrefix("/myworkSpace/Class/subject/");
} else { } else {
String command = "node /myworkSpace/pdfOfClassSubjectGen.js \"http://localhost:8080/pdf/classSubject?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subSubject=condition6&subjectType=常规&className=conditionA\" pdf"; String command = "node /myworkSpace/pdfOfClassSubjectGen.js \"http://localhost:8080/pdf/classSubject?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subSubject=condition6&subjectType=常规&className=conditionA\" pdf";
...@@ -163,12 +178,14 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -163,12 +178,14 @@ public class GeneratorAllTypePdfByProvinceController {
.concat(" ").concat(fileName); .concat(" ").concat(fileName);
fileToUrl.put(fileName.replace("/myworkSpace/Class/subject/",""),"/testClass/"+synthesisClassSubjectReportParameter.getExamId()+"/"+synthesisClassSubjectReportParameter.getProvince()+"/"+synthesisClassSubjectReportParameter.getSchool()+"/班级学科报告/"+synthesisClassSubjectReportParameter.getClassName()+"/"+synthesisClassSubjectReportParameter.getSubSubject()+"/"+fileName.replace("/myworkSpace/Class/subject/","")); fileToUrl.put(fileName.replace("/myworkSpace/Class/subject/",""),"/testClass/"+synthesisClassSubjectReportParameter.getExamId()+"/"+synthesisClassSubjectReportParameter.getProvince()+"/"+synthesisClassSubjectReportParameter.getSchool()+"/班级学科报告/"+synthesisClassSubjectReportParameter.getClassName()+"/"+synthesisClassSubjectReportParameter.getSubSubject()+"/"+fileName.replace("/myworkSpace/Class/subject/",""));
synthesisClassSubjectReportParameter.setCommand(command); synthesisClassSubjectReportParameter.setCommand(command);
synthesisClassSubjectReportParameter.setPrefix("/myworkSpace/Class/subject/");
} }
} }
List<ClassBasicReportParameters> synthesisClassReportParameters = this.reportJdbcTemplate.query(synthesisClassReportSql,new Object[]{},new BeanPropertyRowMapper<>(ClassBasicReportParameters.class)); List<ClassBasicReportParameters> synthesisClassReportParameters = this.reportJdbcTemplate.query(synthesisClassReportSql,new Object[]{},new BeanPropertyRowMapper<>(ClassBasicReportParameters.class));
for (ClassBasicReportParameters synthesisClassReportParameter : synthesisClassReportParameters) { for (ClassBasicReportParameters synthesisClassReportParameter : synthesisClassReportParameters) {
if(synthesisClassReportParameter.getRegion().equals("改革")||synthesisClassReportParameter.getRegion().equals("改革A")){ if(synthesisClassReportParameter.getRegion().equals("改革")||synthesisClassReportParameter.getRegion().equals("改革A")){
String command = "node /myworkSpace/pdfOfClassBasicGen.js \"http://localhost:8080/pdf/classBasic?province=condition5&school=condition1&examId=condition4&region=conditionC&subjectType=常规&className=conditionA\" pdf "; String command = "node /myworkSpace/pdfOfClassBasicGen.js \"http://localhost:8080/pdf/classBasic?province=condition5&school=condition1&examId=condition4&region=conditionC&subjectType=常规&className=conditionA\" pdf ";
...@@ -177,9 +194,13 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -177,9 +194,13 @@ public class GeneratorAllTypePdfByProvinceController {
command = command.replace("condition1", synthesisClassReportParameter.getSchool()).replace("condition5", synthesisClassReportParameter.getProvince()).replace("conditionC",synthesisClassReportParameter.getRegion()).replace("condition4", synthesisClassReportParameter.getExamId()).replace("conditionA",synthesisClassReportParameter.getClassName()) command = command.replace("condition1", synthesisClassReportParameter.getSchool()).replace("condition5", synthesisClassReportParameter.getProvince()).replace("conditionC",synthesisClassReportParameter.getRegion()).replace("condition4", synthesisClassReportParameter.getExamId()).replace("conditionA",synthesisClassReportParameter.getClassName())
.concat(" ").concat(fileName); .concat(" ").concat(fileName);
fileToUrl.put(fileName.replace("/myworkSpace/Class/Basic/",""),"/testClass/"+synthesisClassReportParameter.getExamId()+"/"+synthesisClassReportParameter.getProvince()+"/"+synthesisClassReportParameter.getSchool()+"/班级综合报告/"+synthesisClassReportParameter.getClassName()+"/"+fileName.replace("/myworkSpace/Class/Basic/","")); fileToUrl.put(fileName.replace("/myworkSpace/Class/Basic/",""),"/testClass/"+synthesisClassReportParameter.getExamId()+"/"+synthesisClassReportParameter.getProvince()+"/"+synthesisClassReportParameter.getSchool()+"/班级综合报告/"+synthesisClassReportParameter.getClassName()+"/"+fileName.replace("/myworkSpace/Class/Basic/",""));
synthesisClassReportParameter.setCommand(command); synthesisClassReportParameter.setCommand(command);
synthesisClassReportParameter.setPrefix("/myworkSpace/Class/Basic/");
} else { } else {
String command = "node/myworkSpace/pdfOfClassBasicGen.js \"http://localhost:8080/pdf/classBasic?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subjectType=常规&className=conditionA\" pdf "; String command = "node/myworkSpace/pdfOfClassBasicGen.js \"http://localhost:8080/pdf/classBasic?province=condition5&school=condition1&examId=condition4&region=非改革&branch=condition3&subjectType=常规&className=conditionA\" pdf ";
...@@ -188,9 +209,13 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -188,9 +209,13 @@ public class GeneratorAllTypePdfByProvinceController {
command = command.replace("condition1", synthesisClassReportParameter.getSchool()).replace("condition5", synthesisClassReportParameter.getProvince()).replace("condition3",synthesisClassReportParameter.getRegion()).replace("condition4", synthesisClassReportParameter.getExamId()).replace("conditionA",synthesisClassReportParameter.getClassName()) command = command.replace("condition1", synthesisClassReportParameter.getSchool()).replace("condition5", synthesisClassReportParameter.getProvince()).replace("condition3",synthesisClassReportParameter.getRegion()).replace("condition4", synthesisClassReportParameter.getExamId()).replace("conditionA",synthesisClassReportParameter.getClassName())
.concat(" ").concat(fileName); .concat(" ").concat(fileName);
fileToUrl.put(fileName.replace("/myworkSpace/Class/Basic/",""),"/testClass/"+synthesisClassReportParameter.getExamId()+"/"+synthesisClassReportParameter.getProvince()+"/"+synthesisClassReportParameter.getSchool()+"/班级综合报告/"+synthesisClassReportParameter.getClassName()+"/"+fileName.replace("/myworkSpace/Class/Basic/","")); fileToUrl.put(fileName.replace("/myworkSpace/Class/Basic/",""),"/testClass/"+synthesisClassReportParameter.getExamId()+"/"+synthesisClassReportParameter.getProvince()+"/"+synthesisClassReportParameter.getSchool()+"/班级综合报告/"+synthesisClassReportParameter.getClassName()+"/"+fileName.replace("/myworkSpace/Class/Basic/",""));
synthesisClassReportParameter.setCommand(command); synthesisClassReportParameter.setCommand(command);
synthesisClassReportParameter.setPrefix("/myworkSpace/Class/Basic/");
} }
} }
...@@ -202,6 +227,9 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -202,6 +227,9 @@ 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(5);
List<RetryCommand> retryCommands = new ArrayList<>();
//分组开始执行记录 //分组开始执行记录
for (String key : schoolReport.keySet()) { for (String key : schoolReport.keySet()) {
...@@ -211,89 +239,42 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -211,89 +239,42 @@ 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) {
executorService.submit(() -> {
logger.info("school:"+schoolLevel.getSchool()+"loading---------------------------------------------------------------"); logger.info("school:"+schoolLevel.getSchool()+"loading---------------------------------------------------------------");
Map<String, List<BasicReportParameters>> schoolMap= schoolSubject.stream().collect(Collectors.groupingBy(BasicReportParameters::getSchool)); Map<String, List<BasicReportParameters>> schoolMap= schoolSubject.stream().collect(Collectors.groupingBy(BasicReportParameters::getSchool));
Map<String, List<ClassBasicReportParameters>> classBasic = classBasicReport.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool)); Map<String, List<ClassBasicReportParameters>> classBasic = classBasicReport.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool));
final Map<String, List<ClassBasicReportParameters>> subjectClass = classSubject.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool)); final Map<String, List<ClassBasicReportParameters>> subjectClass = classSubject.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getSchool));
List<BasicReportParameters> schoolSelf = schoolMap.get(schoolLevel.getSchool()); List<BasicReportParameters> schoolSelf = schoolMap.get(schoolLevel.getSchool());
logger.info("basicReport:loading******************************************"); logger.info("basicReport:loading******************************************");
logger.info("exitCode:"+schoolLevel.getSchool()); logger.info("exitCode:"+schoolLevel.getSchool());
ProcessBuilder processBuilder = new ProcessBuilder(); ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("bash", "-c", schoolLevel.getCommand()); processBuilder.command("bash", "-c", schoolLevel.getCommand());
processBuilder.redirectErrorStream(true); // 合并标准输出和错误输出 processBuilder.redirectErrorStream(true); // 合并标准输出和错误输出
Process process = processBuilder.start(); Process process = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
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();
}
}
for (BasicReportParameters parameters : schoolSelf) {
logger.info("subjectReport:loading***************************************************************");
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(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
File subjectFile = new File("/myworkSpace/subject/"); String line;
File[] subjectFiles = subjectFile.listFiles(); while (true) {
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, fileToUrl.get(file.getName()), file);
try { try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
...@@ -304,24 +285,210 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -304,24 +285,210 @@ public class GeneratorAllTypePdfByProvinceController {
e.printStackTrace(); e.printStackTrace();
} catch (CosClientException e) { } catch (CosClientException e) {
logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传"); logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传");
RetryCommand retryCommand = new RetryCommand();
retryCommand.setRetryCommand(schoolLevel.getCommand());
retryCommand.setParams(schoolLevel);
retryCommands.add(retryCommand);
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());
processBuilderSubject.redirectErrorStream(true); // 合并标准输出和错误输出
Process processSubject = null;
try {
processSubject = processBuilderSubject.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
BufferedReader readerSubject = new BufferedReader(new InputStreamReader(processSubject.getInputStream()));
String lineSubject;
while (true) {
try {
if (!((lineSubject = readerSubject.readLine()) != null)) break;
} 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, 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()+"文件上传有误,重新上传");
RetryCommand retryCommand = new RetryCommand();
retryCommand.setParams(parameters);
retryCommand.setRetryCommand(parameters.getCommand());
retryCommands.add(retryCommand);
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);
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()+"文件上传有误,重新上传");
RetryCommand retryCommand = new RetryCommand();
retryCommand.setParams(arg);
retryCommand.setRetryCommand(arg.getCommand());
retryCommands.add(retryCommand);
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()+"文件上传有误,重新上传");
RetryCommand retryCommand = new RetryCommand();
retryCommand.setParams(classBasicReportParameters);
retryCommand.setRetryCommand(classBasicReportParameters.getCommand());
retryCommands.add(retryCommand);
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());
logger.info("Rows affected:" + rowsAffected);
});
if(retryCommands.size()!=0){
for (RetryCommand retryCommand : retryCommands) {
String command = retryCommand.getRetryCommand();
Object params = retryCommand.getParams();
String filePrefix = "";
if ( params instanceof BasicReportParameters){
BasicReportParameters parametersOne = (BasicReportParameters) params;
filePrefix = parametersOne.getPrefix();
}
if (params instanceof ClassBasicReportParameters) {
ClassBasicReportParameters parametersTwo = (ClassBasicReportParameters) params;
filePrefix = parametersTwo.getPrefix();
}
logger.info("RetryCommand:loading++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
ProcessBuilder processBuilderClassSubject = new ProcessBuilder(); ProcessBuilder processBuilderClassSubject = new ProcessBuilder();
processBuilderClassSubject.command("bash", "-c", classBasicReportParameters.getCommand()); processBuilderClassSubject.command("bash", "-c", command);
processBuilderClassSubject.redirectErrorStream(true); // 合并标准输出和错误输出 processBuilderClassSubject.redirectErrorStream(true); // 合并标准输出和错误输出
Process processClassSubject = processBuilderClassSubject.start(); Process processClassSubject = null;
try {
processClassSubject = processBuilderClassSubject.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
BufferedReader readerClassSubject = new BufferedReader(new InputStreamReader(processClassSubject.getInputStream())); BufferedReader readerClassSubject = new BufferedReader(new InputStreamReader(processClassSubject.getInputStream()));
String lineClassSubject; String lineClassSubject;
while ((lineClassSubject = readerClassSubject.readLine()) != null) { while (true) {
try {
if (!((lineClassSubject = readerClassSubject.readLine()) != null)) break;
} catch (IOException e) {
throw new RuntimeException(e);
}
} }
int exitCodeSubjectClass = processClassSubject.waitFor(); try {
File classSubjectFile = new File("/myworkSpace/Class/subject/"); int exitCodeSubjectClass = processClassSubject.waitFor();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
File classSubjectFile = new File(filePrefix);
File[] classSubjectFiles = classSubjectFile.listFiles(); File[] classSubjectFiles = classSubjectFile.listFiles();
assert classSubjectFiles != null; assert classSubjectFiles != null;
for (File file : classSubjectFiles) { for (File file : classSubjectFiles) {
...@@ -336,18 +503,17 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -336,18 +503,17 @@ public class GeneratorAllTypePdfByProvinceController {
e.printStackTrace(); e.printStackTrace();
} catch (CosClientException e) { } catch (CosClientException e) {
logger.info("cos客户端出现问题"+file.getName()+"文件上传有误,重新上传"); 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());
logger.info("Rows affected:" + rowsAffected);
} }
} }
} }
......
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