From 9b82d7230a9058793a2c7de1af456256f3ba8e8a Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 14 Mar 2026 10:40:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E5=85=A5=E8=81=8C=E7=A6=BB=E8=81=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsEmployeeChangeService 中添加 employeeEntry 和 employeeLeave 方法 - 扩展 WmsEmployeeChangeBo 类增加员工详细信息字段 - 在 WmsEmployeeChangeController 中添加入职和离职接口 - 实现 WmsEmployeeChangeServiceImpl 的入职离职业务逻辑 - 集成员工信息查询功能并在查询结果中关联员工详情 - 添加事务管理确保数据一致性操作 --- .../WmsEmployeeChangeController.java | 20 ++++ .../klp/domain/bo/WmsEmployeeChangeBo.java | 79 +++++++++++++++ .../klp/domain/vo/WmsEmployeeChangeVo.java | 7 ++ .../service/IWmsEmployeeChangeService.java | 10 ++ .../impl/WmsEmployeeChangeServiceImpl.java | 98 ++++++++++++++++++- 5 files changed, 212 insertions(+), 2 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsEmployeeChangeController.java b/klp-wms/src/main/java/com/klp/controller/WmsEmployeeChangeController.java index 6231171a..a60c876d 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsEmployeeChangeController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsEmployeeChangeController.java @@ -96,4 +96,24 @@ public class WmsEmployeeChangeController extends BaseController { @PathVariable Long[] changeIds) { return toAjax(iWmsEmployeeChangeService.deleteWithValidByIds(Arrays.asList(changeIds), true)); } + + /** + * 员工入职 + */ + @Log(title = "员工入职", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/entry") + public R entry(@Validated(AddGroup.class) @RequestBody WmsEmployeeChangeBo bo) { + return toAjax(iWmsEmployeeChangeService.employeeEntry(bo)); + } + + /** + * 员工离职 + */ + @Log(title = "员工离职", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/leave") + public R leave(@Validated(AddGroup.class) @RequestBody WmsEmployeeChangeBo bo) { + return toAjax(iWmsEmployeeChangeService.employeeLeave(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsEmployeeChangeBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsEmployeeChangeBo.java index 548583a4..af425f43 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsEmployeeChangeBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsEmployeeChangeBo.java @@ -59,5 +59,84 @@ public class WmsEmployeeChangeBo extends BaseEntity { */ private String remark; + /** + * 序号 + */ + private Long serialNumber; + + /** + * 部门 + */ + private String dept; + + /** + * 岗位工种 + */ + private String jobType; + + /** + * 姓名 + */ + private String name; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 年龄 + */ + private Long age; + + /** + * 性别(男/女) + */ + private String gender; + + /** + * 学历 + */ + private String education; + + /** + * 家庭住址 + */ + private String homeAddress; + + /** + * 联系电话 + */ + private String phone; + + /** + * 入职时间 + */ + private Date entryTime; + + /** + * 紧急联系人 + */ + private String emergencyContact; + + /** + * 关系 + */ + private String relationship; + + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + + /** + * 社保类型(三险/五险) + */ + private String socialInsuranceType; + + // infoRemart + private String infoRemark; + + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsEmployeeChangeVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsEmployeeChangeVo.java index f69ce77b..bdc00358 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsEmployeeChangeVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsEmployeeChangeVo.java @@ -1,11 +1,13 @@ package com.klp.domain.vo; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; +import com.klp.domain.WmsEmployeeInfo; import lombok.Data; @@ -70,6 +72,11 @@ public class WmsEmployeeChangeVo { */ @ExcelProperty(value = "备注") private String remark; + /** + * 员工信息 + */ + private WmsEmployeeInfo wmsEmployeeInfo; + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsEmployeeChangeService.java b/klp-wms/src/main/java/com/klp/service/IWmsEmployeeChangeService.java index 6eeddc02..df1d64fb 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsEmployeeChangeService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsEmployeeChangeService.java @@ -46,4 +46,14 @@ public interface IWmsEmployeeChangeService { * 校验并批量删除员工异动(入职/离职)信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 员工入职 + */ + Boolean employeeEntry(WmsEmployeeChangeBo bo); + + /** + * 员工离职 + */ + Boolean employeeLeave(WmsEmployeeChangeBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsEmployeeChangeServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsEmployeeChangeServiceImpl.java index 2577c20b..c7c74b1b 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsEmployeeChangeServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsEmployeeChangeServiceImpl.java @@ -9,10 +9,13 @@ 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; @@ -30,13 +33,19 @@ import java.util.Collection; public class WmsEmployeeChangeServiceImpl implements IWmsEmployeeChangeService { private final WmsEmployeeChangeMapper baseMapper; + private final WmsEmployeeInfoMapper wmsEmployeeInfoMapper; /** * 查询员工异动(入职/离职) */ @Override public WmsEmployeeChangeVo queryById(Long changeId){ - return baseMapper.selectVoById(changeId); + WmsEmployeeChangeVo vo = baseMapper.selectVoById(changeId); + if (vo != null && vo.getInfoId() != null) { + WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(vo.getInfoId()); + vo.setWmsEmployeeInfo(employee); + } + return vo; } /** @@ -46,6 +55,10 @@ public class WmsEmployeeChangeServiceImpl implements IWmsEmployeeChangeService { public TableDataInfo queryPageList(WmsEmployeeChangeBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + for (WmsEmployeeChangeVo vo : result.getRecords()) { + WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(vo.getInfoId()); + vo.setWmsEmployeeInfo(employee); + } return TableDataInfo.build(result); } @@ -55,7 +68,12 @@ public class WmsEmployeeChangeServiceImpl implements IWmsEmployeeChangeService { @Override public List queryList(WmsEmployeeChangeBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List list = baseMapper.selectVoList(lqw); + for (WmsEmployeeChangeVo vo : list) { + WmsEmployeeInfo employee = wmsEmployeeInfoMapper.selectById(vo.getInfoId()); + vo.setWmsEmployeeInfo(employee); + } + return list; } private LambdaQueryWrapper buildQueryWrapper(WmsEmployeeChangeBo bo) { @@ -111,4 +129,80 @@ public class WmsEmployeeChangeServiceImpl implements IWmsEmployeeChangeService { } 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; + } }