Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-backend
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
AutogeneralShanghai
yd-backend
Commits
59ae5c0b
Commit
59ae5c0b
authored
Jan 19, 2021
by
Simon Cheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
'电子印章功能'
parent
bf328037
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
995 additions
and
1 deletions
+995
-1
auto_code/src/main/java/com/yd/util/PDFConfiguration.java
+62
-0
auto_code/src/main/resources/pdfconfiguration.properties
+11
-0
yd-api/lib/com-libs-pdf-0.0.1.jar
+0
-0
yd-api/pom.xml
+80
-0
yd-api/src/main/java/com/yd/api/practitioner/PractitionerHiringController.java
+5
-1
yd-api/src/main/java/com/yd/api/practitioner/PractitionerPDFTest.java
+222
-0
yd-api/src/main/java/com/yd/api/practitioner/service/PractitionerHiringContractService.java
+15
-0
yd-api/src/main/java/com/yd/api/practitioner/service/impl/PractitionerHiringContractServiceImpl.java
+147
-0
yd-api/src/main/java/com/yd/api/practitioner/vo/PDFHiringTest.java
+191
-0
yd-api/src/main/java/com/yd/util/CommonUtil.java
+34
-0
yd-api/src/main/java/com/yd/util/HttpDownload.java
+142
-0
yd-api/src/main/java/com/yd/util/PDFConfiguration.java
+60
-0
yd-api/src/main/resources/application-dev.properties
+10
-0
yd-api/src/main/resources/pdfconfiguration.properties
+16
-0
No files found.
auto_code/src/main/java/com/yd/util/PDFConfiguration.java
0 → 100644
View file @
59ae5c0b
package
com
.
yd
.
util
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.Properties
;
/**
* Desc:properties文件获取工具类
* Created by hafiz.zhang on 2016/9/15.
*/
public
class
PDFConfiguration
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PDFConfiguration
.
class
);
private
static
Properties
props
;
static
{
loadProps
();
}
synchronized
static
private
void
loadProps
(){
logger
.
info
(
"开始加载properties文件内容......."
);
props
=
new
Properties
();
InputStream
in
=
null
;
try
{
in
=
PDFConfiguration
.
class
.
getClassLoader
().
getResourceAsStream
(
"PDFConfiguration.properties"
);
props
.
load
(
in
);
}
catch
(
FileNotFoundException
e
)
{
logger
.
error
(
"jdbc.properties文件未找到"
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"出现IOException"
);
}
finally
{
try
{
if
(
null
!=
in
)
{
in
.
close
();
}
}
catch
(
IOException
e
)
{
logger
.
error
(
"jdbc.properties文件流关闭出现异常"
);
}
}
logger
.
info
(
"加载properties文件内容完成..........."
);
logger
.
info
(
"properties文件内容:"
+
props
);
}
public
static
String
getProperty
(
String
key
){
if
(
null
==
props
)
{
loadProps
();
}
return
props
.
getProperty
(
key
);
}
public
static
String
getProperty
(
String
key
,
String
defaultValue
)
{
if
(
null
==
props
)
{
loadProps
();
}
return
props
.
getProperty
(
key
,
defaultValue
);
}
}
\ No newline at end of file
auto_code/src/main/resources/pdfconfiguration.properties
0 → 100644
View file @
59ae5c0b
pdf.template
=
/opt/tomcat8/conf/ydpdf/pdfres/templatePractitionerContract.pdf
pdf.signImage
=
/opt/tomcat8/conf/ydpdf/pdfres/上海银盾保险经纪有限公司.png
pdf.keyStorePath
=
/opt/tomcat8/conf/ydpdf/pdfres/4929078_m.zuihuibi.cn.pfx
pdf.keyPasswordFile
=
/opt/tomcat8/conf/ydpdf/pdfres/pfx-password.txt
pdf.check
=
/opt/tomcat8/conf/ydpdf/pdfres/check.png
pdf.uncheck
=
/opt/tomcat8/conf/ydpdf/pdfres/uncheck.png
pdf.temp.path
=
/opt/tomcat8/temp/
pdf.position.x
=
450
pdf.position.y
=
150
yd-api/lib/com-libs-pdf-0.0.1.jar
0 → 100644
View file @
59ae5c0b
File added
yd-api/pom.xml
View file @
59ae5c0b
...
@@ -183,14 +183,94 @@
...
@@ -183,14 +183,94 @@
<artifactId>
aliyun-java-sdk-dm
</artifactId>
<artifactId>
aliyun-java-sdk-dm
</artifactId>
<version>
3.1.0
</version>
<version>
3.1.0
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15on
</artifactId>
<version>
1.60
</version>
</dependency>
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcpkix-jdk15on
</artifactId>
<version>
1.60
</version>
</dependency>
<dependency>
<groupId>
org.apache.pdfbox
</groupId>
<artifactId>
pdfbox
</artifactId>
<version>
2.0.13
</version>
</dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
itextpdf
</artifactId>
<version>
5.5.13
</version>
</dependency>
<dependency>
<groupId>
com.itextpdf
</groupId>
<artifactId>
itext-asian
</artifactId>
<version>
5.2.0
</version>
</dependency>
<dependency>
<groupId>
com.itextpdf.tool
</groupId>
<artifactId>
xmlworker
</artifactId>
<version>
5.5.13
</version>
</dependency>
<dependency>
<groupId>
com.libs.pdf
</groupId>
<artifactId>
com-libs-pdf
</artifactId>
<version>
0.0.1
</version>
<scope>
system
</scope>
<systemPath>
${basedir}/lib/com-libs-pdf-0.0.1.jar
</systemPath>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
<finalName>
ydapi
</finalName>
<finalName>
ydapi
</finalName>
<resources>
<resource>
<!--<targetPath>/WEB-INF/classes</targetPath>-->
<directory>
src/main/resources
</directory>
<includes>
<include>
**/*.*
</include>
</includes>
<filtering>
false
</filtering>
</resource>
</resources>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<includeSystemScope>
true
</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
3.7.0
</version>
<configuration>
<source>
1.8
</source>
<target>
1.8
</target>
<encoding>
UTF-8
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-dependency-plugin
</artifactId>
<version>
2.10
</version>
<executions>
<execution>
<id>
copy-dependencies
</id>
<phase>
compile
</phase>
<goals>
<goal>
copy-dependencies
</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/${project.build.finalName}/WEB-INF/lib
</outputDirectory>
<includeScope>
system
</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
...
...
yd-api/src/main/java/com/yd/api/practitioner/PractitionerHiringController.java
View file @
59ae5c0b
package
com
.
yd
.
api
.
practitioner
;
package
com
.
yd
.
api
.
practitioner
;
import
com.yd.api.practitioner.service.PractitionerHiringService
;
import
com.yd.api.practitioner.service.PractitionerHiringService
;
import
com.yd.api.practitioner.vo.hiring.*
;
import
com.yd.api.practitioner.vo.hiring.*
;
import
com.yd.api.result.JsonResult
;
import
com.yd.api.result.JsonResult
;
...
@@ -224,6 +223,11 @@ public class PractitionerHiringController {
...
@@ -224,6 +223,11 @@ public class PractitionerHiringController {
@RequestMapping
(
"/hiringApprove"
)
@RequestMapping
(
"/hiringApprove"
)
public
Object
hiringApprove
(
@RequestBody
HiringApproveRequestVO
requestVO
){
public
Object
hiringApprove
(
@RequestBody
HiringApproveRequestVO
requestVO
){
JsonResult
result
=
new
JsonResult
();
JsonResult
result
=
new
JsonResult
();
try
{
PractitionerPDFTest
.
main
(
null
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
HiringApproveResponseVO
responseVO
=
practitionerHiringService
.
hiringApprove
(
requestVO
);
HiringApproveResponseVO
responseVO
=
practitionerHiringService
.
hiringApprove
(
requestVO
);
result
.
addResult
(
responseVO
);
result
.
addResult
(
responseVO
);
result
.
setData
(
responseVO
);
result
.
setData
(
responseVO
);
...
...
yd-api/src/main/java/com/yd/api/practitioner/PractitionerPDFTest.java
0 → 100644
View file @
59ae5c0b
This diff is collapsed.
Click to expand it.
yd-api/src/main/java/com/yd/api/practitioner/service/PractitionerHiringContractService.java
0 → 100644
View file @
59ae5c0b
package
com
.
yd
.
api
.
practitioner
.
service
;
import
java.util.Map
;
public
interface
PractitionerHiringContractService
{
String
generatePractitionerContract
(
Long
hiringBasicInfoId
);
Map
<
String
,
String
>
initHiringBasicInfoData
(
Long
hiringBasicInfoId
);
Map
<
String
,
String
>
initHiringImageInfoData
(
Long
hiringBasicInfoId
);
String
generatePractitionerPDF
(
String
practitionerNO
,
Map
<
String
,
String
>
initDatas
,
Map
<
String
,
String
>
initImages
);
}
\ No newline at end of file
yd-api/src/main/java/com/yd/api/practitioner/service/impl/PractitionerHiringContractServiceImpl.java
0 → 100644
View file @
59ae5c0b
package
com
.
yd
.
api
.
practitioner
.
service
.
impl
;
import
com.yd.api.practitioner.service.PractitionerHiringContractService
;
import
com.yd.dal.entity.practitioner.hiring.HiringBasicInfo
;
import
com.yd.dal.entity.practitioner.hiring.HiringMemberShip
;
import
com.yd.dal.entity.practitioner.hiring.HiringPersonalStatements
;
import
com.yd.dal.entity.practitioner.hiring.HiringWorkingExperience
;
import
com.yd.dal.mapper.customer.AclPractitionerHiringBasicInfoMapper
;
import
com.yd.dal.mapper.customer.AclPractitionerHiringMembershipMapper
;
import
com.yd.dal.mapper.customer.AclPractitionerHiringPersonalStatementsMapper
;
import
com.yd.dal.mapper.customer.AclPractitionerHiringWorkingExperienceMapper
;
import
com.yd.dal.mapper.practitioner.PractitionerHiringMapper
;
import
com.yd.libs.pdf.PDFSign
;
import
com.yd.libs.pdf.PDFTemplate
;
import
com.yd.rmi.ali.oss.service.OssService
;
import
com.yd.util.CommonUtil
;
import
com.yd.util.PDFConfiguration
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
(
"PractitionerHiringContractService"
)
public
class
PractitionerHiringContractServiceImpl
implements
PractitionerHiringContractService
{
@Autowired
private
OssService
ossService
;
@Resource
private
PractitionerHiringMapper
practitionerHiringMapper
;
/**
* 申请经纪人的ID,生成电子合同,在经纪人表中自动生成记录
* @param hiringBasicInfoId
* @return
*/
@Override
public
String
generatePractitionerContract
(
Long
hiringBasicInfoId
)
{
//1、从DB中按照hiringBasicInfoId,获取经纪人的文字信息
Map
<
String
,
String
>
initDatas
=
new
HashMap
<
String
,
String
>();
initDatas
=
initHiringBasicInfoData
(
hiringBasicInfoId
);
//2、从DB中按照hiringBasicInfoId,从oss上获取经纪人上传的图片信息,需存本地临时文件
Map
<
String
,
String
>
initImages
=
new
HashMap
<
String
,
String
>();
initImages
=
initHiringImageInfoData
(
hiringBasicInfoId
);
//ag_acl_practitioner.employee_no
String
practitionerNO
=
"YDSH00009"
;
String
contractNO
=
"CTSH00009"
;
//3、PDF模板生成合同文件,存本地临时文件后,上传oss
String
contractFile
=
generatePractitionerPDF
(
practitionerNO
,
initDatas
,
initImages
);
//上传至oss ossService
String
contractFileOSS
=
contractFile
;
//4、经纪人表生成经纪人记录ag_acl_practitioner,ag_acl_practitioner.contract_oss_path
// 经纪人经纪人类型级别定义表ag_acl_practitioner_setting
return
contractFileOSS
;
}
/**
* 申请ID的数据列表
* @param hiringBasicInfoId
* @return
*/
@Override
public
Map
<
String
,
String
>
initHiringBasicInfoData
(
Long
hiringBasicInfoId
)
{
//PDF模板中定义的文字key,和值的集合
Map
<
String
,
String
>
data
=
new
HashMap
<
String
,
String
>();
HiringBasicInfo
hiringBasicInfo
=
practitionerHiringMapper
.
findHiringBasicInfo
(
hiringBasicInfoId
);
//模板文件生成零时文件
//甲方
String
firstParty
=
PDFConfiguration
.
getProperty
(
"pdf.firstParty"
);
//甲方负责人
String
firstPartyResponser
=
PDFConfiguration
.
getProperty
(
"pdf.firstPartyResponser"
);
//甲方地址
String
firstPartyAddress
=
PDFConfiguration
.
getProperty
(
"pdf.firstPartyAddress"
);
return
data
;
}
/**
* 申请ID的图片列表,本地地址。从oss上拉到本地
* @param hiringBasicInfoId
* @return
*/
@Override
public
Map
<
String
,
String
>
initHiringImageInfoData
(
Long
hiringBasicInfoId
)
{
//PDF模板中定义的文字key,和值的集合
Map
<
String
,
String
>
images
=
new
HashMap
<
String
,
String
>();
//选中
String
check
=
PDFConfiguration
.
getProperty
(
"pdf.check"
);
//未选中
String
uncheck
=
PDFConfiguration
.
getProperty
(
"pdf.uncheck"
);
return
images
;
}
/**
* 用采集过来的经纪人数据、图片,生成该经纪人的电子合同
* @param initDatas
* @param initImages
* @return
*/
@Override
public
String
generatePractitionerPDF
(
String
practitionerNO
,
Map
<
String
,
String
>
initDatas
,
Map
<
String
,
String
>
initImages
)
{
String
templatePDF
=
"D:\\pcs12\\templatePractitionerContract.pdf"
;
templatePDF
=
PDFConfiguration
.
getProperty
(
"pdf.template"
);
//模板文件生成零时文件
String
tmpPathPDF
=
PDFConfiguration
.
getProperty
(
"pdf.temp.path"
);
//PDF模板输出结果文件
String
templateResultPDF
=
tmpPathPDF
+
practitionerNO
+
"-template.pdf"
;
//按模板填充数据生成结果PDF
PDFTemplate
.
generatePDF
(
templatePDF
,
templateResultPDF
,
initDatas
,
initImages
);
//加盖电子印章结果文件
String
signResultPDF
=
"D:\\pcs12\\signedYD.pdf"
;
signResultPDF
=
tmpPathPDF
+
practitionerNO
+
"-signedYD.pdf"
;
String
password
=
"UC645YlB"
;
password
=
CommonUtil
.
readFileTxt
(
PDFConfiguration
.
getProperty
(
"pdf.keyPasswordFile"
));
String
keyStorePath
=
"D:\\pcs12\\4929078_m.zuihuibi.cn.pfx"
;
keyStorePath
=
PDFConfiguration
.
getProperty
(
"pdf.keyStorePath"
);;
//准备加盖电子印章的源文件
String
signSourcePDF
=
templateResultPDF
;
//电子印章文件
String
signImage
=
"D:\\pcs12\\上海银盾保险经纪有限公司.png"
;
signImage
=
PDFConfiguration
.
getProperty
(
"pdf.signImage"
);
float
x
=
450
;
float
y
=
150
;
x
=
Float
.
parseFloat
(
PDFConfiguration
.
getProperty
(
"pdf.position.x"
));
y
=
Float
.
parseFloat
(
PDFConfiguration
.
getProperty
(
"pdf.position.y"
));
try
{
PDFSign
.
sign
(
signResultPDF
,
password
,
keyStorePath
,
signSourcePDF
,
signImage
,
x
,
y
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
signResultPDF
;
}
}
yd-api/src/main/java/com/yd/api/practitioner/vo/PDFHiringTest.java
0 → 100644
View file @
59ae5c0b
package
com
.
yd
.
api
.
practitioner
.
vo
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
import
com.yd.libs.pdf.*
;
public
class
PDFHiringTest
{
/**
* 填充数据源
* 其中data存放的key值与pdf模板中的文本域值相对应
*/
public
static
Map
<
String
,
String
>
initData
()
{
String
secondSignature
=
"张亮"
;
String
secondPartyIDNo
=
"330127199611154184"
;
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
secondSignatureDate
=
format
.
format
(
new
Date
());
Map
<
String
,
String
>
data
=
new
HashMap
<
String
,
String
>();
//1页
data
.
put
(
"contactNo"
,
"C-SH-0001"
);
data
.
put
(
"practitionerNo"
,
"YDSH00127"
);
data
.
put
(
"subsystem"
,
"抱一"
);
data
.
put
(
"practitioner"
,
secondSignature
);
data
.
put
(
"idNo"
,
secondPartyIDNo
);
data
.
put
(
"residentAddress"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"mobileNo"
,
"13661741633"
);
//7页
data
.
put
(
"firstParty"
,
"上海银盾保险经纪有限公司"
);
data
.
put
(
"firstPartyResponer"
,
"上海银盾保险经纪有限公司"
);
data
.
put
(
"firstPartyAddress"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"secondParty"
,
secondSignature
);
data
.
put
(
"secondPartyIDNo"
,
secondPartyIDNo
);
data
.
put
(
"secondPartyAddress"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"secondMobileNo"
,
"1366668888"
);
data
.
put
(
"secondSubsystemOwner"
,
"陈欢欢"
);
data
.
put
(
"secondSubsystemSignature"
,
"陈欢欢"
);
data
.
put
(
"secondSubsystemIDNo"
,
"330127199611156403"
);
data
.
put
(
"secondSubsystemAddress"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"secondSubsystemMobileNo"
,
"1366668888"
);
data
.
put
(
"secondMentor"
,
"陈欢欢"
);
data
.
put
(
"secondMentorIDNo"
,
"330127199611158003"
);
data
.
put
(
"secondMentorAddress"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"secondMentorMobileNo"
,
"1366668888"
);
data
.
put
(
"contactYear"
,
"2120"
);
data
.
put
(
"contactMonth"
,
"12"
);
data
.
put
(
"contactDay"
,
"16"
);
//8页
data
.
put
(
"secondParty801"
,
secondSignature
);
data
.
put
(
"secondBirthYear801"
,
"1989"
);
data
.
put
(
"secondBirthMonth801"
,
"10"
);
data
.
put
(
"secondBirthDay801"
,
"09"
);
data
.
put
(
"secondPartyIDNo801"
,
secondPartyIDNo
);
data
.
put
(
"secondPartyPermanentResidenceAddress"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"secondPartyAddress801"
,
"上海市浦东新区张杨路560号中融恒瑞国际西楼1706室"
);
data
.
put
(
"secondMobileNo801"
,
"1366668888"
);
data
.
put
(
"secondPractitionerRegNo"
,
"26961531000080062020000314"
);
data
.
put
(
"secondEmail"
,
"2120@163.com"
);
data
.
put
(
"secondWorkingExperience1"
,
"嫦娥5号登月"
);
data
.
put
(
"secondWorkingPosition1"
,
"项目总工"
);
data
.
put
(
"secondWorkingPeriod1"
,
"2016.12~至今"
);
data
.
put
(
"secondWorkingExperience2"
,
"嫦娥4号登月"
);
data
.
put
(
"secondWorkingPosition2"
,
"姿态调整工程师"
);
data
.
put
(
"secondWorkingPeriod2"
,
"2014.11~2016.10"
);
data
.
put
(
"secondWorkingExperience3"
,
"嫦娥3号登月"
);
data
.
put
(
"secondWorkingPosition3"
,
"动力工程执掌"
);
data
.
put
(
"secondWorkingPeriod3"
,
"2012.03~2014.10"
);
data
.
put
(
"secondWorkingExperience4"
,
"嫦娥2号登月"
);
data
.
put
(
"secondWorkingPosition4"
,
"固态燃料冷凌技师"
);
data
.
put
(
"secondWorkingPeriod4"
,
"2010.07~2012.01"
);
data
.
put
(
"secondBankAccount"
,
secondSignature
);
data
.
put
(
"secondBankAccountOpening"
,
"上海市工商银行齐齐哈尔路支行"
);
data
.
put
(
"secondBankAccountID"
,
"6222001001234567890"
);
data
.
put
(
"secondMentor802"
,
"陈欢欢"
);
data
.
put
(
"secondIntroducer"
,
"陈欢欢"
);
data
.
put
(
"secondMentorIDNo801"
,
"330127199611151346"
);
data
.
put
(
"secondIntroducerIDNo"
,
"330127199611156403"
);
data
.
put
(
"secondEffectiveYear"
,
"2120"
);
data
.
put
(
"secondEffectiveMonth"
,
"12"
);
data
.
put
(
"secondEffectiveDay"
,
"30"
);
data
.
put
(
"secondParty802"
,
secondSignature
);
data
.
put
(
"secondMentor801"
,
"陈欢欢"
);
data
.
put
(
"secondSubsystem"
,
"抱一"
);
data
.
put
(
"secondSubsystemNo"
,
"HUGONE"
);
data
.
put
(
"secondSubsystemManager"
,
"陈欢欢"
);
data
.
put
(
"secondSubsystemMaster"
,
"陈欢欢"
);
data
.
put
(
"secondBranchManager"
,
"王子帷"
);
data
.
put
(
"secondBranchMaster"
,
"王子帷"
);
data
.
put
(
"secondCenterHr"
,
"EVEN"
);
data
.
put
(
"secondCenterCEO"
,
"SHARON"
);
//9页
//10页
data
.
put
(
"secondSignatureDate1001"
,
secondSignatureDate
);
//12页
data
.
put
(
"secondParty1201"
,
secondSignature
);
data
.
put
(
"secondSignatureDate1201"
,
secondSignatureDate
);
//14页
data
.
put
(
"secondParty1401"
,
secondSignature
);
data
.
put
(
"secondSignatureDate1401"
,
secondSignatureDate
);
//16页
data
.
put
(
"secondParty1601"
,
secondSignature
);
data
.
put
(
"secondPartyIDNo1601"
,
secondPartyIDNo
);
data
.
put
(
"secondSignatureDate1601"
,
secondSignatureDate
);
return
data
;
}
public
static
Map
<
String
,
String
>
initImage
()
{
Map
<
String
,
String
>
images
=
new
HashMap
<
String
,
String
>();
//公司印章,需配置
String
yindunESignature
=
"D:\\pcs12\\上海银盾保险经纪有限公司.png"
;
images
.
put
(
"yindunESignature1001"
,
"D:\\pcs12\\上海银盾保险经纪有限公司.png"
);
images
.
put
(
"yindunESignature1201"
,
"D:\\pcs12\\上海银盾保险经纪有限公司.png"
);
images
.
put
(
"yindunESignature1401"
,
"D:\\pcs12\\上海银盾保险经纪有限公司.png"
);
//五张图是动态的,根据DB里面记录的OSS Path,先从阿里云下载到本地作为临时文件,处理模板需要本地文件
//经纪人个人照片
String
secondPersonerPicture
=
"D:\\pcs12\\secondPersonerPicture.png"
;
images
.
put
(
"secondPersonerPicture"
,
secondPersonerPicture
);
//经纪人个人手写签名图
String
secondSignature
=
"D:\\pcs12\\signature.png"
;
images
.
put
(
"secondSignature1001"
,
secondSignature
);
images
.
put
(
"secondSignature1201"
,
secondSignature
);
images
.
put
(
"secondSignature1401"
,
secondSignature
);
images
.
put
(
"secondSignature1601"
,
secondSignature
);
//经纪人个人身份证正面图
String
secondIDFrontPageImage
=
"D:\\pcs12\\IDFront.jpg"
;
images
.
put
(
"secondIDFrontPageImage"
,
secondIDFrontPageImage
);
//经纪人个人身份证背面图
String
secondIDBackPageImage
=
"D:\\pcs12\\IDback.jpg"
;
images
.
put
(
"secondIDBackPageImage"
,
secondIDBackPageImage
);
//经纪人个人银行卡正面图
String
secondBankCardImage
=
"D:\\pcs12\\bank.jpg"
;
images
.
put
(
"secondBankCardImage"
,
secondBankCardImage
);
//选中或未选中2张图,需配置
//PDF模板文件中4种身份证件类型
images
.
put
(
"secondIDType1"
,
"D:\\pcs12\\checked.png"
);
images
.
put
(
"secondIDType2"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondIDType3"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondIDType4"
,
"D:\\pcs12\\uncheck.png"
);
//个人申明中的6个选项,从左到右,从上到下
images
.
put
(
"secondPersonalStatement1"
,
"D:\\pcs12\\checked.png"
);
images
.
put
(
"secondPersonalStatement2"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPersonalStatement3"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPersonalStatement4"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPersonalStatement5"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPersonalStatement5"
,
"D:\\pcs12\\checked.png"
);
//个人签约职称中的6个选项,从左到右,从上到下
images
.
put
(
"secondPosition1"
,
"D:\\pcs12\\checked.png"
);
images
.
put
(
"secondPosition2"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPosition3"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPosition4"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPosition5"
,
"D:\\pcs12\\uncheck.png"
);
images
.
put
(
"secondPosition6"
,
"D:\\pcs12\\uncheck.png"
);
return
images
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
//PDF模板文件,需配置
String
templatePDF
=
"D:\\pcs12\\templatePractitionerContract.pdf"
;
//PDF模板输出结果文件
String
templateResultPDF
=
"D:\\pcs12\\resultData.pdf"
;
//初始化模板数据
Map
<
String
,
String
>
dt
=
initData
();
Map
<
String
,
String
>
img
=
initImage
();
//按模板填充数据生成结果PDF
PDFTemplate
.
generatePDF
(
templatePDF
,
templateResultPDF
,
dt
,
img
);
//准备加盖电子印章的源文件
String
signSourcePDF
=
templateResultPDF
;
//电子印章文件,需配置
String
signImage
=
"D:\\pcs12\\上海银盾保险经纪有限公司.png"
;
//加盖电子印章结果文件
String
signResultPDF
=
"D:\\pcs12\\signedYD.pdf"
;
String
password
=
"UC645YlB"
;
//CA证书文件,需配置
String
keyStorePath
=
"D:\\pcs12\\4929078_m.zuihuibi.cn.pfx"
;
float
x
=
450
;
float
y
=
150
;
PDFSign
.
sign
(
signResultPDF
,
password
,
keyStorePath
,
signSourcePDF
,
signImage
,
x
,
y
);
}
}
yd-api/src/main/java/com/yd/util/CommonUtil.java
View file @
59ae5c0b
...
@@ -1502,5 +1502,39 @@ public class CommonUtil {
...
@@ -1502,5 +1502,39 @@ public class CommonUtil {
}
}
return
sumDay
;
return
sumDay
;
}
}
public
static
String
getApproveStatusByStepSeq
(
Integer
stepSeq
){
switch
(
stepSeq
)
{
case
1
:
return
"-2"
;
case
2
:
return
"1"
;
case
3
:
return
"2"
;
case
4
:
return
"3"
;
case
5
:
return
"4"
;
}
return
null
;
}
public
static
String
readFileTxt
(
String
filePath
)
{
String
line
=
null
;
try
{
FileReader
fr
=
new
FileReader
(
filePath
);
//为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
BufferedReader
bufr
=
new
BufferedReader
(
fr
);
while
((
line
=
bufr
.
readLine
())!=
null
)
{
System
.
out
.
println
(
line
);
}
bufr
.
close
();
//close()中已经包含了flush
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
line
;
}
}
}
yd-api/src/main/java/com/yd/util/HttpDownload.java
0 → 100644
View file @
59ae5c0b
package
com
.
yd
.
util
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.InputStream
;
import
org.apache.http.Header
;
import
org.apache.http.HeaderElement
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.impl.client.DefaultHttpClient
;
/**
* HttpDownload文件下载工具类
* Created by Simon Cheng on 202021/1/18.
*/
public
class
HttpDownload
{
public
static
final
int
cache
=
10
*
1024
;
public
static
final
boolean
isWindows
;
public
static
final
String
splash
;
public
static
final
String
root
;
static
{
if
(
System
.
getProperty
(
"os.name"
)
!=
null
&&
System
.
getProperty
(
"os.name"
).
toLowerCase
().
contains
(
"windows"
))
{
isWindows
=
true
;
splash
=
"\\"
;
root
=
"D:"
;
}
else
{
isWindows
=
false
;
splash
=
"/"
;
root
=
"/opt/tomcat8/temp"
;
}
}
/**
* 根据url下载文件,文件名从response header头中获取
* @param url
* @return
*/
public
static
String
download
(
String
url
)
{
return
download
(
url
,
null
);
}
/**
* 根据url下载文件,保存到filepath中
* @param url
* @param filepath
* @return
*/
public
static
String
download
(
String
url
,
String
filepath
)
{
try
{
HttpClient
client
=
new
DefaultHttpClient
();
HttpGet
httpget
=
new
HttpGet
(
url
);
HttpResponse
response
=
client
.
execute
(
httpget
);
HttpEntity
entity
=
response
.
getEntity
();
InputStream
is
=
entity
.
getContent
();
if
(
filepath
==
null
)
{
filepath
=
getFilePath
(
response
);
}
File
file
=
new
File
(
filepath
);
file
.
getParentFile
().
mkdirs
();
FileOutputStream
fileout
=
new
FileOutputStream
(
file
);
/**
* 根据实际运行效果 设置缓冲区大小
*/
byte
[]
buffer
=
new
byte
[
cache
];
int
ch
=
0
;
while
((
ch
=
is
.
read
(
buffer
))
!=
-
1
)
{
fileout
.
write
(
buffer
,
0
,
ch
);
}
is
.
close
();
fileout
.
flush
();
fileout
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 获取response要下载的文件的默认路径
* @param response
* @return
*/
public
static
String
getFilePath
(
HttpResponse
response
)
{
String
filepath
=
root
+
splash
;
String
filename
=
getFileName
(
response
);
if
(
filename
!=
null
)
{
filepath
+=
filename
;
}
else
{
filepath
+=
getRandomFileName
();
}
return
filepath
;
}
/**
* 获取response header中Content-Disposition中的filename值
* @param response
* @return
*/
public
static
String
getFileName
(
HttpResponse
response
)
{
Header
contentHeader
=
response
.
getFirstHeader
(
"Content-Disposition"
);
String
filename
=
null
;
if
(
contentHeader
!=
null
)
{
HeaderElement
[]
values
=
contentHeader
.
getElements
();
if
(
values
.
length
==
1
)
{
NameValuePair
param
=
values
[
0
].
getParameterByName
(
"filename"
);
if
(
param
!=
null
)
{
try
{
filename
=
param
.
getValue
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
return
filename
;
}
/**
* 获取随机文件名
* @return
*/
public
static
String
getRandomFileName
()
{
return
String
.
valueOf
(
System
.
currentTimeMillis
());
}
public
static
void
outHeaders
(
HttpResponse
response
)
{
Header
[]
headers
=
response
.
getAllHeaders
();
for
(
int
i
=
0
;
i
<
headers
.
length
;
i
++)
{
System
.
out
.
println
(
headers
[
i
]);
}
}
public
static
void
main
(
String
[]
args
)
{
String
url
=
"https://dev-yindun-store.oss-cn-shanghai-finance-1-pub.aliyuncs.com/brokerHiring/38/7210115.jpg"
;
String
filepath
=
"D:\\test\\a.jpg"
;
HttpDownload
.
download
(
url
,
filepath
);
}
}
yd-api/src/main/java/com/yd/util/PDFConfiguration.java
0 → 100644
View file @
59ae5c0b
package
com
.
yd
.
util
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.*
;
import
java.util.Properties
;
/**
* Desc:properties文件获取工具类
* Created by Simon Cheng on 202021/1/18.
*/
public
class
PDFConfiguration
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PDFConfiguration
.
class
);
private
static
Properties
props
;
static
{
loadProps
();
}
synchronized
static
private
void
loadProps
(){
logger
.
info
(
"开始加载properties文件内容......."
);
props
=
new
Properties
();
InputStream
in
=
null
;
try
{
in
=
PDFConfiguration
.
class
.
getClassLoader
().
getResourceAsStream
(
"pdfconfiguration.properties"
);
props
.
load
(
in
);
}
catch
(
FileNotFoundException
e
)
{
logger
.
error
(
"pdfconfiguration.properties文件未找到"
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"出现IOException"
);
}
finally
{
try
{
if
(
null
!=
in
)
{
in
.
close
();
}
}
catch
(
IOException
e
)
{
logger
.
error
(
"pdfconfiguration.properties文件流关闭出现异常"
);
}
}
logger
.
info
(
"加载properties文件内容完成..........."
);
logger
.
info
(
"properties文件内容:"
+
props
);
}
public
static
String
getProperty
(
String
key
){
if
(
null
==
props
)
{
loadProps
();
}
return
props
.
getProperty
(
key
);
}
public
static
String
getProperty
(
String
key
,
String
defaultValue
)
{
if
(
null
==
props
)
{
loadProps
();
}
return
props
.
getProperty
(
key
,
defaultValue
);
}
}
\ No newline at end of file
yd-api/src/main/resources/application-dev.properties
View file @
59ae5c0b
...
@@ -53,3 +53,13 @@ enable.datasecurity:false
...
@@ -53,3 +53,13 @@ enable.datasecurity:false
#存量数据接口开关
#存量数据接口开关
prod.checkavailable
:
prod.checkavailable
:
pdf.template
=
/opt/tomcat8/conf/ydpdf/pdfres/templatePractitionerContract.pdf
pdf.signImage
=
/opt/tomcat8/conf/ydpdf/pdfres/上海银盾保险经纪有限公司.png
pdf.keyStorePath
=
/opt/tomcat8/conf/ydpdf/pdfres/4929078_m.zuihuibi.cn.pfx
pdf.keyPasswordFile
=
/opt/tomcat8/conf/ydpdf/pdfres/pfx-password.txt
pdf.position.x
=
450
pdf.position.y
=
150
pdf.check
=
/opt/tomcat8/conf/ydpdf/pdfres/check.png
pdf.uncheck
=
/opt/tomcat8/conf/ydpdf/pdfres/uncheck.png
yd-api/src/main/resources/pdfconfiguration.properties
0 → 100644
View file @
59ae5c0b
pdf.template
=
/opt/tomcat8/conf/ydpdf/pdfres/templatePractitionerContract.pdf
pdf.signImage
=
/opt/tomcat8/conf/ydpdf/pdfres/上海银盾保险经纪有限公司.png
pdf.keyStorePath
=
/opt/tomcat8/conf/ydpdf/pdfres/4929078_m.zuihuibi.cn.pfx
pdf.keyPasswordFile
=
/opt/tomcat8/conf/ydpdf/pdfres/pfx-password.txt
pdf.check
=
/opt/tomcat8/conf/ydpdf/pdfres/check.png
pdf.uncheck
=
/opt/tomcat8/conf/ydpdf/pdfres/uncheck.png
pdf.temp.path
=
/opt/tomcat8/temp/
pdf.firstParty
=
上海银盾保险经纪有限公司
pdf.firstPartyResponser
=
Sharon Wan
pdf.firstPartyAddress
=
上海市浦东新区张杨路560号中融恒瑞国际西楼1706室
pdf.position.x
=
450
pdf.position.y
=
150
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