Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
Y
yn-health-science
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
徐俊
yn-health-science
Commits
5ba9ca80
Commit
5ba9ca80
authored
Feb 14, 2025
by
徐俊
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.yiboshi.com/XuJun/yn-health-science
parents
116526fd
90e36664
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
297 additions
and
57 deletions
+297
-57
pom.xml
science-admin/pom.xml
+40
-21
ComProjectTaskDTO.java
...java/com/yiboshi/science/param/dto/ComProjectTaskDTO.java
+13
-0
ComProjectController.java
...ava/com/yiboshi/science/rest/v1/ComProjectController.java
+5
-5
ComProjectBudgetServiceImpl.java
...shi/science/service/impl/ComProjectBudgetServiceImpl.java
+12
-13
ComProjectServiceImpl.java
...m/yiboshi/science/service/impl/ComProjectServiceImpl.java
+28
-11
ComProjectTaskServiceImpl.java
...boshi/science/service/impl/ComProjectTaskServiceImpl.java
+0
-2
HtmlBuilder.java
.../src/main/java/com/yiboshi/science/utils/HtmlBuilder.java
+1
-1
PDF.java
...ce-admin/src/main/java/com/yiboshi/science/utils/PDF.java
+119
-0
PdfUtil.java
...dmin/src/main/java/com/yiboshi/science/utils/PdfUtil.java
+3
-3
ResourceFileUtil.java
...main/java/com/yiboshi/science/utils/ResourceFileUtil.java
+75
-0
msyh.ttc
science-admin/src/main/resources/fonts/msyh.ttc
+0
-0
simsun.ttc
science-admin/src/main/resources/fonts/simsun.ttc
+0
-0
ComProjectTaskDAO.xml
...nce-admin/src/main/resources/mapper/ComProjectTaskDAO.xml
+1
-1
tmp-report.html
science-admin/src/main/resources/template/tmp-report.html
+0
-0
tmp-task.html
science-admin/src/main/resources/template/tmp-task.html
+0
-0
358930df-97cf-440f-8bbf-49b88eec7fe5.doc
upload/files/2024/7/358930df-97cf-440f-8bbf-49b88eec7fe5.doc
+0
-0
5e9700b0-f6d8-4ad0-a229-8e93bf6f3436.xls
upload/files/2024/7/5e9700b0-f6d8-4ad0-a229-8e93bf6f3436.xls
+0
-0
c0775804-a790-4f93-b15b-555a8978a98c.jpg
upload/files/2024/7/c0775804-a790-4f93-b15b-555a8978a98c.jpg
+0
-0
No files found.
science-admin/pom.xml
View file @
5ba9ca80
...
@@ -120,7 +120,7 @@
...
@@ -120,7 +120,7 @@
<dependency>
<dependency>
<groupId>
org.freemarker
</groupId>
<groupId>
org.freemarker
</groupId>
<artifactId>
freemarker
</artifactId>
<artifactId>
freemarker
</artifactId>
<version>
2.3.2
3
</version>
<version>
2.3.2
8
</version>
</dependency>
</dependency>
<dependency>
<dependency>
...
@@ -199,26 +199,57 @@
...
@@ -199,26 +199,57 @@
<artifactId>
velocity
</artifactId>
<artifactId>
velocity
</artifactId>
<version>
1.7
</version>
<version>
1.7
</version>
</dependency>
</dependency>
<!-- IText -->
<!--
https://mvnrepository.com/artifact/com.itextpdf/itext7-c
ore -->
<!--
Flying Saucer C
ore -->
<dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<groupId>
org.xhtmlrenderer
</groupId>
<artifactId>
itext7-core
</artifactId>
<artifactId>
flying-saucer-core
</artifactId>
<version>
${itext.version}
</version>
<version>
9.1.22
</version>
<type>
pom
</type>
</dependency>
<!-- Flying Saucer iText Integration -->
<dependency>
<groupId>
org.xhtmlrenderer
</groupId>
<artifactId>
flying-saucer-pdf
</artifactId>
<version>
9.1.22
</version>
</dependency>
<dependency>
<groupId>
org.xhtmlrenderer
</groupId>
<artifactId>
flying-saucer-pdf-itext5
</artifactId>
<version>
9.1.22
</version>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-thymeleaf
</artifactId>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
pdftest
</artifactId>
<version>
7.1.16
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<groupId>
com.itextpdf
</groupId>
<artifactId>
itextpdf
</artifactId>
<artifactId>
itextpdf
</artifactId>
<version>
5.5.
8
</version>
<version>
5.5.
13.2
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<groupId>
com.itextpdf
</groupId>
<artifactId>
html2pdf
</artifactId>
<artifactId>
html2pdf
</artifactId>
<version>
4.0.3
</version>
<version>
6.0.0
</version>
</dependency>
<!-- IText -->
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext7-core -->
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
itext7-core
</artifactId>
<version>
${itext.version}
</version>
<type>
pom
</type>
</dependency>
</dependency>
<dependency>
<dependency>
...
@@ -249,18 +280,6 @@
...
@@ -249,18 +280,6 @@
<version>
${itext.version}
</version>
<version>
${itext.version}
</version>
</dependency>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.itextpdf</groupId>-->
<!-- <artifactId>pdftest</artifactId>-->
<!-- <version>${itext.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
pdftest
</artifactId>
<version>
7.1.16
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<groupId>
com.itextpdf
</groupId>
<artifactId>
font-asian
</artifactId>
<artifactId>
font-asian
</artifactId>
...
...
science-admin/src/main/java/com/yiboshi/science/param/dto/ComProjectTaskDTO.java
View file @
5ba9ca80
...
@@ -300,6 +300,19 @@ public class ComProjectTaskDTO extends BaseDTO {
...
@@ -300,6 +300,19 @@ public class ComProjectTaskDTO extends BaseDTO {
@ApiModelProperty
(
value
=
"项目组成员_参加单位数"
,
position
=
25
)
@ApiModelProperty
(
value
=
"项目组成员_参加单位数"
,
position
=
25
)
private
Integer
workCount
;
private
Integer
workCount
;
/** 附件Id */
@ApiModelProperty
(
value
=
"附件Id"
,
position
=
4
)
private
String
fileId
;
/** 附件Id */
@ApiModelProperty
(
value
=
"附件Id"
,
position
=
1
)
private
String
downloadId
;
/** 附件名 */
@ApiModelProperty
(
value
=
"附件名"
,
position
=
6
)
private
String
fileName
;
/** URL */
@ApiModelProperty
(
value
=
"URL"
,
position
=
7
)
private
String
downloadUrl
;
/** 合作单位 */
/** 合作单位 */
private
List
<
ComProjectCooperativeUnitsDTO
>
cooperativeUnits
;
private
List
<
ComProjectCooperativeUnitsDTO
>
cooperativeUnits
;
/** 项目主要参与单位 */
/** 项目主要参与单位 */
...
...
science-admin/src/main/java/com/yiboshi/science/rest/v1/ComProjectController.java
View file @
5ba9ca80
package
com
.
yiboshi
.
science
.
rest
.
v1
;
package
com
.
yiboshi
.
science
.
rest
.
v1
;
import
com.itextpdf.text.DocumentException
;
import
com.itextpdf.text.DocumentException
;
import
com.yiboshi.arch.base.ResponseCode
;
import
com.yiboshi.arch.base.ResponseDataModel
;
import
com.yiboshi.arch.base.ResponseDataModel
;
import
com.yiboshi.science.base.Pagination
;
import
com.yiboshi.science.base.Pagination
;
import
com.yiboshi.science.config.annotation.Logs
;
import
com.yiboshi.science.config.annotation.Logs
;
...
@@ -13,6 +14,7 @@ import com.yiboshi.science.rest.BaseController;
...
@@ -13,6 +14,7 @@ import com.yiboshi.science.rest.BaseController;
import
com.yiboshi.science.service.ComFileService
;
import
com.yiboshi.science.service.ComFileService
;
import
com.yiboshi.science.service.ComProjectService
;
import
com.yiboshi.science.service.ComProjectService
;
import
com.yiboshi.science.service.ComProjectTaskService
;
import
com.yiboshi.science.service.ComProjectTaskService
;
import
com.yiboshi.science.utils.*
;
import
com.yiboshi.science.service.SystemParameterService
;
import
com.yiboshi.science.service.SystemParameterService
;
import
com.yiboshi.science.utils.ProjectInfoToPDF
;
import
com.yiboshi.science.utils.ProjectInfoToPDF
;
import
com.yiboshi.science.utils.StringUtil
;
import
com.yiboshi.science.utils.StringUtil
;
...
@@ -24,6 +26,7 @@ import org.springframework.validation.BindingResult;
...
@@ -24,6 +26,7 @@ import org.springframework.validation.BindingResult;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.ServletOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
...
@@ -41,9 +44,6 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
...
@@ -41,9 +44,6 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
@Autowired
@Autowired
private
ComProjectService
comProjectService
;
private
ComProjectService
comProjectService
;
@Autowired
private
SystemParameterService
systemParameterService
;
@Autowired
@Autowired
private
ComProjectTaskService
comProjectTaskService
;
private
ComProjectTaskService
comProjectTaskService
;
...
@@ -217,9 +217,8 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
...
@@ -217,9 +217,8 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
public
ResponseDataModel
<
String
>
projectExport
(
@PathVariable
String
id
)
throws
DocumentException
,
IOException
{
public
ResponseDataModel
<
String
>
projectExport
(
@PathVariable
String
id
)
throws
DocumentException
,
IOException
{
ComProjectDTO
dto
=
comProjectService
.
getProjectById
(
id
);
ComProjectDTO
dto
=
comProjectService
.
getProjectById
(
id
);
List
<
SystemParameter
>
list
=
systemParameterService
.
getListByType
(
67
);
String
outputPath
=
"D:\\申请书和合同书.pdf"
;
String
outputPath
=
"D:\\申请书和合同书.pdf"
;
ProjectInfoToPDF
.
generateProjectPDF
(
dto
,
outputPath
,
list
);
ProjectInfoToPDF
.
generateProjectPDF
(
dto
,
outputPath
);
return
ResponseDataModel
.
ok
(
"项目信息导入成功!"
);
return
ResponseDataModel
.
ok
(
"项目信息导入成功!"
);
}
}
}
}
\ No newline at end of file
science-admin/src/main/java/com/yiboshi/science/service/impl/ComProjectBudgetServiceImpl.java
View file @
5ba9ca80
...
@@ -68,12 +68,7 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
...
@@ -68,12 +68,7 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
newVO
.
setLevel
(
e
.
getTreeCode
());
newVO
.
setLevel
(
e
.
getTreeCode
());
if
(
Objects
.
nonNull
(
e
.
getSystemCode
()))
{
if
(
Objects
.
nonNull
(
e
.
getSystemCode
()))
{
try
{
try
{
String
[]
arr
=
e
.
getSystemCode
().
split
(
","
);
getParaItem
(
newVO
,
e
.
getSystemCode
());
Integer
[]
li
=
new
Integer
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
li
[
i
]
=
Integer
.
valueOf
(
arr
[
i
]);
}
newVO
.
setSource
(
li
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logsExceptionService
.
logs
(
null
,
ex
,
"获取参数异常!"
);
logsExceptionService
.
logs
(
null
,
ex
,
"获取参数异常!"
);
}
}
...
@@ -94,14 +89,9 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
...
@@ -94,14 +89,9 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
budgetList
.
forEach
((
e
)
->
{
budgetList
.
forEach
((
e
)
->
{
if
(
Objects
.
nonNull
(
e
.
getSystemCode
()))
{
if
(
Objects
.
nonNull
(
e
.
getSystemCode
()))
{
try
{
try
{
String
[]
arr
=
e
.
getSystemCode
().
split
(
","
);
getParaItem
(
e
,
e
.
getSystemCode
());
Integer
[]
li
=
new
Integer
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
li
[
i
]
=
Integer
.
valueOf
(
arr
[
i
]);
}
e
.
setSource
(
li
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logsExceptionService
.
logs
(
null
,
ex
,
"
获取参数
异常!"
);
logsExceptionService
.
logs
(
null
,
ex
,
"
经费配置
异常!"
);
}
}
}
}
});
});
...
@@ -109,6 +99,15 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
...
@@ -109,6 +99,15 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
return
budgetList
;
return
budgetList
;
}
}
private
void
getParaItem
(
ComProjectBudgetDTO
e
,
String
systemCode
)
{
String
[]
arr
=
systemCode
.
split
(
","
);
Integer
[]
li
=
new
Integer
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
li
[
i
]
=
Integer
.
valueOf
(
arr
[
i
]);
}
e
.
setSource
(
li
);
}
@Transactional
@Transactional
public
void
insertBudgetList
(
List
<
ComProjectBudgetDTO
>
budgetList
,
String
objectId
)
{
public
void
insertBudgetList
(
List
<
ComProjectBudgetDTO
>
budgetList
,
String
objectId
)
{
ComProjectBudget
E
=
new
ComProjectBudget
();
ComProjectBudget
E
=
new
ComProjectBudget
();
...
...
science-admin/src/main/java/com/yiboshi/science/service/impl/ComProjectServiceImpl.java
View file @
5ba9ca80
package
com
.
yiboshi
.
science
.
service
.
impl
;
package
com
.
yiboshi
.
science
.
service
.
impl
;
import
cn.hutool.core.util.CharsetUtil
;
import
cn.hutool.core.util.URLUtil
;
import
com.alibaba.excel.util.StringUtils
;
import
com.alibaba.excel.util.StringUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
@@ -16,11 +18,13 @@ import com.yiboshi.science.param.query.ComProjectQueryVO;
...
@@ -16,11 +18,13 @@ import com.yiboshi.science.param.query.ComProjectQueryVO;
import
com.yiboshi.science.service.*
;
import
com.yiboshi.science.service.*
;
import
com.yiboshi.science.utils.*
;
import
com.yiboshi.science.utils.*
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
org.apache.velocity.VelocityContext
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.IOException
;
...
@@ -88,9 +92,9 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
...
@@ -88,9 +92,9 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
@Autowired
@Autowired
private
final
HtmlBuilder
htmlBuilder
;
private
final
HtmlBuilder
htmlBuilder
;
@Autowired
@Autowired
private
ComProjectFundPlanService
comProjectFundPlanService
;
private
ComProjectFundPlanService
comProjectFundPlanService
;
@Autowired
@Autowired
private
ComProjectUnitPaymentService
comProjectUnitPaymentService
;
private
ComProjectUnitPaymentService
comProjectUnitPaymentService
;
@Autowired
@Autowired
private
ComProjectKpitService
comProjectKpitService
;
private
ComProjectKpitService
comProjectKpitService
;
@Autowired
@Autowired
...
@@ -958,7 +962,7 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
...
@@ -958,7 +962,7 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
}
}
public
void
export
(
@PathVariable
String
id
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
void
export
1
(
@PathVariable
String
id
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
ComProjectDTO
p
=
this
.
getProjectById
(
id
);
ComProjectDTO
p
=
this
.
getProjectById
(
id
);
if
(
null
!=
p
)
{
if
(
null
!=
p
)
{
String
strDateFormat
=
p
.
getProjType
().
equals
(
1
)
?
"yyyy-MM-dd HH:mm:ss"
:
"yyyy-MM-dd"
;
String
strDateFormat
=
p
.
getProjType
().
equals
(
1
)
?
"yyyy-MM-dd HH:mm:ss"
:
"yyyy-MM-dd"
;
...
@@ -1000,14 +1004,6 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
...
@@ -1000,14 +1004,6 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
}
}
p
.
setBudget
(
item
);
p
.
setBudget
(
item
);
}
}
// if (null == p.getEquipments() || p.getEquipments().size() < 4) {
// int count = p.getEquipments() == null ? 0 : p.getEquipments().size();
// List<ComProjectEquipmentDTO> item = p.getEquipments() == null ? new ArrayList<>() : p.getEquipments();
// for (int i = 1; i <= 4 - count; i++) {
// item.add(new ComProjectEquipmentDTO());
// }
// p.setEquipments(item);
// }
List
<
String
>
str
=
comProjectResultsService
.
getNameByObjectId
(
p
.
getId
());
List
<
String
>
str
=
comProjectResultsService
.
getNameByObjectId
(
p
.
getId
());
if
(
p
.
getProjType
().
equals
(
1
))
{
if
(
p
.
getProjType
().
equals
(
1
))
{
WordUtils
utl
=
new
WordUtils
();
WordUtils
utl
=
new
WordUtils
();
...
@@ -1018,6 +1014,27 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
...
@@ -1018,6 +1014,27 @@ public class ComProjectServiceImpl extends BaseServiceImpl<ComProjectDAO, ComPro
}
}
}
}
public
void
export
(
@PathVariable
String
id
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
filename
=
System
.
currentTimeMillis
()
+
".pdf"
;
response
.
reset
();
response
.
setContentType
(
"application/pdf"
);
response
.
addHeader
(
"Content-Disposition"
,
"inline; filename="
+
URLUtil
.
encode
(
filename
,
CharsetUtil
.
CHARSET_UTF_8
));
VelocityContext
context
=
new
VelocityContext
();
Calendar
calendar
=
Calendar
.
getInstance
();
int
month
=
calendar
.
get
(
Calendar
.
MONTH
)
+
1
;
int
day
=
calendar
.
get
(
Calendar
.
DATE
);
context
.
put
(
"reportYear"
,
2024
);
context
.
put
(
"year"
,
calendar
.
get
(
Calendar
.
YEAR
));
context
.
put
(
"month"
,
month
>=
10
?
month
:
"0"
+
month
);
context
.
put
(
"day"
,
day
>=
10
?
day
:
"0"
+
day
);
try
(
ServletOutputStream
outputStream
=
response
.
getOutputStream
())
{
PdfUtil
.
pdfFile
(
context
,
"/template/tmp-report.html"
,
outputStream
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
/**
* 获取项目编号
* 获取项目编号
*
*
...
...
science-admin/src/main/java/com/yiboshi/science/service/impl/ComProjectTaskServiceImpl.java
View file @
5ba9ca80
...
@@ -460,8 +460,6 @@ public class ComProjectTaskServiceImpl extends BaseServiceImpl<ComProjectTaskDAO
...
@@ -460,8 +460,6 @@ public class ComProjectTaskServiceImpl extends BaseServiceImpl<ComProjectTaskDAO
@Transactional
@Transactional
public
void
audit
(
ComProjectAudit
dto
,
String
auditUnitId
,
String
treeCode
)
{
public
void
audit
(
ComProjectAudit
dto
,
String
auditUnitId
,
String
treeCode
)
{
// false 报上级或返回下一级 true报到最高级或返回个人
int
state
=
0
;
ComProjectTask
task
=
this
.
getById
(
dto
.
getAuditObjectId
());
ComProjectTask
task
=
this
.
getById
(
dto
.
getAuditObjectId
());
if
(
null
==
task
)
if
(
null
==
task
)
throw
new
BusinessException
(
"审核对象不存在!"
);
throw
new
BusinessException
(
"审核对象不存在!"
);
...
...
science-admin/src/main/java/com/yiboshi/science/utils/HtmlBuilder.java
View file @
5ba9ca80
...
@@ -65,7 +65,7 @@ public class HtmlBuilder {
...
@@ -65,7 +65,7 @@ public class HtmlBuilder {
return
host
;
return
host
;
}
}
p
rivate
static
Map
<
String
,
Object
>
obj2Map
(
Object
obj
)
{
p
ublic
static
Map
<
String
,
Object
>
obj2Map
(
Object
obj
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
// 获取f对象对应类中的所有属性域
// 获取f对象对应类中的所有属性域
Field
[]
fields
=
obj
.
getClass
().
getDeclaredFields
();
Field
[]
fields
=
obj
.
getClass
().
getDeclaredFields
();
...
...
science-admin/src/main/java/com/yiboshi/science/utils/PDF.java
0 → 100644
View file @
5ba9ca80
package
com
.
yiboshi
.
science
.
utils
;
import
com.itextpdf.text.pdf.BaseFont
;
import
com.lowagie.text.DocumentException
;
import
freemarker.cache.ClassTemplateLoader
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateException
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.apache.velocity.app.Velocity
;
import
org.springframework.ui.freemarker.FreeMarkerTemplateUtils
;
import
org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer
;
import
org.xhtmlrenderer.pdf.ITextFontResolver
;
import
org.xhtmlrenderer.pdf.ITextRenderer
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
java
.
lang
.
System
.
in
;
public
class
PDF
{
/**
* 将HTML模板转换为PDF输出流
* @return PDF字节数组
*/
public
static
byte
[]
createPDF
(
HttpServletResponse
response
,
String
temp
,
Object
dataModel
)
throws
IOException
,
TemplateException
,
DocumentException
{
Map
<
String
,
Object
>
dataMap
=
HtmlBuilder
.
obj2Map
(
dataModel
);
// 配置FreeMarker
Configuration
cfg
=
new
Configuration
(
Configuration
.
DEFAULT_INCOMPATIBLE_IMPROVEMENTS
);
cfg
.
setDefaultEncoding
(
"utf-8"
);
cfg
.
setClassLoaderForTemplateLoading
(
PDF
.
class
.
getClassLoader
(),
"template"
);
cfg
.
setTemplateLoader
(
new
ClassTemplateLoader
(
PDF
.
class
.
getClassLoader
(),
"/template"
));
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
// 获取模板
Template
template
=
cfg
.
getTemplate
(
temp
,
"utf-8"
);
// 处理模板,生成HTML内容
StringWriter
tmpText
=
new
StringWriter
();
template
.
process
(
dataMap
,
tmpText
);
String
htmlContent
=
tmpText
.
toString
();
// 创建PDF渲染器
ITextRenderer
renderer
=
new
ITextRenderer
();
// 设置中文字体
String
simPath
=
ResourceFileUtil
.
getAbsolutePath
(
"/fonts/simsun.ttc"
);
String
msyhPath
=
ResourceFileUtil
.
getAbsolutePath
(
"/fonts/msyh.ttc"
);
renderer
.
getFontResolver
().
addFont
(
simPath
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
EMBEDDED
);
renderer
.
getFontResolver
().
addFont
(
msyhPath
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
EMBEDDED
);
// 渲染HTML内容
renderer
.
setDocumentFromString
(
htmlContent
);
renderer
.
layout
();
// 创建一个ByteArrayOutputStream来保存生成的PDF
response
.
setContentType
(
"application/octet-stream;charset=UTF-8"
);
OutputStream
outputStream
=
response
.
getOutputStream
();
// 输出PDF到字节数组
renderer
.
createPDF
(
outputStream
);
//创建存放文件内容的数组
byte
[]
buff
=
new
byte
[
1024
];
//所读取的内容使用n来接收
int
n
;
//当没有读取完时,继续读取,循环
while
((
n
=
in
.
read
(
buff
))
!=
-
1
)
{
//将字节数组的数据全部写入到输出流中
outputStream
.
write
(
buff
,
0
,
n
);
}
//强制将缓存区的数据进行输出
outputStream
.
flush
();
//关流
outputStream
.
close
();
in
.
close
();
// 关闭输出流
return
buff
;
}
public
static
boolean
createPDF
(
String
temp
,
Object
dataModel
,
String
outputPath
)
throws
IOException
,
TemplateException
,
DocumentException
{
Map
<
String
,
Object
>
dataMap
=
HtmlBuilder
.
obj2Map
(
dataModel
);
// 配置FreeMarker
Configuration
cfg
=
new
Configuration
(
Configuration
.
DEFAULT_INCOMPATIBLE_IMPROVEMENTS
);
cfg
.
setDefaultEncoding
(
"utf-8"
);
cfg
.
setClassLoaderForTemplateLoading
(
PDF
.
class
.
getClassLoader
(),
"template"
);
cfg
.
setTemplateLoader
(
new
ClassTemplateLoader
(
PDF
.
class
.
getClassLoader
(),
"/template"
));
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
// 获取模板
Template
template
=
cfg
.
getTemplate
(
temp
,
"utf-8"
);
// 处理模板,生成HTML内容
StringWriter
tmpText
=
new
StringWriter
();
template
.
process
(
dataMap
,
tmpText
);
String
htmlContent
=
tmpText
.
toString
();
// 创建PDF渲染器
ITextRenderer
renderer
=
new
ITextRenderer
();
// 设置中文字体
String
simPath
=
ResourceFileUtil
.
getAbsolutePath
(
"/fonts/simsun.ttc"
);
String
msyhPath
=
ResourceFileUtil
.
getAbsolutePath
(
"/fonts/msyh.ttc"
);
renderer
.
getFontResolver
().
addFont
(
simPath
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
EMBEDDED
);
renderer
.
getFontResolver
().
addFont
(
msyhPath
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
EMBEDDED
);
// 渲染HTML内容
renderer
.
setDocumentFromString
(
htmlContent
);
renderer
.
layout
();
// 创建输出文件
File
outputFile
=
new
File
(
outputPath
);
// 确保父目录存在
outputFile
.
getParentFile
().
mkdirs
();
// 创建文件输出流
try
(
OutputStream
outputStream
=
new
FileOutputStream
(
outputFile
))
{
// 输出PDF到文件
renderer
.
createPDF
(
outputStream
);
outputStream
.
flush
();
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
}
science-admin/src/main/java/com/yiboshi/science/utils/PdfUtil.java
View file @
5ba9ca80
...
@@ -26,8 +26,6 @@ import java.nio.charset.StandardCharsets;
...
@@ -26,8 +26,6 @@ import java.nio.charset.StandardCharsets;
*/
*/
public
class
PdfUtil
{
public
class
PdfUtil
{
static
{
static
{
// Velocity初始化
// Velocity初始化
Velocity
.
setProperty
(
RuntimeConstants
.
OUTPUT_ENCODING
,
StandardCharsets
.
UTF_8
);
Velocity
.
setProperty
(
RuntimeConstants
.
OUTPUT_ENCODING
,
StandardCharsets
.
UTF_8
);
...
@@ -49,9 +47,9 @@ public class PdfUtil {
...
@@ -49,9 +47,9 @@ public class PdfUtil {
try
(
PdfWriter
pdfWriter
=
new
PdfWriter
(
outputStream
))
{
try
(
PdfWriter
pdfWriter
=
new
PdfWriter
(
outputStream
))
{
PdfDocument
pdfDocument
=
new
PdfDocument
(
pdfWriter
);
PdfDocument
pdfDocument
=
new
PdfDocument
(
pdfWriter
);
pdfDocument
.
setDefaultPageSize
(
PageSize
.
A4
);
pdfDocument
.
setDefaultPageSize
(
PageSize
.
A4
);
ConverterProperties
properties
=
new
ConverterProperties
();
ConverterProperties
properties
=
new
ConverterProperties
();
FontProvider
fontProvider
=
new
FontProvider
();
FontProvider
fontProvider
=
new
FontProvider
();
// 字体设置,解决中文不显示问题
// 字体设置,解决中文不显示问题
PdfFont
sysFont
=
PdfFontFactory
.
createFont
(
"STSongStd-Light"
,
"UniGB-UCS2-H"
);
PdfFont
sysFont
=
PdfFontFactory
.
createFont
(
"STSongStd-Light"
,
"UniGB-UCS2-H"
);
fontProvider
.
addFont
(
sysFont
.
getFontProgram
(),
"UniGB-UCS2-H"
);
fontProvider
.
addFont
(
sysFont
.
getFontProgram
(),
"UniGB-UCS2-H"
);
...
@@ -60,7 +58,9 @@ public class PdfUtil {
...
@@ -60,7 +58,9 @@ public class PdfUtil {
Template
pfdTemplate
=
Velocity
.
getTemplate
(
template
,
"UTF-8"
);
Template
pfdTemplate
=
Velocity
.
getTemplate
(
template
,
"UTF-8"
);
StringWriter
writer
=
new
StringWriter
();
StringWriter
writer
=
new
StringWriter
();
pfdTemplate
.
merge
(
context
,
writer
);
pfdTemplate
.
merge
(
context
,
writer
);
HtmlConverter
.
convertToPdf
(
writer
.
toString
(),
pdfDocument
,
properties
);
HtmlConverter
.
convertToPdf
(
writer
.
toString
(),
pdfDocument
,
properties
);
pdfDocument
.
close
();
pdfDocument
.
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"PFD文件生成失败"
,
e
);
throw
new
RuntimeException
(
"PFD文件生成失败"
,
e
);
...
...
science-admin/src/main/java/com/yiboshi/science/utils/ResourceFileUtil.java
0 → 100644
View file @
5ba9ca80
package
com
.
yiboshi
.
science
.
utils
;
import
org.springframework.util.ResourceUtils
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
/**
* @Description: 项目静态资源文件工具类
* 仅可用于包含在web项目中的资源文件路径,资源文件必须放置于 web 模块下
* @Author: junqiang.lu
* @Date: 2019/1/4
*/
public
class
ResourceFileUtil
{
/**
* 获取资源文件
*
* @param relativePath 资源文件相对路径(相对于 resources路径,路径 + 文件名)
* eg: "templates/pdf_export_demo.ftl"
* @return
* @throws FileNotFoundException
*/
public
static
File
getFile
(
String
relativePath
)
throws
FileNotFoundException
{
if
(
relativePath
==
null
||
relativePath
.
length
()
==
0
)
{
return
null
;
}
if
(
relativePath
.
startsWith
(
"/"
))
{
relativePath
=
relativePath
.
substring
(
1
);
}
File
file
=
ResourceUtils
.
getFile
(
ResourceUtils
.
CLASSPATH_URL_PREFIX
+
relativePath
);
return
file
;
}
/**
* 获取资源绝对路径
*
* @param relativePath 资源文件相对路径(相对于 resources路径,路径 + 文件名)
* eg: "templates/pdf_export_demo.ftl"
* @return
* @throws FileNotFoundException
*/
public
static
String
getAbsolutePath
(
String
relativePath
)
throws
FileNotFoundException
{
return
getFile
(
relativePath
).
getAbsolutePath
();
}
/**
* 获取资源父级目录
*
* @param relativePath 资源文件相对路径(相对于 resources路径,路径 + 文件名)
* eg: "templates/pdf_export_demo.ftl"
* @return
* @throws FileNotFoundException
*/
public
static
String
getParent
(
String
relativePath
)
throws
FileNotFoundException
{
return
getFile
(
relativePath
).
getParent
();
}
/**
* 获取资源文件名
*
* @param relativePath 资源文件相对路径(相对于 resources路径,路径 + 文件名)
* eg: "templates/pdf_export_demo.ftl"
* @return
* @throws FileNotFoundException
*/
public
static
String
getFileName
(
String
relativePath
)
throws
FileNotFoundException
{
return
getFile
(
relativePath
).
getName
();
}
}
\ No newline at end of file
science-admin/src/main/resources/fonts/msyh.ttc
0 → 100644
View file @
5ba9ca80
File added
science-admin/src/main/resources/fonts/simsun.ttc
View file @
5ba9ca80
No preview for this file type
science-admin/src/main/resources/mapper/ComProjectTaskDAO.xml
View file @
5ba9ca80
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
ic.unit_link_name,ic.unit_link_mobile,ic.unit_link_email,ic.unit_link_fax,ic.subject_scope,ic.proj_abstract,ic.proj_keywords,
ic.unit_link_name,ic.unit_link_mobile,ic.unit_link_email,ic.unit_link_fax,ic.subject_scope,ic.proj_abstract,ic.proj_keywords,
ic.total_funding,ic.gov_funding,ic.unit_funding,ic.self_funding,ic.other_funding,
ic.total_funding,ic.gov_funding,ic.unit_funding,ic.self_funding,ic.other_funding,
ic.research_content,ic.technology_target, ic.economy_target, ic.achievement_target, ic.technology_reports_target, ic.other_target,
ic.research_content,ic.technology_target, ic.economy_target, ic.achievement_target, ic.technology_reports_target, ic.other_target,
ic.proj_attribute,ic.remark,ic.year_target,ic.year1_goal,ic.year2_goal,ic.year3_goal,
ic.proj_attribute,ic.remark,ic.year_target,ic.year1_goal,ic.year2_goal,ic.year3_goal,
ic.file_id,
c.id download_id,c.download_url,c.file_name
c.id download_id,c.download_url,c.file_name
from com_project a
from com_project a
left join com_project_task pt on pt.proj_id=a.id
left join com_project_task pt on pt.proj_id=a.id
...
...
science-admin/src/main/resources/template/tmp-report.html
0 → 100644
View file @
5ba9ca80
This diff is collapsed.
Click to expand it.
science-admin/src/main/resources/template/tmp-task.html
0 → 100644
View file @
5ba9ca80
This diff is collapsed.
Click to expand it.
upload/files/2024/7/358930df-97cf-440f-8bbf-49b88eec7fe5.doc
deleted
100644 → 0
View file @
116526fd
File deleted
upload/files/2024/7/5e9700b0-f6d8-4ad0-a229-8e93bf6f3436.xls
deleted
100644 → 0
View file @
116526fd
File deleted
upload/files/2024/7/c0775804-a790-4f93-b15b-555a8978a98c.jpg
deleted
100644 → 0
View file @
116526fd
77.8 KB
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