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

import com.persagy.dmp.basic.dto.RequestData;
import com.persagy.dmp.rwd.simple.entity.CountTypeEquipmentVO;

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

/**
 * 数字孪生 设备统计相关接口
 * @author Charlie Yu
 * @date 2021-09-02
 */
public interface IEquipmentReportService {

    /**
     * 统计项目设备总数和待报废设备数量
     * 待报废设备 = ifnull(预计报废日期, '9999-12-31') < (当前日期+6个月)
     * @param projectIds 为空时，查所有
     * @return
     */
    List<Map<String, Object>> queryExpectScrapCountByProjects(List<String> projectIds);

    /**
     * 按对象类型统计设备总数
     * @param projectIds 为空时，查所有
     * @return
     */
    List<CountTypeEquipmentVO> queryEquipmentCountByType(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(RequestData requestData);

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

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

    /**
     *项目下所有实例(system/space/equipment..)类型以及名称
     */
    List<Map<String,Object>> queryDefineInfoByObjType(RequestData requestData);
}
