|
|
|
using BBWYB.Common.Extensions;
|
|
|
|
using BBWYB.Common.Log;
|
|
|
|
using BBWYB.Common.Models;
|
|
|
|
using BBWYB.Server.Model;
|
|
|
|
using BBWYB.Server.Model.Db;
|
|
|
|
using BBWYB.Server.Model.Dto;
|
|
|
|
using FreeSql;
|
|
|
|
using System.Net.Http.Headers;
|
|
|
|
using Yitter.IdGenerator;
|
|
|
|
|
|
|
|
namespace BBWYB.Server.Business
|
|
|
|
{
|
|
|
|
public class DataRepairBusiness : BaseBusiness, IDenpendency
|
|
|
|
{
|
|
|
|
private KuaiDi100Manager kuaiDi100Manager;
|
|
|
|
private PurchaseSchemeBusiness purchaseSchemeBusiness;
|
|
|
|
private PurchaseOrderBusiness purchaseOrderBusiness;
|
|
|
|
private FreeSqlMultiDBManager freeSqlMultiDBManager;
|
|
|
|
private VenderBusiness venderBusiness;
|
|
|
|
public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator)
|
|
|
|
{
|
|
|
|
this.kuaiDi100Manager = kuaiDi100Manager;
|
|
|
|
this.purchaseSchemeBusiness = purchaseSchemeBusiness;
|
|
|
|
this.purchaseOrderBusiness = purchaseOrderBusiness;
|
|
|
|
this.freeSqlMultiDBManager = freeSqlMultiDBManager;
|
|
|
|
this.venderBusiness = venderBusiness;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SubscribeKD100(string waybillNo, string targetCompanyCode)
|
|
|
|
{
|
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SupplementOrderSkuCost()
|
|
|
|
{
|
|
|
|
var orderSkuCostList = fsql.Select<OrderCostDetail, Order>().InnerJoin((ocd, o) => ocd.OrderId == o.Id)
|
|
|
|
.Where((ocd, o) => ocd.IsEnabled == true &&
|
|
|
|
o.IsPurchased == true &&
|
|
|
|
o.OrderState != Enums.OrderState.已取消 &&
|
|
|
|
!fsql.Select<OrderSkuCost>().As("osc").Where(osc => osc.OrderId == o.Id).Any())
|
|
|
|
.GroupBy((ocd, o) => new { ocd.OrderId, ocd.SkuId })
|
|
|
|
.ToList(g => new
|
|
|
|
{
|
|
|
|
OrderId = g.Key.OrderId,
|
|
|
|
SkuId = g.Key.SkuId,
|
|
|
|
SkuAmount = g.Sum(g.Value.Item1.SkuAmount),
|
|
|
|
PurchaseFreight = g.Sum(g.Value.Item1.PurchaseFreight)
|
|
|
|
});
|
|
|
|
var orderIds = orderSkuCostList.Select(x => x.OrderId).Distinct().ToList();
|
|
|
|
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId)).ToList();
|
|
|
|
|
|
|
|
var insertOrderSkuCostList = new List<OrderSkuCost>();
|
|
|
|
foreach (var osc in orderSkuCostList)
|
|
|
|
{
|
|
|
|
var osku = orderSkuList.FirstOrDefault(osku => osku.SkuId == osc.SkuId && osku.OrderId == osc.OrderId);
|
|
|
|
var insert = new OrderSkuCost()
|
|
|
|
{
|
|
|
|
Id = idGenerator.NewLong(),
|
|
|
|
CreateTime = DateTime.Now,
|
|
|
|
DeliveryExpressFreight = 0M,
|
|
|
|
OrderId = osc.OrderId,
|
|
|
|
SkuId = osc.SkuId,
|
|
|
|
OutPackAmount = 0M,
|
|
|
|
PurchaseFreight = osc.PurchaseFreight,
|
|
|
|
SkuAmount = osc.SkuAmount,
|
|
|
|
TotalCost = osc.PurchaseFreight + osc.SkuAmount,
|
|
|
|
Profit = ((osku.Price * osku.ItemTotal) ?? 0M) + osku.BuyerPayFreight - osc.PurchaseFreight - osc.SkuAmount
|
|
|
|
};
|
|
|
|
insertOrderSkuCostList.Add(insert);
|
|
|
|
}
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
fsql.Insert(insertOrderSkuCostList).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SupplementPurchaserInfo()
|
|
|
|
{
|
|
|
|
var purlList = fsql.Select<PurchaseSchemeProduct, Purchaser>()
|
|
|
|
.InnerJoin((psp, p) => psp.PurchaserId == p.Id)
|
|
|
|
.Where((psp, p) => p.Platform == Enums.Platform.阿里巴巴 && string.IsNullOrEmpty(p.MemberId))
|
|
|
|
.ToList((psp, p) => new
|
|
|
|
{
|
|
|
|
//psp.PurchaseUrl,
|
|
|
|
psp.PurchaseProductId,
|
|
|
|
p.Id
|
|
|
|
});
|
|
|
|
var groups = purlList.GroupBy(p => p.Id);
|
|
|
|
Console.WriteLine(groups.Count());
|
|
|
|
IList<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>();
|
|
|
|
int i = 1;
|
|
|
|
foreach (var group in groups)
|
|
|
|
{
|
|
|
|
var purchaseId = group.Key;
|
|
|
|
var productId = group.Max(p => p.PurchaseProductId);
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
Console.WriteLine();
|
|
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|
|
|
Console.WriteLine($"index {i}");
|
|
|
|
Console.ResetColor();
|
|
|
|
Console.WriteLine();
|
|
|
|
var response = purchaseSchemeBusiness.GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest()
|
|
|
|
{
|
|
|
|
FirstApiMode = Enums.PurchaseProductAPIMode.Spider,
|
|
|
|
Platform = Enums.Platform.阿里巴巴,
|
|
|
|
PriceMode = Enums.PurchaseOrderMode.批发,
|
|
|
|
PurchaseProductId = productId
|
|
|
|
});
|
|
|
|
if (!string.IsNullOrEmpty(response?.Purchaser?.MemberId))
|
|
|
|
{
|
|
|
|
if (response.Purchaser.MemberId.Length > 5)
|
|
|
|
Console.WriteLine(response.Purchaser.MemberId);
|
|
|
|
var update = fsql.Update<Purchaser>(purchaseId).Set(p => p.MemberId, response.Purchaser.MemberId);
|
|
|
|
updatePurchaserList.Add(update);
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
|
|
|
|
if (updatePurchaserList.Count >= 10)
|
|
|
|
{
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
foreach (var update in updatePurchaserList)
|
|
|
|
update.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
updatePurchaserList.Clear();
|
|
|
|
Console.WriteLine();
|
|
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|
|
|
Console.WriteLine("更新数据库更新");
|
|
|
|
Console.ResetColor();
|
|
|
|
Console.WriteLine();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (updatePurchaserList.Count() > 0)
|
|
|
|
{
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
foreach (var update in updatePurchaserList)
|
|
|
|
update.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SupplementPurchaseSchemeGroup()
|
|
|
|
{
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
fsql.Delete<PurchaseSchemeGroup>().Where(psg => 1 == 1).ExecuteAffrows();
|
|
|
|
fsql.Delete<PurchaseSchemeGroupIndex>().Where(psgi => 1 == 1).ExecuteAffrows();
|
|
|
|
fsql.Update<PurchaseScheme>().Set(ps => ps.SchemeGroupId == 0).Where(ps => 1 == 1).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
|
|
|
|
List<PurchaseSchemeGroup> insertSchemeGroups = new List<PurchaseSchemeGroup>();
|
|
|
|
List<PurchaseSchemeGroupIndex> insertSchemeGroupIndexs = new List<PurchaseSchemeGroupIndex>();
|
|
|
|
Queue<IUpdate<PurchaseScheme>> updatePurchaseSchemeQueue = new Queue<IUpdate<PurchaseScheme>>();
|
|
|
|
|
|
|
|
var purchaseSchemeList = fsql.Select<PurchaseScheme>().OrderBy(ps => ps.Id).ToList();
|
|
|
|
var purchaseSchemeSpuGroups = purchaseSchemeList.GroupBy(ps => ps.ProductId);
|
|
|
|
foreach (var purchaseSchemeSpuGroup in purchaseSchemeSpuGroups)
|
|
|
|
{
|
|
|
|
Console.WriteLine($"正在处理spu {purchaseSchemeSpuGroup.Key}");
|
|
|
|
var purchaseSchemeSkuGroups = purchaseSchemeSpuGroup.GroupBy(ps => ps.SkuId);
|
|
|
|
var maxPsGroupCount = purchaseSchemeSkuGroups.Max(g => g.Count()); //该spu最大的采购分组数
|
|
|
|
|
|
|
|
var groupIndex = new PurchaseSchemeGroupIndex()
|
|
|
|
{
|
|
|
|
CreateTime = DateTime.Now,
|
|
|
|
Index = maxPsGroupCount,
|
|
|
|
ShopId = purchaseSchemeSpuGroup.First().ShopId,
|
|
|
|
ProductId = purchaseSchemeSpuGroup.First().ProductId
|
|
|
|
};
|
|
|
|
insertSchemeGroupIndexs.Add(groupIndex);
|
|
|
|
|
|
|
|
for (var i = 0; i < maxPsGroupCount; i++)
|
|
|
|
{
|
|
|
|
Console.WriteLine($"正在处理第{i + 1}组");
|
|
|
|
IList<PurchaseScheme> currentIndexSchemeList = new List<PurchaseScheme>();
|
|
|
|
//取每个sku的第i个方案
|
|
|
|
foreach (var purchaseSchemeSkuGroup in purchaseSchemeSkuGroups)
|
|
|
|
{
|
|
|
|
var currentSkuPurchaseSchemeList = purchaseSchemeSkuGroup.ToList();
|
|
|
|
|
|
|
|
if (currentSkuPurchaseSchemeList.Count() >= (i + 1))
|
|
|
|
{
|
|
|
|
var scheme = currentSkuPurchaseSchemeList[i];
|
|
|
|
currentIndexSchemeList.Add(scheme);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var schemeGroupId = idGenerator.NewLong();
|
|
|
|
var insertSchemeGroup = new PurchaseSchemeGroup()
|
|
|
|
{
|
|
|
|
Id = schemeGroupId,
|
|
|
|
//GroupName = schemeGroupId.Value.ToString(),
|
|
|
|
GroupName = $"{purchaseSchemeSpuGroup.Key}-{i + 1}",
|
|
|
|
CreateTime = DateTime.Now,
|
|
|
|
ProductId = currentIndexSchemeList.First().ProductId,
|
|
|
|
ShopId = currentIndexSchemeList.First().ShopId
|
|
|
|
};
|
|
|
|
insertSchemeGroups.Add(insertSchemeGroup);
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var purchaseScheme in currentIndexSchemeList)
|
|
|
|
{
|
|
|
|
if (purchaseScheme.SchemeGroupId != schemeGroupId)
|
|
|
|
{
|
|
|
|
var update = fsql.Update<PurchaseScheme>(purchaseScheme.Id).Set(ps => ps.SchemeGroupId, schemeGroupId);
|
|
|
|
updatePurchaseSchemeQueue.Enqueue(update);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Console.WriteLine("数据库处理中");
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
if (insertSchemeGroups.Count() > 0)
|
|
|
|
fsql.Insert(insertSchemeGroups).ExecuteAffrows();
|
|
|
|
if (insertSchemeGroupIndexs.Count() > 0)
|
|
|
|
fsql.Insert(insertSchemeGroupIndexs).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
|
|
|
|
var updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>();
|
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
if (updatePurchaseSchemeQueue.TryDequeue(out var update))
|
|
|
|
updatePurchaseSchemeList.Add(update);
|
|
|
|
else
|
|
|
|
break;
|
|
|
|
if (updatePurchaseSchemeList.Count() == 10)
|
|
|
|
{
|
|
|
|
Console.WriteLine($"执行数据库 {DateTime.Now}");
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
foreach (var _update in updatePurchaseSchemeList)
|
|
|
|
_update.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
updatePurchaseSchemeList.Clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (updatePurchaseSchemeList.Count() > 0)
|
|
|
|
{
|
|
|
|
Console.WriteLine($"最后执行数据库 {DateTime.Now}");
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
foreach (var _update in updatePurchaseSchemeList)
|
|
|
|
_update.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void RepairOrderStateToCheckComputation()
|
|
|
|
{
|
|
|
|
List<TimeLimitTask> insertComputationTaskList = new List<TimeLimitTask>();
|
|
|
|
var time = DateTime.Parse("2023-09-01");
|
|
|
|
var orderList = fsql.Select<Order>().Where(o => o.StartTime <= time && o.OrderState == Enums.OrderState.待验收).ToList();
|
|
|
|
var orderIdsList = orderList.Select(o => o.Id).ToList();
|
|
|
|
var checmComputationTaskList = fsql.Select<TimeLimitTask>().Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务 && orderIdsList.Contains(t.OrderId)).ToList();
|
|
|
|
foreach (var order in orderList)
|
|
|
|
{
|
|
|
|
if (!checmComputationTaskList.Any(x => x.OrderId == order.Id))
|
|
|
|
{
|
|
|
|
insertComputationTaskList.Add(new TimeLimitTask()
|
|
|
|
{
|
|
|
|
Id = idGenerator.NewLong(),
|
|
|
|
OrderId = order.Id,
|
|
|
|
CreateTme = DateTime.Now,
|
|
|
|
ExpirationTime = DateTime.Now.AddDays(1),
|
|
|
|
OrderSn = order.OrderSn,
|
|
|
|
Remark = "手工处理待核算",
|
|
|
|
ShopId = order.ShopId,
|
|
|
|
TaskType = Enums.TimeLimitTaskType.待核算任务
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
if (insertComputationTaskList.Count() > 0)
|
|
|
|
fsql.Insert(insertComputationTaskList).ExecuteAffrows();
|
|
|
|
fsql.Update<Order>().Set(o => o.OrderState, Enums.OrderState.待核算)
|
|
|
|
.Where(o => o.StartTime <= time && o.OrderState == Enums.OrderState.待验收)
|
|
|
|
.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public void RepairOrderState()
|
|
|
|
{
|
|
|
|
var orderStateList = new List<Enums.OrderState?>() { Enums.OrderState.待发货, Enums.OrderState.部分发货 };
|
|
|
|
var orderList = fsql.Select<Order>().Where(o => orderStateList.Contains(o.OrderState)).OrderByDescending(o => o.StartTime).ToList();
|
|
|
|
var orderIdLIst = orderList.Select(o => o.Id).ToList();
|
|
|
|
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdLIst.Contains(osku.OrderId)).ToList();
|
|
|
|
var poList = fsql.Select<OrderPurchaseInfo>().Where(opi => orderIdLIst.Contains(opi.OrderId) && opi.IsEnabled == true).ToList();
|
|
|
|
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
|
|
|
|
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
|
|
|
|
.Where((eori, peo) => orderIdLIst.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrder
|
|
|
|
{
|
|
|
|
CreateTime = peo.CreateTime,
|
|
|
|
ExpressContent = peo.ExpressContent,
|
|
|
|
ExpressChangedTime = peo.ExpressChangedTime,
|
|
|
|
ExpressState = peo.ExpressState,
|
|
|
|
IsSubscribeKD100 = peo.IsSubscribeKD100,
|
|
|
|
OrderId = eori.OrderId,
|
|
|
|
PurchaseOrderId = eori.PurchaseOrderId,
|
|
|
|
ShopId = eori.ShopId.Value,
|
|
|
|
SourceExpressId = peo.SourceExpressId,
|
|
|
|
SourceExpressName = peo.SourceExpressName,
|
|
|
|
TargetExpressId = peo.TargetExpressId,
|
|
|
|
TargetExpressName = peo.TargetExpressName,
|
|
|
|
WaybillNo = peo.WaybillNo
|
|
|
|
});
|
|
|
|
var updateOrderQueue = new Queue<IUpdate<Order>>();
|
|
|
|
|
|
|
|
foreach (var order in orderList)
|
|
|
|
{
|
|
|
|
if (order.IntoStoreType == null)
|
|
|
|
order.IntoStoreType = Enums.IntoStoreType.发回齐越;
|
|
|
|
var oskuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList();
|
|
|
|
var polist1 = poList.Where(p => p.OrderId == order.Id).ToList();
|
|
|
|
|
|
|
|
foreach (var po in polist1)
|
|
|
|
{
|
|
|
|
if (po.OrderState == null)
|
|
|
|
{
|
|
|
|
var peoList = purchaseExpressOrderList.Where(peo => peo.OrderId == po.OrderId && po.PurchaseOrderId == po.PurchaseOrderId).ToList();
|
|
|
|
if (peoList.Count() > 0 && peoList.Count(peo => peo.ExpressState == "QianShou") == peoList.Count())
|
|
|
|
{
|
|
|
|
po.OrderState = Enums.PurchaseOrderState.已签收;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var oldState = order.OrderState;
|
|
|
|
order.CalculationOrderState(fsql, oskuList, polist1);
|
|
|
|
if (oldState != order.OrderState)
|
|
|
|
{
|
|
|
|
updateOrderQueue.Enqueue(fsql.Update<Order>(order.Id).Set(o => o.OrderState, order.OrderState));
|
|
|
|
Console.WriteLine($"{order.Id},{order.StartTime},计算状态:{order.OrderState}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var updateOrderList = new List<IUpdate<Order>>();
|
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
if (updateOrderQueue.TryDequeue(out var update))
|
|
|
|
{
|
|
|
|
updateOrderList.Add(update);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (updateOrderList.Count() > 50)
|
|
|
|
{
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
foreach (var u in updateOrderList)
|
|
|
|
u.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
Console.WriteLine($"执行数据库 {DateTime.Now}");
|
|
|
|
updateOrderList.Clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (updateOrderList.Count() > 0)
|
|
|
|
{
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
foreach (var u in updateOrderList)
|
|
|
|
u.ExecuteAffrows();
|
|
|
|
});
|
|
|
|
updateOrderList.Clear();
|
|
|
|
Console.WriteLine($"最后执行数据库 {DateTime.Now}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SyncCCancelOrder()
|
|
|
|
{
|
|
|
|
var c_cancel_orderlist = freeSqlMultiDBManager.BBWYCfsql.Select<Model.Db.BBWY.PurchaseOrderV2>().Where(p => p.OrderState == Enums.OrderState.已取消).ToList();
|
|
|
|
var c_cancel_orderIdlist = c_cancel_orderlist.Select(p => p.Id).ToList();
|
|
|
|
if (c_cancel_orderIdlist.Count() > 0)
|
|
|
|
{
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
fsql.Update<Order>(c_cancel_orderIdlist).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SelectBExistsAndCNotExists()
|
|
|
|
{
|
|
|
|
var cIds = freeSqlMultiDBManager.BBWYCfsql.Select<Model.Db.BBWY.PurchaseOrderV2>().OrderByDescending(p => p.Id).ToList(p => p.Id);
|
|
|
|
var bIds = fsql.Select<Order>().OrderByDescending(o => o.Id).ToList(o => o.Id);
|
|
|
|
var bexceptIdList = bIds.Except(cIds).ToList();
|
|
|
|
var cexceptIdList = cIds.Except(bIds).ToList();
|
|
|
|
Console.WriteLine($"B端在而C端不在的数量有 {bexceptIdList.Count()}");
|
|
|
|
Console.WriteLine($"C端在而B端不在的数量有 {cexceptIdList.Count()}");
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SyncHistoryPurchaseScheme()
|
|
|
|
{
|
|
|
|
var qtShops = venderBusiness.GetShopList(platform: Enums.Platform.拳探);
|
|
|
|
foreach (var shop in qtShops)
|
|
|
|
{
|
|
|
|
var psList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest()
|
|
|
|
{
|
|
|
|
ShopId = long.Parse(shop.ShopId)
|
|
|
|
});
|
|
|
|
|
|
|
|
List<HistoryPurchaseScheme> insertHistoryPSList = new List<HistoryPurchaseScheme>();
|
|
|
|
List<HistoryPurchaseSchemeProduct> insertHistoryPSPList = new List<HistoryPurchaseSchemeProduct>();
|
|
|
|
List<HistoryPurchaseSchemeProductSku> insertHistoryPSSList = new List<HistoryPurchaseSchemeProductSku>();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var ps in psList)
|
|
|
|
{
|
|
|
|
//var newVersion = ps.Version + 1;
|
|
|
|
var newVersion = ps.Version;
|
|
|
|
foreach (var psp in ps.PurchaseSchemeProductList)
|
|
|
|
{
|
|
|
|
foreach (var pss in psp.PurchaseSchemeProductSkuList)
|
|
|
|
{
|
|
|
|
#region 处理历史版本
|
|
|
|
var historyPss = pss.Map<HistoryPurchaseSchemeProductSku>();
|
|
|
|
historyPss.HistoryId = idGenerator.NewLong();
|
|
|
|
historyPss.Version = newVersion;
|
|
|
|
insertHistoryPSSList.Add(historyPss);
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#region 处理历史版本
|
|
|
|
var historyPsp = psp.Map<HistoryPurchaseSchemeProduct>();
|
|
|
|
historyPsp.HistoryId = idGenerator.NewLong();
|
|
|
|
historyPsp.Version = newVersion;
|
|
|
|
insertHistoryPSPList.Add(historyPsp);
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
#region 处理历史版本
|
|
|
|
var historyPs = ps.Map<HistoryPurchaseScheme>();
|
|
|
|
historyPs.HistoryId = idGenerator.NewLong();
|
|
|
|
historyPs.Version = newVersion;
|
|
|
|
insertHistoryPSList.Add(historyPs);
|
|
|
|
|
|
|
|
//updatePurchaseSchemeIdList.Add(ps.Id);
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
if (insertHistoryPSList.Count() > 0)
|
|
|
|
fsql.Insert(insertHistoryPSList).ExecuteAffrows();
|
|
|
|
if (insertHistoryPSPList.Count() > 0)
|
|
|
|
fsql.Insert(insertHistoryPSPList).ExecuteAffrows();
|
|
|
|
if (insertHistoryPSSList.Count() > 0)
|
|
|
|
fsql.Insert(insertHistoryPSSList).ExecuteAffrows();
|
|
|
|
//if (updatePurchaseSchemeIdList.Count() > 0)
|
|
|
|
// fsql.Update<PurchaseScheme>(updatePurchaseSchemeIdList).Set(ps => ps.Version + 1).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|