using Entity.DbModel.Station; using HybirdFrameworkCore.Autofac.Attribute; using Repository.Station; using Service.Execute.Api; namespace Service.Mgr; [Scope()] public class SwapOrderMgr { public SwapOrderReportCloudRepository _reportCloudRepository { get; set; } public SwapOrderRepository _swapOrderRepository { get; set; } public SwapOrderBatteryRepository _swapOrderBatteryRepository { get; set; } public bool UploadCloud(List list, int uploadType) { if (list.Count <= 0) { return false; } List swapOrderIds = list.Select(i => i.SwapOrderId).ToList(); List swapOrders = _swapOrderRepository.QueryListByClause(i => swapOrderIds.Contains(i.Id) && i.CloudReportStatus == 0); if (swapOrders.Count <= 0) { return false; } List swapOrderSn = swapOrders.Select(i => i.Sn).ToList(); List batterys = _swapOrderBatteryRepository.QueryListByClause(i => swapOrderSn.Contains(i.SwapOrderSn) && i.DownBatteryNo != null && i.DownBatteryNo!="-1" && i.DownBatterySoc!=-1 && i.DownBatterySoc!=null); if (batterys.Count <= 0) { return false; } IDictionary dictionary = batterys.ToDictionary(i => i.SwapOrderSn); Dictionary swapOrderReportClouds = list.ToDictionary(i => i.SwapOrderId); List updateDbOrder = new List(); List updateDbCloudReport = new List(); foreach (var swapOrder in swapOrders) { dictionary.TryGetValue(swapOrder.Sn, out SwapOrderBattery swapOrderBattery); if (null == swapOrderBattery) { continue; } if (null == swapOrderBattery.DownBatteryNo || "-1".Equals(swapOrderBattery.DownBatteryNo)) { continue; } if (null == swapOrderBattery.DownBatterySoc || -1==swapOrderBattery.DownBatterySoc) { continue; } if (string.IsNullOrEmpty(swapOrder.CloudSn)) { continue; } var count = _swapOrderRepository.GetCount(i => i.SwapResult == 1 && i.SwapEndTime >= DateTime.Today && i.SwapEndTime < swapOrder.SwapEndTime); swapOrderReportClouds.TryGetValue(swapOrder.Id, out SwapOrderReportCloud value); var uploadSwapOrder = CloudApi.UploadSwapOrder(swapOrder, count++, swapOrderBattery, uploadType,value); if (uploadSwapOrder == 0) { swapOrder.CloudReportStatus = 1; updateDbOrder.Add(swapOrder); // value.CloudReportStatus = 1000; value.UploadTime = DateTime.Now; } else { //当 cloudReportStatus >=100 就不需要上传了 value.CloudReportStatus++; } updateDbCloudReport.Add(value); } if (updateDbOrder.Count > 0) { _swapOrderRepository.Update(updateDbOrder); } if (updateDbCloudReport.Count > 0) { _reportCloudRepository.Update(updateDbCloudReport); } return true; } }