Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
SchoolReportGen
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
霍传世
SchoolReportGen
Commits
d1a7e52c
Commit
d1a7e52c
authored
Mar 25, 2025
by
霍传世
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
测试服务器生成的效率
parent
ad31003c
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
156 additions
and
0 deletions
+156
-0
src/main/java/com/example/pdfgenerator/controller/PersonalPdGenController.java
...mple/pdfgenerator/controller/PersonalPdGenController.java
+156
-0
No files found.
src/main/java/com/example/pdfgenerator/controller/PersonalPdGenController.java
0 → 100644
View file @
d1a7e52c
package
com.example.pdfgenerator.controller
;
import
com.example.pdfgenerator.Dto.Personal
;
import
com.example.pdfgenerator.config.MyDataSourceConfig
;
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.LoggerFactory
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.jdbc.core.BeanPropertyRowMapper
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
qcloud
.
cos
.
demo
.
BucketRefererDemo
.
cosClient
;
@RestController
@RequestMapping
(
"/per"
)
public
class
PersonalPdGenController
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PersonalPdGenController
.
class
);
private
static
Map
<
String
,
String
>
fileToUrl
=
new
HashMap
<>();
JdbcTemplate
jdbcTemplate
=
MyDataSourceConfig
.
getBasicTemplate
();
@GetMapping
(
"/gen"
)
public
ResponseEntity
geBasicReport
()
throws
IOException
{
List
<
Personal
>
list
=
jdbcTemplate
.
query
(
"select sfz_num,zkz_num from base_student_tda20250227"
,
new
BeanPropertyRowMapper
<>(
Personal
.
class
));
for
(
Personal
parameter
:
list
)
{
String
command
=
"node /myworkSpace/puppeteer.js \"https://yanzheng.cssat.cn/preReport#/"
+
parameter
.
getSfzNum
()
+
"/CACAPRE20250322\" pdf"
;
String
fileName
=
"/myworkSpace/personal/"
+
parameter
.
getZkzNum
()
+
".pdf"
;
command
=
command
.
concat
(
" "
).
concat
(
fileName
);
parameter
.
setCommand
(
command
);
parameter
.
setPrefix
(
"/myworkSpace/personal/"
);
fileToUrl
.
put
(
fileName
.
replace
(
"/myworkSpace/personal/"
,
""
),
"CACAPRE20250322/"
+
fileName
.
replace
(
"/myworkSpace/personal/"
,
""
));
}
List
<
Personal
>
retryCommands
=
new
ArrayList
<>();
int
i
=
0
;
for
(
Personal
parameters
:
list
)
{
logger
.
info
(
"正在生成cacaPre:sfznum="
+
parameters
.
getSfzNum
()+
"zkznum="
+
parameters
.
getZkzNum
()+
"进度"
+(++
i
)+
"/"
+
list
.
size
());
ProcessBuilder
processBuilderSubject
=
new
ProcessBuilder
();
processBuilderSubject
.
command
(
"cmd.exe"
,
"/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);
// }
// }
while
((
lineSubject
=
readerSubject
.
readLine
())
!=
null
)
{
// 如果输出了 "DONE",表示生成完毕
if
(
"DONE"
.
equals
(
lineSubject
))
{
break
;
// 跳出循环
}
}
try
{
int
exitCodeSubject
=
processSubject
.
waitFor
();
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
File
subjectFile
=
new
File
(
"/myworkSpace/personal/"
);
File
[]
subjectFiles
=
subjectFile
.
listFiles
();
assert
subjectFiles
!=
null
;
for
(
File
file
:
subjectFiles
)
{
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
"scorereport-1317275686"
,
fileToUrl
.
get
(
file
.
getName
()),
file
);
try
{
PutObjectResult
putObjectResult
=
cosClient
.
putObject
(
putObjectRequest
);
logger
.
info
(
putObjectResult
.
getRequestId
());
logger
.
info
(
"上传文件"
+
file
.
getName
());
file
.
delete
();
}
catch
(
CosServiceException
e
)
{
logger
.
info
(
"cos服务出现问题"
);
e
.
printStackTrace
();
}
catch
(
CosClientException
e
)
{
logger
.
info
(
"cos客户端出现问题"
+
file
.
getName
()
+
"文件上传有误,重新上传"
);
Personal
retryCommand
=
new
Personal
();
retryCommand
.
setZkzNum
(
parameters
.
getZkzNum
());
retryCommand
.
setSfzNum
(
parameters
.
getSfzNum
());
retryCommand
.
setCommand
(
parameters
.
getCommand
());
retryCommand
.
setPrefix
(
parameters
.
getPrefix
());
retryCommands
.
add
(
retryCommand
);
e
.
printStackTrace
();
}
}
}
if
(
retryCommands
.
size
()
>
0
)
{
for
(
Personal
parameters
:
list
)
{
ProcessBuilder
processBuilderSubject
=
new
ProcessBuilder
();
processBuilderSubject
.
command
(
"cmd.exe"
,
"/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);
// }
// }
while
((
lineSubject
=
readerSubject
.
readLine
())
!=
null
)
{
// 如果输出了 "DONE",表示生成完毕
if
(
"DONE"
.
equals
(
lineSubject
))
{
break
;
// 跳出循环
}
}
try
{
int
exitCodeSubject
=
processSubject
.
waitFor
();
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
File
subjectFile
=
new
File
(
"/myworkSpace/personal/"
);
File
[]
subjectFiles
=
subjectFile
.
listFiles
();
assert
subjectFiles
!=
null
;
for
(
File
file
:
subjectFiles
)
{
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
"scorereport-1317275686"
,
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
()
+
"文件上传有误,重新上传"
);
}
}
}
}
return
ResponseEntity
.
ok
(
"操作成功"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment