zss
2 天以前 03f8185a5eedfa2d1c9871151769527594bb51db
人员管理模块完成
已删除6个文件
已添加12个文件
1324 ■■■■■ 文件已修改
src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff_management/controller/RyglAddEmployeeController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff_management/domain/RyglAddEmployee.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff_management/mapper/RyglAddEmployeeMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff_management/service/RyglAddEmployeeService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff_management/service/impl/RyglAddEmployeeServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffOnJobMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff_management/RyglAddEmployeeMapper.xml 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.ruoyi.staff.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.basic.service.ISupplierService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * æ–°å¢žå…¥èŒ/离职
 */
@RestController
@RequestMapping("/staff/staffJoinLeaveRecord")
public class StaffJoinLeaveRecordController {
    @Resource
    private IStaffJoinLeaveRecordService staffJoinLeaveRecordService;
    /**
     * æ–°å¢žå…¥èŒ/离职
     * @param staffJoinLeaveRecord
     * @return
     */
    @PostMapping("/add")
    public AjaxResult add(@RequestBody StaffJoinLeaveRecord staffJoinLeaveRecord) {
        return AjaxResult.success(staffJoinLeaveRecordService.add(staffJoinLeaveRecord));
    }
    /**
     * åˆ é™¤å…¥èŒ/离职
     * @param ids
     * @return
     */
    @DeleteMapping("/del")
    public AjaxResult delStaffJoinLeaveRecord(@RequestBody List<Integer> ids) {
        if(CollectionUtils.isEmpty(ids)){
            return AjaxResult.error("请选择至少一条数据");
        }
        return AjaxResult.success(staffJoinLeaveRecordService.delStaffJoinLeaveRecord(ids));
    }
    /**
     * å…¥èŒ/离职详情
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Integer id) {
        return AjaxResult.success(staffJoinLeaveRecordService.getById(id));
    }
    /**
     * å…¥èŒ/离职修改
     * @param staffJoinLeaveRecord
     * @return
     */
    @PostMapping("/update")
    public AjaxResult update(@RequestBody StaffJoinLeaveRecord staffJoinLeaveRecord) {
        return AjaxResult.success(staffJoinLeaveRecordService.updateStaffJoinLeaveRecord(staffJoinLeaveRecord));
    }
    /**
     * å…¥èŒ/离职分页查询
     * @param page
     * @param staffJoinLeaveRecord
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord) {
        return AjaxResult.success(staffJoinLeaveRecordService.staffJoinLeaveRecordListPage(page, staffJoinLeaveRecord));
    }
    /**
     * å…¥èŒ/离职导出
     * @param response
     * @param staffJoinLeaveRecord
     */
    @PostMapping("/export")
    public void staffJoinLeaveRecordExport(HttpServletResponse response,StaffJoinLeaveRecord staffJoinLeaveRecord) {
        staffJoinLeaveRecordService.staffJoinLeaveRecordExport(response, staffJoinLeaveRecord);
    }
}
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.staff.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
import com.ruoyi.staff.service.IStaffOnJobService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * å‘˜å·¥å°è´¦/合同管理
 */
@RestController
@RequestMapping("/staff/staffOnJob")
public class StaffOnJobController {
    @Resource
    private IStaffOnJobService staffOnJobService;
    /**
     * åœ¨èŒå‘˜å·¥å°è´¦åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param staffOnJob
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult staffOnJobListPage(Page page, StaffOnJob staffOnJob) {
        return AjaxResult.success(staffOnJobService.staffOnJobListPage(page, staffOnJob));
    }
    /**
     * åœ¨èŒå‘˜å·¥è¯¦æƒ…
     * @param staffNo
     * @return
     */
    @GetMapping("/staffNo")
    public AjaxResult staffOnJobDetail(String staffNo) {
        return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo));
    }
    /**
     * åœ¨èŒå‘˜å·¥å¯¼å‡º
     * @param response
     * @param staffOnJob
     */
    @PostMapping("/export")
    public void staffOnJobExport(HttpServletResponse response,StaffOnJob staffOnJob) {
        staffOnJobService.staffOnJobExport(response, staffOnJob);
    }
}
src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.staff.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.basic.excel.SupplierManageExcelDto;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface StaffJoinLeaveRecordMapper extends BaseMapper<StaffJoinLeaveRecord> {
    IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, @Param("staffJoinLeaveRecord") StaffJoinLeaveRecord staffJoinLeaveRecord);
    List<StaffJoinLeaveRecord> staffJoinLeaveRecordList(@Param("staffJoinLeaveRecord") StaffJoinLeaveRecord staffJoinLeaveRecord);
}
src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.staff.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface StaffOnJobMapper extends BaseMapper<StaffOnJob> {
    IPage<StaffOnJob> staffOnJobListPage(Page page, @Param("staffOnJob") StaffOnJob staffOnJob);
    List<StaffOnJob> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
}
src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
package com.ruoyi.staff.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NonNull;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
 * äººå‘˜ç®¡ç†--新增入职/离职
 * staff_join_leave_record
 */
@TableName(value = "staff_join_leave_record")
@Data
public class StaffJoinLeaveRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * åºå·
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * çŠ¶æ€(0:离职;1:入职)
     */
    @NotBlank(message = "员工状态不能为空!!!!!!!!")
    @Excel(name = "状态",readConverterExp = "0=离职,1=入职")
    private Integer staffState;
    /**
     * å‘˜å·¥ç¼–号
     */
    @Excel(name = "员工编号")
    private String staffNo;
    /**
     * å‘˜å·¥å§“名
     */
    @Excel(name = "员工姓名")
    private String staffName;
    /**
     * æ€§åˆ«
     */
    @Excel(name = "性别")
    private String sex;
    /**
     * ç±è´¯
     */
    @Excel(name = "籍贯")
    private String nativePlace;
    /**
     * å²—位
     */
    @Excel(name = "岗位")
    private String postJob;
    /**
     * å®¶åº­ä½å€
     */
    @Excel(name = "家庭住址")
    private String adress;
    /**
     * ç¬¬ä¸€å­¦åކ
     */
    @Excel(name = "第一学历")
    private String firstStudy;
    /**
     * ä¸“业
     */
    @Excel(name = "专业")
    private String profession;
    /**
     * èº«ä»½è¯å·ç 
     */
    @Excel(name = "身份证号码")
    private String identityCard;
    /**
     * å¹´é¾„
     */
    @Excel(name = "年龄")
    private String age;
    /**
     * è”系电话
     */
    @Excel(name = "联系电话")
    private String phone;
    /**
     * ç´§æ€¥è”系人
     */
    @Excel(name = "紧急联系人")
    private String emergencyContact;
    /**
     * ç´§æ€¥è”系人电话
     */
    @Excel(name = "紧急联系人电话")
    private String emergencyContactPhone;
    /**
     * åˆåŒå¹´é™
     */
    @Excel(name = "合同年限")
    private String contractTerm;
    /**
     * åˆåŒå¼€å§‹æ—¥æœŸ
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractStartTime;
    /**
     * åˆåŒç»“束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractEndTime;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,147 @@
package com.ruoyi.staff.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
 * äººå‘˜ç®¡ç†--员工台账/合同管理
 * staff_on_job
 */
@TableName(value = "staff_on_job")
@Data
public class StaffOnJob implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * åºå·
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * çŠ¶æ€(0:离职;1:在职)
     */
    @Excel(name = "状态",readConverterExp = "0=离职,1=在职")
    private Integer staffState;
    /**
     * å‘˜å·¥ç¼–号
     */
    @Excel(name = "员工编号")
    private String staffNo;
    /**
     * å‘˜å·¥å§“名
     */
    @Excel(name = "员工姓名")
    private String staffName;
    /**
     * æ€§åˆ«
     */
    @Excel(name = "性别")
    private String sex;
    /**
     * ç±è´¯
     */
    @Excel(name = "籍贯")
    private String nativePlace;
    /**
     * å²—位
     */
    @Excel(name = "岗位")
    private String postJob;
    /**
     * å®¶åº­ä½å€
     */
    @Excel(name = "家庭住址")
    private String adress;
    /**
     * ç¬¬ä¸€å­¦åކ
     */
    @Excel(name = "第一学历")
    private String firstStudy;
    /**
     * ä¸“业
     */
    @Excel(name = "专业")
    private String profession;
    /**
     * èº«ä»½è¯å·ç 
     */
    @Excel(name = "身份证号码")
    private String identityCard;
    /**
     * å¹´é¾„
     */
    @Excel(name = "年龄")
    private String age;
    /**
     * è”系电话
     */
    @Excel(name = "联系电话")
    private String phone;
    /**
     * ç´§æ€¥è”系人
     */
    @Excel(name = "紧急联系人")
    private String emergencyContact;
    /**
     * ç´§æ€¥è”系人电话
     */
    @Excel(name = "紧急联系人电话")
    private String emergencyContactPhone;
    /**
     * åˆåŒå¹´é™
     */
    @Excel(name = "合同年限")
    private String contractTerm;
    /**
     * åˆåŒåˆ°æœŸæ—¥æœŸ
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同到期日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractExpireTime;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.staff.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface IStaffJoinLeaveRecordService extends IService<StaffJoinLeaveRecord> {
    IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord);
    void staffJoinLeaveRecordExport(HttpServletResponse response, StaffJoinLeaveRecord staffJoinLeaveRecord);
    int add(StaffJoinLeaveRecord staffJoinLeaveRecord);
    int delStaffJoinLeaveRecord(List<Integer> ids);
    int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord);
}
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.staff.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface IStaffOnJobService extends IService<StaffOnJob> {
    IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob);
    List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo);
    void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob);
}
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,169 @@
package com.ruoyi.staff.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.function.Function;
@Service
@AllArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class StaffJoinLeaveRecordServiceImpl extends ServiceImpl<StaffJoinLeaveRecordMapper, StaffJoinLeaveRecord>  implements IStaffJoinLeaveRecordService {
    private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
    private StaffOnJobMapper staffOnJobMapper;
    //分页查询
    @Override
    public IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord) {
        return staffJoinLeaveRecordMapper.staffJoinLeaveRecordListPage(page,staffJoinLeaveRecord);
    }
    //导出
    @Override
    public void staffJoinLeaveRecordExport(HttpServletResponse response, StaffJoinLeaveRecord staffJoinLeaveRecord) {
        List<StaffJoinLeaveRecord> staffJoinLeaveRecords =staffJoinLeaveRecordMapper.staffJoinLeaveRecordList(staffJoinLeaveRecord);
        ExcelUtil<StaffJoinLeaveRecord> util = new ExcelUtil<StaffJoinLeaveRecord>(StaffJoinLeaveRecord.class);
        util.exportExcel(response, staffJoinLeaveRecords, staffJoinLeaveRecord.getStaffState()==0?"员工离职":"员工入职"+"导出");
    }
    //新增入职/离职
    @Override
    public int add(StaffJoinLeaveRecord staffJoinLeaveRecord) {
        String[] ignoreProperties = {"id"};//排除id属性
        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
        if (staffJoinLeaveRecord.getStaffState()==1){
            /*入职*/
            //(根据员工编号判断是否已经新增到在职表里面,如果已经有就更新,没有就新增)
            if (staffOnJobs.size()>0){
                StaffOnJob staffOnJob = staffOnJobs.get(0);
                //先比较到期日期,这里选用到期日期最久的
                if (staffJoinLeaveRecord.getContractEndTime().compareTo(staffOnJob.getContractExpireTime())>0) {
                    BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
                    staffOnJobMapper.updateById(staffOnJob);
                }
            }else {
                StaffOnJob staffOnJob = new StaffOnJob();
                BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
                staffOnJob.setContractExpireTime(staffJoinLeaveRecord.getContractEndTime());
                staffOnJobMapper.insert(staffOnJob);
            }
        }else {
            /*离职*/
            //根据员工编号找到对应的数据将状态变更
            if (staffOnJobs.size()>0){
                StaffOnJob staffOnJob = staffOnJobs.get(0);
                staffOnJob.setStaffState(staffJoinLeaveRecord.getStaffState());
                staffOnJobMapper.updateById(staffOnJob);
            }else {
                throw new BaseException("没有找到"+staffJoinLeaveRecord.getStaffNo()+"编号的员工,无法新增离职!!!");
            }
        }
        return staffJoinLeaveRecordMapper.insert(staffJoinLeaveRecord);
    }
    //删除入职/离职
    @Override
    public int delStaffJoinLeaveRecord(List<Integer> ids) {
        List<StaffJoinLeaveRecord> staffJoinLeaveRecords = staffJoinLeaveRecordMapper.selectBatchIds(ids);
        for (StaffJoinLeaveRecord staffJoinLeaveRecord : staffJoinLeaveRecords) {
            //先判断是入职还是离职
            if (staffJoinLeaveRecord.getStaffState()==1){
                /*入职*/
                //如果是入职,需要先根据员工编号判断该员工是否还有其他入职信息
                List<StaffJoinLeaveRecord> joinLeaveRecords = staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
                        .eq(StaffJoinLeaveRecord::getStaffState, 1)
                        .eq(StaffJoinLeaveRecord::getStaffNo, staffJoinLeaveRecord.getStaffNo())
                        .ne(StaffJoinLeaveRecord::getId, staffJoinLeaveRecord.getId()));
                if (joinLeaveRecords.size()>0){
                    //还需要判断该员工是否有离职信息
                    List<StaffJoinLeaveRecord> leaveRecords = staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
                            .eq(StaffJoinLeaveRecord::getStaffState, 0)
                            .eq(StaffJoinLeaveRecord::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
                    // å¦‚果有那在职表仅做更新不删除,如果没有其他入职信息,那么在职表需同步删除
                    if (leaveRecords.size()>0){
                        //如果有离职信息,判断离职数量和入职数量毕竟,如果入职数量大于离职
                        if (joinLeaveRecords.size()>leaveRecords.size()){
                            //该员工就还是在职
                            //先比较到期日期,这里选用到期日期最久的
                            Optional<StaffJoinLeaveRecord> max = joinLeaveRecords.stream().max(Comparator.comparing(StaffJoinLeaveRecord::getContractEndTime));
                            staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate()
                                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())
                                    .set(StaffOnJob::getContractTerm, max.get().getContractTerm())
                                    .set(StaffOnJob::getContractExpireTime, max.get().getContractEndTime()));
                        }else {
                            //该员工属于离职
                            staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate()
                                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())
                                    .set(StaffOnJob::getStaffState, 0));
                        }
                    }else {
                        //如果没有离职信息那么就比较到期日期,这里选用到期日期最久的
                        Optional<StaffJoinLeaveRecord> max = joinLeaveRecords.stream().max(Comparator.comparing(StaffJoinLeaveRecord::getContractEndTime));
                        staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate()
                                .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())
                                .set(StaffOnJob::getContractTerm, max.get().getContractTerm())
                                .set(StaffOnJob::getContractExpireTime, max.get().getContractEndTime()));
                    }
                }else {
                    staffOnJobMapper.delete(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo,staffJoinLeaveRecord.getStaffNo()));
                }
            }else {
                /*离职*/
                //先查询在职表是否有这个,如果有,就将该员工的状态变更为在职
                List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
                if (staffOnJobs.size()>0){
                    StaffOnJob staffOnJob = staffOnJobs.get(0);
                    staffOnJob.setStaffState(1);
                    staffOnJobMapper.updateById(staffOnJob);
                }else {
                    throw new BaseException("没有找到"+staffJoinLeaveRecord.getStaffNo()+"编号的员工,请检查是否有脏数据!!!");
                }
            }
            staffJoinLeaveRecordMapper.deleteById(staffJoinLeaveRecord);
        }
        return 0;
    }
    //修改入职/离职
    @Override
    public int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord) {
        String[] ignoreProperties = {"id"};//排除id属性
        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()));
        if (staffJoinLeaveRecord.getStaffState()==1){
            /*入职*/
            StaffOnJob job = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery()
                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())).get(0);
            //如果更改的合同到期时间更久则更新,如果没有就不用更新
            if (staffJoinLeaveRecord.getContractEndTime().compareTo(job.getContractExpireTime())>0) {
                BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties);
                staffOnJobMapper.updateById(job);
            }
        }else {
            /*离职*/
            //离职的编辑不会影响在职表
        }
        return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
    }
}
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.staff.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
import com.ruoyi.staff.service.IStaffOnJobService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@AllArgsConstructor
@Service
public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob>  implements IStaffOnJobService {
    private StaffOnJobMapper staffOnJobMapper;
    private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
    //在职员工台账分页查询
    @Override
    public IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob) {
        return staffOnJobMapper.staffOnJobListPage(page,staffOnJob);
    }
    //在职员工详情
    @Override
    public List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo) {
        return staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
                .eq(StaffJoinLeaveRecord::getStaffState,1)
                .eq(StaffJoinLeaveRecord::getStaffNo,staffNo));
    }
    //在职员工导出
    @Override
    public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) {
        List<StaffOnJob> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
        ExcelUtil<StaffOnJob> util = new ExcelUtil<StaffOnJob>(StaffOnJob.class);
        util.exportExcel(response, staffOnJobs, "在职员工台账导出");
    }
}
src/main/java/com/ruoyi/staff_management/controller/RyglAddEmployeeController.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/staff_management/domain/RyglAddEmployee.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/staff_management/mapper/RyglAddEmployeeMapper.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/staff_management/service/RyglAddEmployeeService.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/staff_management/service/impl/RyglAddEmployeeServiceImpl.java
ÎļþÒÑɾ³ý
src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper">
    <select id="staffJoinLeaveRecordListPage" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord">
        SELECT
        *
        FROM staff_join_leave_record
        where
        staff_state = #{staffJoinLeaveRecord.staffState}
        <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' ">
            AND staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%')
        </if>
    </select>
    <select id="staffJoinLeaveRecordList" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord">
        SELECT
        *
        FROM staff_join_leave_record
        where
        staff_state = #{staffJoinLeaveRecord.staffState}
        <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' ">
            AND staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%')
        </if>
    </select>
</mapper>
src/main/resources/mapper/staff/StaffOnJobMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.staff.mapper.StaffOnJobMapper">
    <select id="staffOnJobListPage" resultType="com.ruoyi.staff.pojo.StaffOnJob">
        SELECT
        *
        FROM staff_on_job
        where 1=1
        <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' ">
        AND staff_state = #{staffOnJob.staffState}
        </if>
        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
            AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
        </if>
    </select>
    <select id="staffOnJobList" resultType="com.ruoyi.staff.pojo.StaffOnJob">
        SELECT
        *
        FROM staff_on_job
        where 1=1
        <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' ">
            AND staff_state = #{staffOnJob.staffState}
        </if>
        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
            AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
        </if>
    </select>
</mapper>
src/main/resources/mapper/staff_management/RyglAddEmployeeMapper.xml
ÎļþÒÑɾ³ý