yaowanxin
45 分钟以前 5e55cbc7cf95b0f892ae4066a7699a5f76a0f2f3
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
@@ -7,7 +7,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.excel.ExcelUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.lavorissue.mapper.DeptPositionMapper;
import com.ruoyi.lavorissue.pojo.DeptPosition;
import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
@@ -17,6 +20,8 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletException;
@@ -58,10 +63,12 @@
            if (staffOnJobs.size()>0){
                StaffOnJob staffOnJob = staffOnJobs.get(0);
                //先比较到期日期,这里选用到期日期最久的
                if (staffJoinLeaveRecord.getContractEndTime().compareTo(staffOnJob.getContractExpireTime())>0) {
                    BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
                    staffOnJobMapper.updateById(staffOnJob);
                }
//                if (staffJoinLeaveRecord.getContractEndTime().compareTo(staffOnJob.getContractExpireTime())>0) {
//                    BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
//                    staffOnJobMapper.updateById(staffOnJob);
//                }
                BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
                staffOnJobMapper.updateById(staffOnJob);
            }else {
                StaffOnJob staffOnJob = new StaffOnJob();
                BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties);
@@ -156,14 +163,39 @@
            StaffOnJob job = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery()
                    .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())).get(0);
            //如果更改的合同到期时间更久则更新,如果没有就不用更新
            if (staffJoinLeaveRecord.getContractEndTime().compareTo(job.getContractExpireTime())>0) {
                BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties);
                staffOnJobMapper.updateById(job);
            }
//            if (staffJoinLeaveRecord.getContractEndTime().compareTo(job.getContractExpireTime())>0) {
//                BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties);
//                staffOnJobMapper.updateById(job);
//            }
            BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties);
            staffOnJobMapper.updateById(job);
        }else {
            /*离职*/
            //离职的编辑不会影响在职表
        }
        return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
    }
    private final DeptPositionMapper deptPositionMapper;
    @Override
    public Boolean importData(MultipartFile file) throws Exception{
        ExcelUtil<StaffJoinLeaveRecord> util = new ExcelUtil<>(StaffJoinLeaveRecord.class);
        List<StaffJoinLeaveRecord> staffJoinLeaveRecords = util.importExcel(file.getInputStream());
        if(CollectionUtils.isEmpty(staffJoinLeaveRecords)){
            return false;
        }
        List<DeptPosition> deptPositions = deptPositionMapper.selectList(null);
        if(CollectionUtils.isEmpty(deptPositions)){
            return false;
        }
        // 通过部门名称查询部门id
        for (StaffJoinLeaveRecord staffJoinLeaveRecord : staffJoinLeaveRecords) {
            staffJoinLeaveRecord.setStaffState(1);
            Optional<DeptPosition> deptPosition = deptPositions.stream().filter(deptPosition1 -> deptPosition1.getName().equals(staffJoinLeaveRecord.getDeptPositionName())).findFirst();
            deptPosition.ifPresent(position -> staffJoinLeaveRecord.setDeptPositionId(position.getId()));
            add(staffJoinLeaveRecord);
        }
        return true;
    }
}