package com.ruoyi.staff.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; 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.mapper.StaffLeaveMapper; import com.ruoyi.staff.mapper.StaffOnJobMapper; 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 implements StaffLeaveService { private StaffLeaveMapper staffLeaveMapper; private StaffOnJobMapper staffOnJobMapper; //新增离职列表分页查询 @Override public IPage 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 ids) { // 删除离职数据 return staffLeaveMapper.deleteBatchIds(ids); } //导出 @Override public void export(HttpServletResponse response, StaffLeaveDto staffLeaveDto) { List staffLeaves =staffLeaveMapper.staffLeaveList(staffLeaveDto); ExcelUtil util = new ExcelUtil(StaffLeaveDto.class); util.exportExcel(response, staffLeaves, "员工离职导出"); } }