using Entity.DbModel.Station; using HybirdFrameworkCore.Autofac.Attribute; using HybirdFrameworkCore.AutoTask; using log4net; using Newtonsoft.Json; using Repository.Station; using Service.Mgr; namespace Service.MyTask; /// /// 充电结束上报云平台task /// [Scope] public class UpdateDownBatteryInfoTask : ITask { private static readonly ILog Log = LogManager.GetLogger(typeof(UpdateDownBatteryInfoTask)); private volatile bool _stop; public SwapOrderBatteryRepository _swapOrderBatteryRepository { get; set; } public BinInfoRepository _BinInfoRepository { get; set; } public string Name() { return "UpdateDownBatteryInfoTask"; } public int Interval() { return 1000 * 2; } public void Handle() { try { List batterys = _swapOrderBatteryRepository.QueryListByClause( i => i.DownBatteryNo == null && i.DownBatteryBinNo != null); if (batterys.Count <= 0) { return; } List downBatteryBinNos = batterys.Select(i => i.DownBatteryBinNo.ToString()).ToList(); Dictionary binInfosMap = _BinInfoRepository .QueryListByClause(i => downBatteryBinNos.Contains(i.No)).ToDictionary(i => i.No); List updateDbBattery = new List(); foreach (var battery in batterys) { //更新换下电池包 binInfosMap.TryGetValue(battery.DownBatteryBinNo.ToString(), out BinInfo info); if (info.BatteryNo == null || info.BatteryNo == "" || info.BatteryNo == "-1") { continue; } if (info.Soc == null || info.BatteryNo == "-1") { continue; } battery.DownBatteryNo = info.BatteryNo; battery.DownBatterySoc = info.Soc; battery.DownBatterySoe = info.Soe; updateDbBattery.Add(battery); } if (updateDbBattery.Count > 0) { Log.Info( $" UpdateDownBatteryInfoTask update DowmBatteryInfo db={JsonConvert.SerializeObject(updateDbBattery)}"); _swapOrderBatteryRepository.Update(updateDbBattery); } } catch (Exception e) { Log.Error($" UpdateDownBatteryInfoTask err e={e}"); } } public bool Stoped() { return _stop; } public void Stop() { _stop = true; } public void ResetStop() { _stop = false; } }