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
Commit
2aeacb39
authored
Apr 17, 2026
by
fangxinjiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
入离职导入整合信息-fxj
parent
9e293a47
Show 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;
...
@@ -8,6 +8,7 @@ import com.alibaba.excel.read.listener.ReadListener;
import
com.alibaba.excel.read.metadata.holder.ReadRowHolder
;
import
com.alibaba.excel.read.metadata.holder.ReadRowHolder
;
import
com.alibaba.excel.util.ListUtils
;
import
com.alibaba.excel.util.ListUtils
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
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.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
@@ -40,6 +41,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
...
@@ -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.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprArchivesProperties
;
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.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.common.security.util.SecurityUtils
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail
;
import
com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail
;
...
@@ -120,6 +122,107 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -120,6 +122,107 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
@Autowired
@Autowired
private
ContractTermCalculator
calculator
=
new
ContractTermCalculator
();
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
...
@@ -826,6 +929,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
socialDaprUtils
.
saveFundPreInfo
(
preVo
);
socialDaprUtils
.
saveFundPreInfo
(
preVo
);
}
}
}
}
//确认接收时增加 档案、商险、合同、社保、公积金的变更日志 (具体产生哪些日志按服务事项(serverItem)来生成),参考 tEmployeePreLogService.saveModifyAndUpdateInsurance的实现,只处理日志
saveConfirmReceiveLog
(
domainR
.
getData
(),
preVo
,
user
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"自动化办理执行异常"
,
e
);
log
.
error
(
"自动化办理执行异常"
,
e
);
}
}
...
@@ -2847,8 +2952,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -2847,8 +2952,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
TSettleDomainSelectVo
selectVo
=
null
;
TSettleDomainSelectVo
selectVo
=
null
;
R
<
SysAutoDictItemVo
>
domainDictR
=
null
;
R
<
SysAutoDictItemVo
>
domainDictR
=
null
;
List
<
String
>
postConfigList
=
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
)
{
for
(
EmployeeRegistrationNewVo
excel
:
excelVOList
)
{
selectVo
=
domainMap
.
get
(
excel
.
getDeptNo
());
selectVo
=
domainMap
.
get
(
excel
.
getDeptNo
());
//统一校验(整合所有错误信息一起返回)
List
<
String
>
errorList
=
new
ArrayList
<>();
if
(
null
==
selectVo
){
if
(
null
==
selectVo
){
//获取项目信息
//获取项目信息
R
<
TSettleDomainSelectVo
>
domainR
=
archivesDaprUtil
.
getSettleDomainSelectVoById
(
excel
.
getDeptNo
());
R
<
TSettleDomainSelectVo
>
domainR
=
archivesDaprUtil
.
getSettleDomainSelectVoById
(
excel
.
getDeptNo
());
...
@@ -2861,22 +2974,21 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -2861,22 +2974,21 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
continue
;
continue
;
}
}
if
(
null
==
domainR
.
getData
()){
if
(
null
==
domainR
.
getData
()){
error
MessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"未查询到具体项目信息"
,
excel
)
);
error
List
.
add
(
"未查询到具体项目信息"
);
continue
;
selectVo
=
null
;
}
}
else
{
selectVo
=
domainR
.
getData
();
selectVo
=
domainR
.
getData
();
domainMap
.
put
(
excel
.
getDeptNo
(),
selectVo
);
domainMap
.
put
(
excel
.
getDeptNo
(),
selectVo
);
}
}
}
//判断项目是否可用 (务状态:0 正常 1 停止服务 2 冻结)
//判断项目是否可用 (务状态:0 正常 1 停止服务 2 冻结)
if
(!
CommonConstants
.
ZERO_STRING
.
equals
(
selectVo
.
getStopFlag
()))
{
if
(
null
!=
selectVo
&&
!
CommonConstants
.
ZERO_STRING
.
equals
(
selectVo
.
getStopFlag
()))
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"项目不可用!"
,
excel
));
errorList
.
add
(
"项目不可用!"
);
continue
;
}
}
//非管理员判断是否有项目权限
//非管理员判断是否有项目权限
if
(!
isAdmin
){
if
(!
isAdmin
){
if
(!
deptNos
.
contains
(
excel
.
getDeptNo
())){
if
(!
deptNos
.
contains
(
excel
.
getDeptNo
())){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"无项目权限!"
,
excel
));
errorList
.
add
(
"无项目权限!"
);
continue
;
}
}
}
}
...
@@ -2909,11 +3021,11 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -2909,11 +3021,11 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
}
}
// 插入
// 插入
EmployeeRegistration
insert
=
new
EmployeeRegistration
();
insert
=
new
EmployeeRegistration
();
BeanUtil
.
copyProperties
(
excel
,
insert
);
BeanUtil
.
copyProperties
(
excel
,
insert
);
//表数据验重
//表数据验重
//表内数据重复 员工姓名、员工身份证号码、反馈类型、项目编码
//表内数据重复 员工姓名、员工身份证号码、反馈类型、项目编码
StringBuilder
errorTempBuilder
=
new
StringBuilder
();
errorTempBuilder
=
new
StringBuilder
();
errorTempBuilder
.
append
(
Common
.
isNullToString
(
excel
.
getDeptNo
()))
errorTempBuilder
.
append
(
Common
.
isNullToString
(
excel
.
getDeptNo
()))
.
append
(
"_"
)
.
append
(
"_"
)
.
append
(
Common
.
isNullToString
(
excel
.
getEmployeeName
()))
.
append
(
Common
.
isNullToString
(
excel
.
getEmployeeName
()))
...
@@ -2926,21 +3038,93 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -2926,21 +3038,93 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if
(
null
==
exitMap
.
get
(
duplicateKey
))
{
if
(
null
==
exitMap
.
get
(
duplicateKey
))
{
exitMap
.
put
(
duplicateKey
,
"1"
);
exitMap
.
put
(
duplicateKey
,
"1"
);
}
else
{
}
else
{
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
RegistConstants
.
IMPORT_EXIT_CHECK
,
excel
));
errorList
.
add
(
RegistConstants
.
IMPORT_EXIT_CHECK
);
continue
;
}
}
if
(
null
!=
selectVo
){
insert
.
setDeptNo
(
selectVo
.
getDepartNo
());
insert
.
setDeptNo
(
selectVo
.
getDepartNo
());
// 1.9.8:新增校验
}
//岗位配置校验(离职时不需要验证岗位,入职时需要校验)
if
(
CommonConstants
.
TWO_STRING
.
equals
(
dataSource
)
if
(
CommonConstants
.
TWO_STRING
.
equals
(
dataSource
)
&&
CommonConstants
.
ONE_STRING
.
equals
(
insert
.
getFeedbackType
())
&&
Common
.
isNotNull
(
postConfigList
)
&&
Common
.
isNotNull
(
postConfigList
)
&&
!
postConfigList
.
contains
(
insert
.
getPosition
())){
&&
!
postConfigList
.
contains
(
insert
.
getPosition
())){
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
"岗位不在项目配置的岗位配置项里"
,
excel
));
errorList
.
add
(
"岗位不在项目配置的岗位配置项里"
);
continue
;
}
}
String
error
=
registCheck
(
insert
);
//通过Pattern获得Matcher
if
(
null
!=
error
)
{
String
empIdcard
=
insert
.
getEmpIdcard
();
errorMessageList
.
add
(
new
ErrorMessage
(
excel
.
getRowIndex
(),
error
,
excel
));
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
;
continue
;
}
}
// 1.9.8:新增赋值
// 1.9.8:新增赋值
...
@@ -2964,6 +3148,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -2964,6 +3148,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if
(!
Common
.
isEmpty
(
insertList
))
{
if
(!
Common
.
isEmpty
(
insertList
))
{
insertList
.
clear
();
insertList
.
clear
();
//发送企业微信待办
//发送企业微信待办
if
(
Common
.
isNotNull
(
selectVo
))
{
EmployeeRegistration
msgRegistration
=
new
EmployeeRegistration
();
EmployeeRegistration
msgRegistration
=
new
EmployeeRegistration
();
msgRegistration
.
setInNum
(
inNum
);
msgRegistration
.
setInNum
(
inNum
);
msgRegistration
.
setOutNum
(
outNum
);
msgRegistration
.
setOutNum
(
outNum
);
...
@@ -2973,6 +3158,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -2973,6 +3158,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
//企业微信消息提醒
//企业微信消息提醒
sendMessageToWx
(
msgRegistration
,
CommonConstants
.
THREE_STRING
);
sendMessageToWx
(
msgRegistration
,
CommonConstants
.
THREE_STRING
);
}
}
}
}
}
...
@@ -3030,4 +3216,216 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
...
@@ -3030,4 +3216,216 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
// res.getData() 为 true 表示是假期(非工作日),为 false 表示是工作日
// res.getData() 为 true 表示是假期(非工作日),为 false 表示是工作日
return
!
res
.
getData
();
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