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
8c7d5131
Commit
8c7d5131
authored
Jan 21, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进v2
parent
232b09ed
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
159 additions
and
98 deletions
+159
-98
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+49
-22
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionExpectedService.java
+11
-2
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
+75
-58
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FnaServiceImpl.java
+18
-15
yd-csf-service/src/main/java/com/yd/csf/service/vo/FnaVO.java
+6
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
View file @
8c7d5131
...
...
@@ -35,9 +35,11 @@ import com.yd.csf.service.vo.PolicyFollowVO;
import
com.yd.feign.config.FeignTokenInterceptor
;
import
com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient
;
import
com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest
;
import
com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -87,6 +89,8 @@ public class ApiPolicyFollowController {
private
ApiInsuranceReconciliationCompanyFeignClient
apiInsuranceReconciliationCompanyFeignClient
;
@Resource
private
ApiExpectedFortuneService
apiExpectedFortuneService
;
@Resource
private
CommissionExpectedService
commissionExpectedService
;
@PostMapping
(
"/upload/excel"
)
...
...
@@ -535,31 +539,54 @@ public class ApiPolicyFollowController {
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
ResultCode
.
NULL_ERROR
.
getMessage
());
}
PolicyFollowStatusEnum
currentStatusEnum
=
PolicyFollowStatusEnum
.
getEnumByValue
(
changePolicyFollowStatusRequest
.
getStatus
());
// 修改为生效时需要校验、同步预计发佣
if
(
PolicyFollowStatusEnum
.
EFFECTIVE
.
equals
(
currentStatusEnum
))
{
String
productLaunchBizId
=
policyFollow
.
getProductLaunchBizId
();
// 校验产品是否维护预计来佣数据
if
(
ObjectUtils
.
isEmpty
(
productLaunchBizId
))
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"新单跟进记录中,productLaunchBizId不能为空"
);
}
List
<
ApiExpectedSpeciesListResponse
>
expectedSpeciesList
=
commissionExpectedService
.
queryExpectedSpeciesByFeign
(
productLaunchBizId
);
if
(
ObjectUtils
.
isEmpty
(
expectedSpeciesList
))
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"产品未维护预计来佣数据"
);
}
// 校验产品是否维护发佣信息
Boolean
hasCommissionInfo
=
commissionExpectedService
.
checkProductExpectedFortune
(
productLaunchBizId
);
if
(!
hasCommissionInfo
)
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"产品未维护发佣信息"
);
}
}
// 修改逻辑
policyFollowService
.
changePolicyFollowStatus
(
changePolicyFollowStatusRequest
,
policyFollow
);
// 获取Token
String
token
=
request
.
getHeader
(
"Authorization"
);
// 异步:根据保单生成预计出账记录
CompletableFuture
.
runAsync
(()
->
{
try
{
// 设置ThreadLocal Token
FeignTokenInterceptor
.
setThreadLocalToken
(
token
);
// 调用 ApiExpectedFortuneService 的 generateWithLogAndRedis(包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest
generateExpectedFortuneRequest
=
new
ApiGenerateExpectedFortuneRequest
();
generateExpectedFortuneRequest
.
setPolicyNo
(
policyFollow
.
getPolicyNo
());
Result
<
ApiGenerateExpectedFortuneResponse
>
result
=
apiExpectedFortuneService
.
generateWithLogAndRedis
(
generateExpectedFortuneRequest
);
if
(
result
==
null
||
result
.
getCode
()
!=
200
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 响应结果={}"
,
policyFollow
.
getPolicyNo
(),
result
);
}
else
{
log
.
info
(
"新单跟进-异步生成预计出账记录成功:保单号={}"
,
policyFollow
.
getPolicyNo
());
// 修改为生效时需要同步预计发佣
if
(
PolicyFollowStatusEnum
.
EFFECTIVE
.
equals
(
currentStatusEnum
))
{
// 获取Token
String
token
=
request
.
getHeader
(
"Authorization"
);
// 异步:根据保单生成预计出账记录
CompletableFuture
.
runAsync
(()
->
{
try
{
// 设置ThreadLocal Token
FeignTokenInterceptor
.
setThreadLocalToken
(
token
);
// 调用 ApiExpectedFortuneService 的 generateWithLogAndRedis(包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest
generateExpectedFortuneRequest
=
new
ApiGenerateExpectedFortuneRequest
();
generateExpectedFortuneRequest
.
setPolicyNo
(
policyFollow
.
getPolicyNo
());
Result
<
ApiGenerateExpectedFortuneResponse
>
result
=
apiExpectedFortuneService
.
generateWithLogAndRedis
(
generateExpectedFortuneRequest
);
if
(
result
==
null
||
result
.
getCode
()
!=
200
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 响应结果={}"
,
policyFollow
.
getPolicyNo
(),
result
);
}
else
{
log
.
info
(
"新单跟进-异步生成预计出账记录成功:保单号={}"
,
policyFollow
.
getPolicyNo
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 错误信息={}"
,
policyFollow
.
getPolicyNo
(),
e
.
getMessage
(),
e
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 错误信息={}"
,
policyFollow
.
getPolicyNo
(),
e
.
getMessage
(),
e
);
}
});
});
}
return
Result
.
success
(
true
);
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionExpectedService.java
View file @
8c7d5131
...
...
@@ -12,10 +12,9 @@ import com.yd.csf.service.model.Policy;
import
com.yd.csf.service.vo.CommissionExpectedStatisticsVO
;
import
com.yd.csf.service.vo.CommissionExpectedVO
;
import
com.yd.csf.service.vo.ReceivableReportVO
;
import
com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Zhang Jianan
...
...
@@ -62,6 +61,16 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
void
getExpectedCommissionByProductlaunchId
(
Policy
policy
,
String
productLaunchBizId
,
String
insuranceCompanyBizId
,
String
reconciliationCompany
,
String
reconciliationCompanyCode
,
String
reconciliationCompanyBizId
);
List
<
ApiExpectedSpeciesListResponse
>
queryExpectedSpeciesByFeign
(
String
productLaunchBizId
);
/**
* 检查产品是否维护发佣信息
*
* @param productLaunchBizId 产品计划业务ID
* @return true-已维护发佣信息,false-未维护发佣信息
*/
Boolean
checkProductExpectedFortune
(
String
productLaunchBizId
);
/**
* 应收款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
View file @
8c7d5131
...
...
@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yd.common.constant.CommonConstant
;
import
com.yd.common.constant.RedisConstants
;
import
com.yd.common.enums.DictTypeEnum
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
...
...
@@ -25,6 +24,7 @@ import com.yd.csf.service.dao.CommissionExpectedMapper;
import
com.yd.csf.service.vo.CommissionExpectedStatisticsVO
;
import
com.yd.csf.service.vo.CommissionExpectedVO
;
import
com.yd.csf.service.vo.ReceivableReportVO
;
import
com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient
;
import
com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient
;
import
com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest
;
import
com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse
;
...
...
@@ -67,6 +67,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
@Resource
private
ApiExpectedSpeciesFeignClient
apiExpectedSpeciesFeignClient
;
@Resource
private
ApiAnnouncementCommissionRatioFeignClient
apiAnnouncementCommissionRatioFeignClient
;
@Resource
private
RedisUtil
redisUtil
;
...
...
@@ -486,68 +488,83 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List
<
GetDictItemListByDictTypeResponse
>
dictTypeResponses
=
redisUtil
.
getCacheObject
(
RedisConstants
.
DICT_LIST
);
if
(
StringUtils
.
isNotBlank
(
productLaunchBizId
))
{
ApiExpectedSpeciesListRequest
apiExpectedSpeciesListRequest
=
new
ApiExpectedSpeciesListRequest
();
apiExpectedSpeciesListRequest
.
setProductLaunchBizId
(
productLaunchBizId
);
Result
<
List
<
ApiExpectedSpeciesListResponse
>>
result
=
apiExpectedSpeciesFeignClient
.
list
(
apiExpectedSpeciesListRequest
);
if
(
result
.
getData
()
!=
null
)
{
List
<
ApiExpectedSpeciesListResponse
>
expectedSpeciesList
=
result
.
getData
();
List
<
CommissionExpected
>
commissionExpectedList
=
new
ArrayList
<>();
if
(
CollUtil
.
isNotEmpty
(
expectedSpeciesList
))
{
// 计算佣金总期数 list 中 endPeriod最大值
Integer
maxEndPeriod
=
expectedSpeciesList
.
stream
()
.
map
(
item
->
Convert
.
toInt
(
item
.
getEndPeriod
()))
.
max
(
Integer:
:
compareTo
)
.
orElse
(
0
);
for
(
ApiExpectedSpeciesListResponse
item
:
expectedSpeciesList
)
{
CommissionExpected
commissionExpected
=
new
CommissionExpected
();
commissionExpected
.
setCommissionExpectedBizId
(
RandomStringGenerator
.
generateBizId16
(
"commission_expected"
));
commissionExpected
.
setReceivableNo
(
receivableService
.
generateReceivableNo
(
"R"
,
reconciliationCompanyCode
,
reconciliationCompany
));
commissionExpected
.
setCommissionBizType
(
"R"
);
commissionExpected
.
setPolicyNo
(
policyNo
);
commissionExpected
.
setPremium
(
paymentPremium
);
commissionExpected
.
setInsuranceCompanyBizId
(
insuranceCompanyBizId
);
commissionExpected
.
setProductLaunchBizId
(
productLaunchBizId
);
commissionExpected
.
setReconciliationCompany
(
reconciliationCompany
);
commissionExpected
.
setReconciliationCompanyCode
(
reconciliationCompanyCode
);
commissionExpected
.
setReconciliationCompanyBizId
(
reconciliationCompanyBizId
);
commissionExpected
.
setCommissionPeriod
(
Convert
.
toInt
(
item
.
getIssueNumber
()));
commissionExpected
.
setTotalPeriod
(
maxEndPeriod
);
commissionExpected
.
setCommissionName
(
GetDictItemListByDictTypeResponse
.
getItemLabel
(
dictTypeResponses
,
"csf_commission_type"
,
item
.
getExpenseName
()));
commissionExpected
.
setCommissionType
(
item
.
getExpenseName
());
commissionExpected
.
setCommissionRatio
(
item
.
getCommissionRate
());
commissionExpected
.
setAmount
(
null
);
commissionExpected
.
setCurrency
(
item
.
getCurrency
());
commissionExpected
.
setCommissionDate
(
calculateCommissionDate
(
item
.
getEndPeriod
(),
effectiveDate
));
commissionExpected
.
setStatus
(
CommissionExpectedStatusEnum
.
PENDING
.
getItemValue
());
commissionExpected
.
setStatusDesc
(
null
);
commissionExpected
.
setDefaultExchangeRate
(
queryDefaultExchangeRate
(
item
.
getCurrency
()));
commissionExpected
.
setExpectedAmount
(
calculateExpectedAmount
(
paymentPremium
,
item
.
getCommissionRate
(),
"R"
,
null
,
item
.
getCurrency
(),
commissionExpected
.
getDefaultExchangeRate
()));
commissionExpected
.
setPaidAmount
(
BigDecimal
.
ZERO
);
commissionExpected
.
setPaidRatio
(
BigDecimal
.
ZERO
);
commissionExpected
.
setRemark
(
""
);
commissionExpected
.
setIsDeleted
(
0
);
commissionExpected
.
setCreatorId
(
""
);
commissionExpected
.
setUpdaterId
(
""
);
commissionExpected
.
setCreateTime
(
new
Date
());
commissionExpected
.
setUpdateTime
(
new
Date
());
commissionExpectedList
.
add
(
commissionExpected
);
}
// 保存预计来佣
this
.
saveBatch
(
commissionExpectedList
);
List
<
ApiExpectedSpeciesListResponse
>
expectedSpeciesList
=
queryExpectedSpeciesByFeign
(
productLaunchBizId
);
List
<
CommissionExpected
>
commissionExpectedList
=
new
ArrayList
<>();
if
(
CollUtil
.
isNotEmpty
(
expectedSpeciesList
))
{
// 计算佣金总期数 list 中 endPeriod最大值
Integer
maxEndPeriod
=
expectedSpeciesList
.
stream
()
.
map
(
item
->
Convert
.
toInt
(
item
.
getEndPeriod
()))
.
max
(
Integer:
:
compareTo
)
.
orElse
(
0
);
for
(
ApiExpectedSpeciesListResponse
item
:
expectedSpeciesList
)
{
CommissionExpected
commissionExpected
=
new
CommissionExpected
();
commissionExpected
.
setCommissionExpectedBizId
(
RandomStringGenerator
.
generateBizId16
(
"commission_expected"
));
commissionExpected
.
setReceivableNo
(
receivableService
.
generateReceivableNo
(
"R"
,
reconciliationCompanyCode
,
reconciliationCompany
));
commissionExpected
.
setCommissionBizType
(
"R"
);
commissionExpected
.
setPolicyNo
(
policyNo
);
commissionExpected
.
setPremium
(
paymentPremium
);
commissionExpected
.
setInsuranceCompanyBizId
(
insuranceCompanyBizId
);
commissionExpected
.
setProductLaunchBizId
(
productLaunchBizId
);
commissionExpected
.
setReconciliationCompany
(
reconciliationCompany
);
commissionExpected
.
setReconciliationCompanyCode
(
reconciliationCompanyCode
);
commissionExpected
.
setReconciliationCompanyBizId
(
reconciliationCompanyBizId
);
commissionExpected
.
setCommissionPeriod
(
Convert
.
toInt
(
item
.
getIssueNumber
()));
commissionExpected
.
setTotalPeriod
(
maxEndPeriod
);
commissionExpected
.
setCommissionName
(
GetDictItemListByDictTypeResponse
.
getItemLabel
(
dictTypeResponses
,
"csf_commission_type"
,
item
.
getExpenseName
()));
commissionExpected
.
setCommissionType
(
item
.
getExpenseName
());
commissionExpected
.
setCommissionRatio
(
item
.
getCommissionRate
());
commissionExpected
.
setAmount
(
null
);
commissionExpected
.
setCurrency
(
item
.
getCurrency
());
commissionExpected
.
setCommissionDate
(
calculateCommissionDate
(
item
.
getEndPeriod
(),
effectiveDate
));
commissionExpected
.
setStatus
(
CommissionExpectedStatusEnum
.
PENDING
.
getItemValue
());
commissionExpected
.
setStatusDesc
(
null
);
commissionExpected
.
setDefaultExchangeRate
(
queryDefaultExchangeRate
(
item
.
getCurrency
()));
commissionExpected
.
setExpectedAmount
(
calculateExpectedAmount
(
paymentPremium
,
item
.
getCommissionRate
(),
"R"
,
null
,
item
.
getCurrency
(),
commissionExpected
.
getDefaultExchangeRate
()));
commissionExpected
.
setPaidAmount
(
BigDecimal
.
ZERO
);
commissionExpected
.
setPaidRatio
(
BigDecimal
.
ZERO
);
commissionExpected
.
setRemark
(
""
);
commissionExpected
.
setIsDeleted
(
0
);
commissionExpected
.
setCreatorId
(
""
);
commissionExpected
.
setUpdaterId
(
""
);
commissionExpected
.
setCreateTime
(
new
Date
());
commissionExpected
.
setUpdateTime
(
new
Date
());
commissionExpectedList
.
add
(
commissionExpected
);
}
// 保存预计来佣
this
.
saveBatch
(
commissionExpectedList
);
}
}
}
@Override
public
List
<
ApiExpectedSpeciesListResponse
>
queryExpectedSpeciesByFeign
(
String
productLaunchBizId
)
{
ApiExpectedSpeciesListRequest
apiExpectedSpeciesListRequest
=
new
ApiExpectedSpeciesListRequest
();
apiExpectedSpeciesListRequest
.
setProductLaunchBizId
(
productLaunchBizId
);
Result
<
List
<
ApiExpectedSpeciesListResponse
>>
result
=
apiExpectedSpeciesFeignClient
.
list
(
apiExpectedSpeciesListRequest
);
if
(
ObjectUtils
.
isEmpty
(
result
.
getData
()))
{
return
result
.
getData
();
}
return
Collections
.
emptyList
();
}
@Override
public
Boolean
checkProductExpectedFortune
(
String
productLaunchBizId
)
{
Result
<
Boolean
>
result
=
apiAnnouncementCommissionRatioFeignClient
.
isData
(
productLaunchBizId
);
if
(
result
!=
null
&&
result
.
getData
()
!=
null
)
{
return
result
.
getData
();
}
return
false
;
}
private
BigDecimal
calculateExpectedAmount
(
BigDecimal
premium
,
BigDecimal
commissionRatio
,
String
commissionBizType
,
BigDecimal
amount
,
String
currency
,
BigDecimal
defaultExchangeRate
)
{
if
(
"R"
.
equals
(
commissionBizType
))
{
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FnaServiceImpl.java
View file @
8c7d5131
...
...
@@ -22,6 +22,7 @@ import com.yd.csf.service.enums.FnaStatusEnum;
import
com.yd.csf.service.model.Customer
;
import
com.yd.csf.service.model.Fna
;
import
com.yd.csf.service.model.FnaForm
;
import
com.yd.csf.service.model.Fortune
;
import
com.yd.csf.service.service.CustomerService
;
import
com.yd.csf.service.service.FnaFormService
;
import
com.yd.csf.service.service.FnaService
;
...
...
@@ -50,7 +51,6 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
@Autowired
private
FnaFormService
fnaFormService
;
@Resource
private
CustomerService
customerService
;
...
...
@@ -207,10 +207,15 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
List
<
FnaVO
>
fnaVOList
=
fnaList
.
stream
().
map
(
FnaVO:
:
objToVo
).
collect
(
Collectors
.
toList
());
// region 可选
// 1. 关联查询用户信息
// Set<Long> userIdSet = fnaList.stream().map(Fna::getUserId).collect(Collectors.toSet());
// Map<Long, List<User>> userIdUserListMap = userService.listByIds(userIdSet).stream()
// .collect(Collectors.groupingBy(User::getId));
// 1. 关联查询客户信息
Set
<
String
>
userIdSet
=
fnaList
.
stream
().
map
(
Fna:
:
getCustomerBizId
).
collect
(
Collectors
.
toSet
());
List
<
Customer
>
customerList
=
customerService
.
lambdaQuery
()
.
in
(
Customer:
:
getCustomerBizId
)
.
select
(
Customer:
:
getCustomerBizId
,
Customer:
:
getNameCn
)
.
list
();
// 客户映射
Map
<
String
,
Customer
>
customerMap
=
customerList
.
stream
().
collect
(
Collectors
.
toMap
(
Customer:
:
getCustomerBizId
,
f
->
f
));
// 2. 已登录,获取用户点赞、收藏状态
Map
<
Long
,
Boolean
>
fnaIdHasThumbMap
=
new
HashMap
<>();
...
...
@@ -219,16 +224,14 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
// 填充信息
// fnaVOList.forEach(fnaVO -> {
// Long userId = fnaVO.getUserId();
// User user = null;
// if (userIdUserListMap.containsKey(userId)) {
// user = userIdUserListMap.get(userId).get(0);
// }
// fnaVO.setUser(userService.getUserVO(user));
// fnaVO.setHasThumb(fnaIdHasThumbMap.getOrDefault(fnaVO.getId(), false));
// fnaVO.setHasFavour(fnaIdHasFavourMap.getOrDefault(fnaVO.getId(), false));
// });
fnaVOList
.
forEach
(
fnaVO
->
{
String
customerBizId
=
fnaVO
.
getCustomerBizId
();
Customer
customer
=
customerMap
.
get
(
customerBizId
);
if
(
customer
!=
null
)
{
fnaVO
.
setCustomerNameCn
(
customer
.
getNameCn
());
}
});
// endregion
fnaVOPage
.
setRecords
(
fnaVOList
);
...
...
yd-csf-service/src/main/java/com/yd/csf/service/vo/FnaVO.java
View file @
8c7d5131
...
...
@@ -11,7 +11,6 @@ import java.util.List;
/**
* fna视图
*
*/
@Data
public
class
FnaVO
implements
Serializable
{
...
...
@@ -47,6 +46,12 @@ public class FnaVO implements Serializable {
private
String
customerName
;
/**
* 客户姓名中文
*/
@Schema
(
description
=
"客户姓名中文"
)
private
String
customerNameCn
;
/**
* 客户唯一业务ID
*/
@Schema
(
description
=
"客户唯一业务ID"
)
...
...
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