入职离职初步完成

This commit is contained in:
2025-02-16 18:41:56 +08:00
parent 75acf69848
commit 15a8480784
33 changed files with 3438 additions and 5 deletions

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.EmployeeOffboardingVo;
import com.ruoyi.oa.domain.bo.EmployeeOffboardingBo;
import com.ruoyi.oa.service.IEmployeeOffboardingService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 离职管理
*
* @author hdka
* @date 2025-02-16
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/offboarding")
public class EmployeeOffboardingController extends BaseController {
private final IEmployeeOffboardingService iEmployeeOffboardingService;
/**
* 查询离职管理列表
*/
@SaCheckPermission("system:offboarding:list")
@GetMapping("/list")
public TableDataInfo<EmployeeOffboardingVo> list(EmployeeOffboardingBo bo, PageQuery pageQuery) {
return iEmployeeOffboardingService.queryPageList(bo, pageQuery);
}
/**
* 导出离职管理列表
*/
@SaCheckPermission("system:offboarding:export")
@Log(title = "离职管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(EmployeeOffboardingBo bo, HttpServletResponse response) {
List<EmployeeOffboardingVo> list = iEmployeeOffboardingService.queryList(bo);
ExcelUtil.exportExcel(list, "离职管理", EmployeeOffboardingVo.class, response);
}
/**
* 获取离职管理详细信息
*
* @param offboardingId 主键
*/
@SaCheckPermission("system:offboarding:query")
@GetMapping("/{offboardingId}")
public R<EmployeeOffboardingVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long offboardingId) {
return R.ok(iEmployeeOffboardingService.queryById(offboardingId));
}
/**
* 新增离职管理
*/
@SaCheckPermission("system:offboarding:add")
@Log(title = "离职管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody EmployeeOffboardingBo bo) {
return toAjax(iEmployeeOffboardingService.insertByBo(bo));
}
/**
* 修改离职管理
*/
@SaCheckPermission("system:offboarding:edit")
@Log(title = "离职管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody EmployeeOffboardingBo bo) {
return toAjax(iEmployeeOffboardingService.updateByBo(bo));
}
/**
* 删除离职管理
*
* @param offboardingIds 主键串
*/
@SaCheckPermission("system:offboarding:remove")
@Log(title = "离职管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{offboardingIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] offboardingIds) {
return toAjax(iEmployeeOffboardingService.deleteWithValidByIds(Arrays.asList(offboardingIds), true));
}
}

View File

@@ -0,0 +1,109 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.bo.EmployeeOnboardingBo;
import com.ruoyi.oa.domain.vo.EmployeeOnboardingVo;
import com.ruoyi.oa.service.IEmployeeOnboardingService;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入职管理
*
* @author hdka
* @date 2025-02-15
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/onboarding")
public class EmployeeOnboardingController extends BaseController {
private final IEmployeeOnboardingService iEmployeeOnboardingService;
/**
* 查询入职管理列表
*/
@SaCheckPermission("system:onboarding:list")
@GetMapping("/list")
public TableDataInfo<EmployeeOnboardingVo> list(EmployeeOnboardingBo bo, PageQuery pageQuery) {
return iEmployeeOnboardingService.queryPageList(bo, pageQuery);
}
/**
* 导出入职管理列表
*/
@SaCheckPermission("system:onboarding:export")
@Log(title = "入职管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(EmployeeOnboardingBo bo, HttpServletResponse response) {
List<EmployeeOnboardingVo> list = iEmployeeOnboardingService.queryList(bo);
ExcelUtil.exportExcel(list, "入职管理", EmployeeOnboardingVo.class, response);
}
/**
* 获取入职管理详细信息
*
* @param onboardingId 主键
*/
@SaCheckPermission("system:onboarding:query")
@GetMapping("/{onboardingId}")
public R<EmployeeOnboardingVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long onboardingId) {
return R.ok(iEmployeeOnboardingService.queryById(onboardingId));
}
/**
* 新增入职管理
*/
@SaCheckPermission("system:onboarding:add")
@Log(title = "入职管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody EmployeeOnboardingBo bo) {
return toAjax(iEmployeeOnboardingService.insertByBo(bo));
}
/**
* 修改入职管理
*/
@SaCheckPermission("system:onboarding:edit")
@Log(title = "入职管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody EmployeeOnboardingBo bo) {
return toAjax(iEmployeeOnboardingService.updateByBo(bo));
}
/**
* 删除入职管理
*
* @param onboardingIds 主键串
*/
@SaCheckPermission("system:onboarding:remove")
@Log(title = "入职管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{onboardingIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] onboardingIds) {
return toAjax(iEmployeeOnboardingService.deleteWithValidByIds(Arrays.asList(onboardingIds), true));
}
}

View File

@@ -0,0 +1,98 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 离职管理对象 employee_offboarding
*
* @author hdka
* @date 2025-02-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("employee_offboarding")
public class EmployeeOffboarding extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 离职记录ID
*/
@TableId(value = "offboarding_id")
private Long offboardingId;
/**
* 用户ID (外键)
*/
private Long userId;
/**
* 离职日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date resignationDate;
/**
* 离职面谈
*/
private Integer exitInterview;
/**
* 工作交接
*/
private Integer handoverCompleted;
/**
* 离职原因
*/
private String exitReason;
/**
* 最终结算工资
*/
private BigDecimal finalSalary;
/**
* 离职申请
*/
private Integer resignationApplicationSubmitted;
/**
* 数据备份
*/
private Integer dataBackupCompleted;
/**
* 是否已安排工作交接
*/
private Integer handoverArranged;
/**
* 薪资结算是否完成
*/
private Integer salarySettled;
/**
* 福利结算是否完成
*/
private Integer benefitsSettled;
/**
* 离职证明
*/
private Integer exitCertificateIssued;
/**
* 确认离职
*/
private Integer offboardingConfirmed;
/**
* 备注
*/
private String remark;
/**
* 删除标识
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,144 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 入职管理对象 employee_onboarding
*
* @author hdka
* @date 2025-02-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("employee_onboarding")
public class EmployeeOnboarding extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 入职记录ID
*/
@TableId(value = "onboarding_id")
private Long onboardingId;
/**
* 证件照
*/
private String idPhoto;
/**
* 用户ID (外键)
*/
private Long userId;
/**
* 入职日期
*/
private Date joiningDate;
/**
* 试用期结束日期
*/
private Date probationPeriodEnd;
private String address;
/**
* 直属经理ID
*/
private Long managerId;
/**
* 是否提交入职资料
*/
private Integer documentsSubmitted;
/**
* 是否完成入职培训
*/
private Integer orientationCompleted;
/**
* 入职状态(pending,completed,onboarding)
*/
private Long joiningStatus;
/**
* 是否完成招聘与面试
*/
private Integer recruitmentCompleted;
/**
* 是否已发放Offer
*/
private Integer offerIssued;
/**
* 是否已签署合同
*/
private Integer contractSigned;
/**
* 入职材料/工作准备是否完成
*/
private Integer materialsPrepared;
/**
* 是否完成入职培训
*/
private Integer trainingCompleted;
/**
* 是否完成工作条件准备(权限分配、工位等)
*/
private Integer workConditionsPrepared;
/**
* 最高学历
*/
private String highestDegree;
/**
* 备注
*/
private String remark;
/**
* 删除标识
*/
@TableLogic
private Integer delFlag;
/**
* 出生日期
*/
private Date birthDate;
/**
* 民族
*/
private String ethnicity;
/**
* 转正日期
*/
private Date confirmDate;
/**
* 婚姻状态
*/
private String maritalStatus;
/**
* 政治面貌
*/
private String politicalStatus;
/**
* 身高
*/
private Long height;
/**
* 体重
*/
private Long weight;
/**
* 编制类型
*/
private String staffType;
/**
* 紧急联系人1
*/
private String emergencyContact1;
/**
* 紧急联系人2
*/
private String emergencyContact2;
}

View File

@@ -0,0 +1,106 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 离职管理业务对象 employee_offboarding
*
* @author hdka
* @date 2025-02-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmployeeOffboardingBo extends BaseEntity {
/**
* 离职记录ID
*/
private Long offboardingId;
/**
* 用户ID (外键)
*/
private Long userId;
/**
* 离职日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date resignationDate;
/**
* 离职面谈
*/
private Integer exitInterview;
/**
* 工作交接
*/
private Integer handoverCompleted;
/**
* 离职原因
*/
private String exitReason;
/**
* 最终结算工资
*/
private BigDecimal finalSalary;
/**
* 离职申请
*/
private Integer resignationApplicationSubmitted;
/**
* 数据备份
*/
private Integer dataBackupCompleted;
/**
* 是否已安排工作交接
*/
private Integer handoverArranged;
/**
* 薪资结算是否完成
*/
private Integer salarySettled;
/**
* 福利结算是否完成
*/
private Integer benefitsSettled;
/**
* 离职证明
*/
private Integer exitCertificateIssued;
/**
* 确认离职
*/
private Integer offboardingConfirmed;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,174 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 入职管理业务对象 employee_onboarding
*
* @author hdka
* @date 2025-02-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmployeeOnboardingBo extends BaseEntity {
/**
* 入职记录ID
*/
private Long onboardingId;
/**
* 证件照
*/
private String idPhoto;
/**
* 用户ID (外键)
*/
private Long userId;
/**
* 入职日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date joiningDate;
/**
* 试用期结束日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date probationPeriodEnd;
/**
* 直属经理ID
*/
private Long managerId;
/**
* 是否提交入职资料
*/
private Integer documentsSubmitted;
/**
* 是否完成入职培训
*/
private Integer orientationCompleted;
/**
* 入职状态(pending,completed,onboarding)
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Long joiningStatus;
/**
* 是否完成招聘与面试
*/
private Integer recruitmentCompleted;
/**
* 是否已发放Offer
*/
private Integer offerIssued;
/**
* 是否已签署合同
*/
private Integer contractSigned;
/**
* 入职材料/工作准备是否完成
*/
private Integer materialsPrepared;
/**
* 是否完成入职培训
*/
private Integer trainingCompleted;
/**
* 是否完成工作条件准备(权限分配、工位等)
*/
private Integer workConditionsPrepared;
/**
* 最高学历
*/
private String highestDegree;
/**
* 备注
*/
private String remark;
/**
* 出生日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthDate;
/**
* 民族
*/
private String ethnicity;
/**
* 转正日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date confirmDate;
/**
* 婚姻状态
*/
private String maritalStatus;
/**
* 政治面貌
*/
private String politicalStatus;
/**
* 身高
*/
private Long height;
/**
* 体重
*/
private Long weight;
/**
* 编制类型
*/
private String staffType;
/**
* 紧急联系人1
*/
private String emergencyContact1;
/**
* 紧急联系人2
*/
private String emergencyContact2;
private String address;
}

View File

@@ -0,0 +1,123 @@
package com.ruoyi.oa.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;
/**
* 离职管理视图对象 employee_offboarding
*
* @author hdka
* @date 2025-02-16
*/
@Data
@ExcelIgnoreUnannotated
public class EmployeeOffboardingVo {
private static final long serialVersionUID = 1L;
/**
* 离职记录ID
*/
@ExcelProperty(value = "离职记录ID")
private Long offboardingId;
/**
* 用户ID (外键)
*/
@ExcelProperty(value = "用户ID (外键)")
private Long userId;
/**
* 离职日期
*/
@ExcelProperty(value = "离职日期")
private Date resignationDate;
/**
* 离职面谈
*/
@ExcelProperty(value = "离职面谈")
private Integer exitInterview;
/**
* 工作交接
*/
@ExcelProperty(value = "工作交接")
private Integer handoverCompleted;
/**
* 离职原因
*/
@ExcelProperty(value = "离职原因")
private String exitReason;
/**
* 最终结算工资
*/
@ExcelProperty(value = "最终结算工资")
private BigDecimal finalSalary;
/**
* 离职申请
*/
@ExcelProperty(value = "离职申请")
private Integer resignationApplicationSubmitted;
/**
* 数据备份
*/
@ExcelProperty(value = "数据备份")
private Integer dataBackupCompleted;
/**
* 是否已安排工作交接
*/
@ExcelProperty(value = "是否已安排工作交接")
private Integer handoverArranged;
/**
* 薪资结算是否完成
*/
@ExcelProperty(value = "薪资结算是否完成")
private Integer salarySettled;
/**
* 福利结算是否完成
*/
@ExcelProperty(value = "福利结算是否完成")
private Integer benefitsSettled;
/**
* 离职证明
*/
@ExcelProperty(value = "离职证明")
private Integer exitCertificateIssued;
/**
* 确认离职
*/
@ExcelProperty(value = "确认离职")
private Integer offboardingConfirmed;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 姓名
*/
private String nickName;
}

View File

@@ -0,0 +1,219 @@
package com.ruoyi.oa.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.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.oa.domain.EmployeeOnboarding;
import lombok.Data;
import java.util.Date;
/**
* 入职管理视图对象 employee_onboarding
*
* @author hdka
* @date 2025-02-15
*/
@Data
@ExcelIgnoreUnannotated
public class EmployeeOnboardingVo extends EmployeeOnboarding {
private static final long serialVersionUID = 1L;
/**
* 入职记录ID
*/
@ExcelProperty(value = "入职记录ID")
private Long onboardingId;
/**
* 证件照
*/
@ExcelProperty(value = "证件照")
private String idPhoto;
/**
* 用户ID (外键)
*/
@ExcelProperty(value = "用户ID (外键)")
private Long userId;
/**
* 入职日期
*/
@ExcelProperty(value = "入职日期")
private Date joiningDate;
/**
* 试用期结束日期
*/
@ExcelProperty(value = "试用期结束日期")
private Date probationPeriodEnd;
/**
* 直属经理ID
*/
@ExcelProperty(value = "直属经理ID")
private Long managerId;
/**
* 是否提交入职资料
*/
@ExcelProperty(value = "是否提交入职资料")
private Integer documentsSubmitted;
/**
* 是否完成入职培训
*/
@ExcelProperty(value = "是否完成入职培训")
private Integer orientationCompleted;
/**
* 入职状态(pending,completed,onboarding)
*/
@ExcelProperty(value = "入职状态(pending,completed,onboarding)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "joining_status")
private Long joiningStatus;
/**
* 是否完成招聘与面试
*/
@ExcelProperty(value = "是否完成招聘与面试")
private Integer recruitmentCompleted;
/**
* 是否已发放Offer
*/
@ExcelProperty(value = "是否已发放Offer")
private Integer offerIssued;
/**
* 是否已签署合同
*/
@ExcelProperty(value = "是否已签署合同")
private Integer contractSigned;
/**
* 入职材料/工作准备是否完成
*/
@ExcelProperty(value = "入职材料/工作准备是否完成")
private Integer materialsPrepared;
/**
* 是否完成入职培训
*/
@ExcelProperty(value = "是否完成入职培训")
private Integer trainingCompleted;
/**
* 是否完成工作条件准备(权限分配、工位等)
*/
@ExcelProperty(value = "是否完成工作条件准备", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "权=限分配、工位等")
private Integer workConditionsPrepared;
/**
* 最高学历
*/
@ExcelProperty(value = "最高学历")
private String highestDegree;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 出生日期
*/
@ExcelProperty(value = "出生日期")
private Date birthDate;
/**
* 民族
*/
@ExcelProperty(value = "民族")
private String ethnicity;
/**
* 转正日期
*/
@ExcelProperty(value = "转正日期")
private Date confirmDate;
/**
* 婚姻状态
*/
@ExcelProperty(value = "婚姻状态")
private String maritalStatus;
/**
* 政治面貌
*/
@ExcelProperty(value = "政治面貌")
private String politicalStatus;
/**
* 身高
*/
@ExcelProperty(value = "身高")
private Long height;
/**
* 体重
*/
@ExcelProperty(value = "体重")
private Long weight;
/**
* 编制类型
*/
@ExcelProperty(value = "编制类型")
private String staffType;
/**
* 紧急联系人1
*/
@ExcelProperty(value = "紧急联系人1")
private String emergencyContact1;
/**
* 紧急联系人2
*/
@ExcelProperty(value = "紧急联系人2")
private String emergencyContact2;
/** 用户名 */
private String userName;
/** 名字 */
private String nickName;
/** 手机号 */
private String phonenumber;
/** 邮箱 */
private String email;
/** 住址 */
private String address;
/** 性别 */
private Long sex;
/** 部门id */
private Long deptId;
/** 身份证号 */
private String idCard;
/** 银行卡号 */
private String bankCard;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.oa.domain.EmployeeOffboarding;
import com.ruoyi.oa.domain.vo.EmployeeOffboardingVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
/**
* 离职管理Mapper接口
*
* @author hdka
* @date 2025-02-16
*/
public interface EmployeeOffboardingMapper extends BaseMapperPlus<EmployeeOffboardingMapper, EmployeeOffboarding, EmployeeOffboardingVo> {
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.oa.domain.EmployeeOnboarding;
import com.ruoyi.oa.domain.vo.EmployeeOnboardingVo;
/**
* 入职管理Mapper接口
*
* @author hdka
* @date 2025-02-15
*/
public interface EmployeeOnboardingMapper extends BaseMapperPlus<EmployeeOnboardingMapper, EmployeeOnboarding, EmployeeOnboardingVo> {
}

View File

@@ -0,0 +1,49 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.EmployeeOffboarding;
import com.ruoyi.oa.domain.vo.EmployeeOffboardingVo;
import com.ruoyi.oa.domain.bo.EmployeeOffboardingBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 离职管理Service接口
*
* @author hdka
* @date 2025-02-16
*/
public interface IEmployeeOffboardingService {
/**
* 查询离职管理
*/
EmployeeOffboardingVo queryById(Long offboardingId);
/**
* 查询离职管理列表
*/
TableDataInfo<EmployeeOffboardingVo> queryPageList(EmployeeOffboardingBo bo, PageQuery pageQuery);
/**
* 查询离职管理列表
*/
List<EmployeeOffboardingVo> queryList(EmployeeOffboardingBo bo);
/**
* 新增离职管理
*/
Boolean insertByBo(EmployeeOffboardingBo bo);
/**
* 修改离职管理
*/
Boolean updateByBo(EmployeeOffboardingBo bo);
/**
* 校验并批量删除离职管理信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.ruoyi.oa.service;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.oa.domain.bo.EmployeeOnboardingBo;
import com.ruoyi.oa.domain.vo.EmployeeOnboardingVo;
import java.util.Collection;
import java.util.List;
/**
* 入职管理Service接口
*
* @author hdka
* @date 2025-02-15
*/
public interface IEmployeeOnboardingService {
/**
* 查询入职管理
*/
EmployeeOnboardingVo queryById(Long onboardingId);
/**
* 查询入职管理列表
*/
TableDataInfo<EmployeeOnboardingVo> queryPageList(EmployeeOnboardingBo bo, PageQuery pageQuery);
/**
* 查询入职管理列表
*/
List<EmployeeOnboardingVo> queryList(EmployeeOnboardingBo bo);
/**
* 新增入职管理
*/
Boolean insertByBo(EmployeeOnboardingBo bo);
/**
* 修改入职管理
*/
Boolean updateByBo(EmployeeOnboardingBo bo);
/**
* 校验并批量删除入职管理信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,135 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.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.ruoyi.system.service.ISysUserService;
import liquibase.pro.packaged.A;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.EmployeeOffboardingBo;
import com.ruoyi.oa.domain.vo.EmployeeOffboardingVo;
import com.ruoyi.oa.domain.EmployeeOffboarding;
import com.ruoyi.oa.mapper.EmployeeOffboardingMapper;
import com.ruoyi.oa.service.IEmployeeOffboardingService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 离职管理Service业务层处理
*
* @author hdka
* @date 2025-02-16
*/
@RequiredArgsConstructor
@Service
public class EmployeeOffboardingServiceImpl implements IEmployeeOffboardingService {
private final EmployeeOffboardingMapper baseMapper;
@Autowired
private ISysUserService userService;
/**
* 查询离职管理
*/
@Override
public EmployeeOffboardingVo queryById(Long offboardingId){
EmployeeOffboardingVo employeeOffboardingVo = baseMapper.selectVoById(offboardingId);
SysUser sysUser = userService.selectUserByIdAndNotDelFlag(employeeOffboardingVo.getUserId());
employeeOffboardingVo.setNickName(sysUser.getUserName());
return employeeOffboardingVo;
}
/**
* 查询离职管理列表
*/
@Override
public TableDataInfo<EmployeeOffboardingVo> queryPageList(EmployeeOffboardingBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<EmployeeOffboarding> lqw = buildQueryWrapper(bo);
Page<EmployeeOffboardingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(item -> {
SysUser sysUser = userService.selectUserByIdAndNotDelFlag(item.getUserId());
item.setNickName(sysUser.getUserName());
});
return TableDataInfo.build(result);
}
/**
* 查询离职管理列表
*/
@Override
public List<EmployeeOffboardingVo> queryList(EmployeeOffboardingBo bo) {
LambdaQueryWrapper<EmployeeOffboarding> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<EmployeeOffboarding> buildQueryWrapper(EmployeeOffboardingBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EmployeeOffboarding> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, EmployeeOffboarding::getUserId, bo.getUserId());
lqw.eq(bo.getResignationDate() != null, EmployeeOffboarding::getResignationDate, bo.getResignationDate());
lqw.eq(bo.getExitInterview() != null, EmployeeOffboarding::getExitInterview, bo.getExitInterview());
lqw.eq(bo.getHandoverCompleted() != null, EmployeeOffboarding::getHandoverCompleted, bo.getHandoverCompleted());
lqw.eq(StringUtils.isNotBlank(bo.getExitReason()), EmployeeOffboarding::getExitReason, bo.getExitReason());
lqw.eq(bo.getFinalSalary() != null, EmployeeOffboarding::getFinalSalary, bo.getFinalSalary());
lqw.eq(bo.getResignationApplicationSubmitted() != null, EmployeeOffboarding::getResignationApplicationSubmitted, bo.getResignationApplicationSubmitted());
lqw.eq(bo.getDataBackupCompleted() != null, EmployeeOffboarding::getDataBackupCompleted, bo.getDataBackupCompleted());
lqw.eq(bo.getHandoverArranged() != null, EmployeeOffboarding::getHandoverArranged, bo.getHandoverArranged());
lqw.eq(bo.getSalarySettled() != null, EmployeeOffboarding::getSalarySettled, bo.getSalarySettled());
lqw.eq(bo.getBenefitsSettled() != null, EmployeeOffboarding::getBenefitsSettled, bo.getBenefitsSettled());
lqw.eq(bo.getExitCertificateIssued() != null, EmployeeOffboarding::getExitCertificateIssued, bo.getExitCertificateIssued());
lqw.eq(bo.getOffboardingConfirmed() != null, EmployeeOffboarding::getOffboardingConfirmed, bo.getOffboardingConfirmed());
return lqw;
}
/**
* 新增离职管理
*/
@Override
public Boolean insertByBo(EmployeeOffboardingBo bo) {
EmployeeOffboarding add = BeanUtil.toBean(bo, EmployeeOffboarding.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setOffboardingId(add.getOffboardingId());
}
return flag;
}
/**
* 修改离职管理
*/
@Override
public Boolean updateByBo(EmployeeOffboardingBo bo) {
EmployeeOffboarding update = BeanUtil.toBean(bo, EmployeeOffboarding.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(EmployeeOffboarding entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除离职管理
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,141 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.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.ruoyi.oa.domain.EmployeeOnboarding;
import com.ruoyi.oa.domain.bo.EmployeeOnboardingBo;
import com.ruoyi.oa.domain.vo.EmployeeOnboardingVo;
import com.ruoyi.oa.mapper.EmployeeOnboardingMapper;
import com.ruoyi.oa.service.IEmployeeOnboardingService;
import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 入职管理Service业务层处理
*
* @author hdka
* @date 2025-02-15
*/
@RequiredArgsConstructor
@Service
public class EmployeeOnboardingServiceImpl implements IEmployeeOnboardingService {
private final EmployeeOnboardingMapper baseMapper;
@Autowired
private ISysUserService userService;
/**
* 查询入职管理
*/
@Override
public EmployeeOnboardingVo queryById(Long onboardingId){
EmployeeOnboardingVo employeeOnboardingVo = baseMapper.selectVoById(onboardingId);
SysUser sysUser = userService.selectUserByIdAndNotDelFlag(employeeOnboardingVo.getUserId());
employeeOnboardingVo.setUserName(sysUser.getUserName());
employeeOnboardingVo.setNickName(sysUser.getNickName());
employeeOnboardingVo.setEmail(sysUser.getEmail());
employeeOnboardingVo.setPhonenumber(sysUser.getPhonenumber());
employeeOnboardingVo.setBankCard(sysUser.getBankCard());
employeeOnboardingVo.setIdCard(sysUser.getIdCard());
employeeOnboardingVo.setDeptId(sysUser.getDeptId());
return employeeOnboardingVo;
}
/**
* 查询入职管理列表
*/
@Override
public TableDataInfo<EmployeeOnboardingVo> queryPageList(EmployeeOnboardingBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<EmployeeOnboarding> lqw = buildQueryWrapper(bo);
Page<EmployeeOnboardingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(employeeOnboardingVo -> {
SysUser sysUser = userService.selectUserByIdAndNotDelFlag(employeeOnboardingVo.getUserId());
employeeOnboardingVo.setNickName(sysUser.getNickName());
});
return TableDataInfo.build(result);
}
/**
* 查询入职管理列表
*/
@Override
public List<EmployeeOnboardingVo> queryList(EmployeeOnboardingBo bo) {
LambdaQueryWrapper<EmployeeOnboarding> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<EmployeeOnboarding> buildQueryWrapper(EmployeeOnboardingBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EmployeeOnboarding> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, EmployeeOnboarding::getUserId, bo.getUserId());
lqw.eq(bo.getJoiningDate() != null, EmployeeOnboarding::getJoiningDate, bo.getJoiningDate());
lqw.eq(bo.getProbationPeriodEnd() != null, EmployeeOnboarding::getProbationPeriodEnd, bo.getProbationPeriodEnd());
lqw.eq(bo.getManagerId() != null, EmployeeOnboarding::getManagerId, bo.getManagerId());
lqw.eq(bo.getDocumentsSubmitted() != null, EmployeeOnboarding::getDocumentsSubmitted, bo.getDocumentsSubmitted());
lqw.eq(bo.getOrientationCompleted() != null, EmployeeOnboarding::getOrientationCompleted, bo.getOrientationCompleted());
lqw.eq(bo.getJoiningStatus() != null, EmployeeOnboarding::getJoiningStatus, bo.getJoiningStatus());
lqw.eq(bo.getRecruitmentCompleted() != null, EmployeeOnboarding::getRecruitmentCompleted, bo.getRecruitmentCompleted());
lqw.eq(bo.getOfferIssued() != null, EmployeeOnboarding::getOfferIssued, bo.getOfferIssued());
lqw.eq(bo.getContractSigned() != null, EmployeeOnboarding::getContractSigned, bo.getContractSigned());
lqw.eq(bo.getMaterialsPrepared() != null, EmployeeOnboarding::getMaterialsPrepared, bo.getMaterialsPrepared());
lqw.eq(bo.getTrainingCompleted() != null, EmployeeOnboarding::getTrainingCompleted, bo.getTrainingCompleted());
lqw.eq(bo.getWorkConditionsPrepared() != null, EmployeeOnboarding::getWorkConditionsPrepared, bo.getWorkConditionsPrepared());
return lqw;
}
/**
* 新增入职管理
*/
@Override
public Boolean insertByBo(EmployeeOnboardingBo bo) {
EmployeeOnboarding add = BeanUtil.toBean(bo, EmployeeOnboarding.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setOnboardingId(add.getOnboardingId());
}
return flag;
}
/**
* 修改入职管理
*/
@Override
public Boolean updateByBo(EmployeeOnboardingBo bo) {
EmployeeOnboarding update = BeanUtil.toBean(bo, EmployeeOnboarding.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(EmployeeOnboarding entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除入职管理
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}