using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model.Db; using FreeSql; using Yitter.IdGenerator; namespace BBWYB.Server.Business { public class DataRepairBusiness : BaseBusiness, IDenpendency { private KuaiDi100Manager kuaiDi100Manager; public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; } public void RepairPurchaseExpressOrder() { #region 修复快递单 var purchaseExpressOrderList = fsql.Select().Where(peo => !string.IsNullOrEmpty(peo.PurchaseOrderId)).ToList(); var wayBillNos = purchaseExpressOrderList.Select(peo => peo.WaybillNo).ToList(); var relationList = fsql.Select().Where(eori => wayBillNos.Contains(eori.WayBillNo)).ToList(); List insertExpressOrderRelationInfoList = new List(); foreach (var peo in purchaseExpressOrderList) { var relation = relationList.FirstOrDefault(r => r.WayBillNo == peo.WaybillNo && r.PurchaseOrderId == peo.PurchaseOrderId); if (relation != null) continue; insertExpressOrderRelationInfoList.Add(new ExpressOrderRelationInfo() { Id = idGenerator.NewLong(), CreateTime = DateTime.Now, OrderId = peo.OrderId, PurchaseOrderId = peo.PurchaseOrderId, ShopId = peo.ShopId, WayBillNo = peo.WaybillNo }); } fsql.Transaction(() => { fsql.Insert(insertExpressOrderRelationInfoList).ExecuteAffrows(); }); #endregion } /// /// 批量清理取消单数据 /// public void ClearCancelOrderData() { var cancelOrderList = fsql.Select().Where(o => o.OrderState == Model.Enums.OrderState.已取消).ToList(); var cancelOrderIds = cancelOrderList.Select(o => o.Id); //var noUsingExpressOrderList = fsql.Select().Where(peo => !fsql.Select() // .As("b") // .ToList(b => b.WayBillNo) // .Contains(peo.WaybillNo)) // .ToList(); /* select * from purchaseexpressorder peo where not exists (select r.waybillno from expressorderrelationinfo r where peo.WaybillNo=r.WaybillNo); */ fsql.Transaction(() => { fsql.Delete().Where(opi => cancelOrderIds.Contains(opi.OrderId)).ExecuteAffrows(); fsql.Delete().Where(posku => cancelOrderIds.Contains(posku.OrderId)).ExecuteAffrows(); fsql.Delete().Where(opri => cancelOrderIds.Contains(opri.OrderId)).ExecuteAffrows(); fsql.Delete().Where(oc => cancelOrderIds.Contains(oc.OrderId)).ExecuteAffrows(); fsql.Delete().Where(ocd => cancelOrderIds.Contains(ocd.OrderId)).ExecuteAffrows(); }); } public void SubscribeKD100(string waybillNo, string targetCompanyCode) { kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } } }