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.beans.factory.annotation.Autowired;
|
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 {
|
@Autowired
|
private StaffLeaveMapper staffLeaveMapper;
|
|
@Autowired
|
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());
|
staffLeave.setReason(staffLeaveDto.getReason());
|
String reason = staffLeaveDto.getReason();
|
if (StaffLeaveReasonOther.getCode().equals(reason)){
|
staffLeave.setRemark(staffLeaveDto.getRemark());
|
}
|
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, "员工离职导出");
|
}
|
}
|