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
4b9f0054
Commit
4b9f0054
authored
Jan 05, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
01a1bb96
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
312 additions
and
12 deletions
+312
-12
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiExpectedFortuneLogController.java
+1
-3
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPremiumReconciliationController.java
+12
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiPremiumReconciliationService.java
+2
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiPremiumReconciliationServiceImpl.java
+132
-5
yd-csf-feign/src/main/java/com/yd/csf/feign/client/premiumreconciliation/ApiPremiumReconciliationFeignClient.java
+8
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/enums/PaymentFrequencyEnum.java
+31
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/fallback/premiumreconciliation/ApiPremiumReconciliationFeignFallbackFactory.java
+7
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/request/premiumreconciliation/ApiPremiumReconciliationResultEditRequest.java
+12
-4
yd-csf-service/src/main/java/com/yd/csf/service/dao/PremiumReconciliationMapper.java
+7
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/Policy.java
+11
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
+6
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PremiumReconciliation.java
+1
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/IPremiumReconciliationService.java
+9
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyFollowService.java
+2
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
+14
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PremiumReconciliationServiceImpl.java
+24
-0
yd-csf-service/src/main/resources/mappers/PremiumReconciliationMapper.xml
+33
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiExpectedFortuneLogController.java
View file @
4b9f0054
...
...
@@ -12,9 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 生成预计发佣日志记录表 前端控制器
* </p>
* 生成预计发佣日志记录信息
*
* @author zxm
* @since 2025-11-20
...
...
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPremiumReconciliationController.java
View file @
4b9f0054
...
...
@@ -17,6 +17,8 @@ import org.springframework.validation.annotation.Validated;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.constraints.NotBlank
;
/**
* 保费对账记录信息
*
...
...
@@ -91,4 +93,14 @@ public class ApiPremiumReconciliationController implements ApiPremiumReconciliat
return
apiPremiumReconciliationService
.
editResult
(
request
);
}
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@Override
public
Result
<
Boolean
>
checkReconciliationComplete
(
String
policyNo
)
{
return
apiPremiumReconciliationService
.
checkReconciliationComplete
(
policyNo
);
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiPremiumReconciliationService.java
View file @
4b9f0054
...
...
@@ -25,5 +25,7 @@ public interface ApiPremiumReconciliationService {
Result
editResult
(
ApiPremiumReconciliationResultEditRequest
request
);
Result
<
Boolean
>
checkReconciliationComplete
(
String
policyNo
);
Result
<
PremiumReconciliation
>
checkPremiumReconciliationIsExist
(
String
expectedCommissionRatioBizId
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiPremiumReconciliationServiceImpl.java
View file @
4b9f0054
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient
;
import
com.yd.base.feign.request.exchangerate.ApiExchangeRateConvertRequest
;
import
com.yd.base.feign.response.exchangerate.ApiExchangeRateConvertResponse
;
...
...
@@ -20,10 +21,13 @@ import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationRe
import
com.yd.csf.feign.response.premiumreconciliation.ApiCalculateRemainingUnpaidAmountResponse
;
import
com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationDetailResponse
;
import
com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse
;
import
com.yd.csf.feign.response.team.ApiTeamPageResponse
;
import
com.yd.csf.service.dto.PremiumReconciliationDto
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.model.PremiumReconciliation
;
import
com.yd.csf.service.service.IPremiumReconciliationService
;
import
com.yd.csf.service.service.PolicyFollowService
;
import
com.yd.csf.service.service.PolicyService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -52,6 +56,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
@Autowired
private
ApiExchangeRateFeignClient
apiExchangeRateFeignClient
;
@Autowired
private
PolicyFollowService
policyFollowService
;
/**
* 分页列表查询-保费对账记录信息
* @param request
...
...
@@ -59,7 +66,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
*/
@Override
public
Result
<
IPage
<
ApiPremiumReconciliationPageResponse
>>
page
(
ApiPremiumReconciliationPageRequest
request
)
{
return
null
;
Page
<
ApiPremiumReconciliationPageResponse
>
page
=
new
Page
<>(
request
.
getPageNo
(),
request
.
getPageSize
());
IPage
<
ApiPremiumReconciliationPageResponse
>
iPage
=
iPremiumReconciliationService
.
page
(
page
,
request
);
return
Result
.
success
(
iPage
);
}
/**
...
...
@@ -69,19 +78,26 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
*/
@Override
public
Result
add
(
ApiPremiumReconciliationAddRequest
request
)
{
//根据当前Policy保单信息里面的生效日期、付款频率、缴费宽限期,校验当天是否在缴费期内,不在缴费期内不能保费对账 TODO 校验待定
//保费对账信息
ApiPremiumReconciliationDto
apiPremiumReconciliationDto
=
request
.
getApiPremiumReconciliationDto
();
//校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
Result
<
Boolean
>
result
=
checkReconciliationComplete
(
apiPremiumReconciliationDto
.
getPolicyNo
());
if
(!
result
.
getData
())
{
throw
new
BusinessException
(
result
.
getMsg
());
}
//校验保单信息是否存在
Policy
policy
=
policyService
.
queryOne
(
apiPremiumReconciliationDto
.
getPolicyNo
());
if
(
Objects
.
isNull
(
policy
))
{
throw
new
BusinessException
(
"保单信息不存在"
);
}
//获取保单当前期数 TODO
//计算当前期数
String
currentIssueNumber
=
calculateCurrentIssueNumber
(
policy
.
getPolicyNo
(),
Integer
.
parseInt
(
policy
.
getPaymentTerm
().
toString
()));
PremiumReconciliation
premiumReconciliation
=
new
PremiumReconciliation
();
//申请人
premiumReconciliation
.
setApplicant
(
apiPremiumReconciliationDto
.
getApplicant
());
//当前期数
TODO
// premiumReconciliation.setCurrentIssueNumber(
);
//当前期数
premiumReconciliation
.
setCurrentIssueNumber
(
currentIssueNumber
);
//保单受保人(被保人)
premiumReconciliation
.
setInsured
(
policy
.
getInsured
());
//保险公司名称
...
...
@@ -102,6 +118,36 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
}
/**
* 计算当前期数
* @param policyNo
* @return
*/
public
String
calculateCurrentIssueNumber
(
String
policyNo
,
Integer
paymentTerm
)
{
//保单号查询对账记录无数据,说明第一期。有数据:1、最新的记录的待付金额大于0,当前期数为最新的记录期数。2、最新的记录的待付金额小于等于0,当前期数 = 最新的记录期数 + 1 <= 保单的供款年期
//保单号查询对账记录无数据,说明第一期
//根据保单号查询最新对账记录
PremiumReconciliation
premiumReconciliation
=
iPremiumReconciliationService
.
queryLatestOneByPolicyNo
(
policyNo
);
if
(
Objects
.
isNull
(
premiumReconciliation
))
{
return
"1"
;
}
//有数据,最新的记录的待付金额大于0,当前期数为最新的记录期数
if
(
premiumReconciliation
.
getRemainingUnpaidAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
return
premiumReconciliation
.
getCurrentIssueNumber
();
}
//最新的记录的待付金额小于等于0,当前期数 = 最新的记录期数 + 1 <= 保单的供款年期
if
(
premiumReconciliation
.
getRemainingUnpaidAmount
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
//最新的记录期数 + 1
Integer
thisQs
=
Integer
.
parseInt
(
premiumReconciliation
.
getCurrentIssueNumber
())
+
1
;
if
(
thisQs
>
paymentTerm
)
{
//最新的记录期数 + 1 > 保单的供款年期,提示
throw
new
BusinessException
(
"当前保单保费所有期数已经全部对账完成,不能对账了"
);
}
return
thisQs
.
toString
();
}
return
"1"
;
}
/**
* 编辑-单个保费对账记录信息
* @param request
* @return
...
...
@@ -296,8 +342,89 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
*/
@Override
public
Result
editResult
(
ApiPremiumReconciliationResultEditRequest
request
)
{
//校验保费对账记录信息是否存在
Result
<
PremiumReconciliation
>
result
=
checkPremiumReconciliationIsExist
(
request
.
getPremiumReconciliationBizId
());
PremiumReconciliation
premiumReconciliation
=
result
.
getData
();
BeanUtils
.
copyProperties
(
request
,
premiumReconciliation
);
//对账状态->保司对账成功
premiumReconciliation
.
setReconciliationStatus
(
ReconciliationStatusEnum
.
BS_DZ_CG
.
getItemValue
());
//更新保费对账记录信息
iPremiumReconciliationService
.
saveOrUpdate
(
premiumReconciliation
);
//校验当期剩余待付金额小于等于0并且当前期数是第一期首期,才会去更新保单生效日期和保单状态
if
(
premiumReconciliation
.
getCurrentIssueNumber
().
equals
(
"1"
))
{
//当前期数是第一期首期
if
(
request
.
getRemainingUnpaidAmount
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
//校验生效日期、核保日期必填
if
(
Objects
.
isNull
(
request
.
getEffectiveDate
()))
{
throw
new
BusinessException
(
"生效日期不能为空"
);
}
if
(
Objects
.
isNull
(
request
.
getUnderwritingDate
()))
{
throw
new
BusinessException
(
"核保日期不能为空"
);
}
//更新新单和保单状态为生效中,更新生效日期和核保日期
//更新新单跟进:新单状态——>生效、生效日期、核保日期
PolicyFollow
policyFollow
=
policyFollowService
.
queryOneByPolicyNo
(
premiumReconciliation
.
getPolicyNo
());
if
(!
Objects
.
isNull
(
policyFollow
))
{
//生效日期
policyFollow
.
setEffectiveDate
(
request
.
getEffectiveDate
());
//核保日期
policyFollow
.
setUnderwritingDate
(
request
.
getUnderwritingDate
());
//新单跟进状态——>生效
policyFollow
.
setStatus
(
"TAKE_EFFECT"
);
policyFollowService
.
saveOrUpdate
(
policyFollow
);
}
//更新保单信息:保单状态——>生效、生效日期、核保日期
Policy
policy
=
policyService
.
queryOne
(
premiumReconciliation
.
getPolicyNo
());
if
(!
Objects
.
isNull
(
policy
))
{
//生效日期
policy
.
setEffectiveDate
(
request
.
getEffectiveDate
());
//核保日期
policy
.
setUnderwritingDate
(
request
.
getUnderwritingDate
());
//保单状态——>生效
policy
.
setStatus
(
"TAKE_EFFECT"
);
policyService
.
saveOrUpdate
(
policy
);
}
}
else
{
//大于0,只更新新单跟进:新单状态——>保费对账成功,核保中
PolicyFollow
policyFollow
=
policyFollowService
.
queryOneByPolicyNo
(
premiumReconciliation
.
getPolicyNo
());
if
(!
Objects
.
isNull
(
policyFollow
))
{
//新单跟进状态——>保费对账成功,核保中
policyFollow
.
setStatus
(
"UNDERWRITING_PROGRESS"
);
policyFollowService
.
saveOrUpdate
(
policyFollow
);
}
}
}
return
Result
.
success
();
}
return
null
;
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@Override
public
Result
<
Boolean
>
checkReconciliationComplete
(
String
policyNo
)
{
//查询保单信息
Policy
policy
=
policyService
.
queryOne
(
policyNo
);
if
(
Objects
.
isNull
(
policy
))
{
throw
new
BusinessException
(
"保单信息不存在"
);
}
//获取保单供款年期
String
paymentTerm
=
String
.
valueOf
(
policy
.
getPaymentTerm
());
//根据保单号查询最新对账记录
PremiumReconciliation
premiumReconciliation
=
iPremiumReconciliationService
.
queryLatestOneByPolicyNo
(
policyNo
);
if
(
Objects
.
isNull
(
premiumReconciliation
))
{
//无数据,说明还没有对账记录,可以对账。
return
Result
.
success
(
true
);
}
//有数据
//校验最新对账记录的待付金额是否小于等于0并且当前期数等于保单的供款年期,如果是说明对账所有期数已经全部完成不能对账了。
if
(
premiumReconciliation
.
getRemainingUnpaidAmount
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
&&
premiumReconciliation
.
getCurrentIssueNumber
().
equals
(
paymentTerm
))
{
return
Result
.
success
(
false
,
"当前保单保费所有期数已经全部对账完成,不能对账了"
);
}
return
Result
.
success
(
true
);
}
/**
...
...
yd-csf-feign/src/main/java/com/yd/csf/feign/client/premiumreconciliation/ApiPremiumReconciliationFeignClient.java
View file @
4b9f0054
...
...
@@ -67,4 +67,12 @@ public interface ApiPremiumReconciliationFeignClient {
*/
@PutMapping
(
"/edit/result"
)
Result
editResult
(
@Validated
@RequestBody
ApiPremiumReconciliationResultEditRequest
request
);
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@GetMapping
(
"/check/reconciliation/complete"
)
Result
<
Boolean
>
checkReconciliationComplete
(
@NotBlank
(
message
=
"保单号能为空"
)
@RequestParam
(
value
=
"policyNo"
)
String
policyNo
);
}
yd-csf-feign/src/main/java/com/yd/csf/feign/enums/PaymentFrequencyEnum.java
0 → 100644
View file @
4b9f0054
package
com
.
yd
.
csf
.
feign
.
enums
;
/**
* 付款频率枚举
*/
public
enum
PaymentFrequencyEnum
{
MONTH
(
"月缴"
,
"MONTH"
),
SEASON
(
"季缴"
,
"SEASON"
),
YEAR
(
"年缴"
,
"YEAR"
),
FULL_PAYMENT
(
"整付"
,
"FULL_PAYMENT"
),
;
//字典项标签(名称)
private
String
itemLabel
;
//字典项值
private
String
itemValue
;
//构造函数
PaymentFrequencyEnum
(
String
itemLabel
,
String
itemValue
)
{
this
.
itemLabel
=
itemLabel
;
this
.
itemValue
=
itemValue
;
}
public
String
getItemLabel
()
{
return
itemLabel
;
}
public
String
getItemValue
()
{
return
itemValue
;
}
}
yd-csf-feign/src/main/java/com/yd/csf/feign/fallback/premiumreconciliation/ApiPremiumReconciliationFeignFallbackFactory.java
View file @
4b9f0054
...
...
@@ -13,6 +13,8 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.cloud.openfeign.FallbackFactory
;
import
org.springframework.stereotype.Component
;
import
javax.validation.constraints.NotBlank
;
/**
* 香港保险服务-保费对账记录信息Feign降级处理
*/
...
...
@@ -51,6 +53,11 @@ public class ApiPremiumReconciliationFeignFallbackFactory implements FallbackFac
public
Result
editResult
(
ApiPremiumReconciliationResultEditRequest
request
)
{
return
null
;
}
@Override
public
Result
<
Boolean
>
checkReconciliationComplete
(
String
policyNo
)
{
return
null
;
}
};
}
}
yd-csf-feign/src/main/java/com/yd/csf/feign/request/premiumreconciliation/ApiPremiumReconciliationResultEditRequest.java
View file @
4b9f0054
package
com
.
yd
.
csf
.
feign
.
request
.
premiumreconciliation
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.util.Date
;
...
...
@@ -9,6 +11,12 @@ import java.util.Date;
public
class
ApiPremiumReconciliationResultEditRequest
{
/**
* 保费对账记录表唯一业务ID
*/
@NotBlank
(
message
=
"保费对账记录表唯一业务ID不能为空"
)
private
String
premiumReconciliationBizId
;
/**
* 当次保司认定金额(客户当次缴纳的金额)
*/
@NotNull
(
message
=
"当次保司认定金额不能为空"
)
...
...
@@ -44,9 +52,9 @@ public class ApiPremiumReconciliationResultEditRequest {
*/
private
Date
underwritingDate
;
/**
* 保单状态
*/
private
String
status
;
//
/**
//
* 保单状态
//
*/
//
private String status;
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/PremiumReconciliationMapper.java
View file @
4b9f0054
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest
;
import
com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse
;
import
com.yd.csf.service.model.PremiumReconciliation
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
...
...
@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public
interface
PremiumReconciliationMapper
extends
BaseMapper
<
PremiumReconciliation
>
{
IPage
<
ApiPremiumReconciliationPageResponse
>
page
(
@Param
(
"page"
)
Page
<
ApiPremiumReconciliationPageResponse
>
page
,
@Param
(
"request"
)
ApiPremiumReconciliationPageRequest
request
);
}
yd-csf-service/src/main/java/com/yd/csf/service/model/Policy.java
View file @
4b9f0054
...
...
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
lombok.Data
;
...
...
@@ -133,6 +134,11 @@ public class Policy implements Serializable {
private
Date
effectiveDate
;
/**
* 核保日期
*/
private
Date
underwritingDate
;
/**
* 冷却期结束日期
*/
private
Date
coolingOffEndDate
;
...
...
@@ -208,6 +214,11 @@ public class Policy implements Serializable {
private
String
policyLevy
;
/**
* 缴费宽限期(每期缴费的最大宽限天数)
*/
private
String
gracePeriod
;
/**
* 通用备注
*/
private
String
remark
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
View file @
4b9f0054
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
...
...
@@ -84,6 +85,11 @@ public class PolicyFollow implements Serializable {
private
Date
effectiveDate
;
/**
* 核保日期
*/
private
Date
underwritingDate
;
/**
* 冷却期结束日期
*/
private
Date
coolingOffEndDate
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/PremiumReconciliation.java
View file @
4b9f0054
...
...
@@ -138,4 +138,5 @@ public class PremiumReconciliation implements Serializable {
*/
@TableField
(
"update_time"
)
private
LocalDateTime
updateTime
;
}
yd-csf-service/src/main/java/com/yd/csf/service/service/IPremiumReconciliationService.java
View file @
4b9f0054
package
com
.
yd
.
csf
.
service
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest
;
import
com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse
;
import
com.yd.csf.service.dto.PremiumReconciliationDto
;
import
com.yd.csf.service.model.PremiumReconciliation
;
import
com.baomidou.mybatisplus.extension.service.IService
;
...
...
@@ -16,7 +20,12 @@ import java.util.List;
*/
public
interface
IPremiumReconciliationService
extends
IService
<
PremiumReconciliation
>
{
IPage
<
ApiPremiumReconciliationPageResponse
>
page
(
Page
<
ApiPremiumReconciliationPageResponse
>
page
,
ApiPremiumReconciliationPageRequest
request
);
PremiumReconciliation
queryOne
(
String
premiumReconciliationBizId
);
List
<
PremiumReconciliation
>
queryList
(
PremiumReconciliationDto
dto
);
PremiumReconciliation
queryLatestOneByPolicyNo
(
String
policyNo
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyFollowService.java
View file @
4b9f0054
...
...
@@ -46,4 +46,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
String
getCurrencyValue
(
String
currency
);
PolicyReportData
queryPolicyReportData
(
String
policyBizId
);
PolicyFollow
queryOneByPolicyNo
(
String
policyNo
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
View file @
4b9f0054
...
...
@@ -3,6 +3,7 @@ package com.yd.csf.service.service.impl;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
...
@@ -583,6 +584,19 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return
policyReportData
;
}
/**
* 根据保单号查询保单跟进信息
* @param policyNo
* @return
*/
@Override
public
PolicyFollow
queryOneByPolicyNo
(
String
policyNo
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
PolicyFollow
>()
.
eq
(
PolicyFollow:
:
getPolicyNo
,
policyNo
)
.
last
(
" limit 1 "
)
);
}
@Override
public
Boolean
uploadAttachment
(
AttachmentUploadRequest
attachmentUploadRequest
)
{
String
policyBizId
=
attachmentUploadRequest
.
getPolicyBizId
();
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PremiumReconciliationServiceImpl.java
View file @
4b9f0054
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest
;
import
com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse
;
import
com.yd.csf.service.dto.PremiumReconciliationDto
;
import
com.yd.csf.service.model.PremiumReconciliation
;
import
com.yd.csf.service.dao.PremiumReconciliationMapper
;
...
...
@@ -24,6 +28,12 @@ import java.util.List;
public
class
PremiumReconciliationServiceImpl
extends
ServiceImpl
<
PremiumReconciliationMapper
,
PremiumReconciliation
>
implements
IPremiumReconciliationService
{
@Override
public
IPage
<
ApiPremiumReconciliationPageResponse
>
page
(
Page
<
ApiPremiumReconciliationPageResponse
>
page
,
ApiPremiumReconciliationPageRequest
request
)
{
return
baseMapper
.
page
(
page
,
request
);
}
@Override
public
PremiumReconciliation
queryOne
(
String
premiumReconciliationBizId
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
PremiumReconciliation
>()
.
eq
(
PremiumReconciliation:
:
getPremiumReconciliationBizId
,
premiumReconciliationBizId
).
last
(
" limit 1 "
));
...
...
@@ -39,4 +49,18 @@ public class PremiumReconciliationServiceImpl extends ServiceImpl<PremiumReconci
return
list
;
}
/**
* 根据保单号查询最新创建时间的对账记录
* @param policyNo
* @return
*/
@Override
public
PremiumReconciliation
queryLatestOneByPolicyNo
(
String
policyNo
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
PremiumReconciliation
>()
.
eq
(
PremiumReconciliation:
:
getPolicyNo
,
policyNo
)
.
orderByDesc
(
PremiumReconciliation:
:
getCreateTime
)
.
last
(
" limit 1 "
)
);
}
}
yd-csf-service/src/main/resources/mappers/PremiumReconciliationMapper.xml
View file @
4b9f0054
...
...
@@ -2,4 +2,36 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yd.csf.service.dao.PremiumReconciliationMapper"
>
<select
id=
"page"
resultType=
"com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse"
>
SELECT
MAX(p.insurer) AS insurer,
pr.policy_no,
MAX(pf.status) AS policyFollowStatus,
MAX(pr.reconciliation_status) AS reconciliation_status,
MAX(p.status) AS policyStatus,
MAX(pr.remaining_unpaid_amount) AS remaining_unpaid_amount,
MAX(pr.remaining_unpaid_currency) AS remaining_unpaid_currency,
COALESCE(SUM(prm.payment_amount), 0) AS paymentAmount,
MAX(prm.payment_currency) AS paymentCurrency,
GROUP_CONCAT(DISTINCT prm.payment_method SEPARATOR ';') AS paymentMethod,
MAX(pr.recognized_amount) AS recognized_amount,
MAX(pr.recognized_currency) AS recognized_currency,
GROUP_CONCAT(DISTINCT prm.payer SEPARATOR ';') AS payer,
GROUP_CONCAT(DISTINCT prm.paying_bank SEPARATOR ';') AS paying_bank,
MAX(p.policy_holder) AS policy_holder,
MAX(p.insured) AS insured,
GROUP_CONCAT(DISTINCT pb.broker_name SEPARATOR ';') AS brokerName,
MAX(pr.create_time) AS create_time,
MAX(pr.update_time) AS update_time,
MAX(p.reconciliation_company) AS reconciliation_company
FROM premium_reconciliation pr
LEFT JOIN policy p ON p.policy_no = pr.policy_no AND p.is_deleted = 0
LEFT JOIN policy_follow pf ON pf.policy_no = pr.policy_no AND pf.is_deleted = 0
LEFT JOIN premium_remittance prm ON prm.premium_reconciliation_biz_id = pr.premium_reconciliation_biz_id AND prm.is_deleted = 0
LEFT JOIN policy_broker pb ON pb.policy_no = pr.policy_no AND pb.is_deleted = 0
WHERE pr.is_deleted = 0
GROUP BY pr.premium_reconciliation_biz_id, pr.policy_no
ORDER BY MAX(pr.create_time) DESC
</select>
</mapper>
\ No newline at end of file
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