parent
b5f2cd0a75
commit
e8f118f86f
@ -0,0 +1,112 @@
|
||||
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 BinInfoRepository _BinInfoRepository { get; set; }
|
||||
|
||||
public bool UploadCloud(List<SwapOrderReportCloud> list)
|
||||
{
|
||||
if (list.Count <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
List<int> swapOrderIds = list.Select(i => i.SwapOrderId).ToList();
|
||||
List<SwapOrder> swapOrders =
|
||||
_swapOrderRepository.QueryListByClause(i => swapOrderIds.Contains(i.Id) && i.CloudReportStatus == 0);
|
||||
|
||||
if (swapOrders.Count <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
List<string> swapOrderSn = swapOrders.Select(i => i.Sn).ToList();
|
||||
|
||||
List<SwapOrderBattery> batterys =
|
||||
_swapOrderBatteryRepository.QueryListByClause(i => swapOrderSn.Contains(i.SwapOrderSn));
|
||||
|
||||
if (batterys.Count <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IDictionary<string, SwapOrderBattery> dictionary = batterys.ToDictionary(i => i.SwapOrderSn);
|
||||
|
||||
List<string> downBatteryBinNos = batterys.Select(i => i.DownBatteryBinNo.ToString()).ToList();
|
||||
Dictionary<string, BinInfo> binInfosMap = _BinInfoRepository
|
||||
.QueryListByClause(i => downBatteryBinNos.Contains(i.No)).ToDictionary(i => i.No);
|
||||
|
||||
|
||||
Dictionary<int, SwapOrderReportCloud> swapOrderReportClouds = list.ToDictionary(i => i.SwapOrderId);
|
||||
|
||||
|
||||
List<SwapOrderBattery> updateDbBattery = new List<SwapOrderBattery>();
|
||||
List<SwapOrder> updateDbOrder = new List<SwapOrder>();
|
||||
List<SwapOrderReportCloud> updateDbCloudReport = new List<SwapOrderReportCloud>();
|
||||
|
||||
foreach (var swapOrder in swapOrders)
|
||||
{
|
||||
dictionary.TryGetValue(swapOrder.Sn, out SwapOrderBattery swapOrderBattery);
|
||||
if (null == swapOrderBattery)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (null == swapOrderBattery.DownBatteryNo)
|
||||
{
|
||||
//更新换下电池包
|
||||
binInfosMap.TryGetValue(swapOrderBattery.DownBatteryBinNo.ToString(), out BinInfo info);
|
||||
if (info.BatteryNo == null || info.BatteryNo == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
swapOrderBattery.DownBatteryNo = info.BatteryNo;
|
||||
swapOrderBattery.DownBatterySoc = info.Soc;
|
||||
swapOrderBattery.DownBatterySoe = info.Soe;
|
||||
updateDbBattery.Add(swapOrderBattery);
|
||||
}
|
||||
|
||||
var count = _swapOrderRepository.GetCount(i =>
|
||||
i.SwapResult == 1 && i.SwapEndTime >= DateTime.Today && i.SwapEndTime < swapOrder.SwapEndTime);
|
||||
var uploadSwapOrder = CloudApi.UploadSwapOrder(swapOrder, count++, swapOrderBattery, 1);
|
||||
if (uploadSwapOrder == 0)
|
||||
{
|
||||
swapOrder.CloudReportStatus = 1;
|
||||
updateDbOrder.Add(swapOrder);
|
||||
swapOrderReportClouds.TryGetValue(swapOrder.Id, out SwapOrderReportCloud value);
|
||||
value.CloudReportStatus = 1;
|
||||
updateDbCloudReport.Add(value);
|
||||
}
|
||||
}
|
||||
|
||||
if (updateDbBattery.Count > 0)
|
||||
{
|
||||
_swapOrderBatteryRepository.Update(updateDbBattery);
|
||||
}
|
||||
|
||||
if (updateDbOrder.Count > 0)
|
||||
{
|
||||
_swapOrderRepository.Update(updateDbOrder);
|
||||
}
|
||||
|
||||
if (updateDbCloudReport.Count > 0)
|
||||
{
|
||||
_reportCloudRepository.Update(updateDbCloudReport);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue