You need to sign in or sign up before continuing.
Commit 2aeacb39 authored by fangxinjiang's avatar fangxinjiang

入离职导入整合信息-fxj

parent 9e293a47
......@@ -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);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment