using System.Text; using DotNetty.Transport.Channels; using HybirdFrameworkCore.Autofac.Attribute; using log4net; using Repository.Station; using Service.Charger.Client; using Service.Charger.Handler; using Service.Charger.Msg.Charger.Req; using Service.Charger.Msg.Host.Resp; namespace HybirdFrameworkServices.Charger.Handler { /// /// 充放电机上送充电启动完成帧 /// /// 1,保存充电机是否充电 /// 2,保存日志到log /// 3,监控平台应答充电启动完成帧 /// 4,保存应答日志 /// /// [Order(8)] [Scope("InstancePerDependency")] public class FinishStartChargingHandler : SimpleChannelInboundHandler, IBaseHandler { public BinInfoRepository BinInfoRepository { get; set; } private static readonly ILog Log = LogManager.GetLogger(typeof(FinishStartChargingHandler)); protected override void ChannelRead0(IChannelHandlerContext ctx, FinishStartCharging msg) { if (ClientMgr.TryGetClient(ctx.Channel, out var sn, out var client)) { Log.Info($"receive {msg} from {sn}"); msg.VehIdeNum = Encoding.ASCII.GetString(msg.Vin); int chargeStatus = 0; if (msg.Result == 0) { client.IsCharged = true; chargeStatus = 1; } else if (msg.Result == 1) { client.IsCharged = false; } int update = BinInfoRepository.Update(t => t.ChargeStatus == chargeStatus, t => t.No == client.BinNo); Log.Info($"update {update} start charge finish status {chargeStatus} for {client.BinNo}"); StartChargingFinishedRes msgRespond = new StartChargingFinishedRes(0, 0); ctx.Channel.WriteAndFlushAsync(msgRespond); } } } }