diff --git a/Service/Execute/Step/SwapDoneState.cs b/Service/Execute/Step/SwapDoneState.cs index af0826c..5fc778a 100644 --- a/Service/Execute/Step/SwapDoneState.cs +++ b/Service/Execute/Step/SwapDoneState.cs @@ -134,6 +134,12 @@ public class SwapDoneState : IState return Invoker.Invoke("begin Radar", 1000, 20, machine.IsCanceled, () => { + //更新车辆离场时间 + machine.BusinessSwappingForCloudState = + InfoEnum.BusinessSwappingForCloudState.SwapDoneWithoutVel; + machine.SwapOrder!.VehicleLeaveTime = DateTime.Now; + _CommonMgr.UpdateSwapOrder(machine); + //新增小步 _CommonMgr.InsertStep(InfoEnum.BusinessSwappingStep.RadarOutFlag, machine); diff --git a/Service/MyJob/UpdateDownBatteryInfoTask.cs b/Service/MyJob/UpdateDownBatteryInfoTask.cs new file mode 100644 index 0000000..f721634 --- /dev/null +++ b/Service/MyJob/UpdateDownBatteryInfoTask.cs @@ -0,0 +1,107 @@ +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.DownBatterySoc<0) && 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) && i.Exists==1).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.Soc <=0) + { + continue; + } + + /*if (!info.BatteryNo.Equals(battery.DownBatteryNo)) + { + 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; + } +} \ No newline at end of file