Commit a55e0959 authored by 刘斌's avatar 刘斌

feat: 增加家庭成员3

parent e0fee223
......@@ -15,6 +15,7 @@ import top.binfast.common.excel.annotion.ExcelDictFormat;
import top.binfast.common.excel.converters.ExcelDictConvert;
import java.time.LocalDate;
import java.util.List;
/**
* 员工信息业务对象 employee_info
......@@ -554,6 +555,11 @@ public class EmployeeInfoParam {
*/
private String antaiCommunityInfo;
/**
* 家庭成员
*/
private List<EmployeeFamilyMembersParam> familyMembers;
/**
* 离职类型
*/
......
package com.anplus.hr.domain.vo;
import com.anplus.hr.constant.HrConstant;
import com.anplus.hr.domain.EmployeeFamilyMembers;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
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.converters.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
......@@ -23,7 +27,7 @@ import java.io.Serializable;
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = EmployeeFamilyMembers.class)
public class EmployeeFamilyMembersVo implements Serializable {
public class EmployeeFamilyMembersVo implements TransPojo, Serializable {
@Serial
private static final long serialVersionUID = 1L;
......@@ -73,7 +77,8 @@ public class EmployeeFamilyMembersVo implements Serializable {
* 是否为紧急联系人
*/
@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;
......
......@@ -21,4 +21,9 @@ public interface EmployeeFamilyMembersMapper extends BinBaseMapper<EmployeeFamil
.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;
import com.anplus.hr.domain.EmployeeInfo;
import com.anplus.hr.domain.params.EmployeeInfoListParam;
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.EmployeeInfoResignVo;
import com.anplus.hr.domain.vo.EmployeeInfoVo;
import com.anplus.hr.mapper.EmployeeFamilyMembersMapper;
import com.anplus.hr.mapper.EmployeeInfoMapper;
import com.anplus.hr.service.EmployeeInfoResignServ;
import com.anplus.hr.service.EmployeeInfoServ;
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.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -52,7 +51,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
private final EmployeeInfoServ employeeInfoServ;
private final TransService transService;
private final SysOssMapper sysOssMapper;
private final EmployeeFamilyMembersMapper employeeFamilyMembersMapper;
private final EmployeeFamilyMembersCmdExe familyMembersCmdExe;
private final EmployeeAsyncService employeeAsyncService;
private final EmployeeSysDeptServ employeeSysDeptServ;
......@@ -171,7 +170,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
}
}
}
employeeFamilyMembersMapper.insert(familyMembersList);
familyMembersCmdExe.insertBatch(familyMembersList);
}
}
StringBuilder message;
......@@ -202,10 +201,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
employeeAsyncService.matchingUrl(employeeInfoVo);
}
}
List<EmployeeFamilyMembers> familyMembers = employeeFamilyMembersMapper.selectByEmployeeId(employeeInfo.getId());
if (CollUtil.isNotEmpty(familyMembers)) {
employeeInfoVo.setFamilyMembers(MapstructUtils.convert(familyMembers, EmployeeFamilyMembersVo.class));
}
familyMembersCmdExe.setFamilyMembersData(employeeInfoVo);
transService.transOne(employeeInfoVo);
return employeeInfoVo;
}
......
......@@ -17,13 +17,16 @@ import com.anplus.hr.domain.EmployeeFamilyMembers;
import com.anplus.hr.domain.EmployeeFlow;
import com.anplus.hr.domain.EmployeeInfo;
import com.anplus.hr.domain.params.*;
import com.anplus.hr.domain.vo.*;
import com.anplus.hr.mapper.EmployeeFamilyMembersMapper;
import com.anplus.hr.domain.vo.EmployeeFlowVo;
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.service.EmployeeAuditLogServ;
import com.anplus.hr.service.EmployeeFlowServ;
import com.anplus.hr.service.EmployeeInfoServ;
import com.anplus.hr.service.EmployeeSysDeptServ;
import com.anplus.hr.service.impl.command.EmployeeFamilyMembersCmdExe;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
......@@ -35,6 +38,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.trans.service.impl.TransService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import top.binfast.app.biz.sysapi.bean.model.oss.SysOss;
import top.binfast.app.biz.sysapi.bean.vo.sysOss.SysOssVo;
......@@ -78,7 +82,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
private final OssService ossService;
private final SysOssServ sysOssServ;
private final SysOssMapper sysOssMapper;
private final EmployeeFamilyMembersMapper employeeFamilyMembersMapper;
private final EmployeeFamilyMembersCmdExe familyMembersCmdExe;
private final EmployeeAsyncService employeeAsyncService;
/**
......@@ -319,7 +323,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
}
}
}
employeeFamilyMembersMapper.insert(familyMembersList);
familyMembersCmdExe.insertBatch(familyMembersList);
}
// EmployeeDeptCheckAndSaveParam checkAndSaveParam =
// new EmployeeDeptCheckAndSaveParam(deptNameGroups, SecurityUtils.getCurrentUserId(), SecurityUtils.getTenantId());
......@@ -392,7 +396,9 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
@Override
public EmployeeInfoVo queryById(Long 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
employeeAsyncService.matchingUrl(employeeInfoVo);
}
}
List<EmployeeFamilyMembers> familyMembers = employeeFamilyMembersMapper.selectByEmployeeId(employeeInfo.getId());
if (CollUtil.isNotEmpty(familyMembers)) {
employeeInfoVo.setFamilyMembers(MapstructUtils.convert(familyMembers, EmployeeFamilyMembersVo.class));
}
familyMembersCmdExe.setFamilyMembersData(employeeInfoVo);
transService.transOne(employeeInfoVo);
return employeeInfoVo;
}
......@@ -442,6 +445,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByParam(EmployeeInfoParam param) {
EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class);
initDefaultEmployeeInfo(employeeInfo);
......@@ -454,7 +458,12 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
// employeeDeptServ.checkAndSaveDept(checkAndSaveParam);
employeeInfo.setEntryApplyStatus(HrFlowEnum.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) {
......@@ -473,10 +482,16 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByParam(EmployeeInfoParam param) {
EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class);
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
* @return 是否插入成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertBaseInfoForH5(EmployeeBaseInfoParam param) {
EmployeeInfo employeeInfo = MapstructUtils.convert(param, EmployeeInfo.class);
// 更新员工年龄组
EmployeeInfoCalcUtils.calcAgeGroup(employeeInfo);
employeeInfo.setEntryApplyStatus(HrFlowEnum.DRAFT.getStatus());
employeeInfo.setStatus(HrStatusEnum.DRAFT.getStatus());
familyMembersCmdExe.updateEmergencyInfo(param.getFamilyMembers(), employeeInfo);
boolean flag = this.save(employeeInfo);
if (flag && CollUtil.isNotEmpty(param.getFamilyMembers())) {
List<EmployeeFamilyMembersParam> familyMembers = param.getFamilyMembers();
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);
if (flag) {
familyMembersCmdExe.insertByEmployee(param.getFamilyMembers(), employeeInfo);
}
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