/*
 * 文 件 名:  Acrel3000WebApi
 * 版    权:  华设设计集团股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2025/7/19
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.ruoyi.ems.retrofit;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Query;

import java.util.Map;

/**
 * 安科瑞 3000 系列 WEB API
 * <功能详细描述>
 *
 * @author lvwenbin
 * @version [版本号, 2025/7/19]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface Acrel3000Api {
    /**
     * 获取权限
     *
     * @param loginName 用户名
     * @param password  密码
     * @return 权限信息
     */
    @Multipart
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @POST("/SubstationWEBV2/user/getAuthToken")
    Call<String> getAuthToken(@Part("fLoginname") RequestBody loginName, @Part("fPassword") RequestBody password);

    /**
     * 获取站点树结构
     *
     * @param authorization 用户名
     * @param fields        参数
     * @return 站点信息
     */
    @Multipart
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @POST("/SubstationWEBV2/main/getStationTreeList")
    Call<String> getStationTreeList(@Header("Authorization") String authorization,
        @PartMap Map<String, RequestBody> fields);

    /**
     * 获取仪表
     *
     * @param authorization 用户名
     * @param subId         站点ID
     * @param pageNo        页码
     * @param pageSize      每页数量
     * @param english       是否英文
     * @return 仪表信息
     */
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @GET("/SubstationWEBV2/sys/getMeterUseInfoList")
    Call<String> getMeterUseInfoList(@Header("Authorization") String authorization, @Query("fSubId") String subId,
        @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("english") int english);

    /**
     * 获取回路
     *
     * @param authorization 用户名
     * @param subId         站点ID
     * @return 回路信息
     */
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @GET("/SubstationWEBV2/sys/getCircuitInfoTree")
    Call<String> getCircuitInfoTree(@Header("Authorization") String authorization, @Query("fSubId") String subId);

    /**
     * 获取实时数据
     *
     * @param authorization 用户名
     * @param subId         站点ID
     * @param meterCode     表计编号
     * @
     * @return 回路信息
     */
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @GET("/SubstationWEBV2/main/getMeterParamValueByKey")
    Call<String> getMeterParamValueByKey(@Header("Authorization") String authorization, @Query("fSubId") String subId,
        @Query("fMetercode") String meterCode);


    /**
     * 用能集抄
     *
     * @param authorization 用户名
     * @param fields        参数
     * @return 站点信息
     */
    @Multipart
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @POST("/SubstationWEBV2/main/getNewConsumeReport")
    Call<String> getNewConsumeReport(@Header("Authorization") String authorization,
        @PartMap Map<String, RequestBody> fields);

    /**
     * 报警信息
     *
     * @param authorization 用户名
     * @param fields        参数
     * @return 站点信息
     */
    @Multipart
    @Headers({ "Projecttype: 1", "Api-Version: 2.0.0" })
    @POST("/SubstationWEBV2/main/getAlarmEventLogList")
    Call<String> getAlarmEventLogList(@Header("Authorization") String authorization,
        @PartMap Map<String, RequestBody> fields);
}