using JiShe.ServicePro.IoTDBManagement.TableModels;
using JiShe.ServicePro.Kafka.Internal;
using Volo.Abp.Application.Services;

namespace JiShe.CollectBus.Subscribers
{
    /// <summary>
    /// 定时抄读任务消息订阅
    /// </summary>
    public interface IWorkerSubscriberAppService : IApplicationService
    {

        #region 电表消息采集

        /// <summary>
        /// 一分钟定时抄读任务消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledMeterOneMinuteReadingIssuedEvent(MeterReadingTelemetryPacketInfo receivedMessage);

        /// <summary>
        /// 5分钟采集电表数据下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledMeterFiveMinuteReadingIssuedEvent(MeterReadingTelemetryPacketInfo receivedMessage);

        /// <summary>
        /// 15分钟采集电表数据下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledMeterFifteenMinuteReadingIssuedEvent(List<MeterReadingTelemetryPacketInfo> receivedMessage);

        /// <summary>
        /// 电表自动阀控下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledAutoValveControl(List<MeterReadingTelemetryPacketInfo> receivedMessage);

        /// <summary>
        /// 其他采集数据下行消息主题，日冻结，月冻结、集中器版本号、SIM卡号、定时校时等下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledOther(List<MeterReadingTelemetryPacketInfo> receivedMessage);

        /// <summary>
        /// 电表手动阀控下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledManualValveControl(MeterReadingTelemetryPacketInfo receivedMessage);

        /// <summary>
        /// 电表手动抄读下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> AmmeterScheduledManualValveReading(MeterReadingTelemetryPacketInfo receivedMessage);
        #endregion

        #region 水表消息采集
        /// <summary>
        /// 水表数据下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> WatermeterScheduledAutoReading(MeterReadingTelemetryPacketInfo receivedMessage);

        /// <summary>
        /// 水表自动阀控下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> WatermeterScheduleAutoValveControl(MeterReadingTelemetryPacketInfo receivedMessage);

        /// <summary>
        /// 水表手动阀控下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> WatermeterScheduleManualValveControl(MeterReadingTelemetryPacketInfo receivedMessage);
        /// <summary>
        /// 水表手动抄读下行消息消费订阅
        /// </summary>
        /// <param name="receivedMessage"></param>
        /// <returns></returns>
        Task<ISubscribeAck> WatermeterScheduleManualValveReading(MeterReadingTelemetryPacketInfo receivedMessage);

        #endregion
    }
}
