huminmin
9 天以前 e168d23c53f8d627f823a8622ca3450cd9474a57
新增离职增删改查导出
已添加4个文件
已修改7个文件
已删除1个文件
435 ■■■■■ 文件已修改
src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/dto/StaffLeaveDto.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffLeave.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/StaffLeaveService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffLeaveMapper.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.common.enums;
import lombok.AllArgsConstructor;
/**
 * é™„件记录类型枚举
 *
 */
@AllArgsConstructor
public enum StaffLeaveReason {
    StaffLeaveReasonSalary("salary","薪资待遇"),
    StaffLeaveReasonCareerDevelopment("career_development","职业发展"),
    StaffLeaveReasonWorkEnvironment("work_environment","工作环境"),
    StaffLeaveReasonPersonalReason("personal_reason","个人原因"),
    StaffLeaveReasonOther("other","其他原因");
    private final String code;
    private final String info;
    public String getCode() {
        return code;
    }
    public String getInfo() {
        return info;
    }
}
src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.ruoyi.staff.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.dto.StaffLeaveDto;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.service.StaffLeaveService;
import io.swagger.annotations.Api;
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/staffLeave")
@Api(tags = "员工离职")
public class StaffLeaveController {
    @Resource
    private StaffLeaveService staffLeaveService;
    /**
     * æ–°å¢žç¦»èŒåˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param staffLeaveDto
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult staffLeaveListPage(Page page, StaffLeaveDto staffLeaveDto) {
        return AjaxResult.success(staffLeaveService.staffLeaveListPage(page, staffLeaveDto));
    }
    /**
     * æ–°å¢žç¦»èŒ
     * @param staffLeaveDto
     * @return
     */
    @PostMapping("")
    public AjaxResult add(@RequestBody StaffLeaveDto staffLeaveDto) {
        return AjaxResult.success(staffLeaveService.add(staffLeaveDto));
    }
    /**
     * æ›´æ–°ç¦»èŒä¿¡æ¯
     * @param id
     * @param staffLeaveDto
     * @return
     */
    @PutMapping("/{id}")
    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StaffLeaveDto staffLeaveDto) {
        return AjaxResult.success(staffLeaveService.update(id, staffLeaveDto));
    }
    /**
     * åˆ é™¤å…¥èŒ
     * @param ids
     * @return
     */
    @DeleteMapping("/del")
    public AjaxResult del(@RequestBody List<Integer> ids) {
        if(CollectionUtils.isEmpty(ids)){
            return AjaxResult.error("请选择至少一条数据");
        }
        return AjaxResult.success(staffLeaveService.del(ids));
    }
    /**
     * ç¦»èŒå¯¼å‡º
     * @param staffLeaveDto
     */
    @PostMapping("/export")
    public void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto) {
        staffLeaveService.export(response, staffLeaveDto);
    }
}
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -25,7 +25,7 @@
 */
@RestController
@RequestMapping("/staff/staffOnJob")
@Api(tags = "员工台账/合同管理")
@Api(tags = "员工台账")
public class StaffOnJobController {
    @Resource
@@ -91,7 +91,7 @@
     * @return
     */
    @GetMapping("/{id}")
    public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Long id) {
    public AjaxResult staffOnJobDetail(@PathVariable("id") Long id) {
        return AjaxResult.success(staffOnJobService.staffOnJobDetail(id));
    }
src/main/java/com/ruoyi/staff/dto/StaffLeaveDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.ruoyi.staff.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.staff.pojo.StaffLeave;
import lombok.Data;
import java.util.Date;
@Data
public class StaffLeaveDto extends StaffLeave {
    @Excel(name = "状态", readConverterExp = "0=离职,1=在职", sort = 1)
    private Integer staffState;
    /**
     * å‘˜å·¥ç¼–号
     */
    @Excel(name = "员工编号", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING, sort = 2)
    private String staffNo;
    /**
     * å‘˜å·¥å§“名
     */
    @Excel(name = "员工姓名", sort = 3)
    private String staffName;
    /**
     * æ€§åˆ«
     */
    @Excel(name = "性别", sort = 4)
    private String sex;
    /**
     * ç±è´¯
     */
    @Excel(name = "籍贯", sort = 5)
    private String nativePlace;
    /**
     * å®¶åº­ä½å€
     */
    @Excel(name = "家庭住址", sort = 6)
    private String adress;
    /**
     * å²—位
     */
    @Excel(name = "岗位",sort = 7)
    private String postName;
    /**
     * ç¬¬ä¸€å­¦åކ
     */
    @Excel(name = "第一学历", sort = 8)
    private String firstStudy;
    /**
     * ä¸“业
     */
    @Excel(name = "专业", sort = 9)
    private String profession;
    /**
     * èº«ä»½è¯å·ç 
     */
    @Excel(name = "身份证号码", sort = 10)
    private String identityCard;
    /**
     * å¹´é¾„
     */
    @Excel(name = "年龄", sort = 11)
    private String age;
    /**
     * è”系电话
     */
    @Excel(name = "联系电话", sort = 12)
    private String phone;
    /**
     * ç´§æ€¥è”系人
     */
    @Excel(name = "紧急联系人", sort = 13)
    private String emergencyContact;
    /**
     * ç´§æ€¥è”系人电话
     */
    @Excel(name = "紧急联系人电话", sort = 14)
    private String emergencyContactPhone;
}
src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
@@ -1,10 +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.staff.dto.StaffLeaveDto;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffLeave;
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 StaffLeaveMapper extends BaseMapper<StaffLeave> {
    IPage<StaffLeaveDto> staffLeaveListPage(Page page, @Param("c") StaffLeaveDto staffLeaveDto);
    List<StaffLeaveDto> staffLeaveList(@Param("c") StaffLeaveDto staffLeaveDto);
}
src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
@@ -21,6 +21,12 @@
    @ApiModelProperty(value = "在职员工ID")
    private Long staffOnJobId;
    @ApiModelProperty(value = "离职原因")
    private String reason;
    @ApiModelProperty(value = "离职备注")
    private String remark;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
@@ -1,7 +1,34 @@
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.dto.StaffLeaveDto;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffLeave;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface StaffLeaveService extends IService<StaffLeave> {
    IPage<StaffLeaveDto> staffLeaveListPage(Page page, StaffLeaveDto staffLeaveDto);
    /**
     * æ–°å¢žç¦»èŒ
     * @param staffLeaveDto
     * @return
     */
    int add(StaffLeaveDto staffLeaveDto);
    /**
     * æ›´æ–°ç¦»èŒä¿¡æ¯
     * @param id
     * @param staffLeaveDto
     * @return
     */
    int update(Long id, StaffLeaveDto staffLeaveDto);
    int del(List<Integer> ids);
    void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto);
}
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
@@ -19,13 +19,9 @@
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;
import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
@Service
@AllArgsConstructor
@@ -83,9 +79,6 @@
            }
            if (staffJoinLeaveRecord.getDimissionReason()==null){
                throw new BaseException("离职原因不能为空!!!");
            }
            if (!StaffJoinLeaveRecordDimissionReasonOther.getCode().equals(staffJoinLeaveRecord.getDimissionReason())){
                staffJoinLeaveRecord.setDimissionRemark("");
            }
        }
        return staffJoinLeaveRecordMapper.insert(staffJoinLeaveRecord);
@@ -179,9 +172,6 @@
            //离职的编辑不会影响在职表
            if (staffJoinLeaveRecord.getDimissionReason()==null){
                throw new BaseException("离职原因不能为空!!!");
            }
            if (!StaffJoinLeaveRecordDimissionReasonOther.getCode().equals(staffJoinLeaveRecord.getDimissionReason())){
                staffJoinLeaveRecord.setDimissionRemark("");
            }
        }
        return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
@@ -1,15 +1,106 @@
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.dto.StaffLeaveDto;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.StaffLeaveService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.staff.pojo.StaffLeave;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import static com.ruoyi.common.enums.StaffLeaveReason.StaffLeaveReasonOther;
@AllArgsConstructor
@Service
public class StaffLeaveServiceImpl extends ServiceImpl<StaffLeaveMapper, StaffLeave> implements StaffLeaveService {
    private StaffLeaveMapper staffLeaveMapper;
    private StaffOnJobMapper staffOnJobMapper;
    //新增离职列表分页查询
    @Override
    public IPage<StaffLeaveDto> staffLeaveListPage(Page page, StaffLeaveDto staffLeaveDto) {
        return staffLeaveMapper.staffLeaveListPage(page,staffLeaveDto);
    }
    //新增离职
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int add(StaffLeaveDto staffLeaveDto) {
        // æ ¡éªŒåœ¨èŒå‘˜å·¥æ˜¯å¦å­˜åœ¨
        StaffOnJob staffOnJob = staffOnJobMapper.selectById(staffLeaveDto.getStaffOnJobId());
        if (staffOnJob == null) {
            throw new IllegalArgumentException("员工不存在");
        }
        // æ ¡éªŒå‘˜å·¥æ˜¯å¦ç¦»èŒ
        if (staffOnJob.getStaffState() == 0) {
            throw new IllegalArgumentException("员工已离职");
        }
        // æ–°å¢žç¦»èŒè®°å½•
        StaffLeave staffLeave = new StaffLeave();
        staffLeave.setStaffOnJobId(staffLeaveDto.getStaffOnJobId());
        String reason = staffLeaveDto.getReason();
        if (!StaffLeaveReasonOther.getCode().equals(reason)){
            staffLeave.setRemark("");
        }
        staffLeaveMapper.insert(staffLeave);
        // æ›´æ–°ç¦»èŒçŠ¶æ€ä¸ºç¦»èŒ
        staffOnJob.setStaffState(0);
       return staffOnJobMapper.updateById(staffOnJob);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int update(Long id, StaffLeaveDto staffLeaveDto) {
        // åˆ¤æ–­å¯¹è±¡æ˜¯å¦å­˜åœ¨
        StaffLeave leave = staffLeaveMapper.selectById(id);
        if (leave == null){
            throw new BaseException("该离职记录不存在,无法更新!!!");
        }
        String reason = staffLeaveDto.getReason();
        leave.setReason(reason);
        // æ ¡éªŒç¦»èŒåŽŸå› æ˜¯å¦ä¸ºå…¶ä»–ï¼Œå¦‚æžœæ˜¯å…¶ä»–ï¼Œå¤‡æ³¨èµ‹å€¼
        if (StaffLeaveReasonOther.getCode().equals(reason)){
            leave.setRemark(staffLeaveDto.getRemark());
        } else {
            leave.setRemark("");
        }
        return staffLeaveMapper.updateById(leave);
    }
    //删除离职
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int del(List<Integer> ids) {
        // åˆ é™¤ç¦»èŒæ•°æ®
        return staffLeaveMapper.deleteBatchIds(ids);
    }
    //导出
    @Override
    public void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto) {
        List<StaffLeaveDto> staffLeaves =staffLeaveMapper.staffLeaveList(staffLeaveDto);
        ExcelUtil<StaffLeaveDto> util = new ExcelUtil<StaffLeaveDto>(StaffLeaveDto.class);
        util.exportExcel(response, staffLeaves, "员工离职导出");
    }
}
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -38,8 +38,6 @@
import java.time.ZoneId;
import java.util.*;
import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
@AllArgsConstructor
@Service
public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob>  implements IStaffOnJobService {
src/main/resources/mapper/staff/StaffLeaveMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
<?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.StaffLeaveMapper">
    <select id="staffLeaveListPage" resultType="com.ruoyi.staff.dto.StaffLeaveDto">
        SELECT
        staff_leave.*,
        soj.staff_name as staffName,
        soj.staff_state as staffState,
        soj.staff_no as staffNo,
        soj.sex as sex,
        soj.native_place as nativePlace,
        soj.adress as adress,
        soj.first_study as firstStudy,
        soj.profession as profession,
        soj.identity_card as identityCard,
        soj.age as age,
        soj.phone as phone,
        soj.emergency_contact as emergencyContact,
        soj.emergency_contact_phone as emergencyContactPhone,
        sp.post_name as postName
        FROM staff_leave
        LEFT JOIN
        staff_on_job soj ON soj.id = staff_leave.staff_on_job_id
        LEFT JOIN
        sys_post sp ON sp.post_id = soj.sys_post_id
        where 1=1
        <if test="c.staffName != null and c.staffName != '' ">
            AND soj.staff_name LIKE CONCAT('%',#{c.staffName},'%')
        </if>
    </select>
    <select id="staffLeaveList" resultType="com.ruoyi.staff.dto.StaffLeaveDto">
        SELECT
        staff_leave.*,
        soj.staff_name as staffName,
        soj.staff_state as staffState,
        soj.staff_no as staffNo,
        soj.sex as sex,
        soj.native_place as nativePlace,
        soj.adress as adress,
        soj.first_study as firstStudy,
        soj.profession as profession,
        soj.identity_card as identityCard,
        soj.age as age,
        soj.phone as phone,
        soj.emergency_contact as emergencyContact,
        soj.emergency_contact_phone as emergencyContactPhone,
        sp.post_name as postName
        FROM staff_leave
        LEFT JOIN
        staff_on_job soj ON soj.id = staff_leave.staff_on_job_id
        LEFT JOIN
        sys_post sp ON sp.post_id = soj.sys_post_id
        where 1=1
        <if test="c.staffName != null and c.staffName != '' ">
            AND soj.staff_name LIKE CONCAT('%',#{c.staffName},'%')
        </if>
    </select>
</mapper>