Commit 857d6a6d authored by 霍传世's avatar 霍传世

测试生成上传

parent 5ce9b6db
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.24</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
......
package com.example.pdfgenerator.Dto;
import lombok.Data;
@Data
public class TaskPoolDto {
private String examId;
private String region;
private String province;
private String school;
private Integer status;
}
...@@ -4,10 +4,13 @@ import com.example.pdfgenerator.Dto.BasicReportParameters; ...@@ -4,10 +4,13 @@ import com.example.pdfgenerator.Dto.BasicReportParameters;
import com.example.pdfgenerator.Dto.ClassBasicReportParameters; import com.example.pdfgenerator.Dto.ClassBasicReportParameters;
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.CosServiceException;
import com.qcloud.cos.model.PutObjectRequest;
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;
...@@ -15,9 +18,11 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -15,9 +18,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.io.BufferedReader; import java.io.BufferedReader;
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.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -29,14 +34,16 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -29,14 +34,16 @@ public class GeneratorAllTypePdfByProvinceController {
private static final Logger logger = LoggerFactory.getLogger(GeneratorAllTypePdfByProvinceController.class); private static final Logger logger = LoggerFactory.getLogger(GeneratorAllTypePdfByProvinceController.class);
@Autowired @Autowired
private COSClient coscLient; private COSClient cosClient;
private static Map<String,String> fileToUrl = new HashMap<>();
JdbcTemplate reportJdbcTemplate = MyDataSourceConfig.getReportJdbcTemplate(); JdbcTemplate reportJdbcTemplate = MyDataSourceConfig.getReportJdbcTemplate();
private static final String bucketName = "schoolreportpdf-1317275686"; private static final String bucketName = "schoolreportpdf-1317275686";
@RequestMapping("/GeneratorByProvinceName") @RequestMapping("/GeneratorByProvinceName")
public ResponseEntity generatorName(@RequestParam("examId")String examId,@RequestParam(value = "provinceName",required = false)String provinceName) throws IOException, InterruptedException { public void 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();
...@@ -146,6 +153,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -146,6 +153,7 @@ public class GeneratorAllTypePdfByProvinceController {
String fileName = "/myworkSpace/Class/subject/" + synthesisClassSubjectReportParameter.getRegion() + synthesisClassSubjectReportParameter.getProvince() + synthesisClassSubjectReportParameter.getSchool() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getExamId() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getClassName().replace(" ","")+ ".pdf"; String fileName = "/myworkSpace/Class/subject/" + synthesisClassSubjectReportParameter.getRegion() + synthesisClassSubjectReportParameter.getProvince() + synthesisClassSubjectReportParameter.getSchool() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getExamId() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getClassName().replace(" ","")+ ".pdf";
command = command.replace("condition1", synthesisClassSubjectReportParameter.getSchool()).replace("condition5", synthesisClassSubjectReportParameter.getProvince()).replace("conditionC", synthesisClassSubjectReportParameter.getRegion()).replace("condition4", synthesisClassSubjectReportParameter.getExamId()).replace("condition6", synthesisClassSubjectReportParameter.getSubSubject()).replace("conditionA",synthesisClassSubjectReportParameter.getClassName()) command = command.replace("condition1", synthesisClassSubjectReportParameter.getSchool()).replace("condition5", synthesisClassSubjectReportParameter.getProvince()).replace("conditionC", synthesisClassSubjectReportParameter.getRegion()).replace("condition4", synthesisClassSubjectReportParameter.getExamId()).replace("condition6", synthesisClassSubjectReportParameter.getSubSubject()).replace("conditionA",synthesisClassSubjectReportParameter.getClassName())
.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/",""));
synthesisClassSubjectReportParameter.setCommand(command); synthesisClassSubjectReportParameter.setCommand(command);
} 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";
...@@ -153,6 +161,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -153,6 +161,7 @@ public class GeneratorAllTypePdfByProvinceController {
String fileName = "/myworkSpace/Class/subject/" + synthesisClassSubjectReportParameter.getRegion() + synthesisClassSubjectReportParameter.getProvince() + synthesisClassSubjectReportParameter.getSchool() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getExamId() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getClassName().replace(" ","")+".pdf"; String fileName = "/myworkSpace/Class/subject/" + synthesisClassSubjectReportParameter.getRegion() + synthesisClassSubjectReportParameter.getProvince() + synthesisClassSubjectReportParameter.getSchool() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getExamId() + synthesisClassSubjectReportParameter.getSubSubject() + synthesisClassSubjectReportParameter.getClassName().replace(" ","")+".pdf";
command = command.replace("condition1", synthesisClassSubjectReportParameter.getSchool()).replace("condition5", synthesisClassSubjectReportParameter.getProvince()).replace("condition3", synthesisClassSubjectReportParameter.getRegion()).replace("condition4", synthesisClassSubjectReportParameter.getExamId()).replace("condition6", synthesisClassSubjectReportParameter.getSubSubject()).replace("conditionA",synthesisClassSubjectReportParameter.getClassName()) command = command.replace("condition1", synthesisClassSubjectReportParameter.getSchool()).replace("condition5", synthesisClassSubjectReportParameter.getProvince()).replace("condition3", synthesisClassSubjectReportParameter.getRegion()).replace("condition4", synthesisClassSubjectReportParameter.getExamId()).replace("condition6", synthesisClassSubjectReportParameter.getSubSubject()).replace("conditionA",synthesisClassSubjectReportParameter.getClassName())
.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/",""));
synthesisClassSubjectReportParameter.setCommand(command); synthesisClassSubjectReportParameter.setCommand(command);
} }
} }
...@@ -168,7 +177,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -168,7 +177,7 @@ 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.getExamId()+"/"+synthesisClassReportParameter.getProvince()+"/"+synthesisClassReportParameter.getSchool()+"/班级综合报告/"+synthesisClassReportParameter.getClassName()+"/"+fileName.replace("/myworkSpace/Class/Basic/",""));
synthesisClassReportParameter.setCommand(command); synthesisClassReportParameter.setCommand(command);
} else { } else {
...@@ -179,7 +188,7 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -179,7 +188,7 @@ 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.getExamId()+"/"+synthesisClassReportParameter.getProvince()+"/"+synthesisClassReportParameter.getSchool()+"/班级综合报告/"+synthesisClassReportParameter.getClassName()+"/"+fileName.replace("/myworkSpace/Class/Basic/",""));
synthesisClassReportParameter.setCommand(command); synthesisClassReportParameter.setCommand(command);
} }
...@@ -218,6 +227,24 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -218,6 +227,24 @@ public class GeneratorAllTypePdfByProvinceController {
} }
int exitCode = process.waitFor(); int exitCode = process.waitFor();
logger.info("exitCode:"+schoolLevel.getSchool()); logger.info("exitCode:"+schoolLevel.getSchool());
//上传文件
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 {
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();
}
}
for (BasicReportParameters parameters : schoolSelf) { for (BasicReportParameters parameters : schoolSelf) {
logger.info("subjectReport:loading***************************************************************"); logger.info("subjectReport:loading***************************************************************");
ProcessBuilder processBuilderSubject = new ProcessBuilder(); ProcessBuilder processBuilderSubject = new ProcessBuilder();
...@@ -230,6 +257,23 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -230,6 +257,23 @@ public class GeneratorAllTypePdfByProvinceController {
} }
int exitCodeSubject = processSubject.waitFor(); int exitCodeSubject = processSubject.waitFor();
logger.info("exitCode:"+parameters.getSubSubject()); logger.info("exitCode:"+parameters.getSubSubject());
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> args = classBasic.get(schoolLevel.getSchool());
List<ClassBasicReportParameters> params = subjectClass.get(schoolLevel.getSchool()); List<ClassBasicReportParameters> params = subjectClass.get(schoolLevel.getSchool());
...@@ -245,6 +289,23 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -245,6 +289,23 @@ public class GeneratorAllTypePdfByProvinceController {
} }
int exitCodeSubject = processClass.waitFor(); int exitCodeSubject = processClass.waitFor();
logger.info("exitCode:"+arg.getClassName()); logger.info("exitCode:"+arg.getClassName());
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()+"文件上传有误,重新上传");
e.printStackTrace();
}
}
final Map<String, List<ClassBasicReportParameters>> collect = params.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getClassName)); final Map<String, List<ClassBasicReportParameters>> collect = params.stream().collect(Collectors.groupingBy(ClassBasicReportParameters::getClassName));
List<ClassBasicReportParameters> list = collect.get(arg.getClassName()); List<ClassBasicReportParameters> list = collect.get(arg.getClassName());
for (ClassBasicReportParameters classBasicReportParameters : list) { for (ClassBasicReportParameters classBasicReportParameters : list) {
...@@ -259,12 +320,34 @@ public class GeneratorAllTypePdfByProvinceController { ...@@ -259,12 +320,34 @@ public class GeneratorAllTypePdfByProvinceController {
} }
int exitCodeSubjectClass = processClassSubject.waitFor(); int exitCodeSubjectClass = processClassSubject.waitFor();
logger.info("exitCode:"+classBasicReportParameters.getSubSubject()); logger.info("exitCode:"+classBasicReportParameters.getSubSubject());
File classSubjectFile = new File("/myworkSpace/Class/Basic/");
File[] classSubjectFiles = classSubjectFile.listFiles();
assert classSubjectFiles != null;
for (File file : classSubjectFiles) {
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());
logger.info("Rows affected:" + rowsAffected);
} }
} }
return null;
} }
} }
package com.example.pdfgenerator.DataProcessing;
import com.example.pdfgenerator.Dto.TaskPoolDto;
import com.example.pdfgenerator.config.MyDataSourceConfig;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
@SpringBootTest
public class GenerateTaskPool {
@Test
public void GenerateTaskPoolUnit(){
JdbcTemplate reportJdbcTemplate = MyDataSourceConfig.getReportJdbcTemplate();
String sql = "SELECT\n" +
"\texam_id,\n" +
"\tregion,\n" +
"\tprovince,\n" +
"\tschool,\n" +
"\t0 as status\n" +
"FROM\n" +
"\tbase_school_total_score_tda20240919 \n" +
"GROUP BY\n" +
"\tregion,\n" +
"\tprovince,\n" +
"\tschool,\n" +
"\texam_id";
List<TaskPoolDto> taskPoolDtoList = reportJdbcTemplate.query(sql,new Object[]{},new BeanPropertyRowMapper<>(TaskPoolDto.class));
batchInsert(taskPoolDtoList,reportJdbcTemplate);
System.out.println("生成任务已经结束");
}
public void batchInsert(List<TaskPoolDto> taskPoolDtoList,JdbcTemplate reportJdbcTemplate){
String sql = "insert into school_report_task_generate (exam_id,region,province,school,status) values (?,?,?,?,?)";
reportJdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
TaskPoolDto taskPoolDto = taskPoolDtoList.get(i);
ps.setString(1,taskPoolDto.getExamId());
ps.setString(2,taskPoolDto.getRegion());
ps.setString(3,taskPoolDto.getProvince());
ps.setString(4,taskPoolDto.getSchool());
ps.setInt(5,taskPoolDto.getStatus());
}
@Override
public int getBatchSize() {
return taskPoolDtoList.size();
}
});
}
}
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