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
cd99364a
Commit
cd99364a
authored
May 15, 2024
by
huyuchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
失败原因配置
parent
f5719ccd
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1350 additions
and
74 deletions
+1350
-74
CommonConstants.java
...ud/plus/v1/yifu/common/core/constant/CommonConstants.java
+1
-0
TPaymentInfo.java
...m/yifu/cloud/plus/v1/yifu/social/entity/TPaymentInfo.java
+14
-14
TPaymentTaxSocialVo.java
...ifu/cloud/plus/v1/yifu/social/vo/TPaymentTaxSocialVo.java
+169
-0
PaymentConstants.java
...cloud/plus/v1/yifu/social/constants/PaymentConstants.java
+13
-0
FailReasonConfigController.java
...v1/yifu/social/controller/FailReasonConfigController.java
+6
-0
TPaymentInfoController.java
...lus/v1/yifu/social/controller/TPaymentInfoController.java
+36
-0
TPaymentInfoService.java
...loud/plus/v1/yifu/social/service/TPaymentInfoService.java
+7
-0
TPaymentInfoServiceImpl.java
.../v1/yifu/social/service/impl/TPaymentInfoServiceImpl.java
+1104
-60
No files found.
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/constant/CommonConstants.java
View file @
cd99364a
...
...
@@ -347,6 +347,7 @@ public interface CommonConstants {
public
static
final
String
JAR_TYPE
=
"jar"
;
int
BATCH_COUNT
=
100
;
int
BATCH_COUNT_TAX
=
400
;
int
BATCH_COUNT1
=
2000
;
String
IMPORT_DATA_ANALYSIS_ERROR
=
"数据导入解析异常,请检查表数据格式(常见错误:1.日期格式:yyyy-MM-dd,2.比例为整数且不含%)"
;
...
...
yifu-social/yifu-social-api/src/main/java/com/yifu/cloud/plus/v1/yifu/social/entity/TPaymentInfo.java
View file @
cd99364a
...
...
@@ -393,13 +393,6 @@ public class TPaymentInfo extends BaseEntity {
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"单位养老基数"
)
private
BigDecimal
unitPensionSet
;
/**
* 单位医疗基数
*/
@ExcelAttribute
(
name
=
"单位医疗基数"
,
isFloat
=
true
,
max
=
"999999999.99"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"单位医疗基数"
)
private
BigDecimal
unitMedicalSet
;
/**
* 单位失业基数
*/
...
...
@@ -407,6 +400,13 @@ public class TPaymentInfo extends BaseEntity {
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"单位失业基数"
)
private
BigDecimal
unitUnemploymentSet
;
/**
* 单位医疗基数
*/
@ExcelAttribute
(
name
=
"单位医疗基数"
,
isFloat
=
true
,
max
=
"999999999.99"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"单位医疗基数"
)
private
BigDecimal
unitMedicalSet
;
/**
* 工伤基数
*/
...
...
@@ -547,13 +547,6 @@ public class TPaymentInfo extends BaseEntity {
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"个人医疗金额"
)
private
BigDecimal
personalMedicalMoney
;
/**
* 个人失业金额
*/
@ExcelAttribute
(
name
=
"个人失业金额"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"个人失业金额"
)
private
BigDecimal
personalUnemploymentMoney
;
/**
* 个人大病金额
*/
...
...
@@ -561,6 +554,13 @@ public class TPaymentInfo extends BaseEntity {
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"个人大病金额"
)
private
BigDecimal
personalBigmailmentMoney
;
/**
* 个人失业金额
*/
@ExcelAttribute
(
name
=
"个人失业金额"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
"个人失业金额"
)
private
BigDecimal
personalUnemploymentMoney
;
/**
* 公积金编号
*/
...
...
yifu-social/yifu-social-api/src/main/java/com/yifu/cloud/plus/v1/yifu/social/vo/TPaymentTaxSocialVo.java
0 → 100644
View file @
cd99364a
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
social
.
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.vo.RowIndex
;
import
com.yifu.cloud.plus.v1.yifu.social.util.BigDecimalConverter
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.Length
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @ClassName TPaymentHeFeiVo
* @Description 税务社保明细
* @author huyc
* @date 2024-5-9 10:35:22
*/
@Data
public
class
TPaymentTaxSocialVo
extends
RowIndex
implements
Serializable
{
/**
* 员工姓名
*/
@Length
(
max
=
20
,
message
=
"姓名不能超过20个字符"
)
@ExcelAttribute
(
name
=
"姓名"
,
maxLength
=
20
,
isNotEmpty
=
true
)
@Schema
(
description
=
"姓名"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"姓名"
)
private
String
empName
;
/**
* 证件类型
*/
@Length
(
max
=
30
,
message
=
"证件类型不能超过30个字符"
)
@ExcelAttribute
(
name
=
"证件类型"
,
maxLength
=
30
)
@Schema
(
description
=
"证件类型"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"证件类型"
)
private
String
cardType
;
/**
* 证件号码
*/
@Length
(
max
=
50
,
message
=
"不能超过50个字符"
)
@ExcelAttribute
(
name
=
"证件号码"
,
isNotEmpty
=
true
,
maxLength
=
50
,
errorInfo
=
"证件号码字段不可为空!"
)
@Schema
(
description
=
"证件号码"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"证件号码"
)
private
String
empIdcard
;
/**
* 缴费工资
*/
@ExcelAttribute
(
name
=
"缴费工资"
,
isFloat
=
true
,
max
=
"999999999.99"
,
min
=
-
999999999
)
@Schema
(
description
=
"缴费工资"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"缴费工资"
,
converter
=
BigDecimalConverter
.
class
)
private
BigDecimal
paymentSalary
;
/**
* 缴费基数
*/
@ExcelAttribute
(
name
=
"缴费基数"
,
isFloat
=
true
,
max
=
"999999999.99"
)
@Schema
(
description
=
"缴费基数"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"缴费基数"
,
converter
=
BigDecimalConverter
.
class
)
private
BigDecimal
paymentSet
;
/**
* 费率
*/
@ExcelAttribute
(
name
=
"费率"
)
@Schema
(
description
=
"费率"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"费率"
)
private
String
paymentPer
;
/**
* 应缴费额
*/
@ExcelAttribute
(
name
=
"应缴费额"
,
isFloat
=
true
,
max
=
"999999999.99"
,
min
=
-
999999999
)
@Schema
(
description
=
"应缴费额"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"应缴费额"
,
converter
=
BigDecimalConverter
.
class
)
private
BigDecimal
paymentMoney
;
/**
* 人员编号
*/
@ExcelAttribute
(
name
=
"人员编号"
)
@Schema
(
description
=
"人员编号"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"人员编号"
)
private
String
empNo
;
/**
* 险种
*/
@ExcelAttribute
(
name
=
"险种"
)
@Schema
(
description
=
"险种"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"险种"
)
private
String
riskType
;
/**
* 社保缴纳地
*/
@Length
(
max
=
50
,
message
=
"社保缴纳地不能超过50个字符"
)
@ExcelAttribute
(
name
=
"社保缴纳地"
,
isNotEmpty
=
true
,
errorInfo
=
"社保缴纳地不可为空"
,
maxLength
=
50
)
@Schema
(
description
=
"社保缴纳地"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"社保缴纳地"
)
private
String
socialPayAddr
;
/**
* 社保缴纳地-省
*/
@Length
(
max
=
32
,
message
=
"不能超过32个字符"
)
@ExcelAttribute
(
name
=
"社保缴纳地-省"
,
maxLength
=
32
,
isDataId
=
true
,
isArea
=
true
,
parentField
=
""
)
@Schema
(
description
=
"社保缴纳地-省"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"社保缴纳地-省"
)
private
Integer
socialProvince
;
/**
* 社保缴纳地-市
*/
@Length
(
max
=
32
,
message
=
"不能超过32个字符"
)
@ExcelAttribute
(
name
=
"社保缴纳地-市"
,
maxLength
=
32
,
isDataId
=
true
,
isArea
=
true
,
parentField
=
"socialProvince"
)
@Schema
(
description
=
"社保缴纳地-市"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"社保缴纳地-市"
)
private
Integer
socialCity
;
/**
* 社保缴纳地-县
*/
@Length
(
max
=
32
,
message
=
"不能超过32个字符"
)
@ExcelAttribute
(
name
=
"社保缴纳地-县"
,
maxLength
=
32
,
isDataId
=
true
,
isArea
=
true
,
parentField
=
"socialCity"
)
@Schema
(
description
=
"社保缴纳地-县"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"社保缴纳地-县"
)
private
Integer
socialTown
;
/**
* 社保缴纳月份
*/
@ExcelAttribute
(
name
=
"社保缴纳月份"
,
isNotEmpty
=
true
,
errorInfo
=
"社保缴纳月份不可为空"
,
maxLength
=
6
,
min
=
6
,
isInteger
=
true
)
@Schema
(
description
=
"社保缴纳月份"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"社保缴纳月份"
)
private
String
socialPayMonth
;
/**
* 社保生成月份
*/
@Length
(
max
=
6
,
message
=
"社保生成月份不能超过6个字符"
)
@ExcelAttribute
(
name
=
"社保生成月份"
,
isNotEmpty
=
true
,
errorInfo
=
"社保生成月份不可为空"
,
maxLength
=
6
,
min
=
6
,
isInteger
=
true
)
@Schema
(
description
=
"社保生成月份"
)
@HeadFontStyle
(
fontHeightInPoints
=
11
)
@ExcelProperty
(
value
=
"社保生成月份"
)
private
String
socialCreateMonth
;
/**
* 社保户
*/
@Length
(
max
=
32
,
message
=
"社保户不能超过32个字符"
)
@ExcelAttribute
(
name
=
"社保户"
,
maxLength
=
32
)
@Schema
(
description
=
"社保户"
)
private
String
socialHousehold
;
}
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/constants/PaymentConstants.java
View file @
cd99364a
...
...
@@ -11,7 +11,20 @@ public class PaymentConstants {
public
static
final
String
UNEMPLOYEEMENT_RISK
=
"失业保险"
;
public
static
final
String
INJURY_RISK
=
"工伤保险"
;
public
static
final
String
MEDICAL
=
"医疗"
;
public
static
final
String
BIG
=
"大病"
;
public
static
final
String
BIRTH
=
"生育"
;
public
static
final
String
EXPORT
=
"缴费库合并导出"
;
public
static
final
String
SEARCH_EXPORT
=
"缴费库查询合并导出"
;
public
static
final
String
PAYMENT_SEARCH_EXPORT
=
"实缴查询批量导出"
;
public
static
final
String
COMPANY_YL
=
"单位养老"
;
public
static
final
String
PENSION_YL
=
"个人养老"
;
public
static
final
String
COMPANY_MEDICAL
=
"单位医疗"
;
public
static
final
String
PENSION_MEDICAL
=
"个人医疗"
;
public
static
final
String
COMPANY_UNEMPLOYEEMENT
=
"单位失业"
;
public
static
final
String
PENSION_UNEMPLOYEEMENT
=
"个人失业"
;
public
static
final
String
COMPANY_INJURY_RISK
=
"单位工伤"
;
public
static
final
String
COMPANY_BIG
=
"单位大病救助金"
;
public
static
final
String
PENSION_BIG
=
"个人大病救助金"
;
public
static
final
String
COMPANY_BIRTH
=
"单位生育"
;
public
static
final
String
PENSION_BIRTH
=
"个人生育"
;
}
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/controller/FailReasonConfigController.java
View file @
cd99364a
...
...
@@ -86,6 +86,12 @@ public class FailReasonConfigController {
@SysLog
(
"修改失败原因配置"
)
@PutMapping
public
R
<
Boolean
>
updateById
(
@RequestBody
FailReasonConfig
failReasonConfig
)
{
FailReasonConfig
failReasonCount
=
failReasonConfigService
.
getOne
(
Wrappers
.<
FailReasonConfig
>
query
().
lambda
()
.
eq
(
FailReasonConfig:
:
getReasonKey
,
failReasonConfig
.
getReasonKey
())
.
last
(
CommonConstants
.
LAST_ONE_SQL
));
if
(
Optional
.
ofNullable
(
failReasonCount
).
isPresent
())
{
return
R
.
failed
(
"已存在对应的关键字的失败原因配置!"
);
}
YifuUser
user
=
SecurityUtils
.
getUser
();
if
(
Common
.
isNotNull
(
user
))
{
failReasonConfig
.
setUpdateName
(
user
.
getNickname
());
...
...
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/controller/TPaymentInfoController.java
View file @
cd99364a
...
...
@@ -603,4 +603,40 @@ public class TPaymentInfoController {
public
Boolean
updateSocialSettleStatus
(
@RequestBody
List
<
EkpSocialViewVo
>
viewVo
)
{
return
tPaymentInfoService
.
updateSocialSettleStatus
(
viewVo
);
}
/**
* 税务社保明细导入
*
* @author huyc
* @date 2024-5-9
**/
@SneakyThrows
@Operation
(
description
=
"税务社保明细导入"
)
@SysLog
(
"税务社保明细导入"
)
@PostMapping
(
"/importTaxSocialInfoList"
)
public
R
<
List
<
ErrorDetailVO
>>
importTaxSocialInfoList
(
@RequestBody
MultipartFile
file
)
{
YifuUser
user
=
SecurityUtils
.
getUser
();
if
(
Common
.
isEmpty
(
user
)){
return
R
.
failed
(
CommonConstants
.
USER_FAIL
);
}
// 获取redis分布式事务锁
String
key
=
CacheConstants
.
PAYMENT_SOCIAL_THREE_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
tPaymentInfoService
.
importTaxSocialInfoDiy
(
file
.
getInputStream
());
}
else
{
return
R
.
failed
(
ResultConstants
.
NO_GETLOCK_DATA
);
}
}
finally
{
//主动释放锁
RedisDistributedLock
.
unlock
(
key
,
requestId
);
}
}
}
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/service/TPaymentInfoService.java
View file @
cd99364a
...
...
@@ -74,6 +74,13 @@ public interface TPaymentInfoService extends IService<TPaymentInfo> {
*/
R
<
List
<
ErrorDetailVO
>>
importSocialHeFeiDiy
(
InputStream
inputStream
,
String
random
,
String
type
);
/**
* 税务社保明细导入
* @param inputStream
* @return
*/
R
<
List
<
ErrorDetailVO
>>
importTaxSocialInfoDiy
(
InputStream
inputStream
);
/**
* 批量导入公积金
* @param inputStream
...
...
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/service/impl/TPaymentInfoServiceImpl.java
View file @
cd99364a
...
...
@@ -1688,6 +1688,170 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
return
this
.
judgeAllMessage
(
errorMessageList
);
}
@Override
public
R
<
List
<
ErrorDetailVO
>>
importTaxSocialInfoDiy
(
InputStream
inputStream
)
{
YifuUser
user
=
SecurityUtils
.
getUser
();
String
sumNumKey
=
user
.
getId
()
+
CommonConstants
.
DOWN_LINE_STRING
+
"sum_key"
;
if
(
Common
.
isNotNull
(
redisUtil
.
get
(
sumNumKey
)))
{
redisUtil
.
remove
(
sumNumKey
);
}
String
importSuccessKey
=
user
.
getId
()
+
CommonConstants
.
DOWN_LINE_STRING
+
CommonConstants
.
PAYMENT_SOCIAL_WAIT_EXPORT
;
if
(
Common
.
isNotNull
(
redisUtil
.
get
(
importSuccessKey
)))
{
redisUtil
.
remove
(
importSuccessKey
);
}
//养老插入的集合
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYlInsertList
=
new
ConcurrentHashMap
<>();
//工伤插入的集合
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchGsInsertList
=
new
ConcurrentHashMap
<>();
//失业插入的集合
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchSyInsertList
=
new
ConcurrentHashMap
<>();
//医疗插入的集合
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYyInsertList
=
new
ConcurrentHashMap
<>();
//大病插入的集合
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchBigInsertList
=
new
ConcurrentHashMap
<>();
//生育插入的集合
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchBirthInsertList
=
new
ConcurrentHashMap
<>();
//获取所有项目信息
Map
<
String
,
TSettleDomainSelectVo
>
domainMap
=
this
.
getSelectVoMap
();
//地区数据
HashMap
<
String
,
String
>
areaMap
=
new
HashMap
<>();
HashMap
<
String
,
String
>
areaMap2
=
new
HashMap
<>();
R
<
AreaVo
>
areaListR
=
upmsDaprUtils
.
getAreaListR
();
if
(
Common
.
isNotNull
(
areaListR
))
{
AreaVo
areaList
=
areaListR
.
getData
();
if
(
null
!=
areaList
&&
!
areaList
.
getSysAreaList
().
isEmpty
())
{
for
(
SysArea
area
:
areaList
.
getSysAreaList
())
{
areaMap
.
put
(
Integer
.
toString
(
area
.
getId
()),
area
.
getAreaName
());
areaMap2
.
put
(
area
.
getAreaName
()
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
area
.
getParentId
()
?
"null"
:
(
0
==
area
.
getParentId
()
?
"null"
:
Integer
.
toString
(
area
.
getParentId
()))),
Integer
.
toString
(
area
.
getId
()));
}
}
}
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageMap
=
new
ConcurrentHashMap
<>();
ExcelUtil
<
TPaymentTaxSocialVo
>
util1
=
new
ExcelUtil
<>(
TPaymentTaxSocialVo
.
class
);
ConcurrentHashMap
<
String
,
BigDecimal
>
pensionMoneyMap
=
new
ConcurrentHashMap
<>();
ConcurrentHashMap
<
String
,
BigDecimal
>
bigMoneyMap
=
new
ConcurrentHashMap
<>();
ConcurrentHashMap
<
String
,
BigDecimal
>
unEmpMoneyMap
=
new
ConcurrentHashMap
<>();
ConcurrentHashMap
<
String
,
BigDecimal
>
injuryMoneyMap
=
new
ConcurrentHashMap
<>();
ConcurrentHashMap
<
String
,
BigDecimal
>
medicalMoneyMap
=
new
ConcurrentHashMap
<>();
ConcurrentHashMap
<
String
,
BigDecimal
>
birthMoneyMap
=
new
ConcurrentHashMap
<>();
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try
{
EasyExcel
.
read
(
inputStream
,
TPaymentTaxSocialVo
.
class
,
new
ReadListener
<
TPaymentTaxSocialVo
>()
{
/**
* 单次缓存的数据量
*/
public
static
final
int
BATCH_COUNT
=
CommonConstants
.
BATCH_COUNT_TAX
;
Integer
rowNumber
;
/**
*临时存储
*/
private
List
<
TPaymentTaxSocialVo
>
cachedDataList
=
ListUtils
.
newArrayListWithExpectedSize
(
BATCH_COUNT
);
@Override
public
void
invoke
(
TPaymentTaxSocialVo
data
,
AnalysisContext
context
)
{
// 获取总行数(含表头)
rowNumber
=
context
.
readSheetHolder
().
getApproximateTotalRowNumber
();
ReadRowHolder
readRowHolder
=
context
.
readRowHolder
();
Integer
rowIndex
=
readRowHolder
.
getRowIndex
();
data
.
setRowIndex
(
rowIndex
+
1
);
ErrorMessage
errorMessage
=
util1
.
checkEntity
(
data
,
data
.
getRowIndex
());
if
(
Common
.
isNotNull
(
errorMessage
))
{
errorMessageMap
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
errorMessage
.
getLineNum
(),
errorMessage
.
getMessage
()));
}
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
());
importTPaymentSocialTax
(
cachedDataList
,
errorMessageMap
,
rowNumber
,
pensionMoneyMap
,
birthMoneyMap
,
bigMoneyMap
,
unEmpMoneyMap
,
injuryMoneyMap
,
medicalMoneyMap
,
sumNumKey
,
importSuccessKey
,
batchGsInsertList
,
batchSyInsertList
,
batchYlInsertList
,
batchYyInsertList
,
batchBigInsertList
,
batchBirthInsertList
,
areaMap
,
areaMap2
,
domainMap
);
log
.
info
(
"存储数据库成功!"
);
}
}).
sheet
().
doRead
();
pensionMoneyMap
.
clear
();
bigMoneyMap
.
clear
();
unEmpMoneyMap
.
clear
();
injuryMoneyMap
.
clear
();
medicalMoneyMap
.
clear
();
birthMoneyMap
.
clear
();
areaMap
.
clear
();
areaMap2
.
clear
();
domainMap
.
clear
();
//批量插入数据
//养老
List
<
TPaymentInfo
>
list
;
if
(!
batchYlInsertList
.
isEmpty
())
{
list
=
new
ArrayList
<>(
batchYlInsertList
.
values
());
this
.
saveBatch
(
list
);
batchYlInsertList
.
clear
();
list
.
clear
();
}
//工伤
if
(!
batchGsInsertList
.
isEmpty
())
{
list
=
new
ArrayList
<>(
batchGsInsertList
.
values
());
this
.
saveBatch
(
list
);
batchGsInsertList
.
clear
();
list
.
clear
();
}
//医疗
if
(!
batchYyInsertList
.
isEmpty
())
{
list
=
new
ArrayList
<>(
batchYyInsertList
.
values
());
this
.
saveBatch
(
list
);
batchYyInsertList
.
clear
();
list
.
clear
();
}
//失业
if
(!
batchSyInsertList
.
isEmpty
())
{
list
=
new
ArrayList
<>(
batchSyInsertList
.
values
());
this
.
saveBatch
(
list
);
batchSyInsertList
.
clear
();
list
.
clear
();
}
//大病
if
(!
batchBigInsertList
.
isEmpty
())
{
list
=
new
ArrayList
<>(
batchBigInsertList
.
values
());
this
.
saveBatch
(
list
);
batchBigInsertList
.
clear
();
list
.
clear
();
}
//生育
if
(!
batchBirthInsertList
.
isEmpty
())
{
list
=
new
ArrayList
<>(
batchBirthInsertList
.
values
());
this
.
saveBatch
(
list
);
batchBirthInsertList
.
clear
();
list
.
clear
();
}
}
catch
(
Exception
e
)
{
log
.
error
(
CommonConstants
.
IMPORT_DATA_ANALYSIS_ERROR
,
e
);
return
R
.
failed
(
CommonConstants
.
IMPORT_DATA_ANALYSIS_ERROR
);
}
List
<
ErrorDetailVO
>
errorMessageList
=
new
ArrayList
<>(
errorMessageMap
.
values
());
errorMessageMap
.
clear
();
return
this
.
judgeAllMessage
(
errorMessageList
);
}
@Override
public
R
<
List
<
ErrorDetailVO
>>
batchImportPaymentFundInfo
(
InputStream
inputStream
)
{
List
<
ErrorDetailVO
>
errorMessageList
=
new
ArrayList
<>();
...
...
@@ -2044,10 +2208,11 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
}
}
private
void
importTPaymentSocial
HeFei
(
List
<
TPaymentHeFei
Vo
>
list
,
private
void
importTPaymentSocial
Tax
(
List
<
TPaymentTaxSocial
Vo
>
list
,
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageList
,
String
type
,
Integer
rowNumber
,
Integer
rowNumber
,
ConcurrentHashMap
<
String
,
BigDecimal
>
pensionMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
birthMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
bigMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
unEmpMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
injuryMoneyMap
,
...
...
@@ -2057,19 +2222,20 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchSyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYlInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchBigInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchBirthInsertList
,
HashMap
<
String
,
String
>
areaMap
,
HashMap
<
String
,
String
>
areaMap2
,
Map
<
String
,
TSettleDomainSelectVo
>
domainMap
)
{
// 将以下代码提取出来,使用paymentInfoMap提升性能,避免list多次循环查询数据库浪费性能
// 导入前做队列空闲判断,防止队列不足出现数据丢失的场景
if
(
CollUtil
.
isNotEmpty
(
list
))
{
int
taskSize
=
list
.
size
()
/
partSize
+
CommonConstants
.
ONE_INT
;
int
residualCapacity
=
yfSocialImportThreadPoolExecutor
.
getResidualCapacity
();
if
(
taskSize
>
residualCapacity
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(-
1
,
MsgUtils
.
getMessage
(
ErrorCodes
.
SOCIALINFO_LIST_NUM_LARGE
)));
}
else
{
// -----------------------------生成paymentInfoMap本段开始--------------------------------
//已存在的档案数据
List
<
String
>
monthList
=
Common
.
listObjectToStrList
(
list
,
ExcelAttributeConstants
.
SOCIAL_PAY_MONTH
).
stream
().
distinct
().
collect
(
Collectors
.
toList
());
//已存在社保缴费库数据 非删除状态
...
...
@@ -2085,9 +2251,10 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoInjuryMap
=
new
ConcurrentHashMap
<>();
//医保
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoMedicalMap
=
new
ConcurrentHashMap
<>();
//生育
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoBirthMap
=
new
ConcurrentHashMap
<>();
if
(
Common
.
isNotNull
(
paymentInfos
))
{
for
(
TPaymentInfo
info
:
paymentInfos
)
{
if
(
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitPensionMoney
()),
BigDecimalUtils
.
isNullToZero
(
info
.
getPersonalPensionMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoPensionMap
.
get
(
info
.
getSocialPayAddr
()
...
...
@@ -2207,9 +2374,31 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
+
SocialConstants
.
DB
,
info
);
}
if
(
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitBirthMoney
()).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoBirthMap
.
get
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
SocialConstants
.
BIR
))
{
info
.
setBrSameFlg
(
"1"
);
}
paymentInfoBirthMap
.
put
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
SocialConstants
.
BIR
,
info
);
}
}
}
// -----------------------------生成paymentInfoMap本段结束--------------------------------
// -----------------------------线程池处理list,批量保存社保信息开始--------------------------------
List
<
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>>
completableFutureList
=
new
ArrayList
<>();
...
...
@@ -2243,25 +2432,25 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
// 1.list.size()不足100时直接执行
if
(
list
.
size
()
<
100
)
{
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>
listCompletableFuture
=
CompletableFuture
.
supplyAsync
(()
->
executeImportSocialListT
hree
(
list
,
areaMap
,
areaMap2
,
->
executeImportSocialListT
ax
(
list
,
areaMap
,
areaMap2
,
paymentInfoPensionMap
,
paymentInfoMedicalMap
,
paymentInfoUnEmpMap
,
paymentInfoInjuryMap
,
paymentInfoBigMap
,
type
,
errorMessageList
,
pensionMoneyMap
,
bigMoneyMap
,
paymentInfoBigMap
,
errorMessageList
,
pensionMoneyMap
,
birthMoneyMap
,
bigMoneyMap
,
unEmpMoneyMap
,
injuryMoneyMap
,
medicalMoneyMap
,
batchGsInsertList
,
batchSyInsertList
,
batchYlInsertList
,
batchYyInsertList
,
domainMap
),
batchSyInsertList
,
batchYlInsertList
,
batchYyInsertList
,
batchBigInsertList
,
batchBirthInsertList
,
domainMap
),
yfSocialImportThreadPoolExecutor
);
completableFutureList
.
add
(
listCompletableFuture
);
}
else
{
int
j
=
25
;
for
(
int
i
=
0
;
i
<
100
;
i
=
i
+
25
)
{
// 单个线程每次执行25条
List
<
TPayment
HeFei
Vo
>
finalTempList1
=
list
.
subList
(
i
,
i
+
j
);
List
<
TPayment
TaxSocial
Vo
>
finalTempList1
=
list
.
subList
(
i
,
i
+
j
);
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>
listCompletableFuture
=
CompletableFuture
.
supplyAsync
(()
->
executeImportSocialListT
hree
(
finalTempList1
->
executeImportSocialListT
ax
(
finalTempList1
,
areaMap
,
areaMap2
,
paymentInfoPensionMap
,
paymentInfoMedicalMap
,
paymentInfoUnEmpMap
,
paymentInfoInjuryMap
,
paymentInfoBigMap
,
type
,
errorMessageList
,
pensionMoneyMap
,
bigMoneyMap
,
unEmpMoneyMap
,
paymentInfoUnEmpMap
,
paymentInfoInjuryMap
,
paymentInfoBigMap
,
errorMessageList
,
pensionMoneyMap
,
bi
rthMoneyMap
,
bi
gMoneyMap
,
unEmpMoneyMap
,
injuryMoneyMap
,
medicalMoneyMap
,
batchGsInsertList
,
batchSyInsertList
,
batchYlInsertList
,
batchYyInsertList
,
domainMap
),
batchYlInsertList
,
batchYyInsertList
,
batchBigInsertList
,
batchBirthInsertList
,
domainMap
),
yfSocialImportThreadPoolExecutor
);
completableFutureList
.
add
(
listCompletableFuture
);
}
...
...
@@ -2295,55 +2484,306 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
}
}
private
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
executeImportSocialListThree
(
List
<
TPaymentHeFeiVo
>
list
,
HashMap
<
String
,
String
>
areaMap
,
HashMap
<
String
,
String
>
areaMap2
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoPensionMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoMedicalMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoUnEmpMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoInjuryMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoBigMap
,
String
type
,
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageList
,
private
void
importTPaymentSocialHeFei
(
List
<
TPaymentHeFeiVo
>
list
,
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageList
,
String
type
,
Integer
rowNumber
,
ConcurrentHashMap
<
String
,
BigDecimal
>
pensionMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
bigMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
unEmpMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
injuryMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
medicalMoneyMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchGsInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchSyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYlInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYyInsertList
,
Map
<
String
,
TSettleDomainSelectVo
>
domainMap
)
{
if
(
Common
.
isNotNull
(
list
))
{
TPaymentInfo
payExists
;
TSocialFundInfo
socialInfo
=
null
;
TSocialInfo
tSocialInfo
=
null
;
String
temp
;
List
<
TSocialInfo
>
socialist
;
TSettleDomain
domain
;
String
sumNumKey
,
String
importSuccessKey
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchGsInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchSyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYlInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYyInsertList
,
HashMap
<
String
,
String
>
areaMap
,
HashMap
<
String
,
String
>
areaMap2
,
Map
<
String
,
TSettleDomainSelectVo
>
domainMap
)
{
List
<
TSocialFundInfo
>
socialInfoList
=
socialFundInfoMapper
.
selectList
(
Wrappers
.<
TSocialFundInfo
>
query
().
lambda
()
.
in
(
TSocialFundInfo:
:
getEmpIdcard
,
Common
.
listObjectToStrList
(
list
,
ExcelAttributeConstants
.
EMPIDCARD
)));
// 将以下代码提取出来,使用paymentInfoMap提升性能,避免list多次循环查询数据库浪费性能
// 导入前做队列空闲判断,防止队列不足出现数据丢失的场景
if
(
CollUtil
.
isNotEmpty
(
list
))
{
int
taskSize
=
list
.
size
()
/
partSize
+
CommonConstants
.
ONE_INT
;
int
residualCapacity
=
yfSocialImportThreadPoolExecutor
.
getResidualCapacity
();
if
(
taskSize
>
residualCapacity
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(-
1
,
MsgUtils
.
getMessage
(
ErrorCodes
.
SOCIALINFO_LIST_NUM_LARGE
)));
}
else
{
//已存在的社保数据
HashMap
<
String
,
TSocialFundInfo
>
socialMap
=
new
HashMap
<>();
if
(
Common
.
isNotNull
(
socialInfoList
))
{
for
(
TSocialFundInfo
tSocialInfo1
:
socialInfoList
)
{
socialMap
.
put
(
tSocialInfo1
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
tSocialInfo1
.
getSocialProvince
()
+
CommonConstants
.
DOWN_LINE_STRING
+
tSocialInfo1
.
getSocialCity
()
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
tSocialInfo1
.
getSocialTown
()
?
"null"
:
tSocialInfo1
.
getSocialTown
()),
tSocialInfo1
);
}
}
// -----------------------------生成paymentInfoMap本段开始--------------------------------
//已存在的档案数据
List
<
String
>
monthList
=
Common
.
listObjectToStrList
(
list
,
ExcelAttributeConstants
.
SOCIAL_PAY_MONTH
).
stream
().
distinct
().
collect
(
Collectors
.
toList
());
//已存在社保缴费库数据 非删除状态
List
<
TPaymentInfo
>
paymentInfos
=
baseMapper
.
selectListForPaymentImport
(
monthList
,
Common
.
listObjectToStrList
(
list
,
ExcelAttributeConstants
.
EMPIDCARD
));
//养老
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoPensionMap
=
new
ConcurrentHashMap
<>();
//大病救助金
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoBigMap
=
new
ConcurrentHashMap
<>();
//失业
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoUnEmpMap
=
new
ConcurrentHashMap
<>();
//工伤
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoInjuryMap
=
new
ConcurrentHashMap
<>();
//医保
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoMedicalMap
=
new
ConcurrentHashMap
<>();
if
(
Common
.
isNotNull
(
paymentInfos
))
{
for
(
TPaymentInfo
info
:
paymentInfos
)
{
String
[]
areaArray
;
String
exitMoney
;
String
errorInfo
;
for
(
TPaymentHeFeiVo
infoVo
:
list
)
{
if
(
Common
.
isNotNull
(
infoVo
.
getEmpIdcard
()))
{
infoVo
.
setEmpIdcard
(
infoVo
.
getEmpIdcard
().
replace
(
"x"
,
"X"
));
}
if
(
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitPensionMoney
()),
BigDecimalUtils
.
isNullToZero
(
info
.
getPersonalPensionMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoPensionMap
.
get
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
PENSION_RISK
))
{
info
.
setYbSameFlg
(
"1"
);
}
paymentInfoPensionMap
.
put
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
PENSION_RISK
,
info
);
}
if
(
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitUnemploymentMoney
()),
BigDecimalUtils
.
isNullToZero
(
info
.
getPersonalUnemploymentMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoUnEmpMap
.
get
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
UNEMPLOYEEMENT_RISK
))
{
info
.
setSySameFlg
(
"1"
);
}
paymentInfoUnEmpMap
.
put
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
UNEMPLOYEEMENT_RISK
,
info
);
}
if
(
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitInjuryMoney
()).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoInjuryMap
.
get
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
INJURY_RISK
))
{
info
.
setGsSameFlg
(
"1"
);
}
paymentInfoInjuryMap
.
put
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
INJURY_RISK
,
info
);
}
if
(
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitMedicalMoney
()),
BigDecimalUtils
.
isNullToZero
(
info
.
getPersonalMedicalMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoMedicalMap
.
get
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
MEDICAL
))
{
info
.
setYlSameFlg
(
"1"
);
}
paymentInfoMedicalMap
.
put
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
MEDICAL
,
info
);
}
if
(
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
info
.
getPersonalBigmailmentMoney
()),
BigDecimalUtils
.
isNullToZero
(
info
.
getUnitBigmailmentMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
null
!=
paymentInfoBigMap
.
get
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
SocialConstants
.
DB
))
{
info
.
setDbSameFlg
(
"1"
);
}
paymentInfoBigMap
.
put
(
info
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialPayMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
info
.
getSocialCreateMonth
()
+
CommonConstants
.
DOWN_LINE_STRING
+
SocialConstants
.
DB
,
info
);
}
}
}
// -----------------------------生成paymentInfoMap本段结束--------------------------------
// -----------------------------线程池处理list,批量保存社保信息开始--------------------------------
List
<
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>>
completableFutureList
=
new
ArrayList
<>();
// 创建一个数值格式化对象
NumberFormat
numberFormat
=
NumberFormat
.
getInstance
();
// 设置精确到小数点后2位
numberFormat
.
setMaximumFractionDigits
(
2
);
String
maerialRatio
=
""
;
Integer
bfInt
=
(
Integer
)
redisUtil
.
get
(
sumNumKey
);
if
(
Common
.
isNotNull
(
bfInt
))
{
if
(
rowNumber
>
bfInt
+
1
)
{
maerialRatio
=
numberFormat
.
format
(((
float
)
bfInt
/
(
float
)
rowNumber
)
*
100
);
bfInt
=
bfInt
+
100
;
redisUtil
.
set
(
sumNumKey
,
bfInt
,
360L
);
}
else
{
maerialRatio
=
"100"
;
}
}
else
{
if
(
rowNumber
>=
100
)
{
maerialRatio
=
numberFormat
.
format
(((
float
)
100
/
(
float
)
rowNumber
)
*
100
);
bfInt
=
100
;
redisUtil
.
set
(
sumNumKey
,
bfInt
,
360L
);
}
else
{
maerialRatio
=
"100"
;
}
}
redisUtil
.
set
(
importSuccessKey
,
maerialRatio
,
360L
);
try
{
// 1.list.size()不足100时直接执行
if
(
list
.
size
()
<
100
)
{
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>
listCompletableFuture
=
CompletableFuture
.
supplyAsync
(()
->
executeImportSocialListThree
(
list
,
areaMap
,
areaMap2
,
paymentInfoPensionMap
,
paymentInfoMedicalMap
,
paymentInfoUnEmpMap
,
paymentInfoInjuryMap
,
paymentInfoBigMap
,
type
,
errorMessageList
,
pensionMoneyMap
,
bigMoneyMap
,
unEmpMoneyMap
,
injuryMoneyMap
,
medicalMoneyMap
,
batchGsInsertList
,
batchSyInsertList
,
batchYlInsertList
,
batchYyInsertList
,
domainMap
),
yfSocialImportThreadPoolExecutor
);
completableFutureList
.
add
(
listCompletableFuture
);
}
else
{
int
j
=
25
;
for
(
int
i
=
0
;
i
<
100
;
i
=
i
+
25
)
{
// 单个线程每次执行25条
List
<
TPaymentHeFeiVo
>
finalTempList1
=
list
.
subList
(
i
,
i
+
j
);
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>
listCompletableFuture
=
CompletableFuture
.
supplyAsync
(()
->
executeImportSocialListThree
(
finalTempList1
,
areaMap
,
areaMap2
,
paymentInfoPensionMap
,
paymentInfoMedicalMap
,
paymentInfoUnEmpMap
,
paymentInfoInjuryMap
,
paymentInfoBigMap
,
type
,
errorMessageList
,
pensionMoneyMap
,
bigMoneyMap
,
unEmpMoneyMap
,
injuryMoneyMap
,
medicalMoneyMap
,
batchGsInsertList
,
batchSyInsertList
,
batchYlInsertList
,
batchYyInsertList
,
domainMap
),
yfSocialImportThreadPoolExecutor
);
completableFutureList
.
add
(
listCompletableFuture
);
}
}
// 阻塞当前线程,等待所有的线程执行完毕
boolean
computeFlag
;
do
{
computeFlag
=
false
;
for
(
CompletableFuture
<
ConcurrentHashMap
<
String
,
ErrorDetailVO
>>
listCompletableFuture
:
completableFutureList
)
{
if
(!
listCompletableFuture
.
isDone
())
{
computeFlag
=
true
;
}
}
}
while
(
computeFlag
);
paymentInfoBigMap
.
clear
();
paymentInfoInjuryMap
.
clear
();
paymentInfoUnEmpMap
.
clear
();
paymentInfoPensionMap
.
clear
();
paymentInfoMedicalMap
.
clear
();
}
catch
(
Exception
e
)
{
log
.
error
(
"社保缴费库数据批量导入异常:"
+
e
);
paymentInfoBigMap
.
clear
();
paymentInfoInjuryMap
.
clear
();
paymentInfoUnEmpMap
.
clear
();
paymentInfoPensionMap
.
clear
();
paymentInfoMedicalMap
.
clear
();
}
}
}
}
private
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
executeImportSocialListThree
(
List
<
TPaymentHeFeiVo
>
list
,
HashMap
<
String
,
String
>
areaMap
,
HashMap
<
String
,
String
>
areaMap2
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoPensionMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoMedicalMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoUnEmpMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoInjuryMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoBigMap
,
String
type
,
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageList
,
ConcurrentHashMap
<
String
,
BigDecimal
>
pensionMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
bigMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
unEmpMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
injuryMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
medicalMoneyMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchGsInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchSyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYlInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYyInsertList
,
Map
<
String
,
TSettleDomainSelectVo
>
domainMap
)
{
if
(
Common
.
isNotNull
(
list
))
{
TPaymentInfo
payExists
;
TSocialFundInfo
socialInfo
=
null
;
TSocialInfo
tSocialInfo
=
null
;
String
temp
;
List
<
TSocialInfo
>
socialist
;
TSettleDomain
domain
;
List
<
TSocialFundInfo
>
socialInfoList
=
socialFundInfoMapper
.
selectList
(
Wrappers
.<
TSocialFundInfo
>
query
().
lambda
()
.
in
(
TSocialFundInfo:
:
getEmpIdcard
,
Common
.
listObjectToStrList
(
list
,
ExcelAttributeConstants
.
EMPIDCARD
)));
//已存在的社保数据
HashMap
<
String
,
TSocialFundInfo
>
socialMap
=
new
HashMap
<>();
if
(
Common
.
isNotNull
(
socialInfoList
))
{
for
(
TSocialFundInfo
tSocialInfo1
:
socialInfoList
)
{
socialMap
.
put
(
tSocialInfo1
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
tSocialInfo1
.
getSocialProvince
()
+
CommonConstants
.
DOWN_LINE_STRING
+
tSocialInfo1
.
getSocialCity
()
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
tSocialInfo1
.
getSocialTown
()
?
"null"
:
tSocialInfo1
.
getSocialTown
()),
tSocialInfo1
);
}
}
String
[]
areaArray
;
String
exitMoney
;
String
errorInfo
;
for
(
TPaymentHeFeiVo
infoVo
:
list
)
{
if
(
Common
.
isNotNull
(
infoVo
.
getEmpIdcard
()))
{
infoVo
.
setEmpIdcard
(
infoVo
.
getEmpIdcard
().
replace
(
"x"
,
"X"
));
}
//导入校验
if
(
socialThreeCheckBase
(
errorMessageList
,
infoVo
,
type
))
{
continue
;
...
...
@@ -2756,6 +3196,560 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
return
errorMessageList
;
}
private
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
executeImportSocialListTax
(
List
<
TPaymentTaxSocialVo
>
list
,
HashMap
<
String
,
String
>
areaMap
,
HashMap
<
String
,
String
>
areaMap2
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoPensionMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoMedicalMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoUnEmpMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoInjuryMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
paymentInfoBigMap
,
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageList
,
ConcurrentHashMap
<
String
,
BigDecimal
>
pensionMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
birthMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
bigMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
unEmpMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
injuryMoneyMap
,
ConcurrentHashMap
<
String
,
BigDecimal
>
medicalMoneyMap
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchGsInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchSyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYlInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchYyInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchBigInsertList
,
ConcurrentHashMap
<
String
,
TPaymentInfo
>
batchBirthInsertList
,
Map
<
String
,
TSettleDomainSelectVo
>
domainMap
)
{
if
(
Common
.
isNotNull
(
list
))
{
TPaymentInfo
payExists
;
TPaymentInfo
payInsert
;
TSocialFundInfo
socialInfo
=
null
;
TSocialInfo
tSocialInfo
=
null
;
String
temp
;
List
<
TSocialInfo
>
socialist
;
TSettleDomain
domain
;
List
<
TSocialFundInfo
>
socialInfoList
=
socialFundInfoMapper
.
selectList
(
Wrappers
.<
TSocialFundInfo
>
query
().
lambda
()
.
in
(
TSocialFundInfo:
:
getEmpIdcard
,
Common
.
listObjectToStrList
(
list
,
ExcelAttributeConstants
.
EMPIDCARD
)));
//已存在的社保数据
HashMap
<
String
,
TSocialFundInfo
>
socialMap
=
new
HashMap
<>();
if
(
Common
.
isNotNull
(
socialInfoList
))
{
for
(
TSocialFundInfo
tSocialInfo1
:
socialInfoList
)
{
socialMap
.
put
(
tSocialInfo1
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
tSocialInfo1
.
getSocialProvince
()
+
CommonConstants
.
DOWN_LINE_STRING
+
tSocialInfo1
.
getSocialCity
()
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
tSocialInfo1
.
getSocialTown
()
?
"null"
:
tSocialInfo1
.
getSocialTown
()),
tSocialInfo1
);
}
}
String
[]
areaArray
;
String
exitMoneyPer
;
String
exitMoneyCon
;
String
exitInsertPaymnet
;
String
errorInfo
;
for
(
TPaymentTaxSocialVo
infoVo
:
list
)
{
if
(
Common
.
isNotNull
(
infoVo
.
getEmpIdcard
()))
{
infoVo
.
setEmpIdcard
(
infoVo
.
getEmpIdcard
().
replace
(
"x"
,
"X"
));
}
//导入校验
if
(
socialThreeCheckBaseTax
(
errorMessageList
,
infoVo
))
{
continue
;
}
//采用客服导入的地址
areaArray
=
infoVo
.
getSocialPayAddr
().
split
(
CommonConstants
.
CENTER_SPLIT_LINE_STRING
);
infoVo
=
initAddressThreeTax
(
areaArray
,
areaMap2
,
infoVo
);
//无对应员工的社保数据
if
(
socialMap
.
size
()
>
CommonConstants
.
ZERO_INT
)
{
if
(
null
==
infoVo
.
getSocialProvince
()
||
null
==
infoVo
.
getSocialCity
())
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
"社保缴纳地填写错误,请核实后再次尝试!"
));
continue
;
}
socialInfo
=
socialMap
.
get
(
infoVo
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialProvince
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCity
()
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
infoVo
.
getSocialTown
()
?
"null"
:
infoVo
.
getSocialTown
()));
//对身份证与人员姓名的对应关系进行校验
if
(
socialInfo
!=
null
&&
!
socialInfo
.
getEmpName
().
equals
(
infoVo
.
getEmpName
()))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
"姓名与身份证信息不一致,请核实后再次尝试!"
));
continue
;
}
if
(
socialInfo
!=
null
&&
socialInfo
.
getSocialStartDate
()
==
null
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的社保起缴日期为空!"
));
continue
;
}
}
if
(
null
==
socialInfo
)
{
boolean
isTrueAdder
=
false
;
socialist
=
socialInfoMapper
.
selectList
(
Wrappers
.<
TSocialInfo
>
query
().
lambda
()
.
eq
(
TSocialInfo:
:
getEmpIdcard
,
infoVo
.
getEmpIdcard
())
.
eq
(
TSocialInfo:
:
getSocialProvince
,
infoVo
.
getSocialProvince
().
toString
())
.
eq
(
TSocialInfo:
:
getSocialCity
,
infoVo
.
getSocialCity
().
toString
()));
if
(
CollectionUtils
.
isNotEmpty
(
socialist
))
{
for
(
TSocialInfo
socialInfo1
:
socialist
)
{
if
((
Common
.
isEmpty
(
infoVo
.
getSocialTown
())
||
(
Common
.
isNotNull
(
infoVo
.
getSocialTown
())
&&
infoVo
.
getSocialTown
().
toString
().
equals
(
socialInfo1
.
getSocialTown
())))
&&
DateUtil
.
dateToString
(
socialInfo1
.
getSocialStartDate
(),
"yyyyMM"
).
compareTo
(
infoVo
.
getSocialPayMonth
())
<=
0
&&
(
Common
.
isEmpty
(
socialInfo1
.
getSocialReduceDate
())
||
(
Common
.
isNotNull
(
socialInfo1
.
getSocialReduceDate
())
&&
DateUtil
.
dateToString
(
socialInfo1
.
getSocialReduceDate
(),
"yyyyMM"
).
compareTo
(
infoVo
.
getSocialPayMonth
())
>=
0
)))
{
isTrueAdder
=
true
;
tSocialInfo
=
socialInfo1
;
break
;
}
}
}
if
(!
isTrueAdder
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
"无对应员工(身份证:"
+
infoVo
.
getEmpIdcard
()
+
")"
+
"的社保数据(请查验社保缴纳地)"
));
continue
;
}
}
else
{
tSocialInfo
=
null
;
}
payExists
=
new
TPaymentInfo
();
if
(
Common
.
isEmpty
(
tSocialInfo
))
{
tSocialInfo
=
socialInfoMapper
.
selectOne
(
Wrappers
.<
TSocialInfo
>
query
().
lambda
()
.
eq
(
TSocialInfo:
:
getEmpIdcard
,
infoVo
.
getEmpIdcard
()).
groupBy
(
TSocialInfo:
:
getCreateTime
)
.
last
(
CommonConstants
.
LAST_ONE_SQL
));
}
payExists
.
setLockStatus
(
CommonConstants
.
ZERO_STRING
);
if
(
Common
.
isNotNull
(
socialInfo
))
{
payExists
.
setEmpId
(
socialInfo
.
getEmpId
());
payExists
.
setEmpIdcard
(
socialInfo
.
getEmpIdcard
());
payExists
.
setEmpName
(
socialInfo
.
getEmpName
());
if
(
Common
.
isNotNull
(
domainMap
))
{
domain
=
domainMap
.
get
(
socialInfo
.
getSettleDomainCode
());
}
else
{
domain
=
null
;
}
if
(
Common
.
isEmpty
(
domain
))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
SocialConstants
.
NOT_EXIT_SETTLEiNFO
));
continue
;
}
payExists
.
setBpoFlag
(
domain
.
getBpoFlag
());
payExists
.
setSecondIndicatorBelong
(
domain
.
getSecondIndicatorBelong
());
payExists
.
setSettleDomainId
(
socialInfo
.
getSettleDomain
());
payExists
.
setSettleDomainCode
(
Common
.
isNotNull
(
socialInfo
.
getSettleDomainCode
())
?
socialInfo
.
getSettleDomainCode
():
""
);
payExists
.
setUnitId
(
Common
.
isNotNull
(
socialInfo
.
getUnitId
())
?
socialInfo
.
getUnitId
():
""
);
payExists
.
setSettleDomainName
(
Common
.
isNotNull
(
socialInfo
.
getSettleDomainName
())
?
socialInfo
.
getSettleDomainName
():
""
);
payExists
.
setUnitName
(
Common
.
isNotNull
(
socialInfo
.
getUnitName
())
?
socialInfo
.
getUnitName
():
""
);
payExists
.
setSocialProvince
(
socialInfo
.
getSocialProvince
());
payExists
.
setSocialCity
(
socialInfo
.
getSocialCity
());
payExists
.
setSocialTown
(
Common
.
isNotNull
(
socialInfo
.
getSocialTown
())
?
socialInfo
.
getSocialTown
():
""
);
payExists
.
setSocialHousehold
(
socialInfo
.
getSocialHouseholdName
());
}
else
if
(
Common
.
isNotNull
(
tSocialInfo
))
{
payExists
.
setEmpId
(
tSocialInfo
.
getEmpId
());
payExists
.
setEmpIdcard
(
tSocialInfo
.
getEmpIdcard
());
payExists
.
setEmpName
(
tSocialInfo
.
getEmpName
());
if
(
Common
.
isNotNull
(
domainMap
))
{
domain
=
domainMap
.
get
(
tSocialInfo
.
getSettleDomainCode
());
}
else
{
domain
=
null
;
}
if
(
Common
.
isEmpty
(
domain
))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
SocialConstants
.
NOT_EXIT_SETTLEiNFO
));
continue
;
}
payExists
.
setSettleDomainId
(
tSocialInfo
.
getSettleDomain
());
payExists
.
setSettleDomainCode
(
tSocialInfo
.
getSettleDomainCode
());
payExists
.
setSecondIndicatorBelong
(
domain
.
getSecondIndicatorBelong
());
payExists
.
setSettleDomainName
(
domain
.
getDepartName
());
payExists
.
setUnitId
(
domain
.
getCustomerId
());
payExists
.
setUnitName
(
domain
.
getCustomerName
());
payExists
.
setBpoFlag
(
domain
.
getBpoFlag
());
payExists
.
setSocialProvince
(
tSocialInfo
.
getSocialProvince
());
payExists
.
setSocialCity
(
tSocialInfo
.
getSocialCity
());
payExists
.
setSocialTown
(
Common
.
isNotNull
(
tSocialInfo
.
getSocialTown
())
?
tSocialInfo
.
getSocialTown
():
""
);
payExists
.
setSocialHousehold
(
tSocialInfo
.
getSocialHouseholdName
());
}
// 项目信息校验
errorInfo
=
settleInfoCheck
(
payExists
);
if
(!
Common
.
isEmpty
(
errorInfo
)){
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_PRI
+
errorInfo
+
SocialConstants
.
ERROR_END
));
continue
;
}
if
(
Common
.
isNotNull
(
tSocialInfo
))
{
payExists
.
setInauguralTeam
(
Common
.
isNotNull
(
tSocialInfo
.
getInauguralTeam
())
?
tSocialInfo
.
getInauguralTeam
():
""
);
payExists
.
setEmpNo
(
Common
.
isNotNull
(
tSocialInfo
.
getEmpNo
())
?
tSocialInfo
.
getEmpNo
():
""
);
}
else
{
payExists
.
setInauguralTeam
(
""
);
payExists
.
setEmpNo
(
""
);
}
payExists
.
setSocialPayMonth
(
infoVo
.
getSocialPayMonth
());
if
(
null
!=
payExists
.
getSocialProvince
())
{
temp
=
areaMap
.
get
(
payExists
.
getSocialProvince
());
if
(
Common
.
isNotNull
(
temp
))
{
payExists
.
setSocialPayAddr
(
temp
);
}
}
if
(
null
!=
payExists
.
getSocialCity
())
{
temp
=
areaMap
.
get
(
payExists
.
getSocialCity
());
if
(
Common
.
isNotNull
(
temp
))
{
payExists
.
setSocialPayAddr
(
payExists
.
getSocialPayAddr
()
+
CommonConstants
.
CENTER_SPLIT_LINE_STRING
+
temp
);
}
}
if
(
null
!=
payExists
.
getSocialTown
())
{
temp
=
areaMap
.
get
(
payExists
.
getSocialTown
());
if
(
Common
.
isNotNull
(
temp
))
{
payExists
.
setSocialPayAddr
(
payExists
.
getSocialPayAddr
()
+
CommonConstants
.
CENTER_SPLIT_LINE_STRING
+
temp
);
}
}
else
{
payExists
.
setSocialTown
(
""
);
}
payExists
.
setSocialSecurityNo
(
CommonConstants
.
EMPTY_STRING
);
payExists
.
setSocialCreateMonth
(
infoVo
.
getSocialCreateMonth
());
payExists
.
setCreateTime
(
LocalDateTime
.
now
());
payExists
.
setSocialId
(
UUID
.
randomUUID
().
toString
());
//判断是否存在养老数据
if
(
PaymentConstants
.
COMPANY_YL
.
equals
(
infoVo
.
getRiskType
())
||
PaymentConstants
.
PENSION_YL
.
equals
(
infoVo
.
getRiskType
()))
{
//导入模板判重 养老
exitMoneyPer
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_YL
));
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
PENSION_YL
));
exitInsertPaymnet
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
PENSION_RISK
));
if
(
PaymentConstants
.
COMPANY_YL
.
equals
(
infoVo
.
getRiskType
()))
{
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_YL
));
if
(
pensionMoneyMap
.
get
(
exitMoneyCon
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
pensionMoneyMap
.
get
(
exitMoneyCon
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的单位养老缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
pensionMoneyMap
.
get
(
exitMoneyPer
)))
{
payExists
.
setPersonalPensionMoney
(
pensionMoneyMap
.
get
(
exitMoneyPer
));
}
payExists
.
setUnitPensionMoney
(
infoVo
.
getPaymentMoney
());
pensionMoneyMap
.
put
(
exitMoneyCon
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
else
{
if
(
pensionMoneyMap
.
get
(
exitMoneyPer
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
pensionMoneyMap
.
get
(
exitMoneyPer
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的个人养老缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
pensionMoneyMap
.
get
(
exitMoneyCon
)))
{
payExists
.
setUnitPensionMoney
(
pensionMoneyMap
.
get
(
exitMoneyCon
));
}
payExists
.
setPersonalPensionMoney
(
infoVo
.
getPaymentMoney
());
pensionMoneyMap
.
put
(
exitMoneyPer
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
payExists
.
setUnitPensionSet
(
infoVo
.
getPaymentSet
());
payExists
.
setUnitSocialSum
(
payExists
.
getUnitPensionMoney
());
payExists
.
setSocialSecurityPersonalSum
(
payExists
.
getPersonalPensionMoney
());
payExists
.
setSocialSum
(
BigDecimalUtils
.
safeAdd
(
payExists
.
getUnitSocialSum
(),
payExists
.
getSocialSecurityPersonalSum
()));
payExists
.
setSumAll
(
payExists
.
getSocialSum
());
payInsert
=
paymentInfoPensionMap
.
get
(
infoVo
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getEmpIdcard
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialPayMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCreateMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
PENSION_RISK
);
//存在社保缴费数据
if
(
null
!=
payInsert
&&
((
null
!=
payInsert
.
getYbSameFlg
()
&&
CommonConstants
.
ONE_STRING
.
equals
(
payInsert
.
getYbSameFlg
()))
||
(
BigDecimalUtils
.
safeMultiply
(
payExists
.
getSocialSum
(),
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getUnitPensionMoney
()),
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getPersonalPensionMoney
()))).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payInsert
.
getSocialHousehold
(),
payInsert
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"已存在对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
"的养老缴费数据,请勿重复导入!"
));
continue
;
}
batchYlInsertList
.
put
(
exitInsertPaymnet
,
payExists
);
}
//判断是否存在失业缴费数据
if
(
PaymentConstants
.
COMPANY_UNEMPLOYEEMENT
.
equals
(
infoVo
.
getRiskType
())
||
PaymentConstants
.
PENSION_UNEMPLOYEEMENT
.
equals
(
infoVo
.
getRiskType
()))
{
//导入模板判重 失业
exitMoneyPer
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
PENSION_UNEMPLOYEEMENT
));
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_UNEMPLOYEEMENT
));
exitInsertPaymnet
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
UNEMPLOYEEMENT_RISK
));
if
(
PaymentConstants
.
COMPANY_UNEMPLOYEEMENT
.
equals
(
infoVo
.
getRiskType
()))
{
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_YL
));
if
(
unEmpMoneyMap
.
get
(
exitMoneyCon
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
unEmpMoneyMap
.
get
(
exitMoneyCon
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的单位失业缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
unEmpMoneyMap
.
get
(
exitMoneyPer
)))
{
payExists
.
setPersonalUnemploymentMoney
(
unEmpMoneyMap
.
get
(
exitMoneyPer
));
}
payExists
.
setUnitUnemploymentMoney
(
infoVo
.
getPaymentMoney
());
unEmpMoneyMap
.
put
(
exitMoneyCon
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
else
{
if
(
unEmpMoneyMap
.
get
(
exitMoneyPer
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
unEmpMoneyMap
.
get
(
exitMoneyPer
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的个人失业缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
unEmpMoneyMap
.
get
(
exitMoneyCon
)))
{
payExists
.
setUnitUnemploymentMoney
(
unEmpMoneyMap
.
get
(
exitMoneyCon
));
}
payExists
.
setPersonalUnemploymentMoney
(
infoVo
.
getPaymentMoney
());
unEmpMoneyMap
.
put
(
exitMoneyPer
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
payExists
.
setUnitUnemploymentSet
(
infoVo
.
getPaymentSet
());
payExists
.
setUnitSocialSum
(
payExists
.
getUnitUnemploymentMoney
());
payExists
.
setSocialSecurityPersonalSum
(
payExists
.
getPersonalUnemploymentMoney
());
payExists
.
setSocialSum
(
BigDecimalUtils
.
safeAdd
(
payExists
.
getUnitSocialSum
(),
payExists
.
getPersonalUnemploymentMoney
()));
payExists
.
setSumAll
(
payExists
.
getSocialSum
());
payInsert
=
paymentInfoUnEmpMap
.
get
(
infoVo
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getEmpIdcard
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialPayMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCreateMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
UNEMPLOYEEMENT_RISK
);
//存在社保缴费数据
if
(
null
!=
payInsert
&&
((
null
!=
payInsert
.
getSySameFlg
()
&&
CommonConstants
.
ONE_STRING
.
equals
(
payInsert
.
getSySameFlg
()))
||
(
BigDecimalUtils
.
safeMultiply
(
payExists
.
getSocialSum
(),
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getUnitUnemploymentMoney
()),
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getPersonalUnemploymentMoney
()))).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"已存在对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
"的失业缴费数据,请勿重复导入!"
));
continue
;
}
batchSyInsertList
.
put
(
exitInsertPaymnet
,
payExists
);
}
//判断是否存在医疗缴费数据
if
(
PaymentConstants
.
COMPANY_MEDICAL
.
equals
(
infoVo
.
getRiskType
())
||
PaymentConstants
.
PENSION_MEDICAL
.
equals
(
infoVo
.
getRiskType
()))
{
//导入模板判重医疗
exitMoneyPer
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
PENSION_MEDICAL
));
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_MEDICAL
));
exitInsertPaymnet
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
MEDICAL
));
if
(
PaymentConstants
.
COMPANY_UNEMPLOYEEMENT
.
equals
(
infoVo
.
getRiskType
()))
{
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_YL
));
if
(
medicalMoneyMap
.
get
(
exitMoneyCon
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
medicalMoneyMap
.
get
(
exitMoneyCon
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的单位医疗缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
medicalMoneyMap
.
get
(
exitMoneyPer
)))
{
payExists
.
setPersonalMedicalMoney
(
medicalMoneyMap
.
get
(
exitMoneyPer
));
}
payExists
.
setUnitMedicalMoney
(
infoVo
.
getPaymentMoney
());
medicalMoneyMap
.
put
(
exitMoneyCon
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
else
{
if
(
medicalMoneyMap
.
get
(
exitMoneyPer
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
medicalMoneyMap
.
get
(
exitMoneyPer
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的个人医疗缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
medicalMoneyMap
.
get
(
exitMoneyCon
)))
{
payExists
.
setUnitMedicalMoney
(
medicalMoneyMap
.
get
(
exitMoneyCon
));
}
payExists
.
setPersonalMedicalMoney
(
infoVo
.
getPaymentMoney
());
medicalMoneyMap
.
put
(
exitMoneyPer
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
payExists
.
setUnitMedicalSet
(
infoVo
.
getPaymentSet
());
payExists
.
setUnitSocialSum
(
payExists
.
getUnitMedicalMoney
());
payExists
.
setSocialSecurityPersonalSum
(
payExists
.
getPersonalMedicalMoney
());
payExists
.
setSocialSum
(
BigDecimalUtils
.
safeAdd
(
payExists
.
getUnitSocialSum
(),
payExists
.
getSocialSecurityPersonalSum
()));
payExists
.
setSumAll
(
payExists
.
getSocialSum
());
payInsert
=
paymentInfoMedicalMap
.
get
(
infoVo
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getEmpIdcard
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialPayMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCreateMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
MEDICAL
);
//存在社保缴费数据
if
(
null
!=
payInsert
&&
((
null
!=
payInsert
.
getYlSameFlg
()
&&
CommonConstants
.
ONE_STRING
.
equals
(
payInsert
.
getYlSameFlg
()))
||
(
BigDecimalUtils
.
safeMultiply
(
payExists
.
getSocialSum
(),
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getUnitPensionMoney
()),
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getPersonalPensionMoney
()))).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"已存在对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
"的医疗缴费数据,请勿重复导入!"
));
continue
;
}
batchYyInsertList
.
put
(
exitInsertPaymnet
,
payExists
);
}
//判断是否存在工伤缴费数据
if
(
PaymentConstants
.
COMPANY_INJURY_RISK
.
equals
(
infoVo
.
getRiskType
()))
{
//导入模板判重工伤
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_INJURY_RISK
));
exitInsertPaymnet
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
INJURY_RISK
));
if
(
injuryMoneyMap
.
get
(
exitMoneyCon
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
injuryMoneyMap
.
get
(
exitMoneyCon
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的单位工伤缴费数据"
));
continue
;
}
else
{
payExists
.
setUnitInjuryMoney
(
infoVo
.
getPaymentMoney
());
injuryMoneyMap
.
put
(
exitMoneyCon
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
payExists
.
setUnitInjurySet
(
infoVo
.
getPaymentSet
());
payExists
.
setUnitSocialSum
(
payExists
.
getUnitInjuryMoney
());
payExists
.
setSocialSum
(
BigDecimalUtils
.
safeAdd
(
payExists
.
getUnitSocialSum
()));
payExists
.
setSumAll
(
payExists
.
getSocialSum
());
payInsert
=
paymentInfoInjuryMap
.
get
(
infoVo
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getEmpIdcard
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialPayMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCreateMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
INJURY_RISK
);
//存在社保缴费数据
if
(
null
!=
payInsert
&&
((
null
!=
payInsert
.
getGsSameFlg
()
&&
CommonConstants
.
ONE_STRING
.
equals
(
payInsert
.
getGsSameFlg
()))
||
(
BigDecimalUtils
.
safeMultiply
(
infoVo
.
getPaymentMoney
(),
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getUnitInjuryMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"已存在对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
"的单位工伤缴费数据,请勿重复导入!"
));
continue
;
}
batchGsInsertList
.
put
(
exitInsertPaymnet
,
payExists
);
}
//判断是否存在大病救助金缴费数据
if
(
PaymentConstants
.
COMPANY_BIG
.
equals
(
infoVo
.
getRiskType
())
||
PaymentConstants
.
PENSION_BIG
.
equals
(
infoVo
.
getRiskType
()))
{
//导入模板判重大病救助金
exitMoneyPer
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
PENSION_BIG
));
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_BIG
));
exitInsertPaymnet
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
BIG
));
if
(
PaymentConstants
.
COMPANY_UNEMPLOYEEMENT
.
equals
(
infoVo
.
getRiskType
()))
{
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_YL
));
if
(
bigMoneyMap
.
get
(
exitMoneyCon
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
bigMoneyMap
.
get
(
exitMoneyCon
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的单位大病救助金缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
bigMoneyMap
.
get
(
exitMoneyPer
)))
{
payExists
.
setPersonalBigmailmentMoney
(
bigMoneyMap
.
get
(
exitMoneyPer
));
}
payExists
.
setUnitBigmailmentMoney
(
infoVo
.
getPaymentMoney
());
bigMoneyMap
.
put
(
exitMoneyCon
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
else
{
if
(
bigMoneyMap
.
get
(
exitMoneyPer
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
bigMoneyMap
.
get
(
exitMoneyPer
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的个人大病救助金缴费数据"
));
continue
;
}
else
{
if
(
Common
.
isNotNull
(
bigMoneyMap
.
get
(
exitMoneyCon
)))
{
payExists
.
setUnitBigmailmentMoney
(
bigMoneyMap
.
get
(
exitMoneyCon
));
}
payExists
.
setPersonalBigmailmentMoney
(
infoVo
.
getPaymentMoney
());
bigMoneyMap
.
put
(
exitMoneyPer
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
}
payExists
.
setUnitSocialSum
(
payExists
.
getUnitBigmailmentMoney
());
payExists
.
setSocialSecurityPersonalSum
(
payExists
.
getPersonalBigmailmentMoney
());
payExists
.
setSocialSum
(
BigDecimalUtils
.
safeAdd
(
payExists
.
getUnitSocialSum
(),
payExists
.
getSocialSecurityPersonalSum
()));
payExists
.
setSumAll
(
payExists
.
getSocialSum
());
payInsert
=
paymentInfoBigMap
.
get
(
infoVo
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getEmpIdcard
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialPayMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCreateMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
BIG
);
//存在社保缴费数据
if
(
null
!=
payInsert
&&
((
null
!=
payInsert
.
getDbSameFlg
()
&&
CommonConstants
.
ONE_STRING
.
equals
(
payInsert
.
getDbSameFlg
()))
||
(
BigDecimalUtils
.
safeMultiply
(
payExists
.
getSocialSum
(),
BigDecimalUtils
.
safeAdd
(
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getUnitBigmailmentMoney
()),
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getPersonalBigmailmentMoney
()))).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"已存在对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
"的大病救助金缴费数据,请勿重复导入!"
));
continue
;
}
batchBigInsertList
.
put
(
exitInsertPaymnet
,
payExists
);
}
//判断是否存在生育缴费数据
if
(
PaymentConstants
.
COMPANY_BIRTH
.
equals
(
infoVo
.
getRiskType
()))
{
//导入模板判重生育
exitMoneyCon
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
COMPANY_BIRTH
));
exitInsertPaymnet
=
infoVo
.
getEmpIdcard
().
concat
(
infoVo
.
getSocialPayMonth
().
concat
(
infoVo
.
getSocialCreateMonth
()).
concat
(
PaymentConstants
.
BIRTH
));
if
(
birthMoneyMap
.
get
(
exitMoneyCon
)
!=
null
&&
BigDecimalUtils
.
safeMultiply
(
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
())
,
birthMoneyMap
.
get
(
exitMoneyCon
)).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
SocialConstants
.
ERROR_TEMPLATE
+
"的单位生育缴费数据"
));
continue
;
}
else
{
payExists
.
setUnitBirthMoney
(
infoVo
.
getPaymentMoney
());
birthMoneyMap
.
put
(
exitMoneyCon
,
BigDecimalUtils
.
isNullToZero
(
infoVo
.
getPaymentMoney
()));
}
payExists
.
setUnitBirthSet
(
infoVo
.
getPaymentSet
());
payExists
.
setUnitSocialSum
(
payExists
.
getUnitBirthMoney
());
payExists
.
setSocialSum
(
BigDecimalUtils
.
safeAdd
(
payExists
.
getUnitSocialSum
()));
payExists
.
setSumAll
(
payExists
.
getSocialSum
());
payInsert
=
paymentInfoInjuryMap
.
get
(
infoVo
.
getSocialPayAddr
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getEmpIdcard
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialPayMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
infoVo
.
getSocialCreateMonth
().
trim
()
+
CommonConstants
.
DOWN_LINE_STRING
+
PaymentConstants
.
BIRTH
);
//存在社保缴费数据
if
(
null
!=
payInsert
&&
((
null
!=
payInsert
.
getBrSameFlg
()
&&
CommonConstants
.
ONE_STRING
.
equals
(
payInsert
.
getBrSameFlg
()))
||
(
BigDecimalUtils
.
safeMultiply
(
infoVo
.
getPaymentMoney
(),
BigDecimalUtils
.
isNullToZero
(
payInsert
.
getUnitBirthMoney
())).
compareTo
(
BigDecimal
.
ZERO
)
>
0
)))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"已存在对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
"的单位生育缴费数据,请勿重复导入!"
));
continue
;
}
batchBirthInsertList
.
put
(
exitInsertPaymnet
,
payExists
);
}
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ONE_INT
,
infoVo
.
getEmpIdcard
(),
payExists
.
getSocialHousehold
(),
payExists
.
getProvidentHousehold
(),
infoVo
.
getEmpName
(),
"对应员工身份证"
+
infoVo
.
getEmpIdcard
()
+
CommonConstants
.
SAVE_SUCCESS
,
CommonConstants
.
GREEN
));
}
}
return
errorMessageList
;
}
/**
* 导入校验
**/
...
...
@@ -2782,6 +3776,27 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
return
false
;
}
/**
* 导入校验
**/
private
boolean
socialThreeCheckBaseTax
(
ConcurrentHashMap
<
String
,
ErrorDetailVO
>
errorMessageList
,
TPaymentTaxSocialVo
infoVo
)
{
if
(!
Common
.
isNotNull
(
infoVo
.
getSocialPayMonth
()))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
"社保缴纳月份不可为空!"
));
return
true
;
}
if
(!
Common
.
isNotNull
(
infoVo
.
getSocialCreateMonth
()))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
"社保生成月份不可为空!"
));
return
true
;
}
if
(!
Common
.
isNotNull
(
infoVo
.
getSocialPayAddr
()))
{
errorMessageList
.
put
(
UUID
.
randomUUID
().
toString
(),
new
ErrorDetailVO
(
infoVo
.
getRowIndex
(),
CommonConstants
.
ZERO_INT
,
infoVo
.
getEmpIdcard
(),
""
,
""
,
infoVo
.
getEmpName
(),
"社保缴纳地不可为空!"
));
return
true
;
}
return
false
;
}
/**
* 转换缴纳地址为省市县ID
**/
...
...
@@ -2811,6 +3826,35 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
return
s
;
}
/**
* 转换缴纳地址为省市县ID
**/
private
TPaymentTaxSocialVo
initAddressThreeTax
(
String
[]
areaArray
,
HashMap
<
String
,
String
>
areaMap2
,
TPaymentTaxSocialVo
s
)
{
if
(
null
==
areaArray
||
null
==
areaMap2
||
null
==
s
)
{
return
s
;
}
String
temp
;
if
(
areaArray
.
length
>=
CommonConstants
.
TWO_INT
)
{
temp
=
areaMap2
.
get
(
areaArray
[
0
]
+
CommonConstants
.
DOWN_LINE_STRING
+
"null"
);
if
(
Common
.
isNotNull
(
temp
))
{
s
.
setSocialProvince
(
Integer
.
valueOf
(
temp
));
}
temp
=
areaMap2
.
get
(
areaArray
[
1
]
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
s
.
getSocialProvince
()
?
"null"
:
Integer
.
toString
(
s
.
getSocialProvince
())));
if
(
Common
.
isNotNull
(
temp
))
{
s
.
setSocialCity
(
Integer
.
valueOf
(
temp
));
}
if
(
areaArray
.
length
>=
CommonConstants
.
THREE_INT
)
{
temp
=
areaMap2
.
get
(
areaArray
[
2
]
+
CommonConstants
.
DOWN_LINE_STRING
+
(
null
==
s
.
getSocialCity
()
?
"null"
:
Integer
.
toString
(
s
.
getSocialCity
())));
if
(
Common
.
isNotNull
(
temp
))
{
s
.
setSocialTown
(
Integer
.
valueOf
(
temp
));
}
}
}
return
s
;
}
//比对缴纳地是否一致
private
TSocialFundInfo
checkAddress
(
String
[]
areaArray
,
HashMap
<
String
,
String
>
areaMap
,
TSocialFundInfo
s
,
HashMap
<
String
,
String
>
areaMap2
,
TPaymentInfoVo
infoVo
)
{
...
...
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