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
2aeacb39
You need to sign in or sign up before continuing.
Commit
2aeacb39
authored
Apr 17, 2026
by
fangxinjiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
入离职导入整合信息-fxj
parent
9e293a47
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
428 additions
and
30 deletions
+428
-30
EmployeeRegistrationServiceImpl.java
.../v1/csp/service/impl/EmployeeRegistrationServiceImpl.java
+428
-30
No files found.
yifu-csp/yifu-csp-biz/src/main/java/com/yifu/cloud/plus/v1/csp/service/impl/EmployeeRegistrationServiceImpl.java
View file @
2aeacb39
...
...
@@ -8,6 +8,7 @@ import com.alibaba.excel.read.listener.ReadListener;
import
com.alibaba.excel.read.metadata.holder.ReadRowHolder
;
import
com.alibaba.excel.util.ListUtils
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
...
@@ -40,6 +41,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprArchivesProperties
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.util.*
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.equator.HrEquator
;
import
com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail
;
...
...
@@ -120,6 +122,107 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
@Autowired
private
ContractTermCalculator
calculator
=
new
ContractTermCalculator
();
// 社保/公积金派单信息比较时忽略的字段
private
static
final
List
<
String
>
SOCIAL_IGNORE_FIELD
=
new
ArrayList
<>();
static
{
SOCIAL_IGNORE_FIELD
.
add
(
"joinLeaveDate"
);
SOCIAL_IGNORE_FIELD
.
add
(
"createTime"
);
SOCIAL_IGNORE_FIELD
.
add
(
"empName"
);
SOCIAL_IGNORE_FIELD
.
add
(
"phone"
);
SOCIAL_IGNORE_FIELD
.
add
(
"employeeName"
);
SOCIAL_IGNORE_FIELD
.
add
(
"empIdcard"
);
SOCIAL_IGNORE_FIELD
.
add
(
"deptNo"
);
SOCIAL_IGNORE_FIELD
.
add
(
"deptName"
);
SOCIAL_IGNORE_FIELD
.
add
(
"deptId"
);
SOCIAL_IGNORE_FIELD
.
add
(
"customerUsername"
);
SOCIAL_IGNORE_FIELD
.
add
(
"customerUserLoginname"
);
SOCIAL_IGNORE_FIELD
.
add
(
"position"
);
SOCIAL_IGNORE_FIELD
.
add
(
"contractId"
);
SOCIAL_IGNORE_FIELD
.
add
(
"errorBackInfo"
);
SOCIAL_IGNORE_FIELD
.
add
(
"errorInfo"
);
SOCIAL_IGNORE_FIELD
.
add
(
"errorTime"
);
SOCIAL_IGNORE_FIELD
.
add
(
"socialFundId"
);
SOCIAL_IGNORE_FIELD
.
add
(
"dispatcherId"
);
SOCIAL_IGNORE_FIELD
.
add
(
"contractStatus"
);
SOCIAL_IGNORE_FIELD
.
add
(
"typeSub"
);
SOCIAL_IGNORE_FIELD
.
add
(
"registerId"
);
SOCIAL_IGNORE_FIELD
.
add
(
"createBy"
);
SOCIAL_IGNORE_FIELD
.
add
(
"createName"
);
SOCIAL_IGNORE_FIELD
.
add
(
"updateBy"
);
SOCIAL_IGNORE_FIELD
.
add
(
"id"
);
SOCIAL_IGNORE_FIELD
.
add
(
"expectedCollectionType"
);
SOCIAL_IGNORE_FIELD
.
add
(
"upperLimit"
);
SOCIAL_IGNORE_FIELD
.
add
(
"lowerLimit"
);
SOCIAL_IGNORE_FIELD
.
add
(
"fundUpdateFlag"
);
SOCIAL_IGNORE_FIELD
.
add
(
"processStatus"
);
}
// 档案信息比较时忽略的字段
private
static
final
List
<
String
>
PRE_IGNORE_FIELD
=
new
ArrayList
<>();
static
{
PRE_IGNORE_FIELD
.
add
(
"createTime"
);
PRE_IGNORE_FIELD
.
add
(
"deptId"
);
PRE_IGNORE_FIELD
.
add
(
"dataSource"
);
PRE_IGNORE_FIELD
.
add
(
"createBy"
);
PRE_IGNORE_FIELD
.
add
(
"createName"
);
PRE_IGNORE_FIELD
.
add
(
"updateBy"
);
PRE_IGNORE_FIELD
.
add
(
"fundUpdateFlag"
);
PRE_IGNORE_FIELD
.
add
(
"socialUpdateFlag"
);
PRE_IGNORE_FIELD
.
add
(
"contractUpdateFlag"
);
}
// 合同信息比较时忽略的字段
private
static
final
List
<
String
>
CONTRACT_IGNORE_FIELD
=
new
ArrayList
<>();
static
{
CONTRACT_IGNORE_FIELD
.
add
(
"joinLeaveDate"
);
CONTRACT_IGNORE_FIELD
.
add
(
"createTime"
);
CONTRACT_IGNORE_FIELD
.
add
(
"empPhone"
);
CONTRACT_IGNORE_FIELD
.
add
(
"employeeName"
);
CONTRACT_IGNORE_FIELD
.
add
(
"empIdcard"
);
CONTRACT_IGNORE_FIELD
.
add
(
"deptNo"
);
CONTRACT_IGNORE_FIELD
.
add
(
"deptName"
);
CONTRACT_IGNORE_FIELD
.
add
(
"deptId"
);
CONTRACT_IGNORE_FIELD
.
add
(
"changeTypeReason"
);
CONTRACT_IGNORE_FIELD
.
add
(
"changeTypeUser"
);
CONTRACT_IGNORE_FIELD
.
add
(
"changeTypeTime"
);
CONTRACT_IGNORE_FIELD
.
add
(
"dataSource"
);
CONTRACT_IGNORE_FIELD
.
add
(
"contractId"
);
CONTRACT_IGNORE_FIELD
.
add
(
"registerId"
);
CONTRACT_IGNORE_FIELD
.
add
(
"createBy"
);
CONTRACT_IGNORE_FIELD
.
add
(
"createName"
);
CONTRACT_IGNORE_FIELD
.
add
(
"updateBy"
);
CONTRACT_IGNORE_FIELD
.
add
(
"id"
);
CONTRACT_IGNORE_FIELD
.
add
(
"timeoutElecSign"
);
CONTRACT_IGNORE_FIELD
.
add
(
"internshipPeriodNum"
);
CONTRACT_IGNORE_FIELD
.
add
(
"tryPeriodNum"
);
CONTRACT_IGNORE_FIELD
.
add
(
"fundUpdateFlag"
);
}
// 商险明细比较时忽略的字段
private
static
final
List
<
String
>
INSURANCE_IGNORE_FIELD
=
new
ArrayList
<>();
static
{
INSURANCE_IGNORE_FIELD
.
add
(
"joinLeaveDate"
);
INSURANCE_IGNORE_FIELD
.
add
(
"createTime"
);
INSURANCE_IGNORE_FIELD
.
add
(
"modelType"
);
INSURANCE_IGNORE_FIELD
.
add
(
"empPhone"
);
INSURANCE_IGNORE_FIELD
.
add
(
"employeeName"
);
INSURANCE_IGNORE_FIELD
.
add
(
"empIdcard"
);
INSURANCE_IGNORE_FIELD
.
add
(
"deptNo"
);
INSURANCE_IGNORE_FIELD
.
add
(
"deptName"
);
INSURANCE_IGNORE_FIELD
.
add
(
"deptId"
);
INSURANCE_IGNORE_FIELD
.
add
(
"customerUsername"
);
INSURANCE_IGNORE_FIELD
.
add
(
"customerUserLoginname"
);
INSURANCE_IGNORE_FIELD
.
add
(
"dataSource"
);
INSURANCE_IGNORE_FIELD
.
add
(
"position"
);
INSURANCE_IGNORE_FIELD
.
add
(
"createBy"
);
INSURANCE_IGNORE_FIELD
.
add
(
"createName"
);
INSURANCE_IGNORE_FIELD
.
add
(
"updateBy"
);
INSURANCE_IGNORE_FIELD
.
add
(
"isAddress"
);
INSURANCE_IGNORE_FIELD
.
add
(
"fundUpdateFlag"
);
INSURANCE_IGNORE_FIELD
.
add
(
"socialUpdateFlag"
);
INSURANCE_IGNORE_FIELD
.
add
(
"contractUpdateFlag"
);
}
/**
* 入离职登记表简单分页查询
*
...
...
@@ -826,6 +929,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
socialDaprUtils
.
saveFundPreInfo
(
preVo
);
}
}
//确认接收时增加 档案、商险、合同、社保、公积金的变更日志 (具体产生哪些日志按服务事项(serverItem)来生成),参考 tEmployeePreLogService.saveModifyAndUpdateInsurance的实现,只处理日志
saveConfirmReceiveLog
(
domainR
.
getData
(),
preVo
,
user
);
}
catch
(
Exception
e
)
{
log
.
error
(
"自动化办理执行异常"
,
e
);
}
...
...
@@ -2847,8 +2952,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
TSettleDomainSelectVo
selectVo
=
null
;
R
<
SysAutoDictItemVo
>
domainDictR
=
null
;
List
<
String
>
postConfigList
=
null
;
//定义判别用户身份证号的正则表达式(要么是15位,要么是18位,最后一位可以为字母)
Pattern
idNumPattern
=
compile
(
"(\\d{14}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])"
);
//该人员入职/离职数据已登记,请勿重复操作
EmployeeRegistration
exit
;
StringBuilder
errorTempBuilder
;
EmployeeRegistration
insert
;
for
(
EmployeeRegistrationNewVo
excel
:
excelVOList
)
{
selectVo
=
domainMap
.
get
(
excel
.
getDeptNo
());
//统一校验(整合所有错误信息一起返回)
List
<
String
>
errorList
=
new
ArrayList
<>();
if
(
null
==
selectVo
){
//获取项目信息
R
<
TSettleDomainSelectVo
>
domainR
=
archivesDaprUtil
.
getSettleDomainSelectVoById
(
excel
.
getDeptNo
());
...
...
@@ -2861,22 +2974,21 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
continue
;
}
if
(
null
==
domainR
.
getData
()){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"未查询到具体项目信息"
,
excel
));
continue
;
errorList
.
add
(
"未查询到具体项目信息"
);
selectVo
=
null
;
}
else
{
selectVo
=
domainR
.
getData
();
domainMap
.
put
(
excel
.
getDeptNo
(),
selectVo
);
}
selectVo
=
domainR
.
getData
();
domainMap
.
put
(
excel
.
getDeptNo
(),
selectVo
);
}
//判断项目是否可用 (务状态:0 正常 1 停止服务 2 冻结)
if
(!
CommonConstants
.
ZERO_STRING
.
equals
(
selectVo
.
getStopFlag
()))
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"项目不可用!"
,
excel
));
continue
;
if
(
null
!=
selectVo
&&
!
CommonConstants
.
ZERO_STRING
.
equals
(
selectVo
.
getStopFlag
()))
{
errorList
.
add
(
"项目不可用!"
);
}
//非管理员判断是否有项目权限
if
(!
isAdmin
){
if
(!
deptNos
.
contains
(
excel
.
getDeptNo
())){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"无项目权限!"
,
excel
));
continue
;
errorList
.
add
(
"无项目权限!"
);
}
}
...
...
@@ -2909,11 +3021,11 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
}
// 插入
EmployeeRegistration
insert
=
new
EmployeeRegistration
();
insert
=
new
EmployeeRegistration
();
BeanUtil
.
copyProperties
(
excel
,
insert
);
//表数据验重
//表内数据重复 员工姓名、员工身份证号码、反馈类型、项目编码
StringBuilder
errorTempBuilder
=
new
StringBuilder
();
errorTempBuilder
=
new
StringBuilder
();
errorTempBuilder
.
append
(
Common
.
isNullToString
(
excel
.
getDeptNo
()))
.
append
(
"_"
)
.
append
(
Common
.
isNullToString
(
excel
.
getEmployeeName
()))
...
...
@@ -2926,21 +3038,93 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if
(
null
==
exitMap
.
get
(
duplicateKey
))
{
exitMap
.
put
(
duplicateKey
,
"1"
);
}
else
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
RegistConstants
.
IMPORT_EXIT_CHECK
,
excel
));
continue
;
errorList
.
add
(
RegistConstants
.
IMPORT_EXIT_CHECK
);
}
insert
.
setDeptNo
(
selectVo
.
getDepartNo
());
// 1.9.8:新增校验
if
(
CommonConstants
.
TWO_STRING
.
equals
(
dataSource
)
&&
Common
.
isNotNull
(
postConfigList
)
if
(
null
!=
selectVo
){
insert
.
setDeptNo
(
selectVo
.
getDepartNo
());
}
//岗位配置校验(离职时不需要验证岗位,入职时需要校验)
if
(
CommonConstants
.
TWO_STRING
.
equals
(
dataSource
)
&&
CommonConstants
.
ONE_STRING
.
equals
(
insert
.
getFeedbackType
())
&&
Common
.
isNotNull
(
postConfigList
)
&&
!
postConfigList
.
contains
(
insert
.
getPosition
())){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"岗位不在项目配置的岗位配置项里"
,
excel
));
continue
;
errorList
.
add
(
"岗位不在项目配置的岗位配置项里"
);
}
String
error
=
registCheck
(
insert
);
if
(
null
!=
error
)
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
error
,
excel
));
//通过Pattern获得Matcher
String
empIdcard
=
insert
.
getEmpIdcard
();
boolean
isIdCardValid
=
true
;
if
(
Common
.
isEmpty
(
empIdcard
))
{
isIdCardValid
=
false
;
errorList
.
add
(
RegistConstants
.
IDCARD_FORMAT_ERROR
);
}
else
{
Matcher
idNumMatcher
=
idNumPattern
.
matcher
(
empIdcard
);
if
(!
idNumMatcher
.
matches
())
{
isIdCardValid
=
false
;
errorList
.
add
(
RegistConstants
.
IDCARD_FORMAT_ERROR
);
}
}
boolean
isPhoneValid
=
true
;
if
(!
ValidityUtil
.
validateEmpPhone
(
insert
.
getEmpPhone
()))
{
isPhoneValid
=
false
;
errorList
.
add
(
RegistConstants
.
PHONE_FORMAT_ERROR
);
}
//姓名、身份证+手机号真实性校验(前置条件:手机号码和身份证正常)
if
(
isIdCardValid
&&
isPhoneValid
)
{
R
<
Boolean
>
checkRes
=
checkDaprUtil
.
checkIdCardAndMobile
(
insert
.
getEmployeeName
(),
insert
.
getEmpIdcard
(),
insert
.
getEmpPhone
());
if
(
Common
.
isEmpty
(
checkRes
)
||
checkRes
.
getCode
()
!=
CommonConstants
.
SUCCESS
){
errorList
.
add
(
Common
.
isNotNull
(
checkRes
)
?
checkRes
.
getMsg
()
:
"姓名、身份证+手机号真实性校验失败"
);
}
}
//该人员入职/离职数据已登记,请勿重复操作
exit
=
baseMapper
.
selectOne
(
Wrappers
.<
EmployeeRegistration
>
query
().
lambda
()
.
eq
(
EmployeeRegistration:
:
getEmpIdcard
,
insert
.
getEmpIdcard
())
.
eq
(
EmployeeRegistration:
:
getDeptNo
,
insert
.
getDeptNo
())
.
eq
(
EmployeeRegistration:
:
getFeedbackType
,
insert
.
getFeedbackType
())
.
in
(
EmployeeRegistration:
:
getProcessStatus
,
CommonConstants
.
processStatus
)
.
last
(
CommonConstants
.
LAST_ONE_SQL
));
if
(
Common
.
isNotNull
(
exit
))
{
errorList
.
add
(
RegistConstants
.
REGIST_SAME_CHECK
);
}
//针对入职的判断是否存在流程中的合同待签订数据
if
(
CommonConstants
.
ONE_STRING
.
equals
(
insert
.
getFeedbackType
()))
{
EmpProjectStatusVo
vo
=
new
EmpProjectStatusVo
();
vo
.
setEmpIdcard
(
insert
.
getEmpIdcard
());
vo
.
setDeptNo
(
insert
.
getDeptNo
());
if
(
Boolean
.
TRUE
.
equals
(
checkContractPreIsExit
(
vo
)))
{
errorList
.
add
(
RegistConstants
.
EMP_CONTRACT_EXIT_CHECK
);
}
}
//针对离职的判断人员项目档案状态是否正常(前置条件:项目存在)
if
(
CommonConstants
.
TWO_STRING
.
equals
(
insert
.
getFeedbackType
())
&&
Common
.
isNotNull
(
selectVo
))
{
EmpProjectStatusVo
vo
=
new
EmpProjectStatusVo
();
vo
.
setEmpIdcard
(
insert
.
getEmpIdcard
());
vo
.
setDeptNo
(
insert
.
getDeptNo
());
EmpProjectStatusVo
exitVo
=
getEmpProjectStatus
(
vo
);
if
(
Common
.
isEmpty
(
exitVo
))
{
errorList
.
add
(
RegistConstants
.
EMP_PROJECT_EXIT_CHECK
);
}
}
//检查自动化离职未处理完毕的信息(前置条件:项目存在)
if
(
Common
.
isNotNull
(
insert
.
getEmpIdcard
())
&&
Common
.
isNotNull
(
insert
.
getDeptNo
())
&&
Common
.
isNotNull
(
selectVo
))
{
int
count
=
baseMapper
.
getEmployeeRegistrationLeavingCount
(
insert
.
getEmpIdcard
(),
insert
.
getDeptNo
());
if
(
count
>
0
)
{
errorList
.
add
(
RegistConstants
.
HAVE_LEAVING
);
}
}
//如果有错误,整合后返回
if
(!
errorList
.
isEmpty
())
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
String
.
join
(
";"
,
errorList
),
excel
));
continue
;
}
// 1.9.8:新增赋值
...
...
@@ -2964,14 +3148,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if
(!
Common
.
isEmpty
(
insertList
))
{
insertList
.
clear
();
//发送企业微信待办
EmployeeRegistration
msgRegistration
=
new
EmployeeRegistration
();
msgRegistration
.
setInNum
(
inNum
);
msgRegistration
.
setOutNum
(
outNum
);
msgRegistration
.
setCustomerUserLoginname
(
selectVo
.
getCsLoginName
());
msgRegistration
.
setDeptName
(
selectVo
.
getDepartName
());
msgRegistration
.
setDeptNo
(
selectVo
.
getDepartNo
());
//企业微信消息提醒
sendMessageToWx
(
msgRegistration
,
CommonConstants
.
THREE_STRING
);
if
(
Common
.
isNotNull
(
selectVo
))
{
EmployeeRegistration
msgRegistration
=
new
EmployeeRegistration
();
msgRegistration
.
setInNum
(
inNum
);
msgRegistration
.
setOutNum
(
outNum
);
msgRegistration
.
setCustomerUserLoginname
(
selectVo
.
getCsLoginName
());
msgRegistration
.
setDeptName
(
selectVo
.
getDepartName
());
msgRegistration
.
setDeptNo
(
selectVo
.
getDepartNo
());
//企业微信消息提醒
sendMessageToWx
(
msgRegistration
,
CommonConstants
.
THREE_STRING
);
}
}
}
...
...
@@ -3030,4 +3216,216 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
// res.getData() 为 true 表示是假期(非工作日),为 false 表示是工作日
return
!
res
.
getData
();
}
/**
* @Description: 确认接收时保存变更日志(只有新增,old对象为空)
* @Author: system
* @Date: 2026-04-16
* @param empPreId 入职确认信息ID
* @param preVo 入职确认信息VO
* @param user 当前用户
**/
private
void
saveConfirmReceiveLog
(
String
empPreId
,
EmployeeRegistrationPreVo
preVo
,
YifuUser
user
)
{
try
{
if
(
Common
.
isEmpty
(
empPreId
)
||
Common
.
isEmpty
(
preVo
))
{
return
;
}
String
logId
=
String
.
valueOf
(
UUID
.
randomUUID
()).
replaceAll
(
"-"
,
""
);
List
<
TEmployeePreLogDetail
>
detailList
=
new
ArrayList
<>();
StringBuilder
diffTitleBuilder
=
new
StringBuilder
();
// 1. 档案信息日志(type=1)
// 使用 HrEquator 比较差异字段(新增时 old 为空,传入空对象)
String
differenceArchiveKey
=
HrEquator
.
comparisonValueIgnoreField
(
new
EmployeeRegistrationPreVo
(),
preVo
,
PRE_IGNORE_FIELD
);
TEmployeePreLogDetail
archiveDetail
=
new
TEmployeePreLogDetail
();
archiveDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
// 1新增
archiveDetail
.
setType
(
CommonConstants
.
ONE_STRING
);
// 1档案
archiveDetail
.
setPreId
(
empPreId
);
archiveDetail
.
setPreLogId
(
logId
);
archiveDetail
.
setOldInfo
(
null
);
// old对象为空
archiveDetail
.
setNewInfo
(
JSON
.
toJSONString
(
preVo
));
//archiveDetail.setDifferenceInfo(Common.isNotNull(differenceArchiveKey) ? differenceArchiveKey : "employeeRegistrationPre");
archiveDetail
.
setCreateBy
(
user
.
getId
());
archiveDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
archiveDetail
);
diffTitleBuilder
.
append
(
"档案信息"
);
// 2. 商险信息日志(type=2)
if
(
preVo
.
getServerItem
()
!=
null
&&
preVo
.
getServerItem
().
contains
(
"商险"
))
{
if
(
diffTitleBuilder
.
length
()
>
0
)
{
diffTitleBuilder
.
append
(
"、"
);
}
diffTitleBuilder
.
append
(
"商险信息"
);
// 是否已购买商险
if
(
Common
.
isNotNull
(
preVo
.
getInsuranceIsBuy
()))
{
TEmployeePreLogDetail
insuranceBuyDetail
=
new
TEmployeePreLogDetail
();
insuranceBuyDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
insuranceBuyDetail
.
setType
(
CommonConstants
.
TWO_STRING
);
// 2商险
insuranceBuyDetail
.
setPreId
(
empPreId
);
insuranceBuyDetail
.
setPreLogId
(
logId
);
insuranceBuyDetail
.
setOldInfo
(
null
);
Map
<
String
,
Object
>
newInfo
=
new
HashMap
<>();
newInfo
.
put
(
"insuranceIsBuy"
,
preVo
.
getInsuranceIsBuy
());
insuranceBuyDetail
.
setNewInfo
(
JSON
.
toJSONString
(
newInfo
));
insuranceBuyDetail
.
setDifferenceInfo
(
"insuranceIsBuy"
);
insuranceBuyDetail
.
setCreateBy
(
user
.
getId
());
insuranceBuyDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
insuranceBuyDetail
);
}
// 商险明细
if
(
Common
.
isNotNull
(
preVo
.
getEmployeeInsurancePreVos
())
&&
!
preVo
.
getEmployeeInsurancePreVos
().
isEmpty
())
{
for
(
TEmployeeInsurancePreVo
insurancePre
:
preVo
.
getEmployeeInsurancePreVos
())
{
TEmployeePreLogDetail
insuranceDetail
=
new
TEmployeePreLogDetail
();
insuranceDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
insuranceDetail
.
setType
(
CommonConstants
.
TWO_STRING
);
insuranceDetail
.
setPreId
(
empPreId
);
insuranceDetail
.
setPreLogId
(
logId
);
insuranceDetail
.
setOldInfo
(
null
);
insuranceDetail
.
setNewInfo
(
JSON
.
toJSONString
(
insurancePre
));
// 使用 HrEquator 比较差异字段(新增时 old 为空,传入空对象)
String
differenceInsuranceKey
=
HrEquator
.
comparisonValueIgnoreField
(
new
TEmployeeInsurancePreVo
(),
insurancePre
,
INSURANCE_IGNORE_FIELD
);
//insuranceDetail.setDifferenceInfo(Common.isNotNull(differenceInsuranceKey) ? differenceInsuranceKey : "insurancePreList");
insuranceDetail
.
setCreateBy
(
user
.
getId
());
insuranceDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
insuranceDetail
);
}
}
}
// 3. 合同信息日志(type=3)
if
(
preVo
.
getServerItem
()
!=
null
&&
preVo
.
getServerItem
().
contains
(
"合同"
)
&&
Common
.
isNotNull
(
preVo
.
getEmployeeContractPreVos
()))
{
if
(
diffTitleBuilder
.
length
()
>
0
)
{
diffTitleBuilder
.
append
(
"、"
);
}
diffTitleBuilder
.
append
(
"合同信息"
);
TEmployeePreLogDetail
contractDetail
=
new
TEmployeePreLogDetail
();
contractDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
contractDetail
.
setType
(
CommonConstants
.
THREE_STRING
);
// 3合同
contractDetail
.
setPreId
(
empPreId
);
contractDetail
.
setPreLogId
(
logId
);
contractDetail
.
setOldInfo
(
null
);
contractDetail
.
setNewInfo
(
JSON
.
toJSONString
(
preVo
.
getEmployeeContractPreVos
()));
// 使用 HrEquator 比较差异字段(新增时 old 为空,传入空对象)
String
differenceContractKey
=
HrEquator
.
comparisonValueIgnoreField
(
new
TEmployeeContractPreVo
(),
preVo
.
getEmployeeContractPreVos
(),
CONTRACT_IGNORE_FIELD
);
//contractDetail.setDifferenceInfo(Common.isNotNull(differenceContractKey) ? differenceContractKey : "employeeContractPre");
contractDetail
.
setCreateBy
(
user
.
getId
());
contractDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
contractDetail
);
}
// 4. 社保信息日志(type=4)
if
(
preVo
.
getServerItem
()
!=
null
&&
preVo
.
getServerItem
().
contains
(
"社保"
))
{
if
(
diffTitleBuilder
.
length
()
>
0
)
{
diffTitleBuilder
.
append
(
"、"
);
}
diffTitleBuilder
.
append
(
"社保信息"
);
// 是否已参保
if
(
Common
.
isNotNull
(
preVo
.
getSocialIsBuy
()))
{
TEmployeePreLogDetail
socialBuyDetail
=
new
TEmployeePreLogDetail
();
socialBuyDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
socialBuyDetail
.
setType
(
CommonConstants
.
FOUR_STRING
);
// 4社保
socialBuyDetail
.
setPreId
(
empPreId
);
socialBuyDetail
.
setPreLogId
(
logId
);
socialBuyDetail
.
setOldInfo
(
null
);
Map
<
String
,
Object
>
newInfo
=
new
HashMap
<>();
newInfo
.
put
(
"socialIsBuy"
,
preVo
.
getSocialIsBuy
());
socialBuyDetail
.
setNewInfo
(
JSON
.
toJSONString
(
newInfo
));
socialBuyDetail
.
setDifferenceInfo
(
"socialIsBuy"
);
socialBuyDetail
.
setCreateBy
(
user
.
getId
());
socialBuyDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
socialBuyDetail
);
}
// 社保派单信息
if
(
Common
.
isNotNull
(
preVo
.
getDispatchInfoPreVo
()))
{
TEmployeePreLogDetail
socialDetail
=
new
TEmployeePreLogDetail
();
socialDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
socialDetail
.
setType
(
CommonConstants
.
FOUR_STRING
);
socialDetail
.
setPreId
(
empPreId
);
socialDetail
.
setPreLogId
(
logId
);
socialDetail
.
setOldInfo
(
null
);
socialDetail
.
setNewInfo
(
JSON
.
toJSONString
(
preVo
.
getDispatchInfoPreVo
()));
// 使用 HrEquator 比较差异字段(新增时 old 为空,传入空对象)
String
differenceSocialKey
=
HrEquator
.
comparisonValueIgnoreField
(
new
TDispatchInfoPreVo
(),
preVo
.
getDispatchInfoPreVo
(),
SOCIAL_IGNORE_FIELD
);
//socialDetail.setDifferenceInfo(Common.isNotNull(differenceSocialKey) ? differenceSocialKey : "dispatchInfoPreVo");
socialDetail
.
setCreateBy
(
user
.
getId
());
socialDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
socialDetail
);
}
}
// 5. 公积金信息日志(type=5)
if
(
preVo
.
getServerItem
()
!=
null
&&
preVo
.
getServerItem
().
contains
(
"公积金"
))
{
if
(
diffTitleBuilder
.
length
()
>
0
)
{
diffTitleBuilder
.
append
(
"、"
);
}
diffTitleBuilder
.
append
(
"公积金信息"
);
// 是否已参保
if
(
Common
.
isNotNull
(
preVo
.
getFundIsBuy
()))
{
TEmployeePreLogDetail
fundBuyDetail
=
new
TEmployeePreLogDetail
();
fundBuyDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
fundBuyDetail
.
setType
(
CommonConstants
.
FIVE_STRING
);
// 5公积金
fundBuyDetail
.
setPreId
(
empPreId
);
fundBuyDetail
.
setPreLogId
(
logId
);
fundBuyDetail
.
setOldInfo
(
null
);
Map
<
String
,
Object
>
newInfo
=
new
HashMap
<>();
newInfo
.
put
(
"fundIsBuy"
,
preVo
.
getFundIsBuy
());
fundBuyDetail
.
setNewInfo
(
JSON
.
toJSONString
(
newInfo
));
fundBuyDetail
.
setDifferenceInfo
(
"fundIsBuy"
);
fundBuyDetail
.
setCreateBy
(
user
.
getId
());
fundBuyDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
fundBuyDetail
);
}
// 公积金派单信息
if
(
Common
.
isNotNull
(
preVo
.
getDispatchInfoFundPreVo
()))
{
TEmployeePreLogDetail
fundDetail
=
new
TEmployeePreLogDetail
();
fundDetail
.
setModelType
(
CommonConstants
.
ONE_STRING
);
fundDetail
.
setType
(
CommonConstants
.
FIVE_STRING
);
fundDetail
.
setPreId
(
empPreId
);
fundDetail
.
setPreLogId
(
logId
);
fundDetail
.
setOldInfo
(
null
);
fundDetail
.
setNewInfo
(
JSON
.
toJSONString
(
preVo
.
getDispatchInfoFundPreVo
()));
// 使用 HrEquator 比较差异字段(新增时 old 为空,传入空对象)
String
differenceFundKey
=
HrEquator
.
comparisonValueIgnoreField
(
new
TDispatchInfoPreVo
(),
preVo
.
getDispatchInfoFundPreVo
(),
SOCIAL_IGNORE_FIELD
);
//fundDetail.setDifferenceInfo(Common.isNotNull(differenceFundKey) ? differenceFundKey : "dispatchInfoFundPreVo");
fundDetail
.
setCreateBy
(
user
.
getId
());
fundDetail
.
setCreateName
(
user
.
getNickname
());
detailList
.
add
(
fundDetail
);
}
}
// 保存日志主表和明细
if
(!
detailList
.
isEmpty
())
{
TEmployeePreLog
empPreLog
=
new
TEmployeePreLog
();
empPreLog
.
setId
(
logId
);
empPreLog
.
setPreId
(
empPreId
);
empPreLog
.
setDiffTitle
(
diffTitleBuilder
.
toString
());
if
(
Common
.
isNotNull
(
user
))
{
empPreLog
.
setCreateBy
(
user
.
getId
());
empPreLog
.
setCreateName
(
user
.
getNickname
());
}
// 通过Dapr调用档案服务保存日志
archivesDaprUtil
.
savePreLogBatch
(
Collections
.
singletonList
(
empPreLog
));
// 保存日志明细
archivesDaprUtil
.
savePreLogDetailBatch
(
detailList
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"保存确认接收日志异常"
,
e
);
}
}
}
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