| | |
| | | package com.ruoyi.staff.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | 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.dto.WordDateDto; |
| | | import com.ruoyi.project.system.domain.SysPost; |
| | | import com.ruoyi.project.system.mapper.SysPostMapper; |
| | | import com.ruoyi.staff.dto.StaffOnJobDto; |
| | | import com.ruoyi.staff.mapper.StaffContractMapper; |
| | | import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; |
| | | 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.StaffLeave; |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; |
| | | import com.ruoyi.staff.service.IStaffOnJobService; |
| | | import freemarker.template.Configuration; |
| | | import freemarker.template.Template; |
| | | import freemarker.template.TemplateException; |
| | | import lombok.AllArgsConstructor; |
| | | |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.math.BigDecimal; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.time.Instant; |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | |
| | | |
| | | private StaffOnJobMapper staffOnJobMapper; |
| | | |
| | | private SysPostMapper sysPostMapper; |
| | | |
| | | private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper; |
| | | private StaffContractMapper staffContractMapper; |
| | | private StaffLeaveMapper staffLeaveMapper; |
| | | |
| | | |
| | | //在职员工台账分页查询 |
| | | @Override |
| | | public IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob) { |
| | | public IPage<StaffOnJobDto> staffOnJobListPage(Page page, StaffOnJob staffOnJob) { |
| | | return staffOnJobMapper.staffOnJobListPage(page,staffOnJob); |
| | | } |
| | | |
| | | //新增入职 |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int add(StaffOnJobDto staffOnJobPrams) { |
| | | String[] ignoreProperties = {"id"};//排除id属性 |
| | | // 判断编号是否存在 |
| | | List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo())); |
| | | if (staffOnJobs.size()>0){ |
| | | throw new BaseException("编号为"+staffOnJobPrams.getStaffNo()+"的员工已经存在,无法新增!!!"); |
| | | } |
| | | // 创建入职数据 |
| | | staffOnJobMapper.insert(staffOnJobPrams); |
| | | |
| | | // 创建合同记录 |
| | | StaffContract staffContract = new StaffContract(); |
| | | staffContract.setStaffOnJobId(staffOnJobPrams.getId()); |
| | | staffContract.setContractTerm(staffOnJobPrams.getContractTerm()); |
| | | staffContract.setContractStartTime(staffOnJobPrams.getContractStartTime()); |
| | | staffContract.setContractEndTime(staffOnJobPrams.getContractEndTime()); |
| | | return staffContractMapper.insert(staffContract); |
| | | } |
| | | |
| | | //更新入职信息 |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int update(Long id, StaffOnJobDto staffOnJobParams) { |
| | | // 判断对象是否存在 |
| | | StaffOnJob job = staffOnJobMapper.selectById(id); |
| | | if (job == null){ |
| | | throw new BaseException("编号为"+staffOnJobParams.getStaffNo()+"的员工不存在,无法更新!!!"); |
| | | } |
| | | |
| | | // 更新员工数据 |
| | | String[] ignoreProperties = {"id"};//排除id属性 |
| | | BeanUtils.copyProperties(staffOnJobParams,job,ignoreProperties); |
| | | staffOnJobMapper.updateById(job); |
| | | |
| | | // 获取最新合同数据,并且更新 |
| | | StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery() |
| | | .eq(StaffContract::getStaffOnJobId, id) |
| | | .orderByDesc(StaffContract::getId)); |
| | | if (contract != null){ |
| | | BeanUtils.copyProperties(staffOnJobParams,contract,ignoreProperties); |
| | | return staffContractMapper.updateById(contract); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | //删除入职 |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int delStaffOnJobs(List<Integer> ids) { |
| | | // 删除入职数据 |
| | | staffOnJobMapper.deleteBatchIds(ids); |
| | | // 删除离职数据 |
| | | staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids)); |
| | | // 删除合同数据 |
| | | return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids)); |
| | | } |
| | | |
| | | //在职员工详情 |
| | | @Override |
| | | public List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo) { |
| | | return staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery() |
| | | .eq(StaffJoinLeaveRecord::getStaffState,1) |
| | | .eq(StaffJoinLeaveRecord::getStaffNo,staffNo)); |
| | | public StaffOnJobDto staffOnJobDetail(Long id) { |
| | | StaffOnJob staffOnJob = staffOnJobMapper.selectById(id); |
| | | StaffOnJobDto staffOnJobDto = new StaffOnJobDto(); |
| | | BeanUtils.copyProperties(staffOnJob, staffOnJobDto); |
| | | // 查询岗位名称 |
| | | SysPost post = sysPostMapper.selectPostById((long) staffOnJob.getSysPostId()); |
| | | staffOnJobDto.setPostName(post.getPostName()); |
| | | |
| | | // 查询合同信息 |
| | | StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery() |
| | | .eq(StaffContract::getStaffOnJobId, staffOnJob.getId()) |
| | | .orderByDesc(StaffContract::getId)); |
| | | if (contract != null){ |
| | | staffOnJobDto.setContractTerm(contract.getContractTerm()); |
| | | staffOnJobDto.setContractStartTime(contract.getContractStartTime()); |
| | | staffOnJobDto.setContractEndTime(contract.getContractEndTime()); |
| | | } |
| | | return staffOnJobDto; |
| | | } |
| | | |
| | | //在职员工导出 |
| | | @Override |
| | | public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) { |
| | | List<StaffOnJob> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob); |
| | | ExcelUtil<StaffOnJob> util = new ExcelUtil<StaffOnJob>(StaffOnJob.class); |
| | | List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob); |
| | | ExcelUtil<StaffOnJobDto> util = new ExcelUtil<StaffOnJobDto>(StaffOnJobDto.class); |
| | | util.exportExcel(response, staffOnJobs, "在职员工台账导出"); |
| | | } |
| | | |