Commit a55e0959 authored by 刘斌's avatar 刘斌

feat: 增加家庭成员3

parent e0fee223
...@@ -15,6 +15,7 @@ import top.binfast.common.excel.annotion.ExcelDictFormat; ...@@ -15,6 +15,7 @@ import top.binfast.common.excel.annotion.ExcelDictFormat;
import top.binfast.common.excel.converters.ExcelDictConvert; import top.binfast.common.excel.converters.ExcelDictConvert;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* 员工信息业务对象 employee_info * 员工信息业务对象 employee_info
...@@ -554,6 +555,11 @@ public class EmployeeInfoParam { ...@@ -554,6 +555,11 @@ public class EmployeeInfoParam {
*/ */
private String antaiCommunityInfo; private String antaiCommunityInfo;
/**
* 家庭成员
*/
private List<EmployeeFamilyMembersParam> familyMembers;
/** /**
* 离职类型 * 离职类型
*/ */
......
package com.anplus.hr.domain.vo; package com.anplus.hr.domain.vo;
import com.anplus.hr.constant.HrConstant;
import com.anplus.hr.domain.EmployeeFamilyMembers; import com.anplus.hr.domain.EmployeeFamilyMembers;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.ExcelIgnore; import cn.idev.excel.annotation.ExcelIgnore;
import org.dromara.core.trans.anno.Trans;
import org.dromara.core.trans.constant.TransType;
import org.dromara.core.trans.vo.TransPojo;
import top.binfast.common.excel.annotion.ExcelDictFormat; import top.binfast.common.excel.annotion.ExcelDictFormat;
import top.binfast.common.excel.converters.ExcelDictConvert; import top.binfast.common.excel.converters.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
...@@ -23,7 +27,7 @@ import java.io.Serializable; ...@@ -23,7 +27,7 @@ import java.io.Serializable;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = EmployeeFamilyMembers.class) @AutoMapper(target = EmployeeFamilyMembers.class)
public class EmployeeFamilyMembersVo implements Serializable { public class EmployeeFamilyMembersVo implements TransPojo, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -73,7 +77,8 @@ public class EmployeeFamilyMembersVo implements Serializable { ...@@ -73,7 +77,8 @@ public class EmployeeFamilyMembersVo implements Serializable {
* 是否为紧急联系人 * 是否为紧急联系人
*/ */
@ExcelProperty(value = "是否为紧急联系人", converter = ExcelDictConvert.class) @ExcelProperty(value = "是否为紧急联系人", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "SYS_YES_NO") @ExcelDictFormat(dictType = HrConstant.SYS_YES_NO)
@Trans(type = TransType.DICTIONARY, key = HrConstant.SYS_YES_NO)
private String emergencyFlag; private String emergencyFlag;
......
...@@ -21,4 +21,9 @@ public interface EmployeeFamilyMembersMapper extends BinBaseMapper<EmployeeFamil ...@@ -21,4 +21,9 @@ public interface EmployeeFamilyMembersMapper extends BinBaseMapper<EmployeeFamil
.eq(EmployeeFamilyMembers::getEmployeeId, employeeId)); .eq(EmployeeFamilyMembers::getEmployeeId, employeeId));
} }
default int deleteByEmployeeId(Long employeeId) {
return delete(new LambdaUpdateWrapper<EmployeeFamilyMembers>()
.eq(EmployeeFamilyMembers::getEmployeeId, employeeId));
}
} }
...@@ -8,15 +8,14 @@ import com.anplus.hr.domain.EmployeeFamilyMembers; ...@@ -8,15 +8,14 @@ import com.anplus.hr.domain.EmployeeFamilyMembers;
import com.anplus.hr.domain.EmployeeInfo; import com.anplus.hr.domain.EmployeeInfo;
import com.anplus.hr.domain.params.EmployeeInfoListParam; import com.anplus.hr.domain.params.EmployeeInfoListParam;
import com.anplus.hr.domain.params.EmployeeInfoParam; import com.anplus.hr.domain.params.EmployeeInfoParam;
import com.anplus.hr.domain.vo.EmployeeFamilyMembersVo;
import com.anplus.hr.domain.vo.EmployeeInfoResignImportVo; import com.anplus.hr.domain.vo.EmployeeInfoResignImportVo;
import com.anplus.hr.domain.vo.EmployeeInfoResignVo; import com.anplus.hr.domain.vo.EmployeeInfoResignVo;
import com.anplus.hr.domain.vo.EmployeeInfoVo; import com.anplus.hr.domain.vo.EmployeeInfoVo;
import com.anplus.hr.mapper.EmployeeFamilyMembersMapper;
import com.anplus.hr.mapper.EmployeeInfoMapper; import com.anplus.hr.mapper.EmployeeInfoMapper;
import com.anplus.hr.service.EmployeeInfoResignServ; import com.anplus.hr.service.EmployeeInfoResignServ;
import com.anplus.hr.service.EmployeeInfoServ; import com.anplus.hr.service.EmployeeInfoServ;
import com.anplus.hr.service.EmployeeSysDeptServ; import com.anplus.hr.service.EmployeeSysDeptServ;
import com.anplus.hr.service.impl.command.EmployeeFamilyMembersCmdExe;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -52,7 +51,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper, ...@@ -52,7 +51,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
private final EmployeeInfoServ employeeInfoServ; private final EmployeeInfoServ employeeInfoServ;
private final TransService transService; private final TransService transService;
private final SysOssMapper sysOssMapper; private final SysOssMapper sysOssMapper;
private final EmployeeFamilyMembersMapper employeeFamilyMembersMapper; private final EmployeeFamilyMembersCmdExe familyMembersCmdExe;
private final EmployeeAsyncService employeeAsyncService; private final EmployeeAsyncService employeeAsyncService;
private final EmployeeSysDeptServ employeeSysDeptServ; private final EmployeeSysDeptServ employeeSysDeptServ;
...@@ -171,7 +170,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper, ...@@ -171,7 +170,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
} }
} }
} }
employeeFamilyMembersMapper.insert(familyMembersList); familyMembersCmdExe.insertBatch(familyMembersList);
} }
} }
StringBuilder message; StringBuilder message;
...@@ -202,10 +201,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper, ...@@ -202,10 +201,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
employeeAsyncService.matchingUrl(employeeInfoVo); employeeAsyncService.matchingUrl(employeeInfoVo);
} }
} }
List<EmployeeFamilyMembers> familyMembers = employeeFamilyMembersMapper.selectByEmployeeId(employeeInfo.getId()); familyMembersCmdExe.setFamilyMembersData(employeeInfoVo);
if (CollUtil.isNotEmpty(familyMembers)) {
employeeInfoVo.setFamilyMembers(MapstructUtils.convert(familyMembers, EmployeeFamilyMembersVo.class));
}
transService.transOne(employeeInfoVo); transService.transOne(employeeInfoVo);
return employeeInfoVo; return employeeInfoVo;
} }
......
...@@ -17,13 +17,16 @@ import com.anplus.hr.domain.EmployeeFamilyMembers; ...@@ -17,13 +17,16 @@ import com.anplus.hr.domain.EmployeeFamilyMembers;
import com.anplus.hr.domain.EmployeeFlow; import com.anplus.hr.domain.EmployeeFlow;
import com.anplus.hr.domain.EmployeeInfo; import com.anplus.hr.domain.EmployeeInfo;
import com.anplus.hr.domain.params.*; import com.anplus.hr.domain.params.*;
import com.anplus.hr.domain.vo.*; import com.anplus.hr.domain.vo.EmployeeFlowVo;
import com.anplus.hr.mapper.EmployeeFamilyMembersMapper; import com.anplus.hr.domain.vo.EmployeeInfoImportVo;
import com.anplus.hr.domain.vo.EmployeeInfoResumeVo;
import com.anplus.hr.domain.vo.EmployeeInfoVo;
import com.anplus.hr.mapper.EmployeeInfoMapper; import com.anplus.hr.mapper.EmployeeInfoMapper;
import com.anplus.hr.service.EmployeeAuditLogServ; import com.anplus.hr.service.EmployeeAuditLogServ;
import com.anplus.hr.service.EmployeeFlowServ; import com.anplus.hr.service.EmployeeFlowServ;
import com.anplus.hr.service.EmployeeInfoServ; import com.anplus.hr.service.EmployeeInfoServ;
import com.anplus.hr.service.EmployeeSysDeptServ; import com.anplus.hr.service.EmployeeSysDeptServ;
import com.anplus.hr.service.impl.command.EmployeeFamilyMembersCmdExe;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
...@@ -35,6 +38,7 @@ import lombok.RequiredArgsConstructor; ...@@ -35,6 +38,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.trans.service.impl.TransService; import org.dromara.trans.service.impl.TransService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import top.binfast.app.biz.sysapi.bean.model.oss.SysOss; import top.binfast.app.biz.sysapi.bean.model.oss.SysOss;
import top.binfast.app.biz.sysapi.bean.vo.sysOss.SysOssVo; import top.binfast.app.biz.sysapi.bean.vo.sysOss.SysOssVo;
...@@ -78,7 +82,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -78,7 +82,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
private final OssService ossService; private final OssService ossService;
private final SysOssServ sysOssServ; private final SysOssServ sysOssServ;
private final SysOssMapper sysOssMapper; private final SysOssMapper sysOssMapper;
private final EmployeeFamilyMembersMapper employeeFamilyMembersMapper; private final EmployeeFamilyMembersCmdExe familyMembersCmdExe;
private final EmployeeAsyncService employeeAsyncService; private final EmployeeAsyncService employeeAsyncService;
/** /**
...@@ -319,7 +323,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -319,7 +323,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
} }
} }
} }
employeeFamilyMembersMapper.insert(familyMembersList); familyMembersCmdExe.insertBatch(familyMembersList);
} }
// EmployeeDeptCheckAndSaveParam checkAndSaveParam = // EmployeeDeptCheckAndSaveParam checkAndSaveParam =
// new EmployeeDeptCheckAndSaveParam(deptNameGroups, SecurityUtils.getCurrentUserId(), SecurityUtils.getTenantId()); // new EmployeeDeptCheckAndSaveParam(deptNameGroups, SecurityUtils.getCurrentUserId(), SecurityUtils.getTenantId());
...@@ -392,7 +396,9 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -392,7 +396,9 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
@Override @Override
public EmployeeInfoVo queryById(Long id) { public EmployeeInfoVo queryById(Long id) {
EmployeeInfo employeeInfo = employeeInfoMapper.selectById(id); EmployeeInfo employeeInfo = employeeInfoMapper.selectById(id);
return MapstructUtils.convert(employeeInfo, EmployeeInfoVo.class); EmployeeInfoVo employeeInfoVo = MapstructUtils.convert(employeeInfo, EmployeeInfoVo.class);
familyMembersCmdExe.setFamilyMembersData(employeeInfoVo);
return employeeInfoVo;
} }
/** /**
...@@ -412,10 +418,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -412,10 +418,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
employeeAsyncService.matchingUrl(employeeInfoVo); employeeAsyncService.matchingUrl(employeeInfoVo);
} }
} }
List<EmployeeFamilyMembers> familyMembers = employeeFamilyMembersMapper.selectByEmployeeId(employeeInfo.getId()); familyMembersCmdExe.setFamilyMembersData(employeeInfoVo);
if (CollUtil.isNotEmpty(familyMembers)) {
employeeInfoVo.setFamilyMembers(MapstructUtils.convert(familyMembers, EmployeeFamilyMembersVo.class));
}
transService.transOne(employeeInfoVo); transService.transOne(employeeInfoVo);
return employeeInfoVo; return employeeInfoVo;
} }
...@@ -442,6 +445,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -442,6 +445,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
* @return 是否新增成功 * @return 是否新增成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByParam(EmployeeInfoParam param) { public Boolean insertByParam(EmployeeInfoParam param) {
EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class); EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class);
initDefaultEmployeeInfo(employeeInfo); initDefaultEmployeeInfo(employeeInfo);
...@@ -454,7 +458,12 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -454,7 +458,12 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
// employeeDeptServ.checkAndSaveDept(checkAndSaveParam); // employeeDeptServ.checkAndSaveDept(checkAndSaveParam);
employeeInfo.setEntryApplyStatus(HrFlowEnum.DRAFT.getStatus()); employeeInfo.setEntryApplyStatus(HrFlowEnum.DRAFT.getStatus());
employeeInfo.setStatus(HrStatusEnum.DRAFT.getStatus()); employeeInfo.setStatus(HrStatusEnum.DRAFT.getStatus());
return this.save(employeeInfo); familyMembersCmdExe.updateEmergencyInfo(param.getFamilyMembers(), employeeInfo);
boolean flag = this.save(employeeInfo);
if (flag) {
familyMembersCmdExe.insertByEmployee(param.getFamilyMembers(), employeeInfo);
}
return flag;
} }
private void initDefaultEmployeeInfo(EmployeeInfo employeeInfo) { private void initDefaultEmployeeInfo(EmployeeInfo employeeInfo) {
...@@ -473,10 +482,16 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -473,10 +482,16 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
* @return 是否修改成功 * @return 是否修改成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByParam(EmployeeInfoParam param) { public Boolean updateByParam(EmployeeInfoParam param) {
EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class); EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class);
EmployeeInfoCalcUtils.calcYearsOfService(employeeInfo); EmployeeInfoCalcUtils.calcYearsOfService(employeeInfo);
return this.updateById(employeeInfo); familyMembersCmdExe.updateEmergencyInfo(param.getFamilyMembers(), employeeInfo);
boolean flag = this.updateById(employeeInfo);
if (flag) {
familyMembersCmdExe.updateByEmployee(param.getFamilyMembers(), employeeInfo);
}
return flag;
} }
/** /**
...@@ -486,24 +501,17 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ ...@@ -486,24 +501,17 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
* @return 是否插入成功 * @return 是否插入成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertBaseInfoForH5(EmployeeBaseInfoParam param) { public Boolean insertBaseInfoForH5(EmployeeBaseInfoParam param) {
EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class); EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class);
// 更新员工年龄组 // 更新员工年龄组
EmployeeInfoCalcUtils.calcAgeGroup(employeeInfo); EmployeeInfoCalcUtils.calcAgeGroup(employeeInfo);
employeeInfo.setEntryApplyStatus(HrFlowEnum.DRAFT.getStatus()); employeeInfo.setEntryApplyStatus(HrFlowEnum.DRAFT.getStatus());
employeeInfo.setStatus(HrStatusEnum.DRAFT.getStatus()); employeeInfo.setStatus(HrStatusEnum.DRAFT.getStatus());
familyMembersCmdExe.updateEmergencyInfo(param.getFamilyMembers(), employeeInfo);
boolean flag = this.save(employeeInfo); boolean flag = this.save(employeeInfo);
if (flag && CollUtil.isNotEmpty(param.getFamilyMembers())) { if (flag) {
List<EmployeeFamilyMembersParam> familyMembers = param.getFamilyMembers(); familyMembersCmdExe.insertByEmployee(param.getFamilyMembers(), employeeInfo);
for (EmployeeFamilyMembersParam familyMember : familyMembers) {
familyMember.setEmployeeId(employeeInfo.getId());
if (HrEmployeeConstants.YES.equals(familyMember.getEmergencyFlag())) {
employeeInfo.setEmergencyContact(familyMember.getName());
employeeInfo.setEmergencyContactPhone(familyMember.getContact());
}
}
List<EmployeeFamilyMembers> employeeFamilyMembers = MapstructUtils.convert(familyMembers, EmployeeFamilyMembers.class);
employeeFamilyMembersMapper.insert(employeeFamilyMembers);
} }
return flag; return flag;
} }
......
package com.anplus.hr.service.impl.command;
import cn.hutool.core.collection.CollUtil;
import com.anplus.hr.constant.HrEmployeeConstants;
import com.anplus.hr.domain.EmployeeFamilyMembers;
import com.anplus.hr.domain.EmployeeInfo;
import com.anplus.hr.domain.params.EmployeeFamilyMembersParam;
import com.anplus.hr.domain.vo.EmployeeFamilyMembersVo;
import com.anplus.hr.domain.vo.EmployeeInfoVo;
import com.anplus.hr.mapper.EmployeeFamilyMembersMapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import lombok.RequiredArgsConstructor;
import org.dromara.trans.service.impl.TransService;
import org.springframework.stereotype.Component;
import top.binfast.common.core.util.MapstructUtils;
import java.util.List;
/**
* @author 刘斌
* @date 2025/12/4 16:41
*/
@RequiredArgsConstructor
@Component
public class EmployeeFamilyMembersCmdExe {
private final EmployeeFamilyMembersMapper employeeFamilyMembersMapper;
private final TransService transService;
/**
* 更新紧急联系人等
*/
public void updateEmergencyInfo(List<EmployeeFamilyMembersParam> familyMembers, EmployeeInfo employeeInfo) {
if (CollUtil.isEmpty(familyMembers)) {
return;
}
for (EmployeeFamilyMembersParam familyMember : familyMembers) {
if (HrEmployeeConstants.YES.equals(familyMember.getEmergencyFlag())) {
employeeInfo.setEmergencyContact(familyMember.getName());
employeeInfo.setEmergencyContactPhone(familyMember.getContact());
}
}
}
/**
* 批量插入
*/
public boolean insertByEmployee(List<EmployeeFamilyMembersParam> familyMembers, EmployeeInfo employeeInfo) {
if (CollUtil.isEmpty(familyMembers)) {
return false;
}
Long employeeId = employeeInfo.getId();
Long tenantId = employeeInfo.getTenantId();
List<EmployeeFamilyMembers> employeeFamilyMembers = MapstructUtils.convert(familyMembers, EmployeeFamilyMembers.class);
for (EmployeeFamilyMembers employeeFamilyMember : employeeFamilyMembers) {
employeeFamilyMember.setEmployeeId(employeeId);
employeeFamilyMember.setTenantId(tenantId);
}
return SqlHelper.retBool(employeeFamilyMembersMapper.insertOrUpdate(employeeFamilyMembers));
}
/**
* 批量更新
*/
public boolean updateByEmployee(List<EmployeeFamilyMembersParam> familyMembers, EmployeeInfo employeeInfo) {
if (CollUtil.isEmpty(familyMembers)) {
return false;
}
Long employeeId = employeeInfo.getId();
boolean exists = employeeFamilyMembersMapper.exists(new LambdaUpdateWrapper<EmployeeFamilyMembers>()
.eq(EmployeeFamilyMembers::getEmployeeId, employeeId));
if (exists) {
employeeFamilyMembersMapper.deleteByEmployeeId(employeeId);
}
return insertByEmployee(familyMembers, employeeInfo);
}
/**
* 根据员工id赋值家庭成员信息
*/
public void setFamilyMembersData(EmployeeInfoVo employeeInfoVo) {
List<EmployeeFamilyMembers> familyMembers = employeeFamilyMembersMapper.selectByEmployeeId(employeeInfoVo.getId());
if (CollUtil.isNotEmpty(familyMembers)) {
List<EmployeeFamilyMembersVo> familyMembersVos = MapstructUtils.convert(familyMembers, EmployeeFamilyMembersVo.class);
transService.transBatch(familyMembersVos);
employeeInfoVo.setFamilyMembers(familyMembersVos);
}
}
/**
* 批量插入导入数据
*/
public void insertBatch(List<EmployeeFamilyMembers> list) {
employeeFamilyMembersMapper.insert(list);
}
}
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