package cn.iocoder.yudao.module.pms.service.yanfan.var;

import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.module.pms.controller.admin.yanfan.var.vo.IotYfVarTempPageReqVO;
import cn.iocoder.yudao.module.pms.controller.admin.yanfan.var.vo.IotYfVarTempSaveReqVO;
import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.var.IotYfVarTempDO;
import cn.iocoder.yudao.module.pms.dal.mysql.yanfan.var.IotYfVarTempMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;


import javax.annotation.Resource;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;

/**
 * yf设备采集变量模板对象 Service 实现类
 *
 * @author 超级管理员
 */
@Service
@Validated
public class IotVarTempServiceImpl implements IotVarTempService {

    @Resource
    private IotYfVarTempMapper iotYfVarTempMapper;

    @Override
    public IotYfVarTempDO selectVarTempByProductId(Long productId) {
        return iotYfVarTempMapper.selectVarTempByProductId(productId);
    }

    @Override
    public Long createIotVarTemp(IotYfVarTempSaveReqVO createReqVO) {
        // 插入
        IotYfVarTempDO iotVarTemp = BeanUtils.toBean(createReqVO, IotYfVarTempDO.class);
        iotYfVarTempMapper.insert(iotVarTemp);
        // 返回
        return iotVarTemp.getTemplateId();
    }

    @Override
    public void updateIotVarTemp(IotYfVarTempSaveReqVO updateReqVO) {
        // 校验存在
        validateIotVarTempExists(updateReqVO.getTemplateId());
        // 更新
        IotYfVarTempDO updateObj = BeanUtils.toBean(updateReqVO, IotYfVarTempDO.class);
        iotYfVarTempMapper.updateById(updateObj);
    }

    @Override
    public void deleteIotVarTemp(Long id) {
        // 校验存在
        validateIotVarTempExists(id);
        // 删除
        iotYfVarTempMapper.deleteById(id);
    }

    private void validateIotVarTempExists(Long id) {
        if (iotYfVarTempMapper.selectById(id) == null) {
            throw exception(new ErrorCode(111,"不存在设备采集变量模板对象"));
        }
    }

    @Override
    public IotYfVarTempDO getIotVarTemp(Long id) {
        return iotYfVarTempMapper.selectById(id);
    }

    @Override
    public PageResult<IotYfVarTempDO> getIotVarTempPage(IotYfVarTempPageReqVO pageReqVO) {
        return iotYfVarTempMapper.selectPage(pageReqVO);
    }

}
