package com.lz.modules.flow.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lz.modules.app.entity.StaffSimpleInfo;
import com.lz.modules.flow.dao.EvaluationStartStaffMapper;
import com.lz.modules.flow.entity.EvaluationStartStaff;
import com.lz.modules.flow.service.EvaluationStartStaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
* <p>
* 发起考核考，核组人员对应关系表 服务类
* </p>
*
* @author quyixiao
* @since 2020-10-13
*/

@Service
public class EvaluationStartStaffServiceImpl extends ServiceImpl<EvaluationStartStaffMapper, EvaluationStartStaff> implements EvaluationStartStaffService {


    @Autowired
	private EvaluationStartStaffMapper evaluationStartStaffMapper;

	static int maxInsertSQL = 100;

	@Override
	public EvaluationStartStaff selectEvaluationStartStaffById(Long id){
		return evaluationStartStaffMapper.selectEvaluationStartStaffById(id);
	}



	@Override
	public Long insertEvaluationStartStaff(EvaluationStartStaff evaluationStartStaff){
		return evaluationStartStaffMapper.insertEvaluationStartStaff(evaluationStartStaff);
	}



	@Override
	public int updateEvaluationStartStaffById(EvaluationStartStaff evaluationStartStaff){
		return evaluationStartStaffMapper.updateEvaluationStartStaffById(evaluationStartStaff);
	}



	@Override
	public int updateCoverEvaluationStartStaffById(EvaluationStartStaff evaluationStartStaff){
		return evaluationStartStaffMapper.updateCoverEvaluationStartStaffById(evaluationStartStaff);
	}



	@Override
	public int deleteEvaluationStartStaffById(Long id){
		return evaluationStartStaffMapper.deleteEvaluationStartStaffById(id);
	}

	@Override
	public Long insertEvaluationStartStaffs(List<EvaluationStartStaff> evaluationStartStaffs){
		if(evaluationStartStaffs.size() <= maxInsertSQL){
			return evaluationStartStaffMapper.insertEvaluationStartStaffs(evaluationStartStaffs);
		}
		//下面防止sql语句过大
		Long count = Long.parseLong("0");
		int insert = 0;
		List<EvaluationStartStaff> startStaffs = new ArrayList<>();
		for (EvaluationStartStaff startStaff:evaluationStartStaffs
			 ) {
			startStaffs.add(startStaff);
			insert++;
			if(insert >= maxInsertSQL){
				count += evaluationStartStaffMapper.insertEvaluationStartStaffs(startStaffs);
				startStaffs.clear();
				insert = 0;
			}

		}
		if(startStaffs.size() > 0){
			count += evaluationStartStaffMapper.insertEvaluationStartStaffs(startStaffs);
		}
		return count;


	}

	@Override
	public EvaluationStartStaff selectOneByStartIdAndStaffId(Long startId,Long staffId) {
		return evaluationStartStaffMapper.selectOneByStartIdAndStaffId(startId,staffId);
	}

	@Override
	public EvaluationStartStaff selectManagerEvaluationStartStaff(Long evaluationId, Long userId){
		return evaluationStartStaffMapper.selectManagerEvaluationStartStaff(evaluationId,userId);
	}

	@Override
	public int updateBatchToScore(Long startId,Long evaluationId) {
		return evaluationStartStaffMapper.updateBatchToScore(startId, evaluationId);
	}

	@Override
	public List<Long> selectStaffIdsByStartAndStaffId(Long id, List<StaffSimpleInfo> staffIds){
		return evaluationStartStaffMapper.selectStaffIdsByStartAndStaffId(id, staffIds);
	}

    @Override
    public EvaluationStartStaff selectEvaluationStartById(Long evaluationId, Long startId) {
		return evaluationStartStaffMapper.selectEvaluationStartById(evaluationId, startId);
    }
}
