using DotNetty.Transport.Channels; using HybirdFrameworkCore.Autofac.Attribute; using log4net; using Service.Charger.Client; using Service.Charger.Common; using Service.Charger.Msg.Charger.Req; using Service.Charger.Msg.Host.Resp; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Repository.Station; namespace Service.Charger.Handler { /// /// 遥信数据上报Handler /// //TODO::Order 应该是多少 [Order(8)] [Scope("InstancePerDependency")] public class UploadRemoteSignalDataHandler : SimpleChannelInboundHandler, IBaseHandler { private static readonly ILog Log = LogManager.GetLogger(typeof(UploadRemoteSignalDataHandler)); private BinInfoRepository BinInfoRepository { get; set; } public UploadRemoteSignalDataHandler(BinInfoRepository _binInfoRepository) { BinInfoRepository = _binInfoRepository; } protected override void ChannelRead0(IChannelHandlerContext ctx, UploadRemoteSignalData msg) { if (ClientMgr.TryGetClient(ctx.Channel, out var sn, out var client)) { //存储日志 Log.Info($"receive {msg} from {sn}"); client.Workstate = msg.WorkStatus; client.IsCharged = msg.WorkStatus == 1 ? true : false; client.TotalError = msg.TotalError; client.TotalWarning = msg.TotalWarning; client.UploadRemoteSignalData = msg; //Desc:充电状态;0-未知;1-正在充电;2-无电池;3-禁用;4-充电完成 if (msg.WorkStatus == 1) BinInfoRepository.Update(i => i.ChargeStatus == msg.WorkStatus, i => i.No == sn); else if (msg.WorkStatus == 2 || msg.WorkStatus == 0) { BinInfoRepository.Update(i => i.ChargeStatus == 4, i => i.No == sn); } } } } }