package com.billion.main.da.service.impl;

import com.billion.common.utils.DateUtils;
import com.billion.main.da.domain.DaParamCollection;
import com.billion.main.da.mapper.DaParamCollectionMapper;
import com.billion.main.da.service.IDaParamCollectionService;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 参数采集Service业务层处理
 * 
 * @author Billion-Yi
 * @date 2024-11-20
 */
@Service
public class DaParamCollectionServiceImpl implements IDaParamCollectionService
{
    @Autowired
    private DaParamCollectionMapper daParamCollectionMapper;

    @Autowired
    private IDaParamCollectionService daParamCollectionService;

    @Resource
    private SqlSessionFactory sqlSessionFactory;



    /**
     * 查询参数采集
     * 
     * @param id 参数采集主键
     * @return 参数采集
     */
    @Override
    public DaParamCollection selectDaParamCollectionById(Long id)
    {
        return daParamCollectionMapper.selectDaParamCollectionById(id);
    }

    /**
     * 查询参数采集列表
     * 
     * @param daParamCollection 参数采集
     * @return 参数采集
     */
    @Override
    public List<DaParamCollection> selectDaParamCollectionList(DaParamCollection daParamCollection)
    {
        if(daParamCollection.getDateConditions()!=null){
            String[] conditions = daParamCollection.getDateConditions();
            daParamCollection.setStartTime(conditions[0]);
            daParamCollection.setEndTime(conditions[1]);
        }
        return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection);
    }

    /**
     * 新增参数采集
     * 
     * @param daParamCollection 参数采集
     * @return 结果
     */
    @Override
    public int insertDaParamCollection(DaParamCollection daParamCollection)
    {
        daParamCollection.setCreateTime(DateUtils.getNowDate());
        return daParamCollectionMapper.insertDaParamCollection(daParamCollection);
    }

    /**
     * 修改参数采集
     * 
     * @param daParamCollection 参数采集
     * @return 结果
     */
    @Override
    public int updateDaParamCollection(DaParamCollection daParamCollection)
    {
        return daParamCollectionMapper.updateDaParamCollection(daParamCollection);
    }

    /**
     * 批量删除参数采集
     * 
     * @param ids 需要删除的参数采集主键
     * @return 结果
     */
    @Override
    public int deleteDaParamCollectionByIds(Long[] ids)
    {
        return daParamCollectionMapper.deleteDaParamCollectionByIds(ids);
    }

    /**
     * 删除参数采集信息
     * 
     * @param id 参数采集主键
     * @return 结果
     */
    @Override
    public int deleteDaParamCollectionById(Long id)
    {
        return daParamCollectionMapper.deleteDaParamCollectionById(id);
    }
    @Override
    public void saveBeachDaParamCollection(List<DaParamCollection> list) {
        // ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
        // ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
        // ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。

        // 关闭session的自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
        try {
            DaParamCollectionMapper userMapper = sqlSession.getMapper(DaParamCollectionMapper.class);
            list.stream().forEach(DaParamCollection -> userMapper.insertDaParamCollection(DaParamCollection));
            // 提交数据
            sqlSession.commit();
            sqlSession.rollback();
        } catch (Exception e) {
            sqlSession.rollback();
        } finally {
            sqlSession.close();
        }
    }
}