| | |
| | | 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.OrderUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.dto.WordDateDto; |
| | | import com.ruoyi.project.system.domain.SysPost; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysPostMapper; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.project.system.service.impl.SysUserServiceImpl; |
| | | import com.ruoyi.staff.dto.StaffOnJobDto; |
| | | import com.ruoyi.staff.mapper.StaffContractMapper; |
| | | import com.ruoyi.staff.mapper.StaffLeaveMapper; |
| | | import com.ruoyi.staff.mapper.StaffOnJobMapper; |
| | | import com.ruoyi.staff.pojo.StaffContract; |
| | | import com.ruoyi.staff.pojo.StaffLeave; |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | import com.ruoyi.staff.mapper.*; |
| | | import com.ruoyi.staff.pojo.*; |
| | | import com.ruoyi.staff.service.IStaffOnJobService; |
| | | import freemarker.template.Configuration; |
| | | import freemarker.template.Template; |
| | | import lombok.AllArgsConstructor; |
| | | |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.collections4.ListUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | |
| | | @Autowired |
| | | private StaffLeaveMapper staffLeaveMapper; |
| | | |
| | | @Autowired |
| | | private SysUserServiceImpl sysUserService; |
| | | |
| | | @Autowired |
| | | private SysUserMapper sysUserMapper; |
| | | |
| | | @Autowired |
| | | private StaffEducationServiceImpl staffEducationService; |
| | | |
| | | @Autowired |
| | | private StaffEducationMapper staffEducationMapper; |
| | | |
| | | @Autowired |
| | | private StaffWorkExperienceMapper staffWorkExperienceMapper; |
| | | |
| | | @Autowired |
| | | private StaffWorkExperienceServiceImpl staffWorkExperienceServiceImpl; |
| | | |
| | | @Autowired |
| | | private StaffEmergencyContactMapper staffEmergencyContactMapper; |
| | | |
| | | @Autowired |
| | | private StaffEmergencyContactServiceImpl staffEmergencyContactServiceImpl; |
| | | |
| | | |
| | | //在职员工台账分页查询 |
| | | @Override |
| | |
| | | String[] ignoreProperties = {"id"};//排除id属性 |
| | | // 判断编号是否存在 |
| | | List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo())); |
| | | if (staffOnJobs.size()>0){ |
| | | if (staffOnJobs != null && !staffOnJobs.isEmpty()){ |
| | | throw new BaseException("编号为"+staffOnJobPrams.getStaffNo()+"的员工已经存在,无法新增!!!"); |
| | | } |
| | | |
| | | // 创建入职数据 |
| | | staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime()); |
| | | staffOnJobPrams.setStaffState(1); |
| | | staffOnJobMapper.insert(staffOnJobPrams); |
| | | |
| | | // 查询用户是否已经新增 |
| | | SysUser sysUser = sysUserService.selectUserById(staffOnJobPrams.getId()); |
| | | if(sysUser == null){ |
| | | SysUser sysUser1 = new SysUser(); |
| | | sysUser1.setUserName(staffOnJobPrams.getStaffNo()); |
| | | sysUser1.setNickName(staffOnJobPrams.getStaffName()); |
| | | String s = SecurityUtils.encryptPassword("123456"); |
| | | sysUser1.setPassword(s); |
| | | if(staffOnJobPrams.getSysPostId() != null){ |
| | | Long[] posts = new Long[]{staffOnJobPrams.getSysPostId().longValue()}; |
| | | sysUser1.setPostIds(posts); |
| | | } |
| | | sysUser1.setRoleIds(new Long[]{staffOnJobPrams.getRoleId()}); |
| | | sysUser1.setDeptIds(new Long[]{staffOnJobPrams.getSysDeptId()}); |
| | | sysUser1.setStatus("0"); |
| | | sysUserService.insertUser(sysUser1); |
| | | } |
| | | // 绑定子表数据 |
| | | bingingStaffOnJobExtra(staffOnJobPrams.getId(),staffOnJobPrams); |
| | | // 创建合同记录 |
| | | StaffContract staffContract = new StaffContract(); |
| | | staffContract.setStaffOnJobId(staffOnJobPrams.getId()); |
| | |
| | | staffContractMapper.updateById(contract); |
| | | } |
| | | |
| | | // 删除所有子表数据 |
| | | delStaffOnJobExtra(Arrays.asList(id)); |
| | | // 绑定子表数据 |
| | | bingingStaffOnJobExtra(id,staffOnJobParams); |
| | | // 更新员工数据 |
| | | staffOnJobParams.setContractExpireTime(staffOnJobParams.getContractEndTime()); |
| | | return staffOnJobMapper.updateById(staffOnJobParams); |
| | | } |
| | | |
| | | /** |
| | | * 绑定员工子表数据 |
| | | * @param staffOnJobPrams |
| | | * @param id |
| | | */ |
| | | public void bingingStaffOnJobExtra(Long id,StaffOnJob staffOnJobPrams) { |
| | | // 新增教育经历 |
| | | if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEducationList())){ |
| | | staffOnJobPrams.getStaffEducationList().stream() |
| | | .filter(Objects::nonNull) // 过滤null对象,避免空指针 |
| | | .forEach(staff -> staff.setStaffOnJobId(id)); // 赋值 |
| | | staffEducationService.saveBatch(staffOnJobPrams.getStaffEducationList()); |
| | | } |
| | | // 新增工作经历 |
| | | if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffWorkExperienceList())){ |
| | | staffOnJobPrams.getStaffWorkExperienceList().stream() |
| | | .filter(Objects::nonNull) // 过滤null对象,避免空指针 |
| | | .forEach(staff -> staff.setStaffOnJobId(id)); // 赋值 |
| | | staffWorkExperienceServiceImpl.saveBatch(staffOnJobPrams.getStaffWorkExperienceList()); |
| | | } |
| | | // 新增紧急联系人 |
| | | if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEmergencyContactList())){ |
| | | staffOnJobPrams.getStaffEmergencyContactList().stream() |
| | | .filter(Objects::nonNull) // 过滤null对象,避免空指针 |
| | | .forEach(staff -> staff.setStaffOnJobId(id)); // 赋值 |
| | | staffEmergencyContactServiceImpl.saveBatch(staffOnJobPrams.getStaffEmergencyContactList()); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 通过员工id删除教育经历,工作经历,紧急联系人 |
| | | * @param ids |
| | | * @return |
| | | */ |
| | | public void delStaffOnJobExtra(List<Long> ids) { |
| | | // 删除教育经历 |
| | | staffEducationService.remove(Wrappers.<StaffEducation>lambdaQuery().in(StaffEducation::getStaffOnJobId,ids)); |
| | | // 删除工作经历 |
| | | staffWorkExperienceServiceImpl.remove(Wrappers.<StaffWorkExperience>lambdaQuery().in(StaffWorkExperience::getStaffOnJobId,ids)); |
| | | // 删除紧急联系人 |
| | | staffEmergencyContactServiceImpl.remove(Wrappers.<StaffEmergencyContact>lambdaQuery().in(StaffEmergencyContact::getStaffOnJobId,ids)); |
| | | } |
| | | |
| | | //删除入职 |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int delStaffOnJobs(List<Integer> ids) { |
| | | List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().in(StaffOnJob::getId, ids)); |
| | | if(CollectionUtils.isEmpty(staffOnJobs)){ |
| | | throw new BaseException("该员工不存在,无法删除!!!"); |
| | | } |
| | | // 删除入职数据 |
| | | staffOnJobMapper.deleteBatchIds(ids); |
| | | // 删除离职数据 |
| | | staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids)); |
| | | // 删除用户数据 |
| | | List<SysUser> sysUsers = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery() |
| | | .in(SysUser::getUserName, staffOnJobs.stream().map(StaffOnJob::getStaffNo).collect(Collectors.toList()))); |
| | | if(CollectionUtils.isNotEmpty(sysUsers)){ |
| | | Long[] longs = sysUsers.stream().map(SysUser::getUserId).toArray(Long[]::new); |
| | | sysUserService.deleteUserByIds(longs); |
| | | } |
| | | // 删除子表数据 |
| | | delStaffOnJobExtra(ids.stream().map(Integer::longValue).collect(Collectors.toList())); |
| | | |
| | | // 删除合同数据 |
| | | return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids)); |
| | | } |
| | |
| | | staffOnJobDto.setContractStartTime(contract.getContractStartTime()); |
| | | staffOnJobDto.setContractEndTime(contract.getContractEndTime()); |
| | | } |
| | | // 获取子表数据 |
| | | staffOnJobDto.setStaffEducationList(staffEducationMapper.selectList(Wrappers.<StaffEducation>lambdaQuery() |
| | | .eq(StaffEducation::getStaffOnJobId, staffOnJob.getId()))); |
| | | staffOnJobDto.setStaffWorkExperienceList(staffWorkExperienceMapper.selectList(Wrappers.<StaffWorkExperience>lambdaQuery() |
| | | .eq(StaffWorkExperience::getStaffOnJobId, staffOnJob.getId()))); |
| | | staffOnJobDto.setStaffEmergencyContactList(staffEmergencyContactMapper.selectList(Wrappers.<StaffEmergencyContact>lambdaQuery() |
| | | .eq(StaffEmergencyContact::getStaffOnJobId, staffOnJob.getId()))); |
| | | return staffOnJobDto; |
| | | } |
| | | |