package cn.iocoder.yudao.module.smartfactory.service.factorykiln;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnSaveReqVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorykiln.FactoryKilnDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorykiln.FactoryKilnMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

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

/**
 * 工厂窑炉 Service 实现类
 *
 * @author 姚君
 */
@Service
@Validated
public class FactoryKilnServiceImpl implements FactoryKilnService {

    @Resource
    private FactoryKilnMapper factoryKilnMapper;

    @Override
    public Long createFactoryKiln(FactoryKilnSaveReqVO createReqVO) {
        // 插入
        FactoryKilnDO factoryKiln = BeanUtils.toBean(createReqVO, FactoryKilnDO.class);
        factoryKilnMapper.insert(factoryKiln);
        // 返回
        return factoryKiln.getId();
    }

    @Override
    public void updateFactoryKiln(FactoryKilnSaveReqVO updateReqVO) {
        // 更新
        FactoryKilnDO updateObj = BeanUtils.toBean(updateReqVO, FactoryKilnDO.class);
        factoryKilnMapper.updateById(updateObj);
    }

    @Override
    public void deleteFactoryKiln(Long id) {
        // 删除
        factoryKilnMapper.deleteById(id);
    }

    @Override
    public FactoryKilnDO getFactoryKiln(Long id) {
        return factoryKilnMapper.selectById(id);
    }

    @Override
    public PageResult<FactoryKilnRespVO> getFactoryKilnPage(FactoryKilnPageReqVO pageReqVO) {
        IPage<FactoryKilnRespVO> pageResult = factoryKilnMapper.getFactoryKilnPage(pageReqVO, MyBatisUtils.buildPage(pageReqVO));
        return new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
    }

    @Override
    public List<FactoryKilnDO> getFactoryKilnByFactoryId(Long factoryId) {
        return factoryKilnMapper.selectList(new LambdaQueryWrapper<FactoryKilnDO>().eq(factoryId != null, FactoryKilnDO::getFactoryId, factoryId));
    }

}
