package com.ruoyi.system.service.impl;


import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.KaoqinConfig;
import com.ruoyi.system.mapper.KaoqinConfigMapper;
import com.ruoyi.system.service.IKaoqinConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * 考勤规则配置Service业务层处理
 * 
 * @author boman
 * @date 2023-02-02
 */
@Service
public class KaoqinConfigServiceImpl implements IKaoqinConfigService
{
    @Autowired
    private KaoqinConfigMapper kaoqinConfigMapper;

    /**
     * 查询考勤规则配置
     * 
     * @param kaoqinId 考勤规则配置主键
     * @return 考勤规则配置
     */
    @Override
    public KaoqinConfig selectKaoqinConfigByKaoqinId(Long kaoqinId)
    {
        return kaoqinConfigMapper.selectKaoqinConfigByKaoqinId(kaoqinId);
    }

    @Override
    public KaoqinConfig selectKaoqinConfigByDeptId(Long deptId) {
        return kaoqinConfigMapper.selectKaoqinConfigByDeptId(deptId);

    }

    /**
     * 查询考勤规则配置列表
     * 
     * @param kaoqinConfig 考勤规则配置
     * @return 考勤规则配置
     */
    @Override
    public List<KaoqinConfig> selectKaoqinConfigList(KaoqinConfig kaoqinConfig)
    {
        return kaoqinConfigMapper.selectKaoqinConfigList(kaoqinConfig);
    }

    /**
     * 新增考勤规则配置
     * 
     * @param kaoqinConfig 考勤规则配置
     * @return 结果
     */
    @Override
    public int insertKaoqinConfig(KaoqinConfig kaoqinConfig)
    {
        Long deptId = kaoqinConfig.getDeptId();
        KaoqinConfig kc = new KaoqinConfig();
        kc.setDeptId(deptId);
        List<KaoqinConfig> kaoqinConfigs = kaoqinConfigMapper.selectKaoqinConfigByDeptId(kc);
        if (kaoqinConfigs != null && kaoqinConfigs.size() > 0){
            return 0;
        }
        kaoqinConfig.setCreateTime(DateUtils.getNowDate());
        kaoqinConfig.setUpdateTime(DateUtils.getNowDate());
        return kaoqinConfigMapper.insertKaoqinConfig(kaoqinConfig);
    }

    /**
     * 修改考勤规则配置
     * 
     * @param kaoqinConfig 考勤规则配置
     * @return 结果
     */
    @Override
    public int updateKaoqinConfig(KaoqinConfig kaoqinConfig)
    {
        Long deptId = kaoqinConfig.getDeptId();
        KaoqinConfig kao = new KaoqinConfig();
        kao.setDeptId(deptId);
        //不能把一个部门的规则,修改到另一个存在部门的规则中
        List<KaoqinConfig> kaoqinConfigs = kaoqinConfigMapper.selectKaoqinConfigByDeptId(kao);
        if (kaoqinConfigs !=null && kaoqinConfigs.size() > 0){
            Long kaoqinId = kaoqinConfigs.get(0).getKaoqinId();
            if (!kaoqinConfig.getKaoqinId().equals(kaoqinId)){
                return 0;
            }
        }
        kaoqinConfig.setUpdateTime(DateUtils.getNowDate());
        return kaoqinConfigMapper.updateKaoqinConfig(kaoqinConfig);
    }

    /**
     * 批量删除考勤规则配置
     * 
     * @param kaoqinIds 需要删除的考勤规则配置主键
     * @return 结果
     */
    @Override
    public int deleteKaoqinConfigByKaoqinIds(Long[] kaoqinIds)
    {
        return kaoqinConfigMapper.deleteKaoqinConfigByKaoqinIds(kaoqinIds);
    }

    /**
     * 删除考勤规则配置信息
     * 
     * @param kaoqinId 考勤规则配置主键
     * @return 结果
     */
    @Override
    public int deleteKaoqinConfigByKaoqinId(Long kaoqinId)
    {
        return kaoqinConfigMapper.deleteKaoqinConfigByKaoqinId(kaoqinId);
    }

    @Override
    public KaoqinConfig selectKaoqinConfigBynew() {
        return kaoqinConfigMapper.selectKaoqinConfigBynew();
    }
}
