diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3ed6272..07f2819 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -959,7 +959,7 @@ namespace BBWYB.Server.Business { Logo = orderSku.Logo, Title = orderSku.Title, - SkuId = skuId, + SkuId = skuId, OrderId = orderSku.OrderId, SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), PurchaseQuantity = orderSku.ItemTotal.Value, @@ -1129,11 +1129,33 @@ namespace BBWYB.Server.Business IList> updateOrderPurchaseSkuList = new List>(); IUpdate updateOrderPurchase = null; IUpdate updateOrder = null; + IInsert insertExpressOrderRelation = null; #endregion #region 查询该笔采购单的快递单信息 - var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); + //var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => eori.PurchaseOrderId == request.PurchaseOrderId).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 + }); bool isExists = purchaseExpressOrderList.Any(exo => exo.WaybillNo == request.WaybillNo); + if (isExists) + return; + bool isDbExists = fsql.Select(request.WaybillNo).Any(); #endregion #region 查询当前采购单的订单信息 @@ -1194,7 +1216,7 @@ namespace BBWYB.Server.Business #region 订阅快递100 bool isSubscribeKD100 = false; - if (request.ExpressId != "zhuanxianwuliu" && !isExists) + if (request.ExpressId != "zhuanxianwuliu" && !isDbExists) { #region 订阅快递100 try @@ -1225,13 +1247,13 @@ namespace BBWYB.Server.Business #endregion #region 创建快递单 - if (!isExists) + if (!isDbExists) { var purchaseExpressOrder = new PurchaseExpressOrder() { - OrderId = dbOrder.Id, + //OrderId = dbOrder.Id, CreateTime = DateTime.Now, - PurchaseOrderId = request.PurchaseOrderId, + //PurchaseOrderId = request.PurchaseOrderId, ShopId = dbOrder.ShopId ?? 0, TargetExpressId = request.ExpressId, TargetExpressName = request.ExpressName, @@ -1245,6 +1267,22 @@ namespace BBWYB.Server.Business } #endregion + #region 创建快递单关系 + if (!isExists) + { + var expressOrderRelation = new ExpressOrderRelationInfo() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = dbOrder.Id, + PurchaseOrderId = request.PurchaseOrderId, + ShopId = dbOrder.ShopId.Value, + WayBillNo = request.WaybillNo + }; + insertExpressOrderRelation = fsql.Insert(expressOrderRelation); + } + #endregion + #region 计算采购单状态 orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) @@ -1272,6 +1310,7 @@ namespace BBWYB.Server.Business } updateOrderPurchase?.ExecuteAffrows(); updateOrder?.ExecuteAffrows(); + insertExpressOrderRelation?.ExecuteAffrows(); }); } @@ -1486,6 +1525,7 @@ namespace BBWYB.Server.Business try { List insertPurchaseExpressOrderList = new List(); + List insertExpressOrderRelationInfoList = new List(); IList> updateOrderPurchaseSkuList = new List>(); IUpdate updateOrderPurchase = null; IUpdate updateOrder = null; @@ -1526,7 +1566,25 @@ namespace BBWYB.Server.Business #region 查询该笔采购单的快递单信息 currentProgress = "查询该笔采购单的快递单信息"; - var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == purchaseOrderId).ToList(); + //var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == purchaseOrderId).ToList(); + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => eori.PurchaseOrderId == purchaseOrderId).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 + }); #endregion #region 查询采购账号 @@ -1549,6 +1607,9 @@ namespace BBWYB.Server.Business }; var logisticsList = client.QueryOrderLogistics(ppQueryOrderLogisticsRequest); wayBillNoResponseInfo = JsonConvert.SerializeObject(new { purchaseOrderId, logisticsList }); + + var wayBillNos = logisticsList.Where(w => !string.IsNullOrEmpty(w.WayBillNo)).Select(w => w.WayBillNo).ToList(); + var dbWayBillNos = fsql.Select(wayBillNos).ToList(w => w.WaybillNo); #endregion #region 找出新发货的快递单 @@ -1594,21 +1655,24 @@ namespace BBWYB.Server.Business #endregion #region 创建快递单 - var purchaseExpressOrder = new PurchaseExpressOrder() + if (!dbWayBillNos.Contains(logisticsInfo.WayBillNo)) { - OrderId = orderId, - CreateTime = DateTime.Now, - PurchaseOrderId = purchaseOrderId, - ShopId = shopId ?? 0, - SourceExpressId = logisticsInfo.ExpressId, - SourceExpressName = logisticsInfo.ExpressName, - WaybillNo = logisticsInfo.WayBillNo, - TargetExpressId = kuaidi100Company?.TargetCode, - TargetExpressName = kuaidi100Company?.TargetName, - ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收 - IsSubscribeKD100 = isSubscribeKD100 - }; - insertPurchaseExpressOrderList.Add(purchaseExpressOrder); + var purchaseExpressOrder = new PurchaseExpressOrder() + { + //OrderId = orderId, + CreateTime = DateTime.Now, + //PurchaseOrderId = purchaseOrderId, + ShopId = shopId ?? 0, + SourceExpressId = logisticsInfo.ExpressId, + SourceExpressName = logisticsInfo.ExpressName, + WaybillNo = logisticsInfo.WayBillNo, + TargetExpressId = kuaidi100Company?.TargetCode, + TargetExpressName = kuaidi100Company?.TargetName, + ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收 + IsSubscribeKD100 = isSubscribeKD100 + }; + insertPurchaseExpressOrderList.Add(purchaseExpressOrder); + } #endregion #region 更新采购sku的快递单号 @@ -1621,6 +1685,18 @@ namespace BBWYB.Server.Business updateOrderPurchaseSkuList.Add(fsql.Update(orderEntryId).Set(ps => ps.WaybillNo, logisticsInfo.WayBillNo)); } #endregion + + #region 创建快递关系 + insertExpressOrderRelationInfoList.Add(new ExpressOrderRelationInfo() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = dbOrder.Id, + PurchaseOrderId = purchaseOrderId, + ShopId = dbOrder.ShopId, + WayBillNo = logisticsInfo.WayBillNo + }); + #endregion } #endregion @@ -1642,6 +1718,8 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { + if (insertExpressOrderRelationInfoList.Count() > 0) + fsql.Insert(insertExpressOrderRelationInfoList).ExecuteAffrows(); if (insertPurchaseExpressOrderList.Count() > 0) fsql.Insert(insertPurchaseExpressOrderList).ExecuteAffrows(); if (updateOrderPurchaseSkuList.Count() > 0) diff --git a/BBWYB.Server.Model/Db/Order/ExpressOrderRelationInfo.cs b/BBWYB.Server.Model/Db/Order/ExpressOrderRelationInfo.cs new file mode 100644 index 0000000..01828c2 --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/ExpressOrderRelationInfo.cs @@ -0,0 +1,46 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 快递单关系表 + /// + [Table(Name = "expressorderrelationinfo", DisableSyncStructure = true)] + public partial class ExpressOrderRelationInfo + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + /// + /// 创建时间 + /// + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 订单Id + /// + [Column(StringLength = 50)] + public string OrderId { get; set; } + + /// + /// 采购单Id + /// + [Column(StringLength = 50)] + public string PurchaseOrderId { get; set; } + + /// + /// 店铺Id + /// + public long? ShopId { get; set; } + + /// + /// 快递单号 + /// + [Column(StringLength = 50)] + public string WayBillNo { get; set; } + } + +}