Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsEmployeeChangeServiceImpl.java
Joshi f7fdc03b5b feat(wms): 添加员工转正接口
- 在员工异动类型中新增转正选项(类型值为2)
- 更新数据库实体和业务对象中的异动类型定义
- 实现员工转正业务逻辑,包括状态验证和数据更新
- 添加转正API接口和相应的控制器方法
- 更新相关注释和文档以反映新的转正功能
- 修改Excel导出功能以支持转正类型的显示
2026-03-18 10:53:14 +08:00

248 lines
9.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.klp.domain.bo.WmsEmployeeChangeBo;
import com.klp.domain.vo.WmsEmployeeChangeVo;
import com.klp.domain.WmsEmployeeChange;
import com.klp.domain.WmsEmployeeInfo;
import com.klp.mapper.WmsEmployeeChangeMapper;
import com.klp.mapper.WmsEmployeeInfoMapper;
import com.klp.service.IWmsEmployeeChangeService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 员工异动(入职/离职/转正Service业务层处理
*
* @author klp
* @date 2026-03-14
*/
@RequiredArgsConstructor
@Service
public class WmsEmployeeChangeServiceImpl implements IWmsEmployeeChangeService {
private final WmsEmployeeChangeMapper baseMapper;
private final WmsEmployeeInfoMapper wmsEmployeeInfoMapper;
/**
* 查询员工异动(入职/离职/转正)
*/
@Override
public WmsEmployeeChangeVo queryById(Long changeId){
WmsEmployeeChangeVo vo = baseMapper.selectVoById(changeId);
if (vo != null && vo.getInfoId() != null) {
WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(vo.getInfoId());
vo.setWmsEmployeeInfo(employee);
}
return vo;
}
/**
* 查询员工异动(入职/离职/转正)列表
*/
@Override
public TableDataInfo<WmsEmployeeChangeVo> queryPageList(WmsEmployeeChangeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsEmployeeChange> lqw = buildQueryWrapper(bo);
Page<WmsEmployeeChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
for (WmsEmployeeChangeVo vo : result.getRecords()) {
WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(vo.getInfoId());
vo.setWmsEmployeeInfo(employee);
}
return TableDataInfo.build(result);
}
/**
* 查询员工异动(入职/离职/转正)列表
*/
@Override
public List<WmsEmployeeChangeVo> queryList(WmsEmployeeChangeBo bo) {
LambdaQueryWrapper<WmsEmployeeChange> lqw = buildQueryWrapper(bo);
List<WmsEmployeeChangeVo> list = baseMapper.selectVoList(lqw);
for (WmsEmployeeChangeVo vo : list) {
WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(vo.getInfoId());
vo.setWmsEmployeeInfo(employee);
}
return list;
}
private LambdaQueryWrapper<WmsEmployeeChange> buildQueryWrapper(WmsEmployeeChangeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsEmployeeChange> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getInfoId() != null, WmsEmployeeChange::getInfoId, bo.getInfoId());
lqw.eq(bo.getChangeType() != null, WmsEmployeeChange::getChangeType, bo.getChangeType());
lqw.eq(bo.getChangeTime() != null, WmsEmployeeChange::getChangeTime, bo.getChangeTime());
lqw.eq(StringUtils.isNotBlank(bo.getChangeReason()), WmsEmployeeChange::getChangeReason, bo.getChangeReason());
lqw.eq(StringUtils.isNotBlank(bo.getChangeHandler()), WmsEmployeeChange::getChangeHandler, bo.getChangeHandler());
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), WmsEmployeeChange::getAttachment, bo.getAttachment());
return lqw;
}
/**
* 新增员工异动(入职/离职/转正)
*/
@Override
public Boolean insertByBo(WmsEmployeeChangeBo bo) {
WmsEmployeeChange add = BeanUtil.toBean(bo, WmsEmployeeChange.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setChangeId(add.getChangeId());
}
return flag;
}
/**
* 修改员工异动(入职/离职/转正)
*/
@Override
public Boolean updateByBo(WmsEmployeeChangeBo bo) {
WmsEmployeeChange update = BeanUtil.toBean(bo, WmsEmployeeChange.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsEmployeeChange entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除员工异动(入职/离职/转正)
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 员工入职
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean employeeEntry(WmsEmployeeChangeBo bo) {
WmsEmployeeInfo employee = new WmsEmployeeInfo();
employee.setSerialNumber(bo.getSerialNumber());
employee.setDept(bo.getDept());
employee.setJobType(bo.getJobType());
employee.setName(bo.getName());
employee.setIdCard(bo.getIdCard());
employee.setAge(bo.getAge());
employee.setGender(bo.getGender());
employee.setEducation(bo.getEducation());
employee.setHomeAddress(bo.getHomeAddress());
employee.setPhone(bo.getPhone());
employee.setEntryTime(bo.getEntryTime());
employee.setEmergencyContact(bo.getEmergencyContact());
employee.setRelationship(bo.getRelationship());
employee.setEmergencyContactPhone(bo.getEmergencyContactPhone());
employee.setSocialInsuranceType(bo.getSocialInsuranceType());
employee.setRemark(bo.getInfoRemark());
employee.setIsLeave(0);
boolean flag = wmsEmployeeInfoMapper.insert(employee) > 0;
if (!flag) {
return false;
}
Long infoId = employee.getInfoId();
WmsEmployeeChange change = new WmsEmployeeChange();
change.setInfoId(infoId);
change.setChangeType(0);
change.setChangeTime(bo.getChangeTime());
change.setChangeHandler(bo.getChangeHandler());
change.setAttachment(bo.getAttachment());
change.setCreateBy(bo.getCreateBy());
change.setRemark(bo.getRemark());
return baseMapper.insert(change) > 0;
}
/**
* 员工离职
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean employeeLeave(WmsEmployeeChangeBo bo) {
if (bo.getInfoId() == null) {
throw new RuntimeException("员工ID不能为空");
}
WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(bo.getInfoId());
if (employee == null) {
throw new RuntimeException("员工不存在");
}
if (employee.getIsLeave() != null && employee.getIsLeave() == 1) {
throw new RuntimeException("员工已离职");
}
employee.setIsLeave(1);
boolean flag = wmsEmployeeInfoMapper.updateById(employee) > 0;
if (!flag) {
return false;
}
WmsEmployeeChange change = new WmsEmployeeChange();
change.setInfoId(bo.getInfoId());
change.setChangeType(1);
change.setChangeTime(bo.getChangeTime());
change.setChangeReason(bo.getChangeReason());
change.setChangeHandler(bo.getChangeHandler());
change.setAttachment(bo.getAttachment());
change.setCreateBy(bo.getCreateBy());
change.setRemark(bo.getRemark());
return baseMapper.insert(change) > 0;
}
/**
* 员工转正
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean employeeRegular(WmsEmployeeChangeBo bo) {
if (bo.getInfoId() == null) {
throw new RuntimeException("员工ID不能为空");
}
WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(bo.getInfoId());
if (employee == null) {
throw new RuntimeException("员工不存在");
}
if (employee.getIsLeave() != null && employee.getIsLeave() == 1) {
throw new RuntimeException("员工已离职,无法转正");
}
if (employee.getIsRegular() != null && employee.getIsRegular() == 1) {
throw new RuntimeException("员工已转正");
}
employee.setIsRegular(1);
employee.setRegularTime(bo.getChangeTime());
boolean flag = wmsEmployeeInfoMapper.updateById(employee) > 0;
if (!flag) {
return false;
}
WmsEmployeeChange change = new WmsEmployeeChange();
change.setInfoId(bo.getInfoId());
change.setChangeType(2);
change.setChangeTime(bo.getChangeTime());
change.setChangeReason(bo.getChangeReason());
change.setChangeHandler(bo.getChangeHandler());
change.setAttachment(bo.getAttachment());
change.setCreateBy(bo.getCreateBy());
change.setRemark(bo.getRemark());
return baseMapper.insert(change) > 0;
}
}