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; public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; this.purchaseOrderBusiness = purchaseOrderBusiness; } public void SubscribeKD100(string waybillNo, string targetCompanyCode) { kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } public void PingJia() { var list = new List() { }; foreach (var pid in list) purchaseOrderBusiness.OnSomeOnePurchaseOrderChanged(pid, false); } public void SupplementOrderSkuCost() { var orderSkuCostList = fsql.Select().InnerJoin((ocd, o) => ocd.OrderId == o.Id) .Where((ocd, o) => ocd.IsEnabled == true && o.IsPurchased == true && o.OrderState != Enums.OrderState.已取消 && !fsql.Select().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().Where(osku => orderIds.Contains(osku.OrderId)).ToList(); var insertOrderSkuCostList = new List(); 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(); }); } } }