package com.zd.laboratory.service.impl;

import java.util.List;

import com.zd.common.core.domain.per.PerPrefix;
import com.zd.common.core.utils.DateUtils;
import com.zd.common.core.utils.SecurityUtils;
import com.zd.common.datascope.annotation.DataScope;
import com.zd.common.security.utils.SaveUtil;

import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zd.laboratory.mapper.LabCheckConfigMapper;
import com.zd.laboratory.domain.LabCheckConfig;
import com.zd.laboratory.service.ILabCheckConfigService;

/**
 * 检查推送信息配置Service业务层处理
 *
 * @author liubo
 * @date 2021-12-30
 */
@Service
public class LabCheckConfigServiceImpl implements ILabCheckConfigService {
    @Autowired
    private LabCheckConfigMapper labCheckConfigMapper;

    /**
     * 查询检查推送信息配置
     *
     * @param id 检查推送信息配置主键
     * @return 检查推送信息配置
     */
    @Override
    public LabCheckConfig selectLabCheckConfigById(Long id) {
        return labCheckConfigMapper.selectLabCheckConfigById(id);
    }

    /**
     * 查询检查推送信息配置列表
     *
     * @param labCheckConfig 检查推送信息配置
     * @return 检查推送信息配置
     */
    @Override
    public List<LabCheckConfig> selectLabCheckConfigList(LabCheckConfig labCheckConfig) {
        return labCheckConfigMapper.selectLabCheckConfigList(labCheckConfig);
    }

    /**
     * 新增检查推送信息配置
     *
     * @param labCheckConfig 检查推送信息配置
     * @return 结果
     */
    @Override
    public int insertLabCheckConfig(LabCheckConfig labCheckConfig) {
        //设置其他公共字段
        SaveUtil.setCommonAttr(labCheckConfig);
        return labCheckConfigMapper.insertLabCheckConfig(labCheckConfig);
    }

    /**
     * 修改检查推送信息配置
     *
     * @param labCheckConfig 检查推送信息配置
     * @return 结果
     */
    @Override
    public int updateLabCheckConfig(LabCheckConfig labCheckConfig) {
        labCheckConfig.setUpdateTime(DateUtils.getNowDate());
        labCheckConfig.setUpdateBy(SecurityUtils.getUsername());
        return labCheckConfigMapper.updateLabCheckConfig(labCheckConfig);
    }

    /**
     * 批量删除检查推送信息配置
     *
     * @param ids 需要删除的检查推送信息配置主键
     * @return 结果
     */
    @Override
    public int deleteLabCheckConfigByIds(Long[] ids) {
        return labCheckConfigMapper.deleteLabCheckConfigByIds(ids);
    }

    /**
     * 删除检查推送信息配置信息
     *
     * @param id 检查推送信息配置主键
     * @return 结果
     */
    @Override
    public int deleteLabCheckConfigById(Long id) {
        return labCheckConfigMapper.deleteLabCheckConfigById(id);
    }

    @Override
    //@DataScope(deptAlias = "d" , userAlias = "t" , permi = PerPrefix.LABORATORY_CHECKRECORD)
    public LabCheckConfig getCheckConfigInfo() {
        LabCheckConfig labCheckConfig = new LabCheckConfig();
        List<LabCheckConfig> list = labCheckConfigMapper.selectLabCheckConfigList(labCheckConfig);
        if(CollectionUtils.isNotEmpty(list)){
            labCheckConfig = list.get(0);
        }
        if(labCheckConfig == null || labCheckConfig.getId() == null){
            labCheckConfig = new LabCheckConfig();
            labCheckConfig.setCreateTime(DateUtils.getNowDate());
            labCheckConfigMapper.insertLabCheckConfig(labCheckConfig);
        }
        return labCheckConfig;
    }
}
