package com.securitycontrol.background.mapper;

import com.securitycontrol.entity.background.dto.ParamDto;
import com.securitycontrol.entity.background.vo.HumanManageVo;
import com.securitycontrol.entity.background.vo.ProjectCostVo;
import com.securitycontrol.entity.background.vo.VehicleVo;
import com.securitycontrol.entity.system.base.vo.ProVo;
import com.securitycontrol.entity.system.vo.ResourceFileVo;
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;

/**
 * @author：cwchen
 * @date：2024-03-28-17:37
 * @version：1.0
 * @description：app数据库访问层
 */
@Repository(value = "IAppMapper")
public interface IAppMapper {

    /**
     * 项目简介
     *
     * @param dto
     * @return ProVo
     * @description
     * @author cwchen
     * @date 2024/3/28 17:58
     */
    ProVo getProBrief(ParamDto dto);

    /**
     * 获取工程图片/平面图
     *
     * @param proId
     * @return List<ResourceFileVo>
     * @description
     * @author cwchen
     * @date 2024/3/28 18:09
     */
    List<ResourceFileVo> getFiles(String proId);

    /**
     * 当前登录人绑定的工程
     *
     * @param dto
     * @return List<Map < String>>
     * @description
     * @author cwchen
     * @date 2024/3/28 19:11
     */
    @MapKey("bidCode")
    List<Map<String, String>> getProsByUser(ParamDto dto);

    /**
     * 人员管理
     *
     * @param dto
     * @return List<HumanManageVo>
     * @description
     * @author cwchen
     * @date 2024/3/28 19:40
     */
    List<HumanManageVo> getPersonnelList(ParamDto dto);

    /**
     * 车辆管理
     *
     * @param dto
     * @return List<VehicleVo>
     * @description
     * @author cwchen
     * @date 2024/3/28 20:09
     */
    List<VehicleVo> getCarList(ParamDto dto);

    /**
     * 项目进度
     *
     * @param dto
     * @return List<Map < String, Object>>
     * @description
     * @author cwchen
     * @date 2024/3/28 20:22
     */
    @MapKey("bidCode")
    List<Map<String, Object>> getProBasicInfo(ParamDto dto);

    /**
     * 告警
     *
     * @param dto
     * @return List<Map < Object>>
     * @description
     * @author cwchen
     * @date 2024/3/29 10:25
     */
    @MapKey("id")
    List<Map<String, Object>> alarmLists(ParamDto dto);


    /**
     * 工程工序计划
     *
     * @param dto
     * @return List<Map < Object>>
     * @description
     * @author cwchen
     * @date 2024/3/29 11:29
     */
    @MapKey("bidCode")
    List<Map<String, Object>> getProGxPlan(ParamDto dto);

    /**
     * 获取工序或杆塔名称
     *
     * @param proType
     * @param bidCode
     * @param gxId
     * @return String
     * @description
     * @author cwchen
     * @date 2024/3/29 14:20
     */
    String getGtOrGxName(@Param("proType") String proType, @Param("bidCode") String bidCode, @Param("gxId") String gxId);

    /**
     * 标段工程成本
     * @param dto
     * @return List<ProjectCostVo>
     * @description
     * @author cwchen
     * @date 2024/4/1 19:12
     */
    List<ProjectCostVo> getProCost(ParamDto dto);
}
