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
83d9d057
Commit
83d9d057
authored
Feb 14, 2025
by
wangxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
178121a9
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1384 additions
and
54 deletions
+1384
-54
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
+18
-4
ComProjectBudgetServiceImpl.java
...shi/science/service/impl/ComProjectBudgetServiceImpl.java
+12
-13
ComProjectServiceImpl.java
...m/yiboshi/science/service/impl/ComProjectServiceImpl.java
+26
-9
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
+538
-0
tmp-task.html
science-admin/src/main/resources/template/tmp-task.html
+538
-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 @
83d9d057
...
...
@@ -120,7 +120,7 @@
<dependency>
<groupId>
org.freemarker
</groupId>
<artifactId>
freemarker
</artifactId>
<version>
2.3.2
3
</version>
<version>
2.3.2
8
</version>
</dependency>
<dependency>
...
...
@@ -192,26 +192,57 @@
<artifactId>
velocity
</artifactId>
<version>
1.7
</version>
</dependency>
<!-- IText -->
<!--
https://mvnrepository.com/artifact/com.itextpdf/itext7-c
ore -->
<!--
Flying Saucer C
ore -->
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
itext7-core
</artifactId>
<version>
${itext.version}
</version>
<type>
pom
</type>
<groupId>
org.xhtmlrenderer
</groupId>
<artifactId>
flying-saucer-core
</artifactId>
<version>
9.1.22
</version>
</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>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
pdftest
</artifactId>
<version>
7.1.16
</version>
</dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
itextpdf
</artifactId>
<version>
5.5.
8
</version>
<version>
5.5.
13.2
</version>
</dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<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>
...
...
@@ -242,18 +273,6 @@
<version>
${itext.version}
</version>
</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>
<groupId>
com.itextpdf
</groupId>
<artifactId>
font-asian
</artifactId>
...
...
science-admin/src/main/java/com/yiboshi/science/param/dto/ComProjectTaskDTO.java
View file @
83d9d057
...
...
@@ -300,6 +300,19 @@ public class ComProjectTaskDTO extends BaseDTO {
@ApiModelProperty
(
value
=
"项目组成员_参加单位数"
,
position
=
25
)
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
;
/** 项目主要参与单位 */
...
...
science-admin/src/main/java/com/yiboshi/science/rest/v1/ComProjectController.java
View file @
83d9d057
package
com
.
yiboshi
.
science
.
rest
.
v1
;
import
com.itextpdf.text.DocumentException
;
import
com.yiboshi.arch.base.ResponseCode
;
import
com.yiboshi.arch.base.ResponseDataModel
;
import
com.yiboshi.science.base.Pagination
;
import
com.yiboshi.science.config.annotation.Logs
;
...
...
@@ -16,8 +17,7 @@ import com.yiboshi.science.rest.BaseController;
import
com.yiboshi.science.service.ComFileService
;
import
com.yiboshi.science.service.ComProjectService
;
import
com.yiboshi.science.service.ComProjectTaskService
;
import
com.yiboshi.science.utils.ProjectInfoToPDF
;
import
com.yiboshi.science.utils.StringUtil
;
import
com.yiboshi.science.utils.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -26,6 +26,7 @@ import org.springframework.validation.BindingResult;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.ServletOutputStream
;
import
java.io.IOException
;
import
java.util.*
;
...
...
@@ -86,8 +87,19 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
@ApiOperation
(
value
=
"项目信息导出"
,
httpMethod
=
"POST"
,
notes
=
"项目信息导出"
)
@RequestMapping
(
"/export/{id}"
)
@PostMapping
public
void
export
(
@PathVariable
String
id
)
{
comProjectService
.
export
(
id
,
request
,
response
);
public
ResponseDataModel
<
byte
[]>
export
(
@PathVariable
String
id
)
{
try
{
return
ResponseDataModel
.
ok
(
PDF
.
createPDF
(
response
,
"tmp-report.html"
,
new
ComProjectDTO
()));
}
catch
(
Exception
e
)
{
return
new
ResponseDataModel
(
ResponseCode
.
SERVER_ERROR
,
""
);
}
}
@ApiOperation
(
value
=
"项目信息导出"
,
httpMethod
=
"POST"
,
notes
=
"项目信息导出"
)
@RequestMapping
(
"/export1/{id}"
)
@PostMapping
public
void
export1
(
@PathVariable
String
id
)
{
comProjectService
.
export
(
id
,
request
,
response
);
}
/**
...
...
@@ -219,4 +231,5 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
ProjectInfoToPDF
.
generateProjectPDF
(
dto
,
outputPath
);
return
ResponseDataModel
.
ok
(
"项目信息导入成功!"
);
}
}
\ No newline at end of file
science-admin/src/main/java/com/yiboshi/science/service/impl/ComProjectBudgetServiceImpl.java
View file @
83d9d057
...
...
@@ -68,12 +68,7 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
newVO
.
setLevel
(
e
.
getTreeCode
());
if
(
Objects
.
nonNull
(
e
.
getSystemCode
()))
{
try
{
String
[]
arr
=
e
.
getSystemCode
().
split
(
","
);
Integer
[]
li
=
new
Integer
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
li
[
i
]
=
Integer
.
valueOf
(
arr
[
i
]);
}
newVO
.
setSource
(
li
);
getParaItem
(
newVO
,
e
.
getSystemCode
());
}
catch
(
Exception
ex
)
{
logsExceptionService
.
logs
(
null
,
ex
,
"获取参数异常!"
);
}
...
...
@@ -94,14 +89,9 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
budgetList
.
forEach
((
e
)
->
{
if
(
Objects
.
nonNull
(
e
.
getSystemCode
()))
{
try
{
String
[]
arr
=
e
.
getSystemCode
().
split
(
","
);
Integer
[]
li
=
new
Integer
[
arr
.
length
];
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
li
[
i
]
=
Integer
.
valueOf
(
arr
[
i
]);
}
e
.
setSource
(
li
);
getParaItem
(
e
,
e
.
getSystemCode
());
}
catch
(
Exception
ex
)
{
logsExceptionService
.
logs
(
null
,
ex
,
"
获取参数
异常!"
);
logsExceptionService
.
logs
(
null
,
ex
,
"
经费配置
异常!"
);
}
}
});
...
...
@@ -109,6 +99,15 @@ public class ComProjectBudgetServiceImpl extends BaseServiceImpl<ComProjectBudge
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
public
void
insertBudgetList
(
List
<
ComProjectBudgetDTO
>
budgetList
,
String
objectId
)
{
ComProjectBudget
E
=
new
ComProjectBudget
();
...
...
science-admin/src/main/java/com/yiboshi/science/service/impl/ComProjectServiceImpl.java
View file @
83d9d057
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.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -16,11 +18,13 @@ import com.yiboshi.science.param.query.ComProjectQueryVO;
import
com.yiboshi.science.service.*
;
import
com.yiboshi.science.utils.*
;
import
lombok.AllArgsConstructor
;
import
org.apache.velocity.VelocityContext
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
...
...
@@ -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
);
if
(
null
!=
p
)
{
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
}
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
());
if
(
p
.
getProjType
().
equals
(
1
))
{
WordUtils
utl
=
new
WordUtils
();
...
...
@@ -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 @
83d9d057
...
...
@@ -460,8 +460,6 @@ public class ComProjectTaskServiceImpl extends BaseServiceImpl<ComProjectTaskDAO
@Transactional
public
void
audit
(
ComProjectAudit
dto
,
String
auditUnitId
,
String
treeCode
)
{
// false 报上级或返回下一级 true报到最高级或返回个人
int
state
=
0
;
ComProjectTask
task
=
this
.
getById
(
dto
.
getAuditObjectId
());
if
(
null
==
task
)
throw
new
BusinessException
(
"审核对象不存在!"
);
...
...
science-admin/src/main/java/com/yiboshi/science/utils/HtmlBuilder.java
View file @
83d9d057
...
...
@@ -65,7 +65,7 @@ public class HtmlBuilder {
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
>();
// 获取f对象对应类中的所有属性域
Field
[]
fields
=
obj
.
getClass
().
getDeclaredFields
();
...
...
science-admin/src/main/java/com/yiboshi/science/utils/PDF.java
0 → 100644
View file @
83d9d057
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 @
83d9d057
...
...
@@ -26,8 +26,6 @@ import java.nio.charset.StandardCharsets;
*/
public
class
PdfUtil
{
static
{
// Velocity初始化
Velocity
.
setProperty
(
RuntimeConstants
.
OUTPUT_ENCODING
,
StandardCharsets
.
UTF_8
);
...
...
@@ -49,9 +47,9 @@ public class PdfUtil {
try
(
PdfWriter
pdfWriter
=
new
PdfWriter
(
outputStream
))
{
PdfDocument
pdfDocument
=
new
PdfDocument
(
pdfWriter
);
pdfDocument
.
setDefaultPageSize
(
PageSize
.
A4
);
ConverterProperties
properties
=
new
ConverterProperties
();
FontProvider
fontProvider
=
new
FontProvider
();
// 字体设置,解决中文不显示问题
PdfFont
sysFont
=
PdfFontFactory
.
createFont
(
"STSongStd-Light"
,
"UniGB-UCS2-H"
);
fontProvider
.
addFont
(
sysFont
.
getFontProgram
(),
"UniGB-UCS2-H"
);
...
...
@@ -60,7 +58,9 @@ public class PdfUtil {
Template
pfdTemplate
=
Velocity
.
getTemplate
(
template
,
"UTF-8"
);
StringWriter
writer
=
new
StringWriter
();
pfdTemplate
.
merge
(
context
,
writer
);
HtmlConverter
.
convertToPdf
(
writer
.
toString
(),
pdfDocument
,
properties
);
pdfDocument
.
close
();
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"PFD文件生成失败"
,
e
);
...
...
science-admin/src/main/java/com/yiboshi/science/utils/ResourceFileUtil.java
0 → 100644
View file @
83d9d057
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 @
83d9d057
File added
science-admin/src/main/resources/fonts/simsun.ttc
View file @
83d9d057
No preview for this file type
science-admin/src/main/resources/mapper/ComProjectTaskDAO.xml
View file @
83d9d057
...
...
@@ -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.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.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
from com_project a
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 @
83d9d057
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
/>
<title>
HTML to PDF Example
</title>
<style>
body
{
width
:
100%
;
height
:
100%
;
margin
:
0
;
padding
:
0
;
font-size
:
12pt
;
font-family
:
SimSun
,
sans-serif
;
}
*
{
box-sizing
:
border-box
;
}
.page
{
/*width: 210mm;*/
/*height: 297mm;*/
/*margin: 0 auto;*/
background-color
:
white
;
box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
0.1
);
padding
:
0
20mm
;
}
@page
{
size
:
A4
;
margin
:
2cm
0
;
}
@media
print
{
.page
{
margin
:
0
;
border
:
initial
;
border-radius
:
initial
;
width
:
initial
;
min-height
:
initial
;
box-shadow
:
initial
;
background
:
initial
;
page-break-after
:
always
;
}
}
table
{
border-collapse
:
collapse
!important
;
width
:
100%
;
border-left
:
1px
solid
black
;
border-top
:
1px
solid
black
;
}
table
tr
{
min-height
:
25.5pt
;
}
table
td
{
padding
:
1px
;
min-width
:
10px
;
border-right
:
1px
solid
black
;
border-bottom
:
1px
solid
black
;
}
.head-tab
{
width
:
480px
;
margin
:
0
auto
;
font-size
:
15pt
;
border
:
0
;
}
.head-tab
tr
{
height
:
40px
;
}
.head-tab
td
{
padding
:
0
;
border
:
0
;
vertical-align
:
bottom
;
}
.head-tab
.border-B
{
border-bottom
:
1px
solid
rgb
(
0
0
0
);
}
.t_content
{
text-align
:
center
;
}
</style>
</head>
<body>
<div
class=
"page"
>
<p
style=
"font-size:22pt;text-align:center;"
>
省级临床医学中心科研项目申请书
</p>
<table
class=
"head-tab"
>
<tr>
<td>
项目名称:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td>
申报单位:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td
colspan=
"3"
>
推荐部门(丙方):
</td>
<td
class=
"border-B"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
项目负责人:
</td>
<td
colspan=
"2"
class=
"border-B"
></td>
</tr>
<tr>
<td>
联系电话:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td>
起止年限:
</td>
<td
colspan=
"3"
class=
"border-B"
>
年 月 至 年 月
</td>
</tr>
<tr>
<td>
填报日期:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td
style=
"width: 101px;"
>
</td>
<td
style=
"width: 20px;"
>
</td>
<td
style=
"width: 60px;"
>
</td>
<td>
</td>
</tr>
</table>
</div>
<div
class=
"page t_content"
>
<table>
<tr>
<td
style=
"width: 40px"
></td>
<td
style=
"width: 80px"
></td>
<td
style=
"width: 20px"
></td>
<td
style=
"width: 40px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 100px"
></td>
<td
style=
"width: 50px"
></td>
<td></td>
</tr>
<tr>
<td
rowspan=
"6"
>
申
<br/>
请
<br/>
人
<br/>
信
<br/>
息
</td>
<td>
姓名
</td>
<td
colspan=
"2"
></td>
<td>
性别
</td>
<td
colspan=
"2"
></td>
<td>
出生
<br/>
年月
</td>
<td></td>
<td>
民族
</td>
<td></td>
</tr>
<tr>
<td>
学 位
</td>
<td
colspan=
"2"
></td>
<td>
职称
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"2"
>
每年工作时间(月)
</td>
<td></td>
</tr>
<tr>
<td>
电 话
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
电子邮箱
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
个人通讯地址
</td>
<td
colspan=
"8"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
工 作 单 位
</td>
<td
colspan=
"8"
></td>
</tr>
<tr
style=
"height: 200px"
>
<td
colspan=
"2"
>
主要研究领域
</td>
<td
colspan=
"8"
></td>
</tr>
<tr>
<td
rowspan=
"3"
>
申请
<br/>
单位
<br/>
信息
</td>
<td>
单位名称
</td>
<td
colspan=
"9"
></td>
</tr>
<tr>
<td>
联系人
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
电话
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td>
电子信箱
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
传真
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
rowspan=
"2"
>
合作
<br/>
单位
</td>
<td
colspan=
"10"
>
1
</td>
</tr>
<tr>
<td
colspan=
"10"
>
2
</td>
</tr>
<tr>
<td
rowspan=
"4"
>
项目
<br/>
基本
<br/>
信息
</td>
<td>
项目名称
</td>
<td
colspan=
"9"
></td>
</tr>
<tr>
<td>
学科代码
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
选题范围
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td>
项目类别
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
附注说明
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td>
研究期限
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
申请经费
</td>
<td
colspan=
"3"
></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<table>
<tr
style=
"height: 300px;"
>
<td
style=
"width: 40px"
>
项目摘要(400字)
</td>
<td></td>
</tr>
<tr>
<td>
关键词
</td>
<td></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<p>
项目组主要成员(注:不包括项目申请人)
</p>
<table>
<tr>
<td>
序号
</td>
<td>
姓名
</td>
<td>
出生年月
</td>
<td>
性别
</td>
<td>
职称
</td>
<td>
学位
</td>
<td>
工作单位
</td>
<td>
电话
</td>
<td>
电子邮箱
</td>
<td>
证件号码
</td>
<td>
项目分工
</td>
<td>
每年工作时间(月)
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p></p>
<table>
<tr>
<td>
总人数
</td>
<td>
高级
</td>
<td>
中级
</td>
<td>
初级
</td>
<td>
博士后
</td>
<td>
博士生
</td>
<td>
硕士生
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<p>
绩效目标表
</p>
<table>
<tr>
<td
colspan=
"14"
>
{{ projectKPI.reportYear }}年度
</td>
</tr>
<tr>
<td>
项目名称
</td>
<td
colspan=
"13"
>
{{ projectKPI.projName }}
</td>
</tr>
<tr>
<td>
主管处室
</td>
<td
colspan=
"6"
>
{{ projectKPI.managerDept }}
</td>
<td
colspan=
"4"
>
实施单位
</td>
<td
colspan=
"3"
>
{{ projectKPI.appUnitName }}
</td>
</tr>
<tr>
<td>
项目属性
</td>
<td
colspan=
"6"
></td>
<td
colspan=
"4"
>
项目期
</td>
<td
colspan=
"3"
>
{{ projectKPI.projDeadline }}
</td>
</tr>
<tr>
<td
rowspan=
"3"
>
项目资金(万元)
</td>
<td
colspan=
"3"
>
总体资金总额:
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"4"
>
年度资金总额:
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
colspan=
"3"
>
其中:财政拨款
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"4"
>
其中:财政拨款
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
colspan=
"3"
>
其他资金
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"4"
>
其他资金
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
rowspan=
"3"
>
总体考核目标
</td>
<td
colspan=
"6"
>
总体目标()
</td>
<td
colspan=
"7"
>
分年度指标
</td>
</tr>
<tr>
<td
colspan=
"6"
rowspan=
"2"
>
{{projectKPI.yearTarget}}
</td>
<td
class=
"target-value"
colspan=
"2"
>
{{ moment(projectKPI.startDate).year() }}年
</td>
<td
class=
"target-value"
colspan=
"1"
>
{{ moment(projectKPI.startDate).add(1, 'year').year() }}年
</td>
<td
class=
"target-value"
colspan=
"4"
>
{{ moment(projectKPI.startDate).add(2, 'year').year() }}年
</td>
</tr>
<tr>
<td
colspan=
"2"
>
{{ projectKPI.year1Goal }}
</td>
<td
colspan=
"1"
>
{{ projectKPI.year2Goal }}
</td>
<td
colspan=
"4"
>
{{ projectKPI.year3Goal }}
</td>
</tr>
<tr>
<td></td>
<td>
一级指标
</td>
<td>
二级指标
</td>
<td
colspan=
"2"
>
三级指标
</td>
<td
>
指标值
</td>
<td>
绩效标准
</td>
<td>
二级指标
</td>
<td
colspan=
"3"
>
三级指标
</td>
<td
colspan=
"3"
>
指标值
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<p>
项目经费预算表
</p>
<p>
金额单位:万元(保留两位小数)
</p>
<table>
<tr>
<td>
预算科目
</td>
<td>
总预算数
</td>
<td>
财政资金
</td>
<td>
自筹资金
</td>
<td>
备注
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<table>
<tr>
<td
colspan=
"5"
>
三、分年度用款计划
</td>
</tr>
<tr>
<td>
年度
</td>
<td>
第一年
</td>
<td>
第二年
</td>
<td>
第三年
</td>
<td>
合计
</td>
</tr>
<tr>
<td>
用款总额
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
财政资金
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
自筹资金
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
science-admin/src/main/resources/template/tmp-task.html
0 → 100644
View file @
83d9d057
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
/>
<title>
HTML to PDF Example
</title>
<style>
body
{
width
:
100%
;
height
:
100%
;
margin
:
0
;
padding
:
0
;
font-size
:
12pt
;
font-family
:
SimSun
,
sans-serif
;
}
*
{
box-sizing
:
border-box
;
}
.page
{
/*width: 210mm;*/
/*height: 297mm;*/
/*margin: 0 auto;*/
background-color
:
white
;
box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
0.1
);
padding
:
0
20mm
;
}
@page
{
size
:
A4
;
margin
:
2cm
0
;
}
@media
print
{
.page
{
margin
:
0
;
border
:
initial
;
border-radius
:
initial
;
width
:
initial
;
min-height
:
initial
;
box-shadow
:
initial
;
background
:
initial
;
page-break-after
:
always
;
}
}
table
{
border-collapse
:
collapse
!important
;
width
:
100%
;
border-left
:
1px
solid
black
;
border-top
:
1px
solid
black
;
}
table
tr
{
min-height
:
25.5pt
;
}
table
td
{
padding
:
1px
;
min-width
:
10px
;
border-right
:
1px
solid
black
;
border-bottom
:
1px
solid
black
;
}
.head-tab
{
width
:
480px
;
margin
:
0
auto
;
font-size
:
15pt
;
border
:
0
;
}
.head-tab
tr
{
height
:
40px
;
}
.head-tab
td
{
padding
:
0
;
border
:
0
;
vertical-align
:
bottom
;
}
.head-tab
.border-B
{
border-bottom
:
1px
solid
rgb
(
0
0
0
);
}
.t_content
{
text-align
:
center
;
}
</style>
</head>
<body>
<div
class=
"page"
>
<p
style=
"font-size:22pt;text-align:center;"
>
省级临床医学中心科研项目申请书
</p>
<table
class=
"head-tab"
>
<tr>
<td>
项目名称:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td>
申报单位:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td
colspan=
"3"
>
推荐部门(丙方):
</td>
<td
class=
"border-B"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
项目负责人:
</td>
<td
colspan=
"2"
class=
"border-B"
></td>
</tr>
<tr>
<td>
联系电话:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td>
起止年限:
</td>
<td
colspan=
"3"
class=
"border-B"
>
年 月 至 年 月
</td>
</tr>
<tr>
<td>
填报日期:
</td>
<td
colspan=
"3"
class=
"border-B"
></td>
</tr>
<tr>
<td
style=
"width: 101px;"
>
</td>
<td
style=
"width: 20px;"
>
</td>
<td
style=
"width: 60px;"
>
</td>
<td>
</td>
</tr>
</table>
</div>
<div
class=
"page t_content"
>
<table>
<tr>
<td
style=
"width: 40px"
></td>
<td
style=
"width: 80px"
></td>
<td
style=
"width: 20px"
></td>
<td
style=
"width: 40px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 50px"
></td>
<td
style=
"width: 100px"
></td>
<td
style=
"width: 50px"
></td>
<td></td>
</tr>
<tr>
<td
rowspan=
"6"
>
申
<br/>
请
<br/>
人
<br/>
信
<br/>
息
</td>
<td>
姓名
</td>
<td
colspan=
"2"
></td>
<td>
性别
</td>
<td
colspan=
"2"
></td>
<td>
出生
<br/>
年月
</td>
<td></td>
<td>
民族
</td>
<td></td>
</tr>
<tr>
<td>
学 位
</td>
<td
colspan=
"2"
></td>
<td>
职称
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"2"
>
每年工作时间(月)
</td>
<td></td>
</tr>
<tr>
<td>
电 话
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
电子邮箱
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
个人通讯地址
</td>
<td
colspan=
"8"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
工 作 单 位
</td>
<td
colspan=
"8"
></td>
</tr>
<tr
style=
"height: 200px"
>
<td
colspan=
"2"
>
主要研究领域
</td>
<td
colspan=
"8"
></td>
</tr>
<tr>
<td
rowspan=
"3"
>
申请
<br/>
单位
<br/>
信息
</td>
<td>
单位名称
</td>
<td
colspan=
"9"
></td>
</tr>
<tr>
<td>
联系人
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
电话
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td>
电子信箱
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
传真
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
rowspan=
"2"
>
合作
<br/>
单位
</td>
<td
colspan=
"10"
>
1
</td>
</tr>
<tr>
<td
colspan=
"10"
>
2
</td>
</tr>
<tr>
<td
rowspan=
"4"
>
项目
<br/>
基本
<br/>
信息
</td>
<td>
项目名称
</td>
<td
colspan=
"9"
></td>
</tr>
<tr>
<td>
学科代码
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
选题范围
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td>
项目类别
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
附注说明
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td>
研究期限
</td>
<td
colspan=
"4"
></td>
<td
colspan=
"2"
>
申请经费
</td>
<td
colspan=
"3"
></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<table>
<tr
style=
"height: 300px;"
>
<td
style=
"width: 40px"
>
项目摘要(400字)
</td>
<td></td>
</tr>
<tr>
<td>
关键词
</td>
<td></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<p>
项目组主要成员(注:不包括项目申请人)
</p>
<table>
<tr>
<td>
序号
</td>
<td>
姓名
</td>
<td>
出生年月
</td>
<td>
性别
</td>
<td>
职称
</td>
<td>
学位
</td>
<td>
工作单位
</td>
<td>
电话
</td>
<td>
电子邮箱
</td>
<td>
证件号码
</td>
<td>
项目分工
</td>
<td>
每年工作时间(月)
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p></p>
<table>
<tr>
<td>
总人数
</td>
<td>
高级
</td>
<td>
中级
</td>
<td>
初级
</td>
<td>
博士后
</td>
<td>
博士生
</td>
<td>
硕士生
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<p>
绩效目标表
</p>
<table>
<tr>
<td
colspan=
"14"
>
{{ projectKPI.reportYear }}年度
</td>
</tr>
<tr>
<td>
项目名称
</td>
<td
colspan=
"13"
>
{{ projectKPI.projName }}
</td>
</tr>
<tr>
<td>
主管处室
</td>
<td
colspan=
"6"
>
{{ projectKPI.managerDept }}
</td>
<td
colspan=
"4"
>
实施单位
</td>
<td
colspan=
"3"
>
{{ projectKPI.appUnitName }}
</td>
</tr>
<tr>
<td>
项目属性
</td>
<td
colspan=
"6"
></td>
<td
colspan=
"4"
>
项目期
</td>
<td
colspan=
"3"
>
{{ projectKPI.projDeadline }}
</td>
</tr>
<tr>
<td
rowspan=
"3"
>
项目资金(万元)
</td>
<td
colspan=
"3"
>
总体资金总额:
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"4"
>
年度资金总额:
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
colspan=
"3"
>
其中:财政拨款
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"4"
>
其中:财政拨款
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
colspan=
"3"
>
其他资金
</td>
<td
colspan=
"3"
></td>
<td
colspan=
"4"
>
其他资金
</td>
<td
colspan=
"3"
></td>
</tr>
<tr>
<td
rowspan=
"3"
>
总体考核目标
</td>
<td
colspan=
"6"
>
总体目标()
</td>
<td
colspan=
"7"
>
分年度指标
</td>
</tr>
<tr>
<td
colspan=
"6"
rowspan=
"2"
>
{{projectKPI.yearTarget}}
</td>
<td
class=
"target-value"
colspan=
"2"
>
{{ moment(projectKPI.startDate).year() }}年
</td>
<td
class=
"target-value"
colspan=
"1"
>
{{ moment(projectKPI.startDate).add(1, 'year').year() }}年
</td>
<td
class=
"target-value"
colspan=
"4"
>
{{ moment(projectKPI.startDate).add(2, 'year').year() }}年
</td>
</tr>
<tr>
<td
colspan=
"2"
>
{{ projectKPI.year1Goal }}
</td>
<td
colspan=
"1"
>
{{ projectKPI.year2Goal }}
</td>
<td
colspan=
"4"
>
{{ projectKPI.year3Goal }}
</td>
</tr>
<tr>
<td></td>
<td>
一级指标
</td>
<td>
二级指标
</td>
<td
colspan=
"2"
>
三级指标
</td>
<td
>
指标值
</td>
<td>
绩效标准
</td>
<td>
二级指标
</td>
<td
colspan=
"3"
>
三级指标
</td>
<td
colspan=
"3"
>
指标值
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div
class=
"page"
>
<p>
项目经费预算表
</p>
<p>
金额单位:万元(保留两位小数)
</p>
<table>
<tr>
<td>
预算科目
</td>
<td>
总预算数
</td>
<td>
财政资金
</td>
<td>
自筹资金
</td>
<td>
备注
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<table>
<tr>
<td
colspan=
"5"
>
三、分年度用款计划
</td>
</tr>
<tr>
<td>
年度
</td>
<td>
第一年
</td>
<td>
第二年
</td>
<td>
第三年
</td>
<td>
合计
</td>
</tr>
<tr>
<td>
用款总额
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
财政资金
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
自筹资金
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
upload/files/2024/7/358930df-97cf-440f-8bbf-49b88eec7fe5.doc
deleted
100644 → 0
View file @
178121a9
File deleted
upload/files/2024/7/5e9700b0-f6d8-4ad0-a229-8e93bf6f3436.xls
deleted
100644 → 0
View file @
178121a9
File deleted
upload/files/2024/7/c0775804-a790-4f93-b15b-555a8978a98c.jpg
deleted
100644 → 0
View file @
178121a9
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