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.mapper.StaffContractMapper; import com.ruoyi.staff.pojo.StaffContract; import com.ruoyi.staff.service.IStaffContractService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.List; @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class StaffContractServiceImpl extends ServiceImpl implements IStaffContractService { private StaffContractMapper staffContractMapper; @Override public IPage listPage(Page page, StaffContract req) { return staffContractMapper.listPage(page, req); } /** * 续签:记录续签日期/续签后到期日期,状态置"已续签",并更新合同结束日期 */ @Override public int renew(Long id, StaffContract req) { StaffContract contract = staffContractMapper.selectById(id); if (contract == null) { throw new BaseException("合同不存在"); } contract.setStatus(1); if (req.getRenewDate() != null) { contract.setRenewDate(req.getRenewDate()); } if (req.getRenewEndDate() != null) { contract.setRenewEndDate(req.getRenewEndDate()); contract.setEndDate(req.getRenewEndDate()); } if (req.getContractTerm() != null) { contract.setContractTerm(req.getContractTerm()); } return staffContractMapper.updateById(contract); } /** * 解除:记录解除日期/原因,状态置"已解除" */ @Override public int terminate(Long id, StaffContract req) { StaffContract contract = staffContractMapper.selectById(id); if (contract == null) { throw new BaseException("合同不存在"); } contract.setStatus(2); contract.setTerminateDate(req.getTerminateDate()); contract.setTerminateReason(req.getTerminateReason()); return staffContractMapper.updateById(contract); } @Override public void export(HttpServletResponse response, StaffContract req) { List list = staffContractMapper.list(req); ExcelUtil util = new ExcelUtil(StaffContract.class); util.exportExcel(response, list, "合同管理"); } }