Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
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
fangxinjiang
yifu-mvp
Commits
bd42c09e
Commit
bd42c09e
authored
Sep 01, 2025
by
fangxinjiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
保单维护-fxj
parent
84b8ef78
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
362 additions
and
7 deletions
+362
-7
CacheConstants.java
...oud/plus/v1/yifu/common/core/constant/CacheConstants.java
+2
-0
Common.java
.../com/yifu/cloud/plus/v1/yifu/common/core/util/Common.java
+15
-0
InsurancesConstants.java
...lus/v1/yifu/insurances/constants/InsurancesConstants.java
+5
-0
InsurancePolicyImportVo.java
...d/plus/v1/yifu/insurances/vo/InsurancePolicyImportVo.java
+63
-0
TInsurancePolicyController.java
...ifu/insurances/controller/TInsurancePolicyController.java
+41
-0
TInsurancePolicyService.java
...insurances/service/insurance/TInsurancePolicyService.java
+5
-0
TInsurancePolicyServiceImpl.java
...s/service/insurance/impl/TInsurancePolicyServiceImpl.java
+231
-7
No files found.
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/constant/CacheConstants.java
View file @
bd42c09e
...
@@ -150,6 +150,8 @@ public interface CacheConstants {
...
@@ -150,6 +150,8 @@ public interface CacheConstants {
String
PAYMENT_SOCIAL_IMPORT
=
"payment_social_import"
;
String
PAYMENT_SOCIAL_IMPORT
=
"payment_social_import"
;
String
INSURANCE_POLICY_IMPORT
=
"insurance_policy_import"
;
String
PAYMENT_FUND_IMPORT
=
"payment_fund_import"
;
String
PAYMENT_FUND_IMPORT
=
"payment_fund_import"
;
String
PAYMENT_SOCIAL_PUSH
=
"payment_social_push"
;
String
PAYMENT_SOCIAL_PUSH
=
"payment_social_push"
;
...
...
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/util/Common.java
View file @
bd42c09e
...
@@ -751,4 +751,19 @@ public class Common {
...
@@ -751,4 +751,19 @@ public class Common {
}
}
}
}
}
}
/**
* @Author fxj
* @Description 判断所有返回数据,是否全部为正确的
* @Date 16:32 2025/8/29
**/
public
static
R
<
List
<
ErrorMessage
>>
judgeAllMessage
(
List
<
ErrorMessage
>
errorMessageList
)
{
if
(!
errorMessageList
.
isEmpty
()
&&
errorMessageList
.
stream
().
noneMatch
(
e
->
e
.
getColor
().
equals
(
CommonConstants
.
RED
)))
{
return
R
.
ok
();
}
if
(!
errorMessageList
.
isEmpty
()
&&
errorMessageList
.
stream
().
anyMatch
(
e
->
CommonConstants
.
ONE_STRING
.
equals
(
e
.
getName
())))
{
return
R
.
ok
(
errorMessageList
,
"error"
);
}
return
R
.
ok
(
errorMessageList
);
}
}
}
yifu-insurances/yifu-insurances-api/src/main/java/com/yifu/cloud/plus/v1/yifu/insurances/constants/InsurancesConstants.java
View file @
bd42c09e
...
@@ -1336,4 +1336,9 @@ public class InsurancesConstants {
...
@@ -1336,4 +1336,9 @@ public class InsurancesConstants {
* 商险到期提醒默认提醒人配置KEY
* 商险到期提醒默认提醒人配置KEY
*/
*/
public
static
final
String
INSURANCE_ALERT_DEFAULT_PERSON
=
"INSURANCE_ALERT_DEFAULT_PERSON"
;
public
static
final
String
INSURANCE_ALERT_DEFAULT_PERSON
=
"INSURANCE_ALERT_DEFAULT_PERSON"
;
/**
* 保单号维护模版导入
*
*/
public
static
final
String
IMPORT_POLICY_REMARK
=
"保单号维护模版导入"
;
}
}
yifu-insurances/yifu-insurances-api/src/main/java/com/yifu/cloud/plus/v1/yifu/insurances/vo/InsurancePolicyImportVo.java
0 → 100644
View file @
bd42c09e
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
insurances
.
vo
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.write.style.HeadFontStyle
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.Length
;
import
java.io.Serializable
;
/**
* @Author fxj
* @Description 保单维护导入对象
* @Date 16:34 2025/8/29
**/
@Data
@Schema
(
description
=
"保单维护导入对象"
)
public
class
InsurancePolicyImportVo
extends
RowIndex
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1442112261102562729L
;
/**
* 保单号
*/
@Length
(
max
=
50
,
message
=
"保单号 不能超过50 个字符"
)
@ExcelAttribute
(
name
=
"保单号"
,
maxLength
=
50
,
isNotEmpty
=
true
,
errorInfo
=
"保单号不能为空"
)
@ExcelProperty
(
"保单号"
)
@Schema
(
description
=
"保单号"
)
private
String
policyNo
;
/**
* 保单开始日期
*/
@ExcelAttribute
(
name
=
"保单开始日期"
,
isDate
=
true
,
isNotEmpty
=
true
,
dateFormat
=
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
,
errorInfo
=
"保单开始日期不能为空"
)
@ExcelProperty
(
"保单开始日期"
)
@Schema
(
description
=
"保单开始日期"
)
private
String
policyStart
;
/**
* 保单截止日期
*/
@ExcelAttribute
(
name
=
"保单截止日期"
,
isDate
=
true
,
isNotEmpty
=
true
,
dateFormat
=
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
,
errorInfo
=
"保单截止日期不能为空"
)
@ExcelProperty
(
"保单截止日期"
)
@Schema
(
description
=
"保单截止日期"
)
private
String
policyEnd
;
/**
* 保险公司
*/
@ExcelAttribute
(
name
=
"保险公司"
,
maxLength
=
60
,
isNotEmpty
=
true
,
errorInfo
=
"保险公司不能为空"
)
@ExcelProperty
(
"保险公司"
)
@Schema
(
description
=
"保险公司"
)
private
String
insuranceCompanyName
;
/**
* 险种
*/
@ExcelAttribute
(
name
=
"险种"
,
maxLength
=
50
,
isNotEmpty
=
true
,
errorInfo
=
"险种不能为空"
)
@ExcelProperty
(
"险种"
)
@Schema
(
description
=
"险种"
)
private
String
insuranceTypeName
;
}
yifu-insurances/yifu-insurances-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/insurances/controller/TInsurancePolicyController.java
View file @
bd42c09e
...
@@ -2,7 +2,17 @@ package com.yifu.cloud.plus.v1.yifu.insurances.controller;
...
@@ -2,7 +2,17 @@ package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.Common
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.ErrorDetailVO
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog
;
import
com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePolicy
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePolicy
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsurancePolicyService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsurancePolicyService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListEditParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListEditParam
;
...
@@ -12,9 +22,11 @@ import io.swagger.v3.oas.annotations.Operation;
...
@@ -12,9 +22,11 @@ import io.swagger.v3.oas.annotations.Operation;
import
io.swagger.v3.oas.annotations.security.SecurityRequirement
;
import
io.swagger.v3.oas.annotations.security.SecurityRequirement
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.SneakyThrows
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
...
@@ -104,4 +116,33 @@ public class TInsurancePolicyController {
...
@@ -104,4 +116,33 @@ public class TInsurancePolicyController {
return
tInsurancePolicyService
.
deleteInsurancePolicy
(
id
);
return
tInsurancePolicyService
.
deleteInsurancePolicy
(
id
);
}
}
@SneakyThrows
@Operation
(
description
=
"批量新增保单号维护"
)
@SysLog
(
"批量新增保单号维护"
)
@PostMapping
(
"/importListAdd"
)
public
R
<
List
<
ErrorMessage
>>
importListAdd
(
@RequestBody
MultipartFile
file
)
{
YifuUser
user
=
SecurityUtils
.
getUser
();
if
(
Common
.
isEmpty
(
user
)){
return
R
.
failed
(
CommonConstants
.
USER_FAIL
);
}
// 获取redis分布式事务锁
String
key
=
CacheConstants
.
INSURANCE_POLICY_IMPORT
+
CommonConstants
.
DOWN_LINE_STRING
+
user
.
getId
();
String
requestId
;
try
{
requestId
=
RedisDistributedLock
.
getLock
(
key
,
"10"
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
ResultConstants
.
NO_GETLOCK_DATA
+
CommonConstants
.
DOWN_LINE_STRING
+
e
.
getMessage
());
}
try
{
if
(
Common
.
isNotNull
(
requestId
))
{
return
tInsurancePolicyService
.
importInsurancePolicy
(
file
.
getInputStream
());
}
else
{
return
R
.
failed
(
ResultConstants
.
NO_GETLOCK_DATA
);
}
}
finally
{
//主动释放锁
RedisDistributedLock
.
unlock
(
key
,
requestId
);
}
}
}
}
yifu-insurances/yifu-insurances-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/insurances/service/insurance/TInsurancePolicyService.java
View file @
bd42c09e
...
@@ -2,13 +2,16 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
...
@@ -2,13 +2,16 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.ErrorDetailVO
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePolicy
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePolicy
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListEditParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListEditParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsurancePolicyDetailVO
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsurancePolicyDetailVO
;
import
java.io.InputStream
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -72,4 +75,6 @@ public interface TInsurancePolicyService extends IService<TInsurancePolicy> {
...
@@ -72,4 +75,6 @@ public interface TInsurancePolicyService extends IService<TInsurancePolicy> {
* @return {@link R}
* @return {@link R}
*/
*/
R
deleteInsurancePolicy
(
String
id
);
R
deleteInsurancePolicy
(
String
id
);
R
<
List
<
ErrorMessage
>>
importInsurancePolicy
(
InputStream
inputStream
);
}
}
yifu-insurances/yifu-insurances-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/insurances/service/insurance/impl/TInsurancePolicyServiceImpl.java
View file @
bd42c09e
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
insurances
.
service
.
insurance
.
impl
;
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
insurances
.
service
.
insurance
.
impl
;
import
cn.hutool.core.date.LocalDateTimeUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.read.listener.ReadListener
;
import
com.alibaba.excel.read.metadata.holder.ReadRowHolder
;
import
com.alibaba.excel.util.ListUtils
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yifu.cloud.plus.v1.yifu.archives.vo.*
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.Common
;
import
com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.*
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TBusinessOperate
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail
;
import
com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePolicy
;
import
com.yifu.cloud.plus.v1.yifu.insurances.constants.InsurancesConstants
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.*
;
import
com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsuranceCompanyMapper
;
import
com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsurancePolicyMapper
;
import
com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsurancePolicyMapper
;
import
com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsuranceTypeMapper
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TBusinessOperateService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TBusinessOperateService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceDetailService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceDetailService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsurancePolicyService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsurancePolicyService
;
import
com.yifu.cloud.plus.v1.yifu.insurances.util.BeanCopyUtils
;
import
com.yifu.cloud.plus.v1.yifu.insurances.util.BeanCopyUtils
;
import
com.yifu.cloud.plus.v1.yifu.insurances.util.LocalDateUtil
;
import
com.yifu.cloud.plus.v1.yifu.insurances.util.LocalDateUtil
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyImportVo
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListEditParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListEditParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.InsurancePolicyListParam
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsurancePolicyDetailVO
;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsurancePolicyDetailVO
;
import
com.yifu.cloud.plus.v1.yifu.social.entity.*
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchImportVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.log4j.Log4j2
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.io.InputStream
;
import
java.util.Optional
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
com
.
alibaba
.
fastjson
.
serializer
.
SerializerFeature
.*;
/**
/**
...
@@ -36,6 +57,8 @@ import java.util.Optional;
...
@@ -36,6 +57,8 @@ import java.util.Optional;
* @description 针对表【t_insurance_policy(保单号对应起止时间表)】的数据库操作Service实现
* @description 针对表【t_insurance_policy(保单号对应起止时间表)】的数据库操作Service实现
* @date 2022-12-07 16:40:16
* @date 2022-12-07 16:40:16
*/
*/
@Log4j2
@RequiredArgsConstructor
@Service
@Service
public
class
TInsurancePolicyServiceImpl
extends
ServiceImpl
<
TInsurancePolicyMapper
,
TInsurancePolicy
>
implements
TInsurancePolicyService
{
public
class
TInsurancePolicyServiceImpl
extends
ServiceImpl
<
TInsurancePolicyMapper
,
TInsurancePolicy
>
implements
TInsurancePolicyService
{
@Resource
@Resource
...
@@ -44,6 +67,12 @@ public class TInsurancePolicyServiceImpl extends ServiceImpl<TInsurancePolicyMap
...
@@ -44,6 +67,12 @@ public class TInsurancePolicyServiceImpl extends ServiceImpl<TInsurancePolicyMap
@Lazy
@Lazy
private
TInsuranceDetailService
tInsuranceDetailService
;
private
TInsuranceDetailService
tInsuranceDetailService
;
@Autowired
private
TInsuranceCompanyMapper
companyMapper
;
@Autowired
private
TInsuranceTypeMapper
typeMapper
;
/**
/**
* 保单号对应起止保时间分页查询
* 保单号对应起止保时间分页查询
*
*
...
@@ -183,8 +212,203 @@ public class TInsurancePolicyServiceImpl extends ServiceImpl<TInsurancePolicyMap
...
@@ -183,8 +212,203 @@ public class TInsurancePolicyServiceImpl extends ServiceImpl<TInsurancePolicyMap
update
(
updateWrapper
);
update
(
updateWrapper
);
return
R
.
ok
();
return
R
.
ok
();
}
}
@Override
public
R
<
List
<
ErrorMessage
>>
importInsurancePolicy
(
InputStream
inputStream
)
{
YifuUser
user
=
SecurityUtils
.
getUser
();
if
(
Common
.
isEmpty
(
user
))
{
R
.
failed
(
CommonConstants
.
USER_FAIL
);
}
List
<
ErrorMessage
>
errorMessageList
=
new
ArrayList
<>();
ExcelUtil
<
InsurancePolicyImportVo
>
util1
=
new
ExcelUtil
<>(
InsurancePolicyImportVo
.
class
);
Map
<
String
,
String
>
policyNoMap
=
new
HashMap
<>();
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try
{
EasyExcel
.
read
(
inputStream
,
InsurancePolicyImportVo
.
class
,
new
ReadListener
<
InsurancePolicyImportVo
>()
{
/**
* 单次缓存的数据量
*/
public
static
final
int
BATCH_COUNT
=
CommonConstants
.
BATCH_COUNT
;
/**
*临时存储
*/
private
List
<
InsurancePolicyImportVo
>
cachedDataList
=
ListUtils
.
newArrayListWithExpectedSize
(
BATCH_COUNT
);
@Override
public
void
invoke
(
InsurancePolicyImportVo
data
,
AnalysisContext
context
)
{
ReadRowHolder
readRowHolder
=
context
.
readRowHolder
();
Integer
rowIndex
=
readRowHolder
.
getRowIndex
();
data
.
setRowIndex
(
rowIndex
+
1
);
ErrorMessage
errorMessage
=
util1
.
checkEntity
(
data
,
data
.
getRowIndex
());
if
(
Common
.
isNotNull
(
errorMessage
))
{
errorMessageList
.
add
(
errorMessage
);
}
else
{
cachedDataList
.
add
(
data
);
}
if
(
cachedDataList
.
size
()
>=
BATCH_COUNT
)
{
saveData
();
// 存储完成清理 list
cachedDataList
=
ListUtils
.
newArrayListWithExpectedSize
(
BATCH_COUNT
);
}
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
saveData
();
}
/**
* 加上存储数据库
*/
private
void
saveData
()
{
log
.
info
(
"{}条数据,开始存储数据库!"
,
cachedDataList
.
size
());
importInsurancePolicy
(
cachedDataList
,
errorMessageList
,
user
,
policyNoMap
);
log
.
info
(
"存储数据库成功!"
);
}
}).
sheet
().
doRead
();
}
catch
(
Exception
e
)
{
log
.
error
(
CommonConstants
.
IMPORT_DATA_ANALYSIS_ERROR
,
e
);
return
R
.
failed
(
CommonConstants
.
IMPORT_DATA_ANALYSIS_ERROR
);
}
finally
{
Common
.
clear
(
policyNoMap
);
}
return
Common
.
judgeAllMessage
(
errorMessageList
);
}
public
void
importInsurancePolicy
(
List
<
InsurancePolicyImportVo
>
excelVOList
,
List
<
ErrorMessage
>
errorMessageList
,
YifuUser
user
,
Map
<
String
,
String
>
policyNoMap
)
{
if
(!
Common
.
isNotNull
(
excelVOList
))
{
return
;
}
Map
<
String
,
String
>
excelVOTemp
=
new
HashMap
<>();
// 获取所有的保险公司
Map
<
String
,
TInsuranceCompany
>
companyMap
=
getCompanyMap
();
// 获取所有险种
Map
<
String
,
TInsuranceType
>
typeMap
=
getTypeMap
();
//获取本次导入对应的保单号是否已经存在
Map
<
String
,
String
>
existMap
=
getExistMap
(
excelVOList
);
InsurancePolicyImportVo
excel
=
null
;
TInsuranceCompany
company
=
null
;
TInsuranceType
type
=
null
;
TBusinessOperate
operate
=
null
;
TInsurancePolicy
policy
=
null
;
// 执行数据插入操作 组装
for
(
int
i
=
0
;
i
<
excelVOList
.
size
();
i
++)
{
excel
=
excelVOList
.
get
(
i
);
// 判断保单号是否重复
if
(
policyNoMap
.
get
(
excel
.
getPolicyNo
())
!=
null
)
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"保单号【"
+
excel
.
getPolicyNo
()
+
"】与第"
+
policyNoMap
.
get
(
excel
.
getPolicyNo
())
+
"行重复,未导入"
));
continue
;
}
if
(
existMap
.
get
(
excel
.
getPolicyNo
())
==
null
){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"保单号【"
+
excel
.
getPolicyNo
()
+
"】已存在,未导入"
));
continue
;
}
company
=
companyMap
.
get
(
excel
.
getInsuranceCompanyName
());
if
(
null
==
company
){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"保单号【"
+
excel
.
getPolicyNo
()
+
"】的保险公司名称未找到,未导入"
));
continue
;
}
type
=
typeMap
.
get
(
excel
.
getInsuranceTypeName
());
if
(
null
==
type
){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"保单号【"
+
excel
.
getPolicyNo
()
+
"】的险种名称未找到,未导入"
));
continue
;
}
if
(!
type
.
getInsuranceCompanyId
().
equals
(
company
.
getId
())){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"保单号【"
+
excel
.
getPolicyNo
()
+
"】的险种与保险公司不一致,未导入"
));
continue
;
}
policy
=
new
TInsurancePolicy
();
policy
.
setPolicyNo
(
excel
.
getPolicyNo
());
policy
.
setInsuranceCompanyName
(
excel
.
getInsuranceCompanyName
());
policy
.
setInsuranceTypeName
(
excel
.
getInsuranceTypeName
());
policy
.
setPolicyStart
(
LocalDateUtil
.
parseLocalDate
(
excel
.
getPolicyStart
()));
policy
.
setPolicyEnd
(
LocalDateUtil
.
parseLocalDate
(
excel
.
getPolicyEnd
()));
policy
.
setCreateBy
(
user
.
getId
());
policy
.
setUpdateBy
(
user
.
getId
());
policy
.
setEnableFlag
(
CommonConstants
.
ZERO_INT
);
policy
.
setDeleteFlag
(
CommonConstants
.
ZERO_INT
);
//插入保单维护信息
baseMapper
.
insert
(
policy
);
//插入保单维护操作日志
tBusinessOperateService
.
saveModificationRecord
(
policy
.
getId
(),
null
,
policy
,
InsurancesConstants
.
IMPORT_POLICY_REMARK
);
policyNoMap
.
put
(
excel
.
getPolicyNo
(),
excel
.
getRowIndex
().
toString
());
// 清理map list 等数据
Common
.
clear
(
excelVOList
);
Common
.
clear
(
companyMap
);
Common
.
clear
(
typeMap
);
Common
.
clear
(
excelVOTemp
);
}
}
private
Map
<
String
,
String
>
getExistMap
(
List
<
InsurancePolicyImportVo
>
excelVOList
)
{
Map
<
String
,
String
>
existMap
=
null
;
List
<
String
>
existNos
;
if
(
Common
.
isNotNull
(
excelVOList
)){
existNos
=
excelVOList
.
stream
().
map
(
InsurancePolicyImportVo:
:
getPolicyNo
).
collect
(
Collectors
.
toList
());
List
<
TInsurancePolicy
>
policies
=
this
.
baseMapper
.
selectList
(
Wrappers
.<
TInsurancePolicy
>
query
().
lambda
()
.
in
(
TInsurancePolicy:
:
getPolicyNo
,
existNos
).
eq
(
TInsurancePolicy:
:
getDeleteFlag
,
CommonConstants
.
ZERO_INT
));
if
(
Common
.
isNotNull
(
policies
))
{
existMap
=
policies
.
stream
().
collect
(
Collectors
.
toMap
(
TInsurancePolicy:
:
getPolicyNo
,
TInsurancePolicy:
:
getId
));
}
}
if
(!
Common
.
isNotNull
(
existMap
)){
existMap
=
new
HashMap
<>();
}
return
existMap
;
}
/**
* @Author fxj
* @Description 获取所有险种,缓存起来,缓存起来,排除删除的、险种名称是空的
* @Date 17:17 2025/8/29
* @Param
* @return
**/
private
Map
<
String
,
TInsuranceType
>
getTypeMap
()
{
List
<
TInsuranceType
>
companyList
=
typeMapper
.
selectList
(
Wrappers
.<
TInsuranceType
>
query
().
lambda
()
.
isNotNull
(
TInsuranceType:
:
getName
)
.
eq
(
TInsuranceType:
:
getDeleteFlag
,
CommonConstants
.
ZERO_INT
));
if
(
Common
.
isEmpty
(
companyList
))
{
return
new
HashMap
<>();
}
return
companyList
.
stream
()
.
collect
(
Collectors
.
toMap
(
TInsuranceType:
:
getName
,
v
->
v
,
(
existing
,
replacement
)
->
existing
// 处理重复key的情况
));
}
/**
* @Author fxj
* @Description 查询所有保险公司,缓存起来,排除删除的、保险公司名称是空的
* @Date 17:17 2025/8/29
* @Param
* @return
**/
private
Map
<
String
,
TInsuranceCompany
>
getCompanyMap
()
{
List
<
TInsuranceCompany
>
companyList
=
companyMapper
.
selectList
(
Wrappers
.<
TInsuranceCompany
>
query
().
lambda
()
.
isNotNull
(
TInsuranceCompany:
:
getCompanyName
)
.
eq
(
TInsuranceCompany:
:
getDeleteFlag
,
CommonConstants
.
ZERO_INT
));
if
(
Common
.
isEmpty
(
companyList
))
{
return
new
HashMap
<>();
}
return
companyList
.
stream
()
.
collect
(
Collectors
.
toMap
(
TInsuranceCompany:
:
getCompanyName
,
v
->
v
,
(
existing
,
replacement
)
->
existing
// 处理重复key的情况
));
}
private
SerializerFeature
[]
features
=
new
SerializerFeature
[]
{
WriteMapNullValue
,
WriteNullNumberAsZero
,
WriteNullListAsEmpty
,
WriteNullStringAsEmpty
,
WriteDateUseDateFormat
};
}
}
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