package com.ruoyi.device.service.impl;

import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.device.domain.BaseInfo;
import com.ruoyi.device.mapper.BaseInfoMapper;
import com.ruoyi.device.service.IBaseInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 设备基础信息Service业务层处理
 *
 * @author ruoyi
 * @date 2025-05-19
 */
@Service
public class BaseInfoServiceImpl implements IBaseInfoService {
    @Autowired
    private BaseInfoMapper baseInfoMapper;

    /**
     * 查询设备基础信息
     *
     * @param objId 设备基础信息主键
     * @return 设备基础信息
     */
    @Override
    public BaseInfo selectBaseInfoByObjId(Long objId) {
        return baseInfoMapper.selectBaseInfoByObjId(objId);
    }

    /**
     * 查询设备基础信息列表
     *
     * @param baseInfo 设备基础信息
     * @return 设备基础信息
     */
    @Override
    public List<BaseInfo> selectBaseInfoList(BaseInfo baseInfo) {
        return baseInfoMapper.selectBaseInfoList(baseInfo);
    }

    /**
     * 新增设备基础信息
     *
     * @param baseInfo 设备基础信息
     * @return 结果
     */
    @Override
    public int insertBaseInfo(BaseInfo baseInfo) {
        baseInfo.setCreateTime(DateUtils.getNowDate());
        baseInfo.setCreateBy(ShiroUtils.getLoginName());
        return baseInfoMapper.insertBaseInfo(baseInfo);
    }

    /**
     * 修改设备基础信息
     *
     * @param baseInfo 设备基础信息
     * @return 结果
     */
    @Override
    public int updateBaseInfo(BaseInfo baseInfo) {
        baseInfo.setUpdateTime(DateUtils.getNowDate());
        baseInfo.setUpdateBy(ShiroUtils.getLoginName());
        return baseInfoMapper.updateBaseInfo(baseInfo);
    }

    @Override
    public int updateBaseInfoForApi(BaseInfo baseInfo) {

        return baseInfoMapper.updateBaseInfo(baseInfo);
    }

    /**
     * 批量删除设备基础信息
     *
     * @param objIds 需要删除的设备基础信息主键
     * @return 结果
     */
    @Override
    public int deleteBaseInfoByObjIds(String objIds) {
        return baseInfoMapper.deleteBaseInfoByObjIds(Convert.toStrArray(objIds));
    }

    /**
     * 删除设备基础信息信息
     *
     * @param objId 设备基础信息主键
     * @return 结果
     */
    @Override
    public int deleteBaseInfoByObjId(Long objId) {
        return baseInfoMapper.deleteBaseInfoByObjId(objId);
    }

    @Override
    public boolean checkDeviceCode(BaseInfo baseInfo) {
        BaseInfo result = baseInfoMapper.checkDeviceCode(baseInfo);
        if (result == null) {
            return true;
        }
        if (result.getObjId().equals(baseInfo.getObjId())) {
            return true;
        }
        return false;
    }

    @Override
    public BaseInfo selectDeviceInfo(String code) {
        return baseInfoMapper.selectDeviceInfo(code);
    }
}
