package com.persagy.dmp.rwd.simple.dao;

import com.persagy.dmp.basic.dto.RequestData;
import com.persagy.dmp.rwd.simple.dto.GroupDTO;
import org.apache.ibatis.annotations.Param;

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

/**
 * 数字孪生 设备统计相关接口 DAO
 * @author Charlie Yu
 * @date 2021-08-04
 */
public interface EquipmentReportMapper {

    /**
     * 统计项目设备总数和待报废设备数量
     * @param scrapDate 报废日期
     * @param projectIds 项目ID
     * @return
     */
    List<Map<String, Object>> queryExpectScrapCountByProjects(String scrapDate, List<String> projectIds);

    /**
     * 按对象类型统计设备总数
     * @param projectIds
     * @return
     */
    List<Map<String, Object>> queryEquipmentCountByType(@Param("projectIds") List<String> projectIds);
    /***
     * Description: 根据对象信息点统计数量
     * @param requestData :
     * @return : java.util.List<com.fasterxml.jackson.databind.node.ObjectNode>
     * @author : lijie
     * @date :2021/9/13 21:50
     * Update By lijie 2021/9/13 21:50
     */
    List<Map<String, Object>> queryObjectCountByObjInfos(@Param("param") RequestData requestData,@Param("groups") List<GroupDTO> groups);

    /**
     * 统计当前设备下部件分类及数量
     * @param equipmentId 设备ID
     * @return
     */
    List<Map<String, Object>> queryComponentsCountByEquipId(@Param("projectIds") List<String> projectIds,@Param("projectId") String projectId,@Param("equipmentId") String equipmentId);

    /**
     * 统计项目下允许创建的部件类型，以及项目下创建的部件数量
     * @param equipmentId 设备ID
     * @param category 设备类
     * @return
     */
    List<Map<String, Object>>queryEquipComponentsByProjectId(@Param("category") String category, @Param("projectId") String projectId, @Param("equipmentId") String equipmentId, @Param("groupCode") String groupCode);

    /**
     *项目下所有实例类型以及名称
     */
    List<Map<String,Object>> queryDefineInfoByObjType(@Param("param") RequestData requestData);
}
