package com.zd.chemical.service.impl;

import java.util.Collections;
import java.util.List;
import java.util.Optional;

import com.zd.chemical.domain.vo.HxpAlarmConfigVo;
import com.zd.common.core.utils.DateUtils;
import com.zd.common.security.utils.SaveUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zd.chemical.mapper.HxpAlarmConfigMapper;
import com.zd.chemical.domain.HxpAlarmConfig;
import com.zd.chemical.service.IHxpAlarmConfigService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 化学品报警配置Service业务层处理
 *
 * @author liubo
 * @date 2022-06-16
 */
@Service
public class HxpAlarmConfigServiceImpl implements IHxpAlarmConfigService {
    @Autowired
    private HxpAlarmConfigMapper hxpAlarmConfigMapper;

    /**
     * 查询化学品报警配置
     *
     * @param id 化学品报警配置主键
     * @return 化学品报警配置
     */
    @Override
    public HxpAlarmConfig selectHxpAlarmConfigById(Long id) {
        return hxpAlarmConfigMapper.selectHxpAlarmConfigById(id);
    }

    /**
     * 查询化学品报警配置列表
     *
     * @param hxpAlarmConfig 化学品报警配置
     * @return 化学品报警配置
     */
    @Override
    public List<HxpAlarmConfig> selectHxpAlarmConfigList(HxpAlarmConfig hxpAlarmConfig) {
        return hxpAlarmConfigMapper.selectHxpAlarmConfigList(hxpAlarmConfig);
    }

    /**
     * 新增化学品报警配置
     *
     * @param hxpAlarmConfigVo 化学品报警配置
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insertHxpAlarmConfig(HxpAlarmConfigVo hxpAlarmConfigVo) {
        //删除学院的旧配置，在插入新配置。
        hxpAlarmConfigMapper.deleteHxpAlarmConfigByDeptId(hxpAlarmConfigVo.getAlarmDeptId());
        Optional.ofNullable(hxpAlarmConfigVo.getHxpAlarmConfigList()).orElseGet(Collections::emptyList).stream()
                .forEach(a->{
                    //设置其他公共字段
                    SaveUtil.setCommonAttr(a);
                    a.setAlarmDeptId(hxpAlarmConfigVo.getAlarmDeptId());
                    hxpAlarmConfigMapper.insertHxpAlarmConfig(a);
                });
        return 1;
    }

    /**
     * 修改化学品报警配置
     *
     * @param hxpAlarmConfig 化学品报警配置
     * @return 结果
     */
    @Override
    public int updateHxpAlarmConfig(HxpAlarmConfig hxpAlarmConfig) {
        return hxpAlarmConfigMapper.updateHxpAlarmConfig(hxpAlarmConfig);
    }

    /**
     * 批量删除化学品报警配置
     *
     * @param ids 需要删除的化学品报警配置主键
     * @return 结果
     */
    @Override
    public int deleteHxpAlarmConfigByIds(Long[] ids) {
        return hxpAlarmConfigMapper.deleteHxpAlarmConfigByIds(ids);
    }

    /**
     * 删除化学品报警配置信息
     *
     * @param id 化学品报警配置主键
     * @return 结果
     */
    @Override
    public int deleteHxpAlarmConfigById(Long id) {
        return hxpAlarmConfigMapper.deleteHxpAlarmConfigById(id);
    }


    /**
     * 查询化学品报警配置
     *
     * @param alarmDeptId 学院id
     * @return 化学品报警配置
     */
    @Override
    public List<HxpAlarmConfig> getDeptDetail(Long alarmDeptId) {
        return hxpAlarmConfigMapper.getDeptDetail(alarmDeptId);
    }
}
