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
d417aa48
Commit
d417aa48
authored
Feb 26, 2025
by
wangxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
9c5f747e
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1174 additions
and
146 deletions
+1174
-146
ComProjectController.java
...ava/com/yiboshi/science/rest/v1/ComProjectController.java
+2
-2
ComProjectTaskController.java
...com/yiboshi/science/rest/v1/ComProjectTaskController.java
+18
-27
PDF.java
...ce-admin/src/main/java/com/yiboshi/science/utils/PDF.java
+0
-115
PdfUtil.java
...dmin/src/main/java/com/yiboshi/science/utils/PdfUtil.java
+61
-0
TaskInfoToPDFUtil.java
...ain/java/com/yiboshi/science/utils/TaskInfoToPDFUtil.java
+1086
-0
WordUtil.java
...min/src/main/java/com/yiboshi/science/utils/WordUtil.java
+4
-0
application.yml
science-admin/src/main/resources/application.yml
+1
-1
BaseDAO.java
...-base/src/main/java/com/yiboshi/science/base/BaseDAO.java
+2
-1
No files found.
science-admin/src/main/java/com/yiboshi/science/rest/v1/ComProjectController.java
View file @
d417aa48
...
@@ -15,7 +15,7 @@ import com.yiboshi.science.service.ComFileService;
...
@@ -15,7 +15,7 @@ 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.service.SystemParameterService
;
import
com.yiboshi.science.service.SystemParameterService
;
import
com.yiboshi.science.utils.P
DF
;
import
com.yiboshi.science.utils.P
dfUtil
;
import
com.yiboshi.science.utils.ProjectInfoToPDF
;
import
com.yiboshi.science.utils.ProjectInfoToPDF
;
import
com.yiboshi.science.utils.StringUtil
;
import
com.yiboshi.science.utils.StringUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -99,7 +99,7 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
...
@@ -99,7 +99,7 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
@PostMapping
@PostMapping
public
ResponseDataModel
<
byte
[]>
export
(
@PathVariable
String
id
)
{
public
ResponseDataModel
<
byte
[]>
export
(
@PathVariable
String
id
)
{
try
{
try
{
return
ResponseDataModel
.
ok
(
P
DF
.
createPDF
(
response
,
"tmp-report.html"
,
new
ComProject
()));
return
ResponseDataModel
.
ok
(
P
dfUtil
.
createPDF
(
response
,
"tmp-report.html"
,
new
ComProject
()));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
return
new
ResponseDataModel
(
ResponseCode
.
SERVER_ERROR
,
""
);
return
new
ResponseDataModel
(
ResponseCode
.
SERVER_ERROR
,
""
);
}
}
...
...
science-admin/src/main/java/com/yiboshi/science/rest/v1/ComProjectTaskController.java
View file @
d417aa48
package
com
.
yiboshi
.
science
.
rest
.
v1
;
package
com
.
yiboshi
.
science
.
rest
.
v1
;
import
com.
yiboshi.arch.base.ResponseCode
;
import
com.
itextpdf.text.DocumentException
;
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
;
import
com.yiboshi.science.config.security.SecurityUserHolder
;
import
com.yiboshi.science.config.security.SecurityUserHolder
;
import
com.yiboshi.science.entity.ComProject
;
import
com.yiboshi.science.entity.ComProjectAudit
;
import
com.yiboshi.science.entity.ComProjectAudit
;
import
com.yiboshi.science.entity.ComProjectTask
;
import
com.yiboshi.science.entity.ComProjectTask
;
import
com.yiboshi.science.entity.SelectListItem
;
import
com.yiboshi.science.entity.SelectListItem
;
import
com.yiboshi.science.enumeration.CommonEnum
;
import
com.yiboshi.science.enumeration.CommonEnum
;
import
com.yiboshi.science.param.dto.ComDownloadDTO
;
import
com.yiboshi.science.param.dto.ComFileDTO
;
import
com.yiboshi.science.param.dto.ComProjectTaskDTO
;
import
com.yiboshi.science.param.dto.ComProjectTaskDTO
;
import
com.yiboshi.science.param.dto.DataStatisticsDTO
;
import
com.yiboshi.science.param.dto.DataStatisticsDTO
;
import
com.yiboshi.science.param.query.ComProjectTaskQueryVO
;
import
com.yiboshi.science.param.query.ComProjectTaskQueryVO
;
import
com.yiboshi.science.rest.BaseController
;
import
com.yiboshi.science.rest.BaseController
;
import
com.yiboshi.science.service.ComProjectTaskService
;
import
com.yiboshi.science.service.ComProjectTaskService
;
import
com.yiboshi.science.service.SystemParameterService
;
import
com.yiboshi.science.utils.PDF
;
import
com.yiboshi.science.utils.PdfUtil
;
import
com.yiboshi.science.utils.StringUtil
;
import
com.yiboshi.science.utils.StringUtil
;
import
com.yiboshi.science.utils.TaskInfoToPDFUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.velocity.VelocityContext
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.BindingResult
;
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
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.ServletOutputStream
;
import
java
x.validation.constraints.NotBlank
;
import
java
.io.IOException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -152,25 +144,24 @@ public class ComProjectTaskController extends BaseController<ComProjectTaskServi
...
@@ -152,25 +144,24 @@ public class ComProjectTaskController extends BaseController<ComProjectTaskServi
@ApiOperation
(
value
=
"项目导出"
,
httpMethod
=
"POST"
,
notes
=
"项目导出"
)
@ApiOperation
(
value
=
"项目导出"
,
httpMethod
=
"POST"
,
notes
=
"项目导出"
)
@RequestMapping
(
"/export/{id}"
)
@RequestMapping
(
"/export/{id}"
)
@PostMapping
@PostMapping
public
ResponseDataModel
<
byte
[]>
export
(
@PathVariable
String
id
)
{
public
void
export
(
@PathVariable
String
id
)
throws
DocumentException
,
IOException
{
try
{
try
{
try
(
ServletOutputStream
outputStream
=
response
.
getOutputStream
())
{
ComProjectTaskDTO
dto
=
ComProjectTaskService
.
getTaskByProjId
(
id
);
VelocityContext
context
=
new
VelocityContext
();
// 生成PDF文件字节数组
Calendar
calendar
=
Calendar
.
getInstance
(
);
byte
[]
pdfBytes
=
TaskInfoToPDFUtil
.
createContractPdf
(
ComProjectTaskService
.
getTaskByProjId
(
id
)
);
int
month
=
calendar
.
get
(
Calendar
.
MONTH
)
+
1
;
// 设置响应头
int
day
=
calendar
.
get
(
Calendar
.
DATE
);
response
.
setContentType
(
"application/pdf"
);
context
.
put
(
"reportYear"
,
2024
);
String
fileName
=
new
String
((
dto
.
getProjName
()
+
".pdf"
).
getBytes
(
"UTF-8"
),
"ISO-8859-1"
);
context
.
put
(
"year"
,
calendar
.
get
(
Calendar
.
YEAR
)
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment; filename="
+
fileName
);
context
.
put
(
"month"
,
month
>=
10
?
month
:
"0"
+
mon
th
);
response
.
setContentLength
(
pdfBytes
.
leng
th
);
context
.
put
(
"day"
,
day
>=
10
?
day
:
"0"
+
day
);
// 写入响应流
PdfUtil
.
pdfFile
(
context
,
"/template/demo.html"
,
outputStream
);
try
(
ServletOutputStream
out
=
response
.
getOutputStream
())
{
}
catch
(
Exception
e
)
{
out
.
write
(
pdfBytes
);
e
.
printStackTrace
();
out
.
flush
();
}
}
return
ResponseDataModel
.
ok
(
null
);
// return ResponseDataModel.ok(PDF.createPDF(response, "tmp-task.html", ComProjectTaskService.getTaskByProjId(id)));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
return
new
ResponseDataModel
(
ResponseCode
.
SERVER_ERROR
,
""
);
response
.
setContentType
(
"text/plain;charset=UTF-8"
);
response
.
getWriter
().
write
(
"导出PDF失败:"
+
e
.
getMessage
());
}
}
}
}
...
...
science-admin/src/main/java/com/yiboshi/science/utils/PDF.java
deleted
100644 → 0
View file @
9c5f747e
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.xhtmlrenderer.pdf.ITextRenderer
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
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
();
// Java代码示例
// renderer.getSharedContext().setDPI(1); // 提高DPI减少锯齿
// 设置中文字体
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 @
d417aa48
...
@@ -8,15 +8,27 @@ import com.itextpdf.kernel.geom.PageSize;
...
@@ -8,15 +8,27 @@ import com.itextpdf.kernel.geom.PageSize;
import
com.itextpdf.kernel.pdf.PdfDocument
;
import
com.itextpdf.kernel.pdf.PdfDocument
;
import
com.itextpdf.kernel.pdf.PdfWriter
;
import
com.itextpdf.kernel.pdf.PdfWriter
;
import
com.itextpdf.layout.font.FontProvider
;
import
com.itextpdf.layout.font.FontProvider
;
import
com.itextpdf.text.pdf.BaseFont
;
import
com.lowagie.text.DocumentException
;
import
freemarker.cache.ClassTemplateLoader
;
import
freemarker.template.Configuration
;
import
freemarker.template.TemplateException
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.apache.velocity.Template
;
import
org.apache.velocity.Template
;
import
org.apache.velocity.app.Velocity
;
import
org.apache.velocity.app.Velocity
;
import
org.apache.velocity.context.Context
;
import
org.apache.velocity.context.Context
;
import
org.apache.velocity.runtime.RuntimeConstants
;
import
org.apache.velocity.runtime.RuntimeConstants
;
import
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
;
import
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
;
import
org.xhtmlrenderer.pdf.ITextRenderer
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
import
java.io.StringWriter
;
import
java.io.StringWriter
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.util.Map
;
import
static
java
.
lang
.
System
.
in
;
/**
/**
* PDF工具
* PDF工具
...
@@ -67,4 +79,53 @@ public class PdfUtil {
...
@@ -67,4 +79,53 @@ public class PdfUtil {
}
}
}
}
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
(
PdfUtil
.
class
.
getClassLoader
(),
"template"
);
cfg
.
setTemplateLoader
(
new
ClassTemplateLoader
(
PdfUtil
.
class
.
getClassLoader
(),
"/template"
));
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
// 获取模板
freemarker
.
template
.
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
();
// Java代码示例
// renderer.getSharedContext().setDPI(1); // 提高DPI减少锯齿
// 设置中文字体
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
;
}
}
}
science-admin/src/main/java/com/yiboshi/science/utils/TaskInfoToPDFUtil.java
0 → 100644
View file @
d417aa48
package
com
.
yiboshi
.
science
.
utils
;
import
com.itextpdf.text.*
;
import
com.itextpdf.text.pdf.*
;
import
com.yiboshi.science.param.dto.*
;
import
java.io.ByteArrayOutputStream
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
static
com
.
yiboshi
.
science
.
utils
.
ProjectInfoToPDF
.
getCurrentOperatingSystem
;
public
class
TaskInfoToPDFUtil
{
static
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
static
SimpleDateFormat
sdfM
=
new
SimpleDateFormat
(
"yyyy年MM月"
);
/**
* 生成项目合同书PDF
*
* @param dto 项目任务信息
* @return PDF文件字节数组
*/
public
static
byte
[]
createContractPdf
(
ComProjectTaskDTO
dto
)
throws
DocumentException
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
Document
document
=
new
Document
(
PageSize
.
A4
,
54
f
,
54
f
,
72
f
,
72
f
);
try
{
// 宋体
BaseFont
sfChinese
=
loadChineseFont
(
"simsun.ttc"
);
// 仿宋
BaseFont
fsChinese
=
loadChineseFont
(
"simfang.ttf"
);
PdfWriter
writer
=
PdfWriter
.
getInstance
(
document
,
baos
);
// 添加添加页码水印事件处理器
writer
.
setPageEvent
(
new
WatermarkPageEvent
(
""
,
fsChinese
));
document
.
open
();
// 首页
firstPageInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 填写说明
fillInInstructions
(
document
,
sfChinese
,
fsChinese
);
// 项目基本信息
baseProjectInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 项目组成员
projectMemberInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 项目主要实施内容和目标
projectTargetInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 项目经费预算表
projectBudgetInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 设备费—购置设备预算明细表
projectDeviceInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 设备费—试制设备预算明细表
projectManufactureInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 项目承担单位研究资金支出预算明细表
projectUnitPaymentInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
// 项目实施阶段及任务
projectStageGoalsInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
//项目课题设置
projectSubInfo
(
document
,
dto
,
sfChinese
,
fsChinese
);
}
finally
{
if
(
document
!=
null
&&
document
.
isOpen
())
{
document
.
close
();
}
}
return
baos
.
toByteArray
();
}
private
static
void
firstPageInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
Font
normalFont
=
new
Font
(
bfChinese
,
16
,
Font
.
NORMAL
);
// 添加附件编号
Paragraph
attachment
=
new
Paragraph
(
"附件4"
,
normalFont
);
attachment
.
setAlignment
(
Element
.
ALIGN_LEFT
);
document
.
add
(
attachment
);
document
.
add
(
new
Paragraph
(
"\n"
));
// 从DTO获取项目编号
Paragraph
projectNoPara
=
new
Paragraph
(
"项目编号:"
+
dto
.
getProjNo
(),
normalFont
);
projectNoPara
.
setAlignment
(
Element
.
ALIGN_LEFT
);
document
.
add
(
projectNoPara
);
document
.
add
(
new
Paragraph
(
"\n\n\n\n\n\n"
));
// 添加标题
Font
titleFont
=
new
Font
(
bfChinese
,
22
,
Font
.
BOLD
);
Paragraph
title
=
new
Paragraph
(
"省级临床医学中心科研项目合同书"
,
titleFont
);
title
.
setAlignment
(
Element
.
ALIGN_CENTER
);
document
.
add
(
title
);
document
.
add
(
new
Paragraph
(
"\n\n\n\n\n\n"
));
Font
labelFont
=
new
Font
(
fsChinese
,
15
,
Font
.
NORMAL
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
5
);
table
.
setWidths
(
new
float
[]{
70
f
,
15
f
,
15
f
,
50
f
,
210
f
});
table
.
isLockedWidth
();
// 添加表格内容
addTablePageCell
(
table
,
"项目名称:"
,
null
,
dto
.
getProjName
(),
4
,
labelFont
);
addTablePageCell
(
table
,
"项目下达单位(甲方):"
,
4
,
dto
.
getAppUnitName
(),
null
,
labelFont
);
addTablePageCell
(
table
,
"项目承担单位(乙方):"
,
4
,
dto
.
getAppUnitName
(),
null
,
labelFont
);
addTablePageCell
(
table
,
"项目负责人:"
,
2
,
dto
.
getAppPersonName
(),
3
,
labelFont
);
addTablePageCell
(
table
,
"项目起止年限:"
,
3
,
sdf
.
format
(
dto
.
getStartDate
())
+
" 至 "
+
sdf
.
format
(
dto
.
getEndDate
()),
2
,
labelFont
);
document
.
add
(
table
);
}
private
static
void
fillInInstructions
(
Document
document
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
document
.
newPage
();
Paragraph
instructionTitle
=
new
Paragraph
(
"填写说明"
,
new
Font
(
fsChinese
,
16
,
Font
.
BOLD
));
instructionTitle
.
setAlignment
(
Element
.
ALIGN_CENTER
);
document
.
add
(
instructionTitle
);
// 添加填写说明内容
String
[]
instructions
=
{
"一、本合同由甲、乙两方共同签订。甲方系指省卫生健康委;乙方系指省级临床医学中心依托单位。"
,
"二、本合同所列内容应实事求是填写,表达要明确、严谨。对填写不符合要求的合同书,或填报内容出现虚报夸大、不切实际的,甲方将退回项目承担单位修改。"
,
"三、合同书规定的项目考核指标应根据省级临床医学中心科研项目建设要求,遵循明确、量化、可考核的原则,其中技术指标应明确项目完成时达到的关键技术参数及预期可以形成的发明专利、标准、新技术、新产品、新装置、论文、专著等的数量;经济指标应明确项目完成时产生的产值、销售收入、利税、技术及产品应用所形成的市场规模、效益等。"
,
"五、项目实施阶段及任务要根据省级临床医学中心科研项目建设实施内容、主要任务和目标合理安排。各阶段的任务目标是项目年度(中期检查(评估)和安排项目结转经费的依据。"
,
"六、项目自筹经费指项目承担单位自行筹措,在项目执行期能够落实的非政府财政经费。原则上自筹经费以项目起始时间后项目单位自筹投入的资金进行核算。"
,
"七、“科技报告类型”,包括项目验收前撰写的全面描述研究过程和技术内容的最终科技报告、项目年度或中期检查时撰写的描述本年度研究过程和进展的年度技术进展报告以及在项目实施过程中撰写的包含科研活动细节及基础数据的专题科技报告。科技报告“公开类别及时限”分为公开或延期公开,内容需要发表论文、申请专利、出版专著或涉及技术诀窍的,可标注为延期公开需要发表论文的,延期公开时限原则上在2年(含2年)以内;需要申请专利、出版专著的,延期公开时限原则上在3年(含3年)以内;涉及技术诀窍的,延期公开时限原则上在5年(含5年)以内(涉密项目科技报告按照有关规定管理)"
,
"八、省财政资金支出的预算计划应按照国家及省相关规定执行。重大、重点项目的预算计划应吸纳经费评审时提出的调整意见。"
,
};
Font
contentFont
=
new
Font
(
bfChinese
,
16
,
Font
.
NORMAL
);
for
(
String
instruction
:
instructions
)
{
Paragraph
para
=
new
Paragraph
(
instruction
,
contentFont
);
para
.
setAlignment
(
Element
.
ALIGN_LEFT
);
para
.
setFirstLineIndent
(
28
f
);
// 设置首行缩进
para
.
setLeading
(
30
f
);
// 设置行间距
document
.
add
(
para
);
}
}
private
static
void
baseProjectInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
12
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加项目内容章节
addSection
(
document
,
"一、项目基本情况"
,
titleFont
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
8
);
table
.
setWidths
(
new
float
[]{
80
f
,
80
f
,
30
f
,
60
f
,
60
f
,
80
f
,
30
f
,
100
f
});
table
.
setWidthPercentage
(
100
);
// 设置表格默认边框宽度
table
.
getDefaultCell
().
setBorderWidth
(
0.5f
);
// 添加表格内容
addValueCell
(
table
,
"单位名称:"
,
null
,
dto
.
getAppUnitName
(),
7
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"注册单位类型"
,
null
,
"医疗机构"
,
4
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"组织机构代码/统一社会信用代码"
,
2
,
dto
.
getOrganizationCode
(),
null
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"通讯地址"
,
null
,
dto
.
getUnitAddress
(),
7
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"注册所在地"
,
null
,
dto
.
getRegisteredAddress
(),
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"邮编"
,
null
,
dto
.
getPostCode
(),
null
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"法定代表人"
,
null
,
dto
.
getLegalPerson
(),
2
,
normalFont
,
null
,
null
,
null
);
addCell
(
table
,
"职工总数 "
+
dto
.
getWorkCount
()
+
" (人)"
,
2
,
null
,
normalFont
,
null
,
null
,
null
);
addCell
(
table
,
"其中专科以上人员 "
+
dto
.
getSpecializedPersonnel
()
+
" (人)"
,
4
,
null
,
normalFont
,
null
,
null
,
null
);
addCell
(
table
,
"研究开发人员 "
+
dto
.
getResearchPersonnel
()
+
" (人)"
,
2
,
null
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"开户银行"
,
null
,
dto
.
getDepositBank
(),
4
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"银行账号"
,
null
,
dto
.
getBankAccount
(),
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"开户银行地址"
,
null
,
dto
.
getDepositBankAddress
(),
4
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
table
,
"银行联行号"
,
null
,
dto
.
getInterbankNumber
(),
2
,
normalFont
,
null
,
null
,
null
);
document
.
add
(
table
);
// 添加项目内容章节
addSection
(
document
,
"二、项目基本情况"
,
titleFont
);
// 创建表格
PdfPTable
projTable
=
new
PdfPTable
(
10
);
projTable
.
setWidths
(
new
float
[]{
40
f
,
80
f
,
60
f
,
90
f
,
20
f
,
20
f
,
100
f
,
80
f
,
20
f
,
60
f
});
projTable
.
setWidthPercentage
(
100
);
// 设置表格默认边框宽度
projTable
.
getDefaultCell
().
setBorderWidth
(
0.5f
);
addValueCell
(
projTable
,
"项目编号:"
,
2
,
dto
.
getProjNo
(),
8
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"项目名称"
,
2
,
dto
.
getProjName
(),
8
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"所属我省重点领域"
,
2
,
dto
.
getKeyAreas
(),
8
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"项目开始时间"
,
2
,
sdf
.
format
(
dto
.
getStartDate
()),
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"项目结束时间"
,
3
,
sdf
.
format
(
dto
.
getEndDate
()),
3
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"项目负责人"
,
2
,
dto
.
getAppUnitName
(),
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"联系电话"
,
3
,
dto
.
getMobile
(),
3
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"项目联系人姓名"
,
2
,
dto
.
getLinkName
(),
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"联系人电话"
,
3
,
dto
.
getLinkMobile
(),
3
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"传真"
,
2
,
dto
.
getLinkFax
(),
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"电子邮箱"
,
3
,
dto
.
getLinkEmail
(),
3
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"项目总经费(万元)"
,
2
,
Objects
.
nonNull
(
dto
.
getTotalFunding
())
?
dto
.
getTotalFunding
().
toString
()
:
""
,
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"财政经费(万元)"
,
2
,
Objects
.
nonNull
(
dto
.
getGovFunding
())
?
dto
.
getGovFunding
().
toString
()
:
""
,
null
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"自筹经费(万元)"
,
null
,
Objects
.
nonNull
(
dto
.
getSelfFunding
())
?
dto
.
getSelfFunding
().
toString
()
:
""
,
2
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"是否科技报告:"
,
2
,
dto
.
getIsTechnologyReport
().
equals
(
1
)
?
"是"
:
"否"
,
8
,
normalFont
,
null
,
null
,
null
);
addValueCell
(
projTable
,
"科技报告类型:"
,
2
,
""
,
8
,
normalFont
,
null
,
null
,
null
);
addCell
(
projTable
,
"项目主要参与单位及分工"
,
10
,
null
,
normalFont
,
null
,
null
,
null
);
addCell
(
projTable
,
"序号"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
"单位名称"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
"单位地址"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
"组织机构代码/统一社会信用代码"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
"分 工"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
"签字"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
for
(
int
i
=
dto
.
getCooperativeUnits
()
!=
null
?
dto
.
getCooperativeUnits
().
size
()
:
0
;
i
<
2
;
i
++)
{
if
(
dto
.
getCooperativeUnits
()
==
null
)
{
List
<
ComProjectCooperativeUnitsDTO
>
list
=
new
ArrayList
<>();
dto
.
setCooperativeUnits
(
list
);
}
dto
.
getCooperativeUnits
().
add
(
new
ComProjectCooperativeUnitsDTO
());
}
for
(
int
i
=
0
;
i
<
dto
.
getCooperativeUnits
().
size
();
i
++)
{
addCell
(
projTable
,
String
.
valueOf
(
i
+
1
),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
dto
.
getCooperativeUnits
().
get
(
i
).
getUnitName
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
dto
.
getCooperativeUnits
().
get
(
i
).
getUnitAddress
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
dto
.
getCooperativeUnits
().
get
(
i
).
getOrganizationCode
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
dto
.
getCooperativeUnits
().
get
(
i
).
getProjectWork
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
projTable
,
""
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
document
.
add
(
projTable
);
}
private
static
void
projectMemberInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
// 添加横向页面
document
.
setPageSize
(
PageSize
.
A4
.
rotate
());
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
12
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加项目内容章节
addSection
(
document
,
"三、项目人员情况"
,
titleFont
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
16
);
table
.
setWidths
(
new
float
[]{
35
f
,
45
f
,
20
f
,
30
f
,
15
f
,
15
f
,
50
f
,
15
f
,
15
f
,
30
f
,
50
f
,
30
f
,
15
f
,
35
f
,
5
f
,
30
f
});
table
.
setWidthPercentage
(
100
);
// 设置表格默认边框宽度
table
.
getDefaultCell
().
setBorderWidth
(
0.5f
);
PdfPCell
titleCell
=
new
PdfPCell
(
new
Phrase
(
"项目负责人"
,
new
Font
(
bfChinese
,
10.5f
,
Font
.
BOLD
)));
titleCell
.
setRowspan
(
5
);
titleCell
.
setColspan
(
2
);
// 合并6行
titleCell
.
setHorizontalAlignment
(
Element
.
ALIGN_CENTER
);
titleCell
.
setVerticalAlignment
(
Element
.
ALIGN_MIDDLE
);
titleCell
.
setMinimumHeight
(
25.5f
);
// 调整高度以适应内容
table
.
addCell
(
titleCell
);
// 添加表格内容
addValueCell
(
table
,
"姓名"
,
3
,
dto
.
getAppPersonName
(),
3
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"性别"
,
2
,
dto
.
getSex
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"出生日期"
,
2
,
Objects
.
nonNull
(
dto
.
getBirthday
())
?
sdf
.
format
(
dto
.
getBirthday
())
:
""
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"证件类型"
,
3
,
"身份证"
,
3
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"证件号码"
,
2
,
dto
.
getCertId
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"民族"
,
2
,
dto
.
getNationName
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"职称"
,
3
,
dto
.
getTitleName
(),
3
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"从事专业"
,
2
,
dto
.
getSpecName
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"项目分工"
,
2
,
dto
.
getProjWork
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"学位"
,
3
,
dto
.
getDegreeName
(),
3
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"职务"
,
2
,
dto
.
getDutyName
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"传真"
,
2
,
dto
.
getFax
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"手机"
,
3
,
dto
.
getMobile
(),
3
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"联系电话"
,
2
,
dto
.
getTelephone
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"电子邮箱"
,
2
,
dto
.
getEmail
(),
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
PdfPCell
cell
=
new
PdfPCell
(
new
Phrase
(
"项目负责人"
,
new
Font
(
bfChinese
,
10.5f
,
Font
.
BOLD
)));
cell
.
setColspan
(
16
);
// 合并6行
cell
.
setHorizontalAlignment
(
Element
.
ALIGN_CENTER
);
cell
.
setVerticalAlignment
(
Element
.
ALIGN_MIDDLE
);
cell
.
setMinimumHeight
(
25.5f
);
// 调整高度以适应内容
table
.
addCell
(
cell
);
addCell
(
table
,
"姓名"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"出生日期"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"性别"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"职称"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"学位"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"工作单位"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"电话"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"电子邮箱"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"证件号码"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"项目分工"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"每年工作时间(月)"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"签字"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getMembers
()
==
null
||
dto
.
getMembers
().
size
()
<
4
)
{
for
(
int
i
=
dto
.
getMembers
()
!=
null
?
dto
.
getMembers
().
size
()
:
0
;
i
<
4
;
i
++)
{
if
(
dto
.
getMembers
()
==
null
)
{
List
<
ComProjectMembersDTO
>
list
=
new
ArrayList
<>();
dto
.
setMembers
(
list
);
}
dto
.
getMembers
().
add
(
new
ComProjectMembersDTO
());
}
}
for
(
int
i
=
0
;
i
<
dto
.
getMembers
().
size
();
i
++)
{
ComProjectMembersDTO
e
=
dto
.
getMembers
().
get
(
i
);
addCell
(
table
,
e
.
getName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
Objects
.
nonNull
(
e
.
getBirthday
())
?
sdf
.
format
(
e
.
getBirthday
())
:
""
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSex
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTitleName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getDegreeName
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getWorkUnit
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getMobile
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getEmail
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getCertId
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getProjWork
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
Objects
.
nonNull
(
e
.
getForMonths
())
?
e
.
getForMonths
().
toString
()
:
""
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
""
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
addValueCell
(
table
,
"项目组人数"
,
2
,
Objects
.
nonNull
(
dto
.
getMemCount
())
?
dto
.
getMemCount
().
toString
()
:
"0"
+
"人"
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"高级"
,
null
,
Objects
.
nonNull
(
dto
.
getMemHighCount
())
?
dto
.
getMemHighCount
().
toString
()
:
"0"
+
"人"
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"中级"
,
null
,
Objects
.
nonNull
(
dto
.
getMemMiddleCount
())
?
dto
.
getMemMiddleCount
().
toString
()
:
"0"
+
"人"
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"初级"
,
null
,
Objects
.
nonNull
(
dto
.
getMemLowCount
())
?
dto
.
getMemLowCount
().
toString
()
:
"0"
+
"人"
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addValueCell
(
table
,
"其他"
,
2
,
0
+
"人"
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"--"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
document
.
add
(
table
);
}
private
static
void
projectTargetInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
// 添加横向页面
document
.
setPageSize
(
PageSize
.
A4
);
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
NORMAL
);
// 添加项目内容章节
addSection
(
document
,
"四、项目主要实施内容和目标"
,
titleFont
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
1
);
table
.
setWidths
(
new
float
[]{
100
f
});
table
.
setWidthPercentage
(
100
);
// 设置表格默认边框宽度
table
.
getDefaultCell
().
setBorderWidth
(
0.5f
);
addCell
(
table
,
"项目实施目标"
,
null
,
null
,
titleFont
,
null
,
null
,
null
);
addTableContentCell
(
table
,
""
,
dto
.
getResearchContent
(),
null
,
normalFont
,
200
f
);
addCell
(
table
,
"项目考核指标"
,
null
,
null
,
titleFont
,
null
,
null
,
null
);
addTableContentCell
(
table
,
"1、主要技术指标:"
,
dto
.
getTechnologyTarget
(),
null
,
normalFont
,
200
f
);
addTableContentCell
(
table
,
"2、主要经济指标:"
,
dto
.
getEconomyTarget
(),
null
,
normalFont
,
200
f
);
addTableContentCell
(
table
,
"3、项目实施中形成的示范基地、中试线、生产线及其规模等:"
,
dto
.
getAchievementTarget
(),
null
,
normalFont
,
200
f
);
addTableContentCell
(
table
,
"4、科技报告考核指标"
,
dto
.
getTechnologyReportsTarget
(),
null
,
normalFont
,
200
f
);
addTableContentCell
(
table
,
"5、其他应考核的指标:"
,
dto
.
getOtherTarget
(),
null
,
normalFont
,
200
f
);
document
.
add
(
table
);
}
private
static
void
projectBudgetInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
// 添加横向页面
document
.
setPageSize
(
PageSize
.
A4
);
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
NORMAL
);
// 添加项目内容章节
addSection
(
document
,
"五、项目经费预算表"
,
titleFont
);
Paragraph
section
=
new
Paragraph
(
"金额单位:万元(保留两位小数)"
,
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
));
section
.
setSpacingBefore
(
15
);
section
.
setSpacingAfter
(
10
);
section
.
setAlignment
(
Element
.
ALIGN_RIGHT
);
document
.
add
(
section
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
8
);
table
.
setWidths
(
new
float
[]{
160
f
,
80
f
,
20
f
,
80
f
,
20
f
,
80
f
,
20
f
,
80
f
});
table
.
setWidthPercentage
(
100
);
// 设置表格默认边框宽度
table
.
getDefaultCell
().
setBorderWidth
(
0.5f
);
addCell
(
table
,
"预算科目"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"总预算数"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"财政资金"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"自筹资金"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"备注"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getBudget
()
==
null
||
dto
.
getBudget
().
size
()
<
23
)
{
for
(
int
i
=
dto
.
getBudget
()
!=
null
?
dto
.
getBudget
().
size
()
:
0
;
i
<
23
;
i
++)
{
if
(
dto
.
getBudget
()
==
null
)
{
List
<
ComProjectBudgetDTO
>
list
=
new
ArrayList
<>();
dto
.
setBudget
(
list
);
}
dto
.
getBudget
().
add
(
new
ComProjectBudgetDTO
());
}
}
for
(
int
i
=
0
;
i
<
dto
.
getBudget
().
size
();
i
++)
{
ComProjectBudgetDTO
e
=
dto
.
getBudget
().
get
(
i
);
addCell
(
table
,
e
.
getBudgetName
(),
null
,
null
,
normalFont
,
null
,
null
,
null
);
addCell
(
table
,
e
.
getTotalBudget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getApplyFunds
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSelfFunds
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTotalBudget
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
addCell
(
table
,
"三、分年度用款计划"
,
8
,
null
,
titleFont
,
null
,
null
,
null
);
addCell
(
table
,
"年度"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"第一年"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"第二年"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"第三年"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"合计"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getFundPlan
()
==
null
||
dto
.
getFundPlan
().
size
()
<
3
)
{
for
(
int
i
=
dto
.
getFundPlan
()
!=
null
?
dto
.
getFundPlan
().
size
()
:
0
;
i
<
3
;
i
++)
{
if
(
dto
.
getFundPlan
()
==
null
)
{
List
<
ComProjectFundPlanDTO
>
list
=
new
ArrayList
<>();
dto
.
setFundPlan
(
list
);
}
dto
.
getFundPlan
().
add
(
new
ComProjectFundPlanDTO
());
}
}
for
(
int
i
=
0
;
i
<
dto
.
getFundPlan
().
size
();
i
++)
{
ComProjectFundPlanDTO
e
=
dto
.
getFundPlan
().
get
(
i
);
addCell
(
table
,
e
.
getFundName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getYearValue1
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getYearValue2
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getYearValue3
(),
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTotalAmount
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
document
.
add
(
table
);
}
private
static
void
projectDeviceInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
// 添加横向页面
document
.
setPageSize
(
PageSize
.
A4
.
rotate
());
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加标题
addSection
(
document
,
"设备费—购置设备预算明细表"
,
titleFont
);
// 添加单位说明
Paragraph
unitDesc
=
new
Paragraph
(
"单位:万元(保留两位小数)"
,
normalFont
);
unitDesc
.
setAlignment
(
Element
.
ALIGN_RIGHT
);
unitDesc
.
setSpacingAfter
(
10
f
);
document
.
add
(
unitDesc
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
15
);
float
[]
columnWidths
=
{
25
f
,
60
f
,
50
f
,
40
f
,
30
f
,
40
f
,
40
f
,
40
f
,
40
f
,
40
f
,
40
f
,
40
f
,
40
f
,
60
f
,
60
f
};
table
.
setWidths
(
columnWidths
);
table
.
setWidthPercentage
(
100
);
addCell
(
table
,
"序号"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"设备名称"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"功能和技术指标"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"单价(万元/台套)"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"数量(台套)"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"金额"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"资金来源"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"购置单位"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"存放单位(地点)"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"购置设备类型"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"主要生产厂家及国别"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"规格型号"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"拟开放共享范围"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"购置必要性及对项目研究的作用和用途"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"财政\n"
+
"资金"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"自筹\n"
+
"资金"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getDeviceList
()
==
null
||
dto
.
getDeviceList
().
size
()
<
2
)
{
for
(
int
i
=
dto
.
getDeviceList
()
!=
null
?
dto
.
getDeviceList
().
size
()
:
0
;
i
<
2
;
i
++)
{
if
(
dto
.
getDeviceList
()
==
null
)
{
List
<
ComProjectEquipmentDTO
>
list
=
new
ArrayList
<>();
dto
.
setDeviceList
(
list
);
}
dto
.
getDeviceList
().
add
(
new
ComProjectEquipmentDTO
());
}
}
int
fiftyUpNumber
=
0
;
int
fiftyDownNumber
=
0
;
int
totalNumber
=
0
;
BigDecimal
fiftyUpAmount
=
new
BigDecimal
(
0.0
);
BigDecimal
fiftyDownAmount
=
new
BigDecimal
(
0
);
BigDecimal
totalAmount
=
new
BigDecimal
(
0
);
for
(
int
i
=
0
;
i
<
dto
.
getDeviceList
().
size
();
i
++)
{
ComProjectEquipmentDTO
e
=
dto
.
getDeviceList
().
get
(
i
);
if
(
Objects
.
nonNull
(
e
.
getQuantity
())
&&
Objects
.
nonNull
(
e
.
getUnitPrice
()))
{
int
result
=
e
.
getUnitPrice
().
compareTo
(
new
BigDecimal
(
5
));
if
(
result
>=
0
)
{
fiftyUpNumber
+=
e
.
getQuantity
();
fiftyUpAmount
=
fiftyUpAmount
.
add
(
e
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
e
.
getQuantity
())));
}
else
{
fiftyDownNumber
+=
e
.
getQuantity
();
fiftyDownAmount
=
fiftyDownAmount
.
add
(
e
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
e
.
getQuantity
())));
}
totalNumber
+=
e
.
getQuantity
();
totalAmount
=
totalAmount
.
add
(
e
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
e
.
getQuantity
())));
}
addCell
(
table
,
i
+
1
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getFunctionTarget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getUnitPrice
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getQuantity
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTotalBudget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getBuyUnit
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getStorageLocation
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getEquipmentType
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getManufacturer
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSpecificationType
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSharedScope
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getUseFrom
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
addCell
(
table
,
"单价5万元以上购置设备合计"
,
3
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyUpNumber
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyUpAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"单价5万元以下购置设备合计"
,
3
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyDownNumber
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyDownAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"累 计"
,
3
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalNumber
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
'/'
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
document
.
add
(
table
);
}
private
static
void
projectManufactureInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
// 添加横向页面
document
.
setPageSize
(
PageSize
.
A4
.
rotate
());
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加标题
addSection
(
document
,
"设备费—试制设备预算明细表"
,
titleFont
);
// 添加单位说明
Paragraph
unitDesc
=
new
Paragraph
(
"单位:万元(保留两位小数)"
,
normalFont
);
unitDesc
.
setAlignment
(
Element
.
ALIGN_RIGHT
);
unitDesc
.
setSpacingAfter
(
10
f
);
document
.
add
(
unitDesc
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
10
);
float
[]
columnWidths
=
{
25
f
,
60
f
,
60
f
,
40
f
,
25
f
,
40
f
,
40
f
,
40
f
,
40
f
,
40
f
};
table
.
setWidths
(
columnWidths
);
table
.
setWidthPercentage
(
100
);
addCell
(
table
,
"序号"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"设备名称"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"功能和技术指标"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"单价(万元/台套)"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"数量(台套)"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"金额"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"资金来源"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"试制单位"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"安置单位"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"财政\n"
+
"资金"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"自筹\n"
+
"资金"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getManufactureList
()
==
null
||
dto
.
getManufactureList
().
size
()
<
2
)
{
for
(
int
i
=
dto
.
getManufactureList
()
!=
null
?
dto
.
getManufactureList
().
size
()
:
0
;
i
<
2
;
i
++)
{
if
(
dto
.
getManufactureList
()
==
null
)
{
List
<
ComProjectManufactureDTO
>
list
=
new
ArrayList
<>();
dto
.
setManufactureList
(
list
);
}
dto
.
getManufactureList
().
add
(
new
ComProjectManufactureDTO
());
}
}
int
fiftyUpNumber
=
0
;
BigDecimal
fiftyUpAmount
=
new
BigDecimal
(
0.0
);
BigDecimal
fiftyUpGovFun
=
new
BigDecimal
(
0.0
);
BigDecimal
fiftyUpSelfFun
=
new
BigDecimal
(
0.0
);
int
fiftyDownNumber
=
0
;
BigDecimal
fiftyDownAmount
=
new
BigDecimal
(
0.0
);
BigDecimal
fiftyDownGovFun
=
new
BigDecimal
(
0.0
);
BigDecimal
fiftyDownSelfFun
=
new
BigDecimal
(
0.0
);
int
totalNumber
=
0
;
BigDecimal
totalAmount
=
new
BigDecimal
(
0.0
);
BigDecimal
totalGovFun
=
new
BigDecimal
(
0.0
);
BigDecimal
totalSelfFun
=
new
BigDecimal
(
0.0
);
for
(
int
i
=
0
;
i
<
dto
.
getManufactureList
().
size
();
i
++)
{
ComProjectManufactureDTO
e
=
dto
.
getManufactureList
().
get
(
i
);
if
(
Objects
.
nonNull
(
e
.
getUnitPrice
()))
{
int
result
=
e
.
getUnitPrice
().
compareTo
(
new
BigDecimal
(
5
));
if
(
result
>=
0
)
{
if
(
Objects
.
nonNull
(
e
.
getQuantity
()))
{
fiftyUpNumber
+=
e
.
getQuantity
();
fiftyUpAmount
=
fiftyUpAmount
.
add
(
e
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
e
.
getQuantity
())));
}
if
(
Objects
.
nonNull
(
e
.
getFundAmount
()))
{
fiftyUpGovFun
=
fiftyUpGovFun
.
add
(
e
.
getFundAmount
());
}
if
(
Objects
.
nonNull
(
e
.
getSelfAmount
()))
{
fiftyUpSelfFun
=
fiftyUpSelfFun
.
add
(
e
.
getSelfAmount
());
}
}
else
{
if
(
Objects
.
nonNull
(
e
.
getQuantity
()))
{
fiftyDownNumber
+=
e
.
getQuantity
();
fiftyDownAmount
=
fiftyDownAmount
.
add
(
e
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
e
.
getQuantity
())));
}
if
(
Objects
.
nonNull
(
e
.
getFundAmount
()))
{
fiftyDownGovFun
=
fiftyDownGovFun
.
add
(
e
.
getFundAmount
());
}
if
(
Objects
.
nonNull
(
e
.
getSelfAmount
()))
{
fiftyDownSelfFun
=
fiftyDownSelfFun
.
add
(
e
.
getSelfAmount
());
}
}
if
(
Objects
.
nonNull
(
e
.
getQuantity
()))
{
totalNumber
+=
e
.
getQuantity
();
totalAmount
=
totalAmount
.
add
(
e
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
e
.
getQuantity
())));
}
if
(
Objects
.
nonNull
(
e
.
getFundAmount
()))
{
totalGovFun
=
totalGovFun
.
add
(
e
.
getFundAmount
());
}
if
(
Objects
.
nonNull
(
e
.
getSelfAmount
()))
{
totalSelfFun
=
totalSelfFun
.
add
(
e
.
getSelfAmount
());
}
}
addCell
(
table
,
i
+
1
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getFunctionTarget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getUnitPrice
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getQuantity
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTotalBudget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getFundAmount
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSelfAmount
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getManufactureUnit
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getStorageUnit
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
addCell
(
table
,
"单价5万元以上购置设备合计"
,
3
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyUpNumber
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyUpAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyUpGovFun
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyUpSelfFun
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"单价5万元以下购置设备合计"
,
3
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyDownNumber
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyDownAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyDownGovFun
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
fiftyDownSelfFun
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"累 计"
,
3
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalNumber
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalGovFun
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalSelfFun
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"/"
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
document
.
add
(
table
);
}
private
static
void
projectUnitPaymentInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
// 添加横向页面
document
.
setPageSize
(
PageSize
.
A4
.
rotate
());
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加标题
addSection
(
document
,
"项目承担单位研究资金支出预算明细表"
,
titleFont
);
// 添加单位说明
Paragraph
unitDesc
=
new
Paragraph
(
"金额单位:万元"
,
normalFont
);
unitDesc
.
setAlignment
(
Element
.
ALIGN_RIGHT
);
unitDesc
.
setSpacingAfter
(
10
f
);
document
.
add
(
unitDesc
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
10
);
float
[]
columnWidths
=
{
25
f
,
60
f
,
60
f
,
40
f
,
25
f
,
40
f
,
40
f
,
40
f
,
40
f
,
60
f
};
table
.
setWidths
(
columnWidths
);
table
.
setWidthPercentage
(
100
);
addCell
(
table
,
"序号"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"单位名称"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"统一社会信用代码"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"单位类型"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"任务分工"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"研究任务负责人"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"合计"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"省级财政资金"
,
2
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"其他来源资金"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"小计"
,
null
,
null
,
normalFont
,
null
,
null
,
null
);
addCell
(
table
,
"其中:间接\n"
+
"费用"
,
null
,
null
,
normalFont
,
null
,
null
,
null
);
if
(
dto
.
getUnitPayment
()
==
null
||
dto
.
getUnitPayment
().
size
()
<
2
)
{
for
(
int
i
=
dto
.
getUnitPayment
()
!=
null
?
dto
.
getUnitPayment
().
size
()
:
0
;
i
<
2
;
i
++)
{
if
(
dto
.
getUnitPayment
()
==
null
)
{
List
<
ComProjectUnitPaymentDTO
>
list
=
new
ArrayList
<>();
dto
.
setUnitPayment
(
list
);
}
dto
.
getUnitPayment
().
add
(
new
ComProjectUnitPaymentDTO
());
}
}
BigDecimal
totalAmount
=
new
BigDecimal
(
0.0
);
BigDecimal
totalFundAmount
=
new
BigDecimal
(
0.0
);
BigDecimal
totalIndirectFee
=
new
BigDecimal
(
0.0
);
BigDecimal
totalSelfAmount
=
new
BigDecimal
(
0.0
);
for
(
int
i
=
0
;
i
<
dto
.
getUnitPayment
().
size
();
i
++)
{
ComProjectUnitPaymentDTO
e
=
dto
.
getUnitPayment
().
get
(
i
);
if
(
Objects
.
nonNull
(
e
.
getTotalAmount
()))
{
totalAmount
=
totalAmount
.
add
(
e
.
getTotalAmount
());
}
if
(
Objects
.
nonNull
(
e
.
getFundAmount
()))
{
totalFundAmount
=
totalFundAmount
.
add
(
e
.
getFundAmount
());
}
if
(
Objects
.
nonNull
(
e
.
getIndirectFee
()))
{
totalIndirectFee
=
totalIndirectFee
.
add
(
e
.
getIndirectFee
());
}
if
(
Objects
.
nonNull
(
e
.
getSelfAmount
()))
{
totalSelfAmount
=
totalSelfAmount
.
add
(
e
.
getSelfAmount
());
}
addCell
(
table
,
i
+
1
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getUnitName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSocialCode
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getRoleName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTaskDivision
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTaskLeader
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTotalAmount
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getFundAmount
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getIndirectFee
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSelfAmount
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
addCell
(
table
,
"累 计"
,
6
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalFundAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalIndirectFee
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
totalSelfAmount
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
document
.
add
(
table
);
}
private
static
void
projectStageGoalsInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
document
.
setPageSize
(
PageSize
.
A4
);
document
.
newPage
();
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加标题
addSection
(
document
,
"六、项目实施阶段及任务"
,
titleFont
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
3
);
table
.
setWidths
(
new
float
[]{
30
f
,
150
f
,
320
f
});
table
.
setWidthPercentage
(
100
);
// 添加表头
addCell
(
table
,
"序号"
,
null
,
null
,
normalFont
,
30
f
,
Element
.
ALIGN_CENTER
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"时间"
,
null
,
null
,
normalFont
,
30
f
,
Element
.
ALIGN_CENTER
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"计划完成内容和关键节点目标"
,
null
,
null
,
normalFont
,
30
f
,
Element
.
ALIGN_CENTER
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getStageGoals
()
==
null
||
dto
.
getStageGoals
().
size
()
<
3
)
{
for
(
int
i
=
dto
.
getStageGoals
()
!=
null
?
dto
.
getStageGoals
().
size
()
:
0
;
i
<
3
;
i
++)
{
if
(
dto
.
getStageGoals
()
==
null
)
{
List
<
ComProjectStageGoalDTO
>
list
=
new
ArrayList
<>();
dto
.
setStageGoals
(
list
);
}
dto
.
getStageGoals
().
add
(
new
ComProjectStageGoalDTO
());
}
}
for
(
int
i
=
0
;
i
<
dto
.
getStageGoals
().
size
();
i
++)
{
ComProjectStageGoalDTO
e
=
dto
.
getStageGoals
().
get
(
i
);
addCell
(
table
,
String
.
valueOf
(
i
),
null
,
null
,
normalFont
,
120
f
,
Element
.
ALIGN_CENTER
,
Element
.
ALIGN_CENTER
);
Paragraph
timePara
=
new
Paragraph
();
timePara
.
add
(
new
Chunk
(
"第"
+
numberTo
(
i
+
1
)
+
"阶段\n"
,
normalFont
));
if
(
Objects
.
nonNull
(
e
.
getStartTime
())
&&
Objects
.
nonNull
(
e
.
getEndTime
()))
timePara
.
add
(
new
Chunk
(
sdfM
.
format
(
e
.
getStartTime
())
+
" 至 "
+
sdfM
.
format
(
e
.
getEndTime
()),
normalFont
));
else
timePara
.
add
(
new
Chunk
(
"__年__月 至 __年__月"
,
normalFont
));
timePara
.
setAlignment
(
Element
.
ALIGN_CENTER
);
PdfPCell
timeCell
=
new
PdfPCell
(
timePara
);
timeCell
.
setMinimumHeight
(
120
f
);
timeCell
.
setVerticalAlignment
(
Element
.
ALIGN_MIDDLE
);
timeCell
.
setHorizontalAlignment
(
Element
.
ALIGN_CENTER
);
table
.
addCell
(
timeCell
);
addCell
(
table
,
e
.
getTarget
(),
null
,
null
,
normalFont
,
120
f
,
Element
.
ALIGN_CENTER
,
Element
.
ALIGN_CENTER
);
}
document
.
add
(
table
);
}
private
static
void
projectSubInfo
(
Document
document
,
ComProjectTaskDTO
dto
,
BaseFont
bfChinese
,
BaseFont
fsChinese
)
throws
DocumentException
{
Font
titleFont
=
new
Font
(
bfChinese
,
14
f
,
Font
.
BOLD
);
Font
normalFont
=
new
Font
(
bfChinese
,
10.5f
,
Font
.
NORMAL
);
// 添加标题
addSection
(
document
,
"七、项目课题设置"
,
titleFont
);
// 创建表格
PdfPTable
table
=
new
PdfPTable
(
7
);
float
[]
columnWidths
=
{
25
f
,
60
f
,
60
f
,
40
f
,
25
f
,
40
f
,
40
f
};
table
.
setWidths
(
columnWidths
);
table
.
setWidthPercentage
(
100
);
addCell
(
table
,
"序号"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"课题名称"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"承担单位"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"课题负责人"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"课题预算总经费"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"其中:省科技经费"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
"自筹经费"
,
null
,
2
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
if
(
dto
.
getProjectSubList
()
==
null
||
dto
.
getProjectSubList
().
size
()
<
3
)
{
for
(
int
i
=
dto
.
getProjectSubList
()
!=
null
?
dto
.
getProjectSubList
().
size
()
:
0
;
i
<
3
;
i
++)
{
if
(
dto
.
getProjectSubList
()
==
null
)
{
List
<
ComProjectSubDTO
>
list
=
new
ArrayList
<>();
dto
.
setProjectSubList
(
list
);
}
dto
.
getProjectSubList
().
add
(
new
ComProjectSubDTO
());
}
}
for
(
int
i
=
0
;
i
<
dto
.
getProjectSubList
().
size
();
i
++)
{
ComProjectSubDTO
e
=
dto
.
getProjectSubList
().
get
(
i
);
addCell
(
table
,
i
+
1
,
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getProjName
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getUndertakingUnit
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getDirector
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getTotalBudget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getGovBudget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
addCell
(
table
,
e
.
getSelfBudget
(),
null
,
null
,
normalFont
,
null
,
null
,
Element
.
ALIGN_CENTER
);
}
document
.
add
(
table
);
}
private
static
String
numberTo
(
int
number
)
{
char
[]
cs
=
"零一二三四五六七八九"
.
toCharArray
();
String
temp
=
""
;
while
(
number
>
0
)
{
temp
+=
cs
[
number
%
10
];
number
/=
10
;
}
return
temp
;
}
/**
* 水印页面事件
*/
private
static
class
WatermarkPageEvent
extends
PdfPageEventHelper
{
private
String
watermarkText
;
private
BaseFont
baseFont
;
public
WatermarkPageEvent
(
String
watermarkText
,
BaseFont
baseFont
)
{
this
.
watermarkText
=
watermarkText
;
this
.
baseFont
=
baseFont
;
}
@Override
public
void
onEndPage
(
PdfWriter
writer
,
Document
document
)
{
try
{
PdfContentByte
canvas
=
writer
.
getDirectContentUnder
();
Rectangle
pageSize
=
document
.
getPageSize
();
float
width
=
pageSize
.
getWidth
();
float
height
=
pageSize
.
getHeight
();
// 设置水印字体
canvas
.
saveState
();
canvas
.
beginText
();
canvas
.
setFontAndSize
(
baseFont
,
30
);
// 减小字体大小
canvas
.
setGrayFill
(
0.9f
);
// 计算水印间距
float
xStep
=
width
/
2
;
// 水平间距
float
yStep
=
height
/
3
;
// 垂直间距
// 在页面上添加多个水印
for
(
float
y
=
yStep
/
2
;
y
<
height
;
y
+=
yStep
)
{
for
(
float
x
=
xStep
/
2
;
x
<
width
;
x
+=
xStep
)
{
canvas
.
showTextAligned
(
Element
.
ALIGN_CENTER
,
watermarkText
,
x
,
y
,
45
);
}
}
canvas
.
endText
();
canvas
.
restoreState
();
// 添加页码
PdfContentByte
canvasOver
=
writer
.
getDirectContent
();
canvasOver
.
saveState
();
canvasOver
.
beginText
();
canvasOver
.
setFontAndSize
(
baseFont
,
12
);
// 设置页码字体大小
canvasOver
.
setColorFill
(
BaseColor
.
BLACK
);
// 页码文本
String
text
=
String
.
format
(
"- %d -"
,
writer
.
getPageNumber
());
// 在页面底部居中添加页码
canvasOver
.
showTextAligned
(
Element
.
ALIGN_CENTER
,
text
,
width
/
2
,
// 页面中心
15
,
// 距离底部15单位,降低页码位置
0
);
// 不旋转
canvasOver
.
endText
();
canvasOver
.
restoreState
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
private
static
void
addTablePageCell
(
PdfPTable
table
,
String
label
,
Integer
labelColspan
,
String
value
,
Integer
valueColspan
,
Font
font
)
{
PdfPCell
labelCell
=
new
PdfPCell
(
new
Phrase
(
label
,
font
));
// 设置标签单元格样式
labelCell
.
setMinimumHeight
(
36
f
);
// 增加行高
labelCell
.
setVerticalAlignment
(
Element
.
ALIGN_BOTTOM
);
labelCell
.
setHorizontalAlignment
(
Element
.
ALIGN_LEFT
);
// 改为左对齐
if
(
Objects
.
nonNull
(
labelColspan
))
labelCell
.
setColspan
(
labelColspan
);
labelCell
.
setBorder
(
Rectangle
.
NO_BORDER
);
table
.
addCell
(
labelCell
);
PdfPCell
valueCell
=
new
PdfPCell
(
new
Phrase
(
value
!=
null
?
value
:
""
,
font
));
valueCell
.
setPadding
(
5
f
);
valueCell
.
setMinimumHeight
(
36
f
);
// 增加行高
valueCell
.
setVerticalAlignment
(
Element
.
ALIGN_BOTTOM
);
valueCell
.
setHorizontalAlignment
(
Element
.
ALIGN_LEFT
);
if
(
Objects
.
nonNull
(
valueColspan
))
valueCell
.
setColspan
(
valueColspan
);
// 只保留下边框
valueCell
.
setBorder
(
Rectangle
.
BOTTOM
);
table
.
addCell
(
valueCell
);
}
private
static
void
addValueCell
(
PdfPTable
table
,
String
label
,
Integer
labelColspan
,
String
value
,
Integer
valueColspan
,
Font
font
,
Float
height
,
Integer
vertical
,
Integer
horizontal
)
{
addCell
(
table
,
label
,
labelColspan
,
null
,
font
,
height
,
vertical
,
horizontal
);
addCell
(
table
,
value
,
valueColspan
,
null
,
font
,
height
,
vertical
,
horizontal
);
}
private
static
void
addCell
(
PdfPTable
table
,
Object
value
,
Integer
valueColspan
,
Integer
valueRowspan
,
Font
font
,
Float
height
,
Integer
vertical
,
Integer
horizontal
)
{
if
(
Objects
.
isNull
(
height
))
height
=
25.5f
;
if
(
Objects
.
isNull
(
vertical
))
vertical
=
Element
.
ALIGN_MIDDLE
;
if
(
Objects
.
isNull
(
horizontal
))
horizontal
=
Element
.
ALIGN_LEFT
;
PdfPCell
valueCell
=
new
PdfPCell
(
new
Phrase
(
value
!=
null
?
value
.
toString
()
:
""
,
font
));
if
(
Objects
.
nonNull
(
valueRowspan
))
valueCell
.
setRowspan
(
valueRowspan
);
if
(
Objects
.
nonNull
(
valueColspan
))
valueCell
.
setColspan
(
valueColspan
);
valueCell
.
setPadding
(
5
f
);
valueCell
.
setMinimumHeight
(
height
);
valueCell
.
setVerticalAlignment
(
vertical
);
valueCell
.
setHorizontalAlignment
(
horizontal
);
valueCell
.
setBorderWidth
(
0.5f
);
// 设置边框宽度
table
.
addCell
(
valueCell
);
}
private
static
void
addTableContentCell
(
PdfPTable
table
,
String
label
,
String
value
,
Integer
valueColspan
,
Font
font
,
Float
height
)
{
if
(
Objects
.
isNull
(
height
))
height
=
25.5f
;
Paragraph
para
=
new
Paragraph
(
label
+
(
label
.
equals
(
""
)
?
""
:
"\n"
)
+
value
,
font
);
para
.
setAlignment
(
Element
.
ALIGN_LEFT
);
para
.
setLeading
(
24
f
);
// 设置行间距
PdfPCell
valueCell
=
new
PdfPCell
(
para
);
valueCell
.
setMinimumHeight
(
height
);
valueCell
.
setVerticalAlignment
(
Element
.
ALIGN_TOP
);
valueCell
.
setHorizontalAlignment
(
Element
.
ALIGN_LEFT
);
valueCell
.
setBorderWidth
(
0.5f
);
// 设置边框宽度
if
(
Objects
.
nonNull
(
valueColspan
))
valueCell
.
setColspan
(
valueColspan
);
table
.
addCell
(
valueCell
);
}
private
static
BaseFont
loadChineseFont
(
String
fontName
)
{
try
{
if
(
"linux"
.
equals
(
getCurrentOperatingSystem
()))
{
if
(
fontName
.
toLowerCase
().
endsWith
(
".ttc"
))
return
BaseFont
.
createFont
(
"/usr/share/fonts/"
+
fontName
+
",0"
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
EMBEDDED
);
else
return
BaseFont
.
createFont
(
"/usr/share/fonts/"
+
fontName
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
EMBEDDED
);
}
else
{
if
(
fontName
.
toLowerCase
().
endsWith
(
".ttc"
))
return
BaseFont
.
createFont
(
"c:/Windows/Fonts/"
+
fontName
+
",0"
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
NOT_EMBEDDED
);
else
return
BaseFont
.
createFont
(
"c:/Windows/Fonts/"
+
fontName
,
BaseFont
.
IDENTITY_H
,
BaseFont
.
NOT_EMBEDDED
);
}
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"加载字体文件失败,请确保系统中存在字体文件 "
+
fontName
+
":"
+
e
.
getMessage
(),
e
);
}
}
private
static
void
addSection
(
Document
document
,
String
title
,
Font
font
)
throws
DocumentException
{
Paragraph
section
=
new
Paragraph
(
title
,
font
);
section
.
setSpacingBefore
(
15
);
section
.
setSpacingAfter
(
10
);
document
.
add
(
section
);
}
}
science-admin/src/main/java/com/yiboshi/science/utils/WordUtil.java
0 → 100644
View file @
d417aa48
package
com
.
yiboshi
.
science
.
utils
;
public
class
WordUtil
{
}
science-admin/src/main/resources/application.yml
View file @
d417aa48
...
@@ -8,7 +8,7 @@ spring:
...
@@ -8,7 +8,7 @@ spring:
application
:
application
:
name
:
science-admin
name
:
science-admin
profiles
:
profiles
:
active
:
'
prod
'
active
:
'
local
'
http
:
http
:
encoding
:
encoding
:
force
:
true
force
:
true
...
...
science-base/src/main/java/com/yiboshi/science/base/BaseDAO.java
View file @
d417aa48
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
package
com
.
yiboshi
.
science
.
base
;
package
com
.
yiboshi
.
science
.
base
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -13,6 +14,6 @@ import org.apache.ibatis.annotations.Param;
...
@@ -13,6 +14,6 @@ import org.apache.ibatis.annotations.Param;
* @version 2018-08
* @version 2018-08
*/
*/
@SuppressWarnings
(
"all"
)
@SuppressWarnings
(
"all"
)
public
interface
BaseDAO
<
V
extends
PaginationVO
,
D
extends
BaseDTO
,
E
>{
public
interface
BaseDAO
<
V
extends
PaginationVO
,
D
extends
BaseDTO
,
E
>
extends
BaseMapper
<
E
>
{
Page
<
D
>
getListByPage
(
Page
<
V
>
page
,
@Param
(
"ew"
)
Wrapper
<
V
>
queryWrapper
);
Page
<
D
>
getListByPage
(
Page
<
V
>
page
,
@Param
(
"ew"
)
Wrapper
<
V
>
queryWrapper
);
}
}
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