Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf
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
xingmin
yd-csf
Commits
506522ed
Commit
506522ed
authored
Nov 21, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进72
parent
cd9ce964
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
152 additions
and
3 deletions
+152
-3
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+94
-3
yd-csf-service/pom.xml
+19
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyReportData.java
+39
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyReportPdfService.java
+0
-0
yd-csf-service/src/main/resources/font/DFKai-SB.ttf
+0
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
View file @
506522ed
...
@@ -12,19 +12,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...
@@ -12,19 +12,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.utils.SecurityUtil
;
import
com.yd.auth.core.utils.SecurityUtil
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.dto.CommissionExcelDTO
;
import
com.yd.csf.api.dto.CommissionExcelDTO
;
import
com.yd.csf.api.dto.PolicyExcelDTO
;
import
com.yd.csf.api.dto.PolicyExcelDTO
;
import
com.yd.csf.api.dto.PolicyFollowDTO
;
import
com.yd.csf.api.dto.PolicyFollowDTO
;
import
com.yd.csf.api.listener.PolicyDataListener
;
import
com.yd.csf.api.listener.PolicyDataListener
;
import
com.yd.csf.api.service.ApiExpectedFortuneService
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.utils.AsyncQueryUtil
;
import
com.yd.csf.service.vo.PolicyFollowDetailVO
;
import
com.yd.csf.service.vo.PolicyFollowDetailVO
;
import
com.yd.csf.service.vo.PolicyFollowRecordVO
;
import
com.yd.csf.service.vo.PolicyFollowRecordVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
...
@@ -35,13 +34,15 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -35,13 +34,15 @@ import org.apache.commons.lang3.StringUtils;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.math.BigDecimal
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormat
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.*
;
...
@@ -82,6 +83,10 @@ public class ApiPolicyFollowController {
...
@@ -82,6 +83,10 @@ public class ApiPolicyFollowController {
private
PolicyFollowFileService
policyFollowFileService
;
private
PolicyFollowFileService
policyFollowFileService
;
@Resource
private
PolicyReportPdfService
policyReportPdfService
;
@PostMapping
(
"/upload/excel"
)
@PostMapping
(
"/upload/excel"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
<
Boolean
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
)
throws
Exception
{
public
Result
<
Boolean
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
)
throws
Exception
{
...
@@ -549,4 +554,89 @@ public class ApiPolicyFollowController {
...
@@ -549,4 +554,89 @@ public class ApiPolicyFollowController {
List
<
PolicyFollowRecord
>
policyFollowStatusList
=
policyFollowRecordService
.
list
(
queryWrapper
);
List
<
PolicyFollowRecord
>
policyFollowStatusList
=
policyFollowRecordService
.
list
(
queryWrapper
);
return
Result
.
success
(
policyFollowRecordService
.
getVOList
(
policyFollowStatusList
));
return
Result
.
success
(
policyFollowRecordService
.
getVOList
(
policyFollowStatusList
));
}
}
/**
* 生成签约单
*/
@GetMapping
(
value
=
"/report/download"
,
produces
=
"application/pdf"
)
@Operation
(
summary
=
"生成签约单"
)
public
void
previewPolicyReport
(
@RequestParam
(
"policyBizId"
)
String
policyBizId
,
HttpServletResponse
response
)
{
PolicyFollow
policyFollow
=
policyFollowService
.
getByPolicyBizId
(
policyBizId
);
if
(
policyFollow
==
null
)
{
throw
new
BusinessException
(
ErrorCode
.
NOT_FOUND_ERROR
.
getCode
(),
ErrorCode
.
NOT_FOUND_ERROR
.
getMessage
());
}
PolicyReportData
reportData
=
new
PolicyReportData
();
// 填充数据
// reportData.setStartTime("2025-10-30");
// reportData.setEndTime("2025-10-30");
// reportData.setLocation("香港");
// reportData.setServiceManager("Vickie");
// reportData.setPolicyHolder(policyFollow.getPolicyHolder());
// reportData.setPolicyNumber(policyFollow.getPolicyNo());
// reportData.setInsuranceCompany(policyFollow.getInsurer());
// reportData.setInsuredPerson(policyFollow.getInsured());
// reportData.setInsurancePlan(policyFollow.getProductName());
// reportData.setInsuredAge(0);
// reportData.setCurrency(policyFollow.getCurrency());
// reportData.setPaymentPeriod((Integer) policyFollow.getPaymentTerm());
// reportData.setAnnualAmount(policyFollow.getPaymentPremium());
// reportData.setTotalPrepayment(BigDecimal.ZERO);
// reportData.setPremiumFee(BigDecimal.ZERO);
reportData
.
setStartTime
(
"2025-10-30"
);
reportData
.
setEndTime
(
"2025-10-30"
);
reportData
.
setLocation
(
"香港"
);
reportData
.
setServiceManager
(
"Vickie"
);
reportData
.
setPolicyHolder
(
"policyHolder"
);
reportData
.
setPolicyNumber
(
"B635379588"
);
reportData
.
setInsuranceCompany
(
"友邦保险"
);
reportData
.
setInsuredPerson
(
"insuredPerson"
);
reportData
.
setInsurancePlan
(
"环宇盈活储蓄保险计划"
);
reportData
.
setInsuredAge
(
1
);
reportData
.
setCurrency
(
"HKD"
);
reportData
.
setPaymentPeriod
(
5
);
reportData
.
setAnnualAmount
(
BigDecimal
.
valueOf
(
30000.08
));
reportData
.
setTotalPrepayment
(
BigDecimal
.
valueOf
(
150064.70
));
reportData
.
setPremiumFee
(
BigDecimal
.
valueOf
(
12.86
));
try
{
log
.
info
(
"收到PDF生成请求: {}"
,
reportData
);
log
.
info
(
"PolicyReportData 内容检查:"
);
log
.
info
(
"startTime: {}"
,
reportData
.
getStartTime
());
log
.
info
(
"endTime: {}"
,
reportData
.
getEndTime
());
log
.
info
(
"location: {}"
,
reportData
.
getLocation
());
log
.
info
(
"serviceManager: {}"
,
reportData
.
getServiceManager
());
byte
[]
pdfBytes
=
policyReportPdfService
.
generatePolicyReport
(
reportData
);
if
(
pdfBytes
==
null
||
pdfBytes
.
length
==
0
)
{
log
.
error
(
"生成的PDF为空"
);
throw
new
BusinessException
(
"生成的PDF内容为空"
);
}
log
.
info
(
"PDF生成成功,大小: {} bytes"
,
pdfBytes
.
length
);
// 设置下载响应头
response
.
setContentType
(
"application/pdf"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment; filename=policy-report-"
+
reportData
.
getPolicyNumber
()
+
".pdf"
);
response
.
setContentLength
(
pdfBytes
.
length
);
// 写入响应流
ServletOutputStream
outputStream
=
response
.
getOutputStream
();
outputStream
.
write
(
pdfBytes
);
outputStream
.
flush
();
log
.
info
(
"PDF响应发送完成"
);
}
catch
(
Exception
e
)
{
log
.
error
(
"PDF预览失败"
,
e
);
throw
new
BusinessException
(
"PDF预览失败: "
+
e
.
getMessage
());
}
}
}
}
\ No newline at end of file
yd-csf-service/pom.xml
View file @
506522ed
...
@@ -12,6 +12,20 @@
...
@@ -12,6 +12,20 @@
<artifactId>
yd-csf-service
</artifactId>
<artifactId>
yd-csf-service
</artifactId>
<dependencies>
<dependencies>
<!-- 公共工具类 -->
<dependency>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
<version>
2.11.0
</version>
</dependency>
<!-- itextpdf -->
<dependency>
<groupId>
com.github.librepdf
</groupId>
<artifactId>
openpdf
</artifactId>
<version>
1.3.30
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<artifactId>
easyexcel
</artifactId>
...
@@ -104,5 +118,10 @@
...
@@ -104,5 +118,10 @@
<artifactId>
yd-feign
</artifactId>
<artifactId>
yd-feign
</artifactId>
<version>
${project.version}
</version>
<version>
${project.version}
</version>
</dependency>
</dependency>
<!-- 添加AOP依赖 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-aop
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyReportData.java
0 → 100644
View file @
506522ed
package
com
.
yd
.
csf
.
service
.
dto
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
public
class
PolicyReportData
{
// 基本信息
private
String
startTime
;
private
String
endTime
;
private
String
location
;
private
String
serviceManager
;
// 保单详细信息
private
String
policyHolder
;
private
String
policyNumber
;
private
String
insuranceCompany
;
private
String
insuredPerson
;
private
String
insurancePlan
;
private
Integer
insuredAge
;
private
String
currency
;
private
Integer
paymentPeriod
;
private
BigDecimal
annualAmount
;
private
BigDecimal
totalPrepayment
;
private
BigDecimal
premiumFee
;
// 附加险信息
private
List
<
AdditionalInsurance
>
additionalInsurances
;
@Data
public
static
class
AdditionalInsurance
{
private
String
name
;
private
String
paymentTerm
;
private
String
currency
;
private
BigDecimal
firstYearAmount
;
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyReportPdfService.java
0 → 100644
View file @
506522ed
This diff is collapsed.
Click to expand it.
yd-csf-service/src/main/resources/font/DFKai-SB.ttf
0 → 100644
View file @
506522ed
File added
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