package com.bonus.canteen.core.device.mapper;

import java.util.List;

import com.bonus.canteen.core.device.domain.DeviceBind;
import com.bonus.canteen.core.device.dto.ApkDTO;
import com.bonus.canteen.core.device.dto.DeviceDTO;
import com.bonus.canteen.core.device.dto.DeviceSearchDTO;
import com.bonus.canteen.core.device.vo.DeviceFullInfoVO;
import org.apache.ibatis.annotations.Param;

import javax.validation.constraints.NotBlank;

/**
 * 设备绑定多档口子Mapper接口
 *
 * @author xsheng
 * @date 2025-04-03
 */
public interface DoubleScreenMachineMapper {
    /**
     * 查询设备绑定多档口子列表
     *
     * @param dto 设备绑定多档口子
     * @return 设备绑定多档口子集合
     */
    List<DeviceFullInfoVO> getDoubleScreenMachineList(DeviceSearchDTO dto);

    int insertMachine(DeviceDTO dto);

    int insertMachineBind(DeviceDTO dto);

    /**
     * 删除设备绑定多档口子信息
     *
     * @param deviceId 设备绑定多档口子ID
     * @return 结果
     */
    int deleteMachine(String deviceId);
    /**
     * 删除设备绑定多档口子信息
     *
     * @param deviceId 设备绑定多档口子ID
     * @return 结果
     */
    int deleteMachineBind(String deviceId);
    /**
     * 修改设备绑定多档口子
     *
     * @param dto 设备绑定多档口子
     * @return 结果
     */
    int updateMachine(DeviceDTO dto);
    /**
     * 修改设备绑定多档口子
     *
     * @param dto 设备绑定多档口子
     * @return 结果
     */
    int updateMachineBind(DeviceDTO dto);
    /**
     * 修改设备时间
     *
     * @param sn
     * @return 结果
     */
    int updateTimeBySn(String sn);

    int insertDeviceRecipe(DeviceDTO dto);

    int updateDeviceRecipe(DeviceDTO dto);
    /**
     * 校验设备sn、名称、编号是否已存在
     *
     * @param keyWord 设备编号/设备名称/设备sn码
     * @return 结果
     */
    int checkIsExist(@Param("keyWord") String keyWord, @Param("deviceId") String deviceId);

    int checkIsExistDeviceNum(@Param("deviceNum") @NotBlank(message = "设备编号必填") String deviceNum,@Param("deviceId")  String deviceId);

    int checkIsExistDeviceName(@Param("deviceName") @NotBlank(message = "设备名称必填") String deviceName,@Param("deviceId")  String deviceId);

    int checkIsExistDeviceSn(@Param("deviceSn") @NotBlank(message = "设备sn码必填") String deviceSn,@Param("deviceId")  String deviceId);

    ApkDTO getApkByType(@Param("type") String type,@Param("version")  String version);

    int updateApk(ApkDTO dto);

    int insertApk(ApkDTO dto);
}
