package com.bonus.bracelet.mapper;

import com.bonus.common.entity.app.vo.DevInfoVo;
import com.bonus.common.entity.app.vo.DevWarnVo;
import com.bonus.common.entity.app.vo.JdConfigVo;
import com.bonus.common.entity.bracelet.BraceletParamsDto;
import com.bonus.common.entity.bracelet.vo.*;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @className:ConsControlMapper
 * @author:cwchen
 * @date:2024-08-08-9:57
 * @version:1.0
 * @description:施工管控
 */
@Repository(value = "ConsControlMapper")
public interface ConsControlMapper {
    /**
     * 获取球机设备列表
     *
     * @param dto
     * @return List<BallTreeVo>
     * @author cwchen
     * @date 2024/8/8 11:24
     */
    List<BallTreeVo> getBallDeviceLists(BraceletParamsDto dto);

    /**
     * 获取球机违章识别内容
     *
     * @param dto
     * @return void
     * @author cwchen
     * @date 2024/8/8 18:11
     */
    List<WarnInfoVo> getBallWarnLists(BraceletParamsDto dto);

    /**
     * 预警信息
     *
     * @param dto
     * @return List<WarnInfoVo>
     * @author cwchen
     * @date 2024/8/9 9:45
     */
    List<WarnInfoVo> getWarnLists(BraceletParamsDto dto);

    /**
     * 人员管控-人员树
     *
     * @param dto
     * @return List<PersonTreeVo>
     * @author cwchen
     * @date 2024/8/9 10:44
     */
    List<PersonTreeVo> getPersonsTree(BraceletParamsDto dto);

    /**
     * 获取今日施工班组
     *
     * @param dto
     * @return List<Integer>
     * @author cwchen
     * @date 2024/8/9 13:16
     */
    List<Integer> getWorkNum(BraceletParamsDto dto);

    /**
     * 安全帽绑定信息
     *
     * @param dto
     * @return List<Map < String, Object>>
     * @author cwchen
     * @date 2024/8/9 13:49
     */
    @MapKey("id")
    List<Map<String, Object>> getSafetyHatInfo(BraceletParamsDto dto);

    /**
     * 获取杆塔坐标
     *
     * @return PersonControlVo.TowerInfo
     * @author cwchen
     * @date 2024/8/9 15:13
     */
    PersonControlVo.TowerInfo getTowerInfo(BraceletParamsDto dto);

    /**
     * 获取施工距离
     *
     * @return String
     * @author cwchen
     * @date 2024/8/9 15:16
     */
    String getDistance();

    /**
     * 获取绑定手环的施工班组人员、临时人员信息
     *
     * @param dto
     * @return List<PersonControlVo.WorkPersonInfo>
     * @author cwchen
     * @date 2024/8/9 15:23
     */
    List<PersonControlVo.WorkPersonInfo> getWorkPersonInfo(BraceletParamsDto dto);

    /**
     * 获取已绑手环的定位信息
     *
     * @param devId
     * @return List<PersonControlVo.BraceletInfo>
     * @author cwchen
     * @date 2024/8/9 16:30
     */
    List<PersonControlVo.BraceletInfo> getShDeviceInfo(Long devId);

    /**
     * 根据杆塔获取班组人员-已绑定手环
     *
     * @param dto
     * @return List<TeamPeopleTreeVo>
     * @author cwchen
     * @date 2024/8/10 13:12
     */
    List<TeamPeopleTreeVo> getTeamPersonByTower(BraceletParamsDto dto);

    /**
     * 删除验证时间配置项
     *
     * @return void
     * @author cwchen
     * @date 2024/8/10 15:27
     */
    void delConfig();

    /**
     * 删除验证时间配置内容项
     *
     * @return void
     * @author cwchen
     * @date 2024/8/10 15:27
     */
    void delConfigItems();

    /**
     * 添加验证时间配置项
     *
     * @return void
     * @author cwchen
     * @date 2024/8/10 15:27
     */
    void addConfig(CheckConfigVo vo);

    /**
     * 添加验证时间配置内容项
     *
     * @return void
     * @author cwchen
     * @date 2024/8/10 15:27
     */
    void addConfigItems(@Param("params") CheckConfigVo vo, @Param("val") String time);

    /**
     * 获取自动验证配置
     *
     * @param dto
     * @return List<CheckConfigVo>
     * @author cwchen
     * @date 2024/8/10 15:39
     */
    List<CheckConfigVo> getCheckConfig(BraceletParamsDto dto);

    /**
     * 获取人员详情数据
     *
     * @param dto
     * @return PersonDetailVo
     * @author cwchen
     * @date 2024/8/15 17:09
     */
    PersonDetailVo getPersonInfoData(BraceletParamsDto dto);

    /**
     * 获取人员绑定安全帽信息
     *
     * @param dto
     * @return SafetyHat
     * @author cwchen
     * @date 2024/8/15 18:31
     */
    PersonDetailVo.SafetyHat getSafetyHat(BraceletParamsDto dto);

    /**
     * 获取手环的预警信息
     *
     * @param dto
     * @return List<PersonDetailVo.WarnInfo>
     * @author cwchen
     * @date 2024/8/15 18:39
     */
    List<PersonDetailVo.WarnInfo> getWarnInfo(BraceletParamsDto dto);

    /**
     * 人员历史轨迹
     *
     * @param dto
     * @return List<Map < String, Object>>
     * @author cwchen
     * @date 2024/8/16 9:55
     */
    List<Map<String, Object>> getHistoryGj(BraceletParamsDto dto);

    /**
     * 吊装预警设备列表
     *
     * @param dto
     * @return List<DevInfoVo>
     * @author cwchen
     * @date 2024/8/16 15:33
     */
    List<DevInfoVo> getDzWarnList(BraceletParamsDto dto);

    /**
     * 近电感应设备预警信息
     *
     * @param dto
     * @return List<DevWarnVo>
     * @author cwchen
     * @date 2024/8/16 17:57
     */
    List<DevWarnVo> getJdWarnList(BraceletParamsDto dto);

    /**
     * 查询近电感应设备
     *
     * @param dto
     * @return List<DevInfoVo>
     * @author cwchen
     * @date 2024/8/18 13:36
     */
    List<DevInfoVo> getJdList(BraceletParamsDto dto);

    /**
     * 查询近电感应设备点电量
     * @param devId
     * @param dataCode
     * @return String
     * @author cwchen
     * @date 2024/8/18 13:37
     */
    String getElectricQuantity(@Param("devId") Long devId,@Param("dataCode") String dataCode);

    /**
     * 添加近电感应设备配置
     * @param vo
     * @return void
     * @author cwchen
     * @date 2024/8/18 17:33
     */
    void addJdConfigData(JdConfigVo vo);

    /**
     * 查询近电感应设备配置
     * @param dto
     * @return List<ConfigItems>
     * @author cwchen
     * @date 2024/8/18 18:03
     */
    List<JdConfigVo.ConfigItems> getConfigJdDevice(BraceletParamsDto dto);

    /**
     * 删除近电配置项
     * @param vo
     * @return void
     * @author cwchen
     * @date 2024/8/18 18:42
     */
    void delJdConfig(JdConfigVo vo);
}
