diff --git a/BBWYB.Client/APIServices/TestApiService.cs b/BBWYB.Client/APIServices/TestApiService.cs new file mode 100644 index 0000000..8df625b --- /dev/null +++ b/BBWYB.Client/APIServices/TestApiService.cs @@ -0,0 +1,25 @@ +using BBWYB.Common.Http; +using BBWYB.Common.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BBWYB.Client.APIServices +{ + public class TestApiService : BaseApiService, IDenpendency + { + public TestApiService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + public ApiResponse BatchManualSign() + { + return SendRequest(globalContext.BBWYApiHost, "Api/PurchaseOrder/BatchManualSign", new + { + wayBillNoList = new string[] { "ceshi123456" } + }, null, System.Net.Http.HttpMethod.Post); + } + } +} diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index d3a13bb..2176586 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10024"; + BBWYBApiVersion = "10025"; } private User user; diff --git a/BBWYB.Client/Models/Enums.cs b/BBWYB.Client/Models/Enums.cs index 4786cd3..2e605ac 100644 --- a/BBWYB.Client/Models/Enums.cs +++ b/BBWYB.Client/Models/Enums.cs @@ -94,8 +94,8 @@ /// 暂停 = 7 /// 已退款 = 8 /// Unknow = 100 - /// 打包中 = 140 - /// 待完结 = 150 + /// 待验收 = 140 + /// 待核算 = 150 /// public enum OrderState { @@ -112,9 +112,8 @@ 暂停 = 7, 已退款 = 8, Unknow = 100, - 打包中 = 140, - 待完结 = 150 - + 待验收 = 140, + 待核算 = 150 //待配置 = 101, } diff --git a/BBWYB.Client/Views/WebB/WebB.xaml.cs b/BBWYB.Client/Views/WebB/WebB.xaml.cs index de04809..9c39e7f 100644 --- a/BBWYB.Client/Views/WebB/WebB.xaml.cs +++ b/BBWYB.Client/Views/WebB/WebB.xaml.cs @@ -80,7 +80,7 @@ namespace BBWYB.Client.Views.WebB }; - w2m.Init(); + w2m.Init("bbwyb_web"); w2m.wb2.SetValue(Grid.RowProperty, 1); w2m.wb2.Margin = new Thickness(1, 0, 1, 0); //grid.Children.Clear(); diff --git a/BBWYB.Client/WebView2Manager.cs b/BBWYB.Client/WebView2Manager.cs index c978669..324d982 100644 --- a/BBWYB.Client/WebView2Manager.cs +++ b/BBWYB.Client/WebView2Manager.cs @@ -13,12 +13,12 @@ namespace BBWYB.Client //{ // Init(); //} - public void Init() + public void Init(string folderName = "WebView2UserData") { if (wb2 == null) { wb2 = new WebView2(); - var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2UserData")).Result; + var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), folderName)).Result; wb2.EnsureCoreWebView2Async(wb2Setting); wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted; wb2.NavigationCompleted += Wb2_NavigationCompleted; @@ -29,7 +29,7 @@ namespace BBWYB.Client public Action OnWebMessageReceived; public Action OnNavigationCompleted; public Action CoreWebView2InitializationCompleted; - public bool IsInitializationCompleted { get ; private set; } + public bool IsInitializationCompleted { get; private set; } private void Wb2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) { diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 4581b91..e01a121 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -14,12 +14,6 @@ namespace BBWYB.Server.API.Controllers this.dataRepairBusiness = dataRepairBusiness; } - [HttpPost] - public void RepairPurchaseExpressOrder() - { - dataRepairBusiness.RepairPurchaseExpressOrder(); - } - /// /// 手动订阅快递100 /// @@ -30,5 +24,6 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); } + } } diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index f9f30d6..eb83425 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -23,11 +23,32 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost] - public OrderListResponse GetOrderList(QueryOrderRequest request) + public OrderListResponse GetOrderList([FromBody] QueryOrderRequest request) { return orderBusiness.GetOrderList(request); } + /// + /// 获取快递单列表 + /// + /// + /// + [HttpPost] + public IList GetPurchaseExpressOrderList([FromBody] QueryExpressOrderRequest request) + { + return orderBusiness.GetPurchaseExpressOrderList(request); + } + + /// + /// 批量查询快递单列表 + /// + /// 订单Id数组 + /// + [HttpPost] + public IList BatchGetPurchaseExpressOrderList([FromBody] IList orderIds) + { + return orderBusiness.GetPurchaseExpressOrderList(orderIds); + } ///// @@ -83,6 +104,26 @@ namespace BBWYB.Server.API.Controllers orderBusiness.EditOrderSkuRemark(request); } + /// + /// 来源SKU验收 + /// + /// + [HttpPost] + public void CheckSku([FromBody] CheckSkuRequest request) + { + orderBusiness.CheckSku(request); + } + + /// + /// 核算订单 + /// + /// + [HttpPost("{orderId}")] + public void CheckComputationOrder([FromRoute]string orderId) + { + orderBusiness.CheckComputationOrder(orderId); + } + /// /// 齐库推送打包费 /// diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index a42def9..2b4dd1a 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -122,6 +122,16 @@ namespace BBWYB.Server.API.Controllers purchaseOrderBusiness.ManualSign(request); } + /// + /// 批量手动收货 + /// + /// + [HttpPost] + public void BatchManualSign([FromBody] BatchManualSignRequest request) + { + purchaseOrderBusiness.BatchManualSign(request); + } + /// /// 1688回调 /// diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index b2a827f..7c953d0 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -1,6 +1,7 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; using FreeSql; using Yitter.IdGenerator; @@ -14,12 +15,8 @@ namespace BBWYB.Server.Business this.kuaiDi100Manager = kuaiDi100Manager; } - public void RepairPurchaseExpressOrder() - { - - } - public void SubscribeKD100(string waybillNo,string targetCompanyCode) + public void SubscribeKD100(string waybillNo, string targetCompanyCode) { kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index f57b86f..4fe1500 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -21,8 +21,7 @@ namespace BBWYB.Server.Business { if (order.OrderState == Enums.OrderState.已取消 || order.OrderState == Enums.OrderState.已完成 || - order.OrderState == Enums.OrderState.待付款 || - order.OrderState == Enums.OrderState.待完结) + order.OrderState == Enums.OrderState.待付款) return; if (orderSkuList == null) @@ -59,12 +58,19 @@ namespace BBWYB.Server.Business #region 部分发货 if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.待收货 || - opi.OrderState == Enums.PurchaseOrderState.部分发货) && - orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.待收货 || - opi.OrderState == Enums.PurchaseOrderState.部分发货) < orderPurchaseInfoList.Count()) + opi.OrderState == Enums.PurchaseOrderState.部分发货)) { - order.OrderState = Enums.OrderState.部分发货; - return; + if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.待收货 || + opi.OrderState == Enums.PurchaseOrderState.部分发货) < orderPurchaseInfoList.Count()) + { + order.OrderState = Enums.OrderState.部分发货; + return; + } + if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.部分发货) == orderPurchaseInfoList.Count()) + { + order.OrderState = Enums.OrderState.部分发货; + return; + } } #endregion @@ -78,20 +84,36 @@ namespace BBWYB.Server.Business #region 部分收货 if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.已签收 || - opi.OrderState == Enums.PurchaseOrderState.部分收货) && - orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.已签收 || - opi.OrderState == Enums.PurchaseOrderState.部分收货) < orderPurchaseInfoList.Count()) + opi.OrderState == Enums.PurchaseOrderState.部分收货)) { - order.OrderState = Enums.OrderState.部分收货; - return; + if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.已签收 || + opi.OrderState == Enums.PurchaseOrderState.部分收货) < orderPurchaseInfoList.Count()) + { + order.OrderState = Enums.OrderState.部分收货; + return; + } + + if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.部分收货) == orderPurchaseInfoList.Count()) + { + order.OrderState = Enums.OrderState.部分收货; + return; + } } #endregion - #region 打包中 + #region 待验收/待核算/已完成 if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.已签收) && orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.已签收) == orderPurchaseInfoList.Count()) { - order.OrderState = Enums.OrderState.打包中; + if (order.IntoStoreType == Enums.IntoStoreType.发回齐越) + { + if (orderSkuList.Any(osku => osku.IsCheck != true)) + order.OrderState = Enums.OrderState.待验收; + else + order.OrderState = Enums.OrderState.待核算; + } + else + order.OrderState = Enums.OrderState.已完成; return; } #endregion @@ -131,7 +153,7 @@ namespace BBWYB.Server.Business } if (purchaseExpressOrderList == null) - purchaseExpressOrderList = fsql.Select().Where(exo => exo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); + return; if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) //支持采购sku和关联信息 { diff --git a/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs b/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs new file mode 100644 index 0000000..ad26a54 --- /dev/null +++ b/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs @@ -0,0 +1,59 @@ +using BBWYB.Server.Model; +using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; + +namespace BBWYB.Server.Business.Extensions +{ + public static class PurchaseExpressOrderExtension + { + /// + /// 计算快递单归属 + /// + /// 必须是经过与快递单关系表进行联合查询的结果 (ExpressOrderRelationInfo-PurchaseExpressOrder) + /// + /// + /// + public static void CalculationBelongOrderSku(this PurchaseExpressOrderResponse purchaseExpressOrder, + IList orderPurchaseInfoList, + IList orderPurchaseRelationInfoList, + IList orderPurchaseSkuInfoList) + { + var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId); + if (purchaseOrder == null) + return; + if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + { + var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo && + posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId) + .Select(posku => posku.PurchaseSkuId).ToList(); + var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId && + purchaseSkuIds.Contains(ori.PurchaseSkuId)) + .Select(ori => ori.BelongSkuId) + .Distinct() + .ToList(); + purchaseExpressOrder.BelongSkuIds = string.Join(",", orderSkuIds); + + //var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId && + // orderSkuIds.Contains(osku.SkuId)).ToList(); + //foreach (var osku in currentOrderSkuList) + //{ + // if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) + // continue; + // osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); + //} + } + else + { + purchaseExpressOrder.BelongSkuIds = purchaseOrder.BelongSkuIds; + //var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId && + // purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList(); + //foreach (var osku in currentOrderSkuList) + //{ + // if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) + // continue; + // osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); + //} + } + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 4092697..b89c2b6 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -54,8 +54,8 @@ namespace BBWYB.Server.Business select = select.Where((o, ocs, oct) => childSelect.Where(opi => opi.OrderId == o.Id).Any()); } select = select.WhereIf(request.OrderState == Enums.OrderState.待付款 || - request.OrderState == Enums.OrderState.打包中 || - request.OrderState == Enums.OrderState.待完结 || + request.OrderState == Enums.OrderState.待验收 || + request.OrderState == Enums.OrderState.待核算 || request.OrderState == Enums.OrderState.已完成 || request.OrderState == Enums.OrderState.已取消, (o, ocs, oct) => o.OrderState == request.OrderState) @@ -111,6 +111,7 @@ namespace BBWYB.Server.Business BuyerAccount = o.BuyerAccount, InPackAmount = o.InPackAmount, IsWaitPack = o.IsWaitPack, + IntoStoreType = o.IntoStoreType, ContactName = ocs.ContactName, Address = ocs.Address, @@ -128,6 +129,8 @@ namespace BBWYB.Server.Business PurchaseAmount = oct.PurchaseAmount, IsManualEdited = oct.IsManualEdited, PackConfigState = o.PackConfigState, + SkuAmount = oct.SkuAmount, + PurchaseFreight = oct.PurchaseFreight }; } @@ -151,7 +154,24 @@ namespace BBWYB.Server.Business #endregion #region 查询快递单信息 - var purchaseExpressOrderList = fsql.Select().Where(peo => orderIdList.Contains(peo.OrderId)).ToList(); + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => orderIdList.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse + { + 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 处理订单成本明细 @@ -186,40 +206,51 @@ namespace BBWYB.Server.Business #region 处理SKU的快递单 foreach (var purchaseExpressOrder in purchaseExpressOrderList) { - var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId); - if (purchaseOrder == null) - continue; - if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationInfoList, orderPurchaseSkuInfoList); + var currentOrderSkuList = orderSkuList.Where(osku => !string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds) && + osku.OrderId == purchaseExpressOrder.OrderId && + purchaseExpressOrder.BelongSkuIds.Contains(osku.SkuId)).ToList(); + foreach (var osku in currentOrderSkuList) { - var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo && - posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId) - .Select(posku => posku.PurchaseSkuId).ToList(); - var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId && - purchaseSkuIds.Contains(ori.PurchaseSkuId)) - .Select(ori => ori.BelongSkuId) - .Distinct() - .ToList(); - - var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId && - orderSkuIds.Contains(osku.SkuId)).ToList(); - foreach (var osku in currentOrderSkuList) - { - if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) - continue; - osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); - } - } - else - { - var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId && - purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList(); - foreach (var osku in currentOrderSkuList) - { - if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) - continue; - osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); - } + if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) + continue; + osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); } + + //var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId); + //if (purchaseOrder == null) + // continue; + //if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + //{ + // var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo && + // posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId) + // .Select(posku => posku.PurchaseSkuId).ToList(); + // var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId && + // purchaseSkuIds.Contains(ori.PurchaseSkuId)) + // .Select(ori => ori.BelongSkuId) + // .Distinct() + // .ToList(); + + // var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId && + // orderSkuIds.Contains(osku.SkuId)).ToList(); + // foreach (var osku in currentOrderSkuList) + // { + // if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) + // continue; + // osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); + // } + //} + //else + //{ + // var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId && + // purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList(); + // foreach (var osku in currentOrderSkuList) + // { + // if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo)) + // continue; + // osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); + // } + //} } #endregion } @@ -230,81 +261,114 @@ namespace BBWYB.Server.Business }; } - //public void OutStock(OutStockRequest request) - //{ - // var dbOrder = fsql.Select(request.OrderId).ToOne(); - // if (dbOrder == null) - // throw new BusinessException($"订单{request.OrderId}不存在"); - - // var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); - // var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); - - // dbOrderPurchaseInfo.WaybillNo = request.WayBillNo; - // dbOrderPurchaseInfo.SourceExpressId = request.SourceExpressId; - // dbOrderPurchaseInfo.SourceExpressName = request.SourceExpressName; - // dbOrderPurchaseInfo.TargetExpressId = request.TargetExpressId; - // dbOrderPurchaseInfo.TargetExpressName = request.TargetExpressName; - // dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待收货; - - // #region 订单状态 - // dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList); - // #endregion - - // if (!string.IsNullOrEmpty(request.TargetExpressId)) - // { - // #region 订阅快递100 - - // #endregion - - // //try - // //{ - // // opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform) - // // .OutStock(new OP_OutStockRequest() - // // { - // // AppKey = request.AppKey, - // // AppSecret = request.AppSecret, - // // AppToken = request.AppToken, - // // ExpressId = request.TargetExpressId, - // // ExpressName = request.TargetExpressName, - // // OrderId = request.OrderId, - // // Platform = (AdapterEnums.PlatformType)request.Platform, - // // WayBillNo = request.WayBillNo - // // }); - // //} - // //catch (Exception ex) - // //{ - // // nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}"); - // //} - // } - - // #region 通知C端出库 - // //通知C端 - // try - // { - // restApiService.SendRequest("https://bbwy.qiyue666.com", - // "/Api/PurchaseOrder/QuanTanSendGoodsCallback", - // new - // { - // OrderId = request.OrderId, - // ExpressId = request.SourceExpressId, - // ExpressName = request.SourceExpressName, - // request.WayBillNo - // }, - // null, - // HttpMethod.Post); - // } - // catch (Exception ex) - // { - - // } - // #endregion - - // fsql.Transaction(() => - // { - // fsql.Update().SetSource(dbOrderPurchaseInfo).ExecuteAffrows(); - // fsql.Update(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); - // }); - //} + public IList GetPurchaseExpressOrderList(QueryExpressOrderRequest request) + { + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => eori.OrderId == request.OrderId).ToList((eori, peo) => new PurchaseExpressOrderResponse + { + 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 orderPurchaseInfoList = fsql.Select().Where(op => op.OrderId == request.OrderId && op.IsEnabled == true).ToList(); + var orderPurchaseRelationList = fsql.Select().Where(opri => opri.OrderId == request.OrderId && opri.SourceSkuId == request.SourceSkuId).ToList(); + var orderPurchaseSkuList = fsql.Select().Where(posku => posku.OrderId == request.OrderId).ToList(); + var orderSku = fsql.Select().Where(osku => osku.OrderId == request.OrderId && osku.BelongSkuId == request.SourceSkuId).ToOne(); + + IList list = new List(); + #region 处理SKU的快递单 + foreach (var purchaseExpressOrder in purchaseExpressOrderList) + { + purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList); + if (!string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds)) + { + if (purchaseExpressOrder.BelongSkuIds.Contains(orderSku.SkuId)) + { + if (!list.Any(x => x.WaybillNo == purchaseExpressOrder.WaybillNo)) + list.Add(purchaseExpressOrder); + } + } + } + //foreach (var purchaseOrder in orderPurchaseInfoList) + //{ + // if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + // { + // var currentRelationList = orderPurchaseRelationList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + + // var waybillNos = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId && + // currentRelationList.Any(opri => opri.PurchaseSkuId == posku.PurchaseSkuId)) + // .Select(x => x.WaybillNo) + // .ToList(); + // foreach (var waybillNo in waybillNos) + // { + // var peo = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == waybillNo); + // if (peo != null && !list.Any(x => x.WaybillNo == waybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId)) + // list.Add(peo); + // } + // } + // else + // { + // var currentSkuList = orderSkuList.Where(osku => purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).Select(osku => osku.BelongSkuId).Distinct().ToList(); + // if (currentSkuList.Contains(request.SourceSkuId)) + // { + // var peoList = purchaseExpressOrderList.Where(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + // foreach (var peo in peoList) + // { + // if (!list.Any(x => x.WaybillNo == peo.WaybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId)) + // list.Add(peo); + // } + // } + // } + //} + #endregion + return list; + } + + public IList GetPurchaseExpressOrderList(IList orderIds) + { + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => orderIds.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse + { + 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 orderPurchaseInfoList = fsql.Select().Where(op => orderIds.Contains(op.OrderId) && op.IsEnabled == true).ToList(); + var orderPurchaseRelationList = fsql.Select().Where(opri => orderIds.Contains(opri.OrderId)).ToList(); + var orderPurchaseSkuList = fsql.Select().Where(posku => orderIds.Contains(posku.OrderId)).ToList(); + + #region 处理SKU的快递单 + foreach (var purchaseExpressOrder in purchaseExpressOrderList) + { + purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList); + } + #endregion + return purchaseExpressOrderList; + } public void CancelOrder(CancelOrderRequest request, string mdsToken) { @@ -320,13 +384,26 @@ namespace BBWYB.Server.Business fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); - var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'"; - //取消C端采购单 - restApiService.SendRequest("https://bbwy.qiyue666.com", - "/Api/Sql/ExecuteNonQuery", - new { sql = sql.AESEncrypt() }, - new Dictionary() { { "Authorization", $"{mdsToken}" } }, - HttpMethod.Post); + try + { + restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new + { + OrderId = request.OrderId, + PurchaseOrderState = Enums.OrderState.已取消 + }, null, HttpMethod.Post); + } + catch + { + + } + + //var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'"; + ////取消C端采购单 + //restApiService.SendRequest("https://bbwy.qiyue666.com", + // "/Api/Sql/ExecuteNonQuery", + // new { sql = sql.AESEncrypt() }, + // new Dictionary() { { "Authorization", $"Bearer {mdsToken}" } }, + // HttpMethod.Post); try { @@ -433,5 +510,70 @@ namespace BBWYB.Server.Business { } + + public void CheckSku(CheckSkuRequest request) + { + var dbOrder = fsql.Select(request.OrderId).ToOne(); + if (dbOrder == null) + throw new BusinessException($"订单{request.OrderId}不存在"); + var orderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); + var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == request.SourceSkuId); + if (orderSku == null) + throw new BusinessException($"订单{request.OrderId}的归属sku中不存在{request.SourceSkuId}"); + + if (orderSku.IsCheck == true) + throw new BusinessException("已验收,无需重复验收"); + + + IUpdate updateOrder = null; + IUpdate updateOrderSku = null; + + orderSku.IsCheck = true; + updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.IsCheck, true); + + var oldOrderState = dbOrder.OrderState; + dbOrder.CalculationOrderState(fsql, orderSkuList, null); + if (oldOrderState != dbOrder.OrderState) + updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); + + fsql.Transaction(() => + { + updateOrderSku?.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); + }); + } + + public void CheckComputationOrder(string orderId) + { + var order = fsql.Select(orderId).ToOne(); + if (order == null) + throw new BusinessException("未查询到订单"); + if (order.OrderState != Enums.OrderState.待核算) + throw new BusinessException("订单状态不正确,只有待核算的订单才允许核算"); + var orderCost = fsql.Select(orderId).ToOne(); + if (orderCost == null) + throw new BusinessException("未查询到订单成本"); + if (Math.Abs(orderCost.Profit ?? 0) > 1M) + throw new BusinessException("订单利润绝对值不能大于1"); + + fsql.Update(orderId).Set(o => o.OrderState, Enums.OrderState.已完成).ExecuteAffrows(); + SendPurchaseOrderStateToC(orderId, Enums.OrderState.已完成); + } + + private void SendPurchaseOrderStateToC(string orderId, Enums.OrderState orderState) + { + try + { + restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new + { + OrderId = orderId, + PurchaseOrderState = orderState + }, null, HttpMethod.Post); + } + catch + { + + } + } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ebfc3f2..f149f2c 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -58,8 +58,7 @@ namespace BBWYB.Server.Business { Enums.OrderState.已取消, Enums.OrderState.已完成, - Enums.OrderState.待付款, - Enums.OrderState.待完结 + Enums.OrderState.待付款 }; } @@ -543,6 +542,8 @@ namespace BBWYB.Server.Business public void AssociatePurchaseOrder(AssociationOrderRequest request) { nLogManager.Default().Info($"AssociatePurchaseOrder {JsonConvert.SerializeObject(request)}"); + + #region 数据验证 var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException("订单不存在"); @@ -553,15 +554,15 @@ namespace BBWYB.Server.Business if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) throw new BusinessException("缺少采购单信息"); - var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); - var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); + //var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + //var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); - var dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList(); + //var dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList(); + + //if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) + // throw new BusinessException("关联采购单时不能包含历史采购单"); - if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) - throw new BusinessException("关联采购单时不能包含历史采购单"); - #region 数据验证 var validation_groups_pid = request.AssociationPurchaseOrderList.GroupBy(po => po.PurchaseOrderId); if (validation_groups_pid.Any(x => x.Count() > 1)) throw new BusinessException("不允许包含重复的采购单"); @@ -571,8 +572,28 @@ namespace BBWYB.Server.Business if (Math.Abs(apo.PurchaseAmount - apo.AssocationOrderCostDetailList.Sum(aocd => aocd.SkuAmount)) > 1) throw new BusinessException($"采购单{apo.PurchaseOrderId}的采购货款与明细采购货款总和误差不能超过1"); } + + var purchaseOrderIds = request.AssociationPurchaseOrderList.Select(apo => apo.PurchaseOrderId).ToList(); + + var dbPurchaseOrderList = fsql.Select().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId)).ToList(); + if (dbPurchaseOrderList.Count() > 0) + { + if (dbPurchaseOrderList.Any(opi => opi.OrderId != request.OrderId)) + { + var otherUsePurchaseOrder = dbPurchaseOrderList.FirstOrDefault(opi => opi.OrderId != request.OrderId); + throw new BusinessException($"采购单{otherUsePurchaseOrder.PurchaseOrderId}的已经被其他订单{otherUsePurchaseOrder.OrderId}绑定"); + } + if (dbPurchaseOrderList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.已取消)) + { + var invalidPurchaseOrder = dbPurchaseOrderList.FirstOrDefault(opi => opi.OrderState == Enums.PurchaseOrderState.已取消); + throw new BusinessException($"采购单{invalidPurchaseOrder.PurchaseOrderId}已失效,不能参与绑定"); + } + } + + #endregion + #region 读取采购单中的采购账号/采购方案 IList purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? x.PurchaseAccountName : @@ -603,8 +624,8 @@ namespace BBWYB.Server.Business foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { - if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) - continue; + //if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) + // continue; var totalQuantity = purchaseOrder.AssocationOrderCostDetailList.Sum(x => x.PurchaseQuantity); @@ -844,7 +865,7 @@ namespace BBWYB.Server.Business updateOrderCost = fsql.Update().SetSource(dbOrderCost); #region 订单状态 - dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbvalidPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); + dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); #endregion #region 通知C端状态 @@ -965,7 +986,7 @@ namespace BBWYB.Server.Business PurchaseQuantity = orderSku.ItemTotal.Value, PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (1.0M * orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) }; - assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseFreight; + assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; assocationOrderCostDetailList.Add(assocationOrderCostDetail); } #endregion @@ -999,17 +1020,6 @@ namespace BBWYB.Server.Business var dbOrderCost = fsql.Select(request.OrderId).ToOne(); var dbOrder = fsql.Select(request.OrderId).ToOne(); - //try - //{ - // dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost); - //} - //catch - //{ - // dbOrderCost.PurchaseAmount = 0; - //} - //dbOrderCost.Profit = dbOrder.OrderTotalPrice - - // dbOrderCost.PurchaseAmount - - // dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount var purchaseProductAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount) ?? 0M; var purchaseFreight = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight) ?? 0M; var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M; @@ -1020,6 +1030,26 @@ namespace BBWYB.Server.Business var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); if (historyPurchaseOrder == null) throw new BusinessException("未查询到采购单"); + + #region 找出失效的快递单 + List deleteWaybillNoList = new List(); + + //查询该采购单所使用的快递单号 + var useWaybillNos = fsql.Select().Where(eori => eori.PurchaseOrderId == historyPurchaseOrder.PurchaseOrderId).ToList(eori => eori.WayBillNo); + + //查询使用上述快递单号的快递单关系 + var expressOrderRelationList = fsql.Select().Where(eori => useWaybillNos.Contains(eori.WayBillNo)).ToList(); + + //以快递单号进行分组 + var expressOrderRelationGroups = expressOrderRelationList.GroupBy(eori => eori.WayBillNo); + foreach (var group in expressOrderRelationGroups) + { + if (group.Count() == group.Count(eori => eori.PurchaseOrderId == historyPurchaseOrder.PurchaseOrderId)) + deleteWaybillNoList.Add(group.Key); + } + #endregion + + orderPurchaseInfoList.Remove(historyPurchaseOrder); dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList); @@ -1038,7 +1068,12 @@ namespace BBWYB.Server.Business fsql.Delete().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); fsql.Delete().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); - fsql.Delete().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + + fsql.Delete().Where(eori => eori.PurchaseOrderId == historyPurchaseOrder.PurchaseOrderId).ExecuteAffrows(); + if (deleteWaybillNoList.Count() > 0) + fsql.Delete(deleteWaybillNoList).ExecuteAffrows(); + + //fsql.Delete().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); @@ -1052,65 +1087,168 @@ namespace BBWYB.Server.Business public void EditPurchaseExpressOrder(EditPurchaseExpressOrderRequest request) { nLogManager.Default().Info($"EditPurchaseExpressOrder {JsonConvert.SerializeObject(request)}"); - var dbOrder = fsql.Select(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn }); + + var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException($"订单号{request.OrderId}不存在"); var shopIds = dbOrder.ShopId.ToString(); var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == shopIds).ToOne(); - var oldPeo = fsql.Select(request.OldWaybillNo).ToOne(); - if (oldPeo == null) - throw new BusinessException($"旧快递单号{request.OldWaybillNo}不存在"); - if (oldPeo.OrderId != request.OrderId || oldPeo.PurchaseOrderId != request.PurchaseOrderId) - throw new BusinessException("快递单号不属于当前操作提交的订单或采购单"); - var newPeo = fsql.Select(request.NewWaybillNo).ToOne(); - if (newPeo != null) - throw new BusinessException($"新快递单号{request.NewWaybillNo}已存在"); + var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + if (purchaseOrder == null) + throw new BusinessException($"未查询到采购单号{request.PurchaseOrderId}"); + + + IInsert insertPEO = null; + IInsert insertEORI = null; + IDelete deleteEORI = null; + IDelete deletePEO = null; + IUpdate updatePurchaseOrderSku = null; + IUpdate updatePurchaseOrder = null; + IUpdate updateOrder = null; + + var waybillNos = new List() { request.OldWaybillNo, request.NewWaybillNo }; + var expressOrderRelationList = fsql.Select().Where(eori => waybillNos.Contains(eori.WayBillNo)).ToList(); + var oldWaybillNoRelationList = expressOrderRelationList.Where(eori => eori.WayBillNo == request.OldWaybillNo).ToList(); + var newWaybillNoRelationList = expressOrderRelationList.Where(eori => eori.WayBillNo == request.NewWaybillNo).ToList(); - newPeo = new PurchaseExpressOrder() + #region 旧快递单号验证 + if (!oldWaybillNoRelationList.Any()) + throw new BusinessException("未查询到旧快递单号"); + if (!oldWaybillNoRelationList.Any(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) + throw new BusinessException($"旧快递单号{request.OldWaybillNo}不属于采购单{request.PurchaseOrderId},无权修改"); + + if (oldWaybillNoRelationList.Count() == oldWaybillNoRelationList.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) + deletePEO = fsql.Delete(request.OldWaybillNo); + deleteEORI = fsql.Delete().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId && eori.WayBillNo == request.OldWaybillNo); + #endregion + + #region 新快递单号验证 + if (!newWaybillNoRelationList.Any(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) { - WaybillNo = request.NewWaybillNo, - TargetExpressId = request.NewExpressId, - TargetExpressName = request.NewExpressName, - CreateTime = DateTime.Now, - OrderId = request.OrderId, - PurchaseOrderId = request.PurchaseOrderId, - ShopId = oldPeo.ShopId, - ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收 - }; - try + var eori = new ExpressOrderRelationInfo() + { + Id = idGenerator.NewLong(), + OrderId = request.OrderId, + PurchaseOrderId = request.PurchaseOrderId, + CreateTime = DateTime.Now, + ShopId = dbOrder.ShopId, + WayBillNo = request.NewWaybillNo + }; + insertEORI = fsql.Insert(eori); + } + else + throw new BusinessException("请勿重复为同一采购单设置相同的快递单号"); + + PurchaseExpressOrder newPeo = null; + if (!newWaybillNoRelationList.Any()) { - kuaiDi100Manager.SubscribeKuaiDi100(request.NewWaybillNo, request.NewExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); - newPeo.IsSubscribeKD100 = true; + newPeo = new PurchaseExpressOrder() + { + WaybillNo = request.NewWaybillNo, + TargetExpressId = request.NewExpressId, + TargetExpressName = request.NewExpressName, + CreateTime = DateTime.Now, + ShopId = dbOrder.ShopId.Value, + IsSubscribeKD100 = false, + ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收 + }; + + try + { + kuaiDi100Manager.SubscribeKuaiDi100(request.NewWaybillNo, request.NewExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); + newPeo.IsSubscribeKD100 = true; + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, $"EditPurchaseExpressOrder,Request:{JsonConvert.SerializeObject(request)}"); + + #region 订阅失败发送钉钉通知 + var dingdingMsg = new StringBuilder(); + dingdingMsg.AppendLine($"错误:{ex.Message}"); + dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}"); + dingdingMsg.AppendLine($"拳探订单号:{request.OrderId}"); + dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); + dingdingMsg.AppendLine($"源物流公司:无"); + dingdingMsg.AppendLine($"目标物流公司:{request.NewExpressName} {request.NewExpressId}"); + dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}"); + dingdingMsg.AppendLine("触发环节:修改物流单号"); + dingdingMsg.Append($"店铺名:{shop.ShopName}"); + Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + } + insertPEO = fsql.Insert(newPeo); } - catch (Exception ex) + #endregion + + #region 更新采购sku使用的快递单号 + IList orderPurchaseSkuList = null; + if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + { + orderPurchaseSkuList = fsql.Select().Where(posku => posku.PurchaseOrderId == request.PurchaseOrderId).ToList(); + foreach (var posku in orderPurchaseSkuList) + { + if (posku.WaybillNo == request.OldWaybillNo) + posku.WaybillNo = request.NewWaybillNo; + } + updatePurchaseOrderSku = fsql.Update().Set(psku => psku.WaybillNo, request.NewWaybillNo) + .Where(psku => psku.PurchaseOrderId == request.PurchaseOrderId) + .Where(psku => psku.WaybillNo == request.OldWaybillNo); + + } + #endregion + + #region 计算采购单状态 + 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 + }); + if (newPeo != null) + purchaseExpressOrderList.Add(newPeo); + var oldPurchaseOrderState = purchaseOrder.OrderState; + purchaseOrder.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); + if (oldPurchaseOrderState != purchaseOrder.OrderState) + updatePurchaseOrder = fsql.Update(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState); + #endregion + + #region 计算订单状态 + var oldOrderState = dbOrder.OrderState; + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + if (oldOrderState != dbOrder.OrderState) { - nLogManager.Default().Error(ex, $"EditPurchaseExpressOrder,Request:{JsonConvert.SerializeObject(request)}"); - - #region 订阅失败发送钉钉通知 - var dingdingMsg = new StringBuilder(); - dingdingMsg.AppendLine($"错误:{ex.Message}"); - dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}"); - dingdingMsg.AppendLine($"拳探订单号:{request.OrderId}"); - dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); - dingdingMsg.AppendLine($"源物流公司:无"); - dingdingMsg.AppendLine($"目标物流公司:{request.NewExpressName} {request.NewExpressId}"); - dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}"); - dingdingMsg.AppendLine("触发环节:修改物流单号"); - dingdingMsg.Append($"店铺名:{shop.ShopName}"); - Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); + + #region 通知C端状态 + Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion } + #endregion fsql.Transaction(() => { - fsql.Delete(request.OldWaybillNo).ExecuteAffrows(); - fsql.Update().Set(psku => psku.WaybillNo, request.NewWaybillNo) - .Where(psku => psku.PurchaseOrderId == request.PurchaseOrderId) - .Where(psku => psku.WaybillNo == request.OldWaybillNo) - .ExecuteAffrows(); - fsql.Insert(newPeo).ExecuteAffrows(); + insertPEO?.ExecuteAffrows(); + insertEORI?.ExecuteAffrows(); + deleteEORI?.ExecuteAffrows(); + deletePEO?.ExecuteAffrows(); + updatePurchaseOrderSku?.ExecuteAffrows(); + updatePurchaseOrder?.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); }); } @@ -1129,11 +1267,31 @@ 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); + bool isDbExists = fsql.Select(request.WaybillNo).Any(); #endregion #region 查询当前采购单的订单信息 @@ -1144,7 +1302,8 @@ namespace BBWYB.Server.Business Id = o.Id, OrderSn = o.OrderSn, OrderState = o.OrderState, - ShopId = o.ShopId + ShopId = o.ShopId, + IntoStoreType = o.IntoStoreType }); if (dbOrder == null) throw new BusinessException("未查询到采购单的订单信息"); @@ -1194,7 +1353,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 +1384,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 +1404,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,134 +1447,158 @@ namespace BBWYB.Server.Business } updateOrderPurchase?.ExecuteAffrows(); updateOrder?.ExecuteAffrows(); + insertExpressOrderRelation?.ExecuteAffrows(); }); } - /// - /// 手动收货 - /// - /// public void ManualSign(ManualSignRequest request) { - IList> updatePurchaseExpressOrderList = new List>(); - IUpdate updateOrderPurchase = null; - IUpdate updateOrder = null; - - #region 查询该笔采购单的快递单信息 - var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); - #endregion - - #region 查询当前采购单的订单信息 - var dbOrder = fsql.Select().InnerJoin((opi, o) => opi.OrderId == o.Id) - .Where((opi, o) => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true) - .ToOne((opi, o) => new Order - { - Id = o.Id, - OrderState = o.OrderState, - ShopId = o.ShopId - }); - if (dbOrder == null) - throw new BusinessException("未查询到采购单的订单信息"); - #endregion - - #region 查询订单的全部采购单信息 - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == dbOrder.Id && opi.IsEnabled == true).ToList(); - var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); - if (orderPurchaseInfo == null) - throw new BusinessException("未查询到采购单信息"); - #endregion - - IList orderPurchaseSkuList = null; - IList orderPurchaseRelationList = null; - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) - { - #region 查询采购关联信息 - orderPurchaseRelationList = fsql.Select().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId && - opri.BelongSkuId == request.SkuId).ToList(); - if (orderPurchaseRelationList.Count() == 0) - throw new BusinessException("未查询到采购单的关联信息"); - #endregion - - #region 查询该笔采购单的采购sku信息 - orderPurchaseSkuList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); - if (orderPurchaseSkuList.Count() == 0) - throw new BusinessException("未查询到采购单sku信息"); - #endregion + Task.Factory.StartNew(() => OnExpressOrderChange(request.WayBillNo, "QianShou", DateTime.Now, "手动签收"), + CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } - #region 更新采购sku的快递单状态为签收 - foreach (var relation in orderPurchaseRelationList) - { - var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId); - if (orderPurchaseSku == null) - throw new BusinessException("未查询到采购单sku信息"); - if (!string.IsNullOrEmpty(orderPurchaseSku.WaybillNo)) - { - var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == orderPurchaseSku.WaybillNo); - if (purchaseExpressOrder == null) - throw new BusinessException("未查询到采购sku的快递信息"); - var expressState = kuaiDi100Manager.GetExpressState(3); - if (purchaseExpressOrder.ExpressState != expressState) - { - purchaseExpressOrder.ExpressState = expressState; - updatePurchaseExpressOrderList.Add(fsql.Update(purchaseExpressOrder.WaybillNo) - .Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState) - .Set(exo => exo.ExpressChangedTime, DateTime.Now) - .Set(exo => exo.ExpressContent, "手动签收")); - } - } - } - #endregion - } - else + public void BatchManualSign(BatchManualSignRequest request) + { + if (request.WayBillNoList == null || request.WayBillNoList.Count() == 0) + throw new BusinessException("缺少快递单号"); + if (request.WayBillNoList.Distinct().Count() < request.WayBillNoList.Count()) + throw new BusinessException("不允许重复的快递单号"); + Task.Factory.StartNew(() => { - foreach (var purchaseExpressOrder in purchaseExpressOrderList) - { - var expressState = kuaiDi100Manager.GetExpressState(3); - if (purchaseExpressOrder.ExpressState != expressState) - { - purchaseExpressOrder.ExpressState = expressState; - updatePurchaseExpressOrderList.Add(fsql.Update(purchaseExpressOrder.WaybillNo) - .Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState) - .Set(exo => exo.ExpressChangedTime, DateTime.Now) - .Set(exo => exo.ExpressContent, "手动签收")); - } - } - } + foreach (var waybillNo in request.WayBillNoList) + OnExpressOrderChange(waybillNo, "QianShou", DateTime.Now, "手动签收"); + }, CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } - #region 计算采购单状态 - orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); - updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) - .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); - #endregion + ///// + ///// 手动收货 + ///// + ///// + //public void ManualSign(ManualSignRequest request) + //{ + // IList> updatePurchaseExpressOrderList = new List>(); + // IUpdate updateOrderPurchase = null; + // IUpdate updateOrder = null; + + // #region 查询该笔采购单的快递单信息 + // var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); + // #endregion + + // #region 查询当前采购单的订单信息 + // var dbOrder = fsql.Select().InnerJoin((opi, o) => opi.OrderId == o.Id) + // .Where((opi, o) => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true) + // .ToOne((opi, o) => new Order + // { + // Id = o.Id, + // OrderState = o.OrderState, + // ShopId = o.ShopId + // }); + // if (dbOrder == null) + // throw new BusinessException("未查询到采购单的订单信息"); + // #endregion + + // #region 查询订单的全部采购单信息 + // var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == dbOrder.Id && opi.IsEnabled == true).ToList(); + // var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + // if (orderPurchaseInfo == null) + // throw new BusinessException("未查询到采购单信息"); + // #endregion + + // IList orderPurchaseSkuList = null; + // IList orderPurchaseRelationList = null; + // if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) + // { + // #region 查询采购关联信息 + // orderPurchaseRelationList = fsql.Select().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId && + // opri.BelongSkuId == request.SkuId).ToList(); + // if (orderPurchaseRelationList.Count() == 0) + // throw new BusinessException("未查询到采购单的关联信息"); + // #endregion - #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); - updateOrder = fsql.Update(dbOrder.Id) - .Set(o => o.OrderState, dbOrder.OrderState); - #endregion + // #region 查询该笔采购单的采购sku信息 + // orderPurchaseSkuList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); + // if (orderPurchaseSkuList.Count() == 0) + // throw new BusinessException("未查询到采购单sku信息"); + // #endregion - #region 通知齐库打包落仓情况 - Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseInfo, orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList), - CancellationToken.None, - TaskCreationOptions.LongRunning, - taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - #endregion + // #region 更新采购sku的快递单状态为签收 + // foreach (var relation in orderPurchaseRelationList) + // { + // var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId); + // if (orderPurchaseSku == null) + // throw new BusinessException("未查询到采购单sku信息"); + // if (!string.IsNullOrEmpty(orderPurchaseSku.WaybillNo)) + // { + // var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == orderPurchaseSku.WaybillNo); + // if (purchaseExpressOrder == null) + // throw new BusinessException("未查询到采购sku的快递信息"); + // var expressState = kuaiDi100Manager.GetExpressState(3); + // if (purchaseExpressOrder.ExpressState != expressState) + // { + // purchaseExpressOrder.ExpressState = expressState; + // updatePurchaseExpressOrderList.Add(fsql.Update(purchaseExpressOrder.WaybillNo) + // .Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState) + // .Set(exo => exo.ExpressChangedTime, DateTime.Now) + // .Set(exo => exo.ExpressContent, "手动签收")); + // } + // } + // } + // #endregion + // } + // else + // { + // foreach (var purchaseExpressOrder in purchaseExpressOrderList) + // { + // var expressState = kuaiDi100Manager.GetExpressState(3); + // if (purchaseExpressOrder.ExpressState != expressState) + // { + // purchaseExpressOrder.ExpressState = expressState; + // updatePurchaseExpressOrderList.Add(fsql.Update(purchaseExpressOrder.WaybillNo) + // .Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState) + // .Set(exo => exo.ExpressChangedTime, DateTime.Now) + // .Set(exo => exo.ExpressContent, "手动签收")); + // } + // } + // } - #region 通知C端状态 - Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - #endregion + // #region 计算采购单状态 + // orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); + // updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) + // .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); + // #endregion + + // #region 计算订单状态 + // dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + // updateOrder = fsql.Update(dbOrder.Id) + // .Set(o => o.OrderState, dbOrder.OrderState); + // #endregion + + // #region 通知齐库打包落仓情况 + // Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseInfo, orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList), + // CancellationToken.None, + // TaskCreationOptions.LongRunning, + // taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + // #endregion + + // #region 通知C端状态 + // Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + // #endregion - fsql.Transaction(() => - { - if (updatePurchaseExpressOrderList.Count() > 0) - { - foreach (var update in updatePurchaseExpressOrderList) - update.ExecuteAffrows(); - } - updateOrderPurchase?.ExecuteAffrows(); - updateOrder?.ExecuteAffrows(); - }); - } + // fsql.Transaction(() => + // { + // if (updatePurchaseExpressOrderList.Count() > 0) + // { + // foreach (var update in updatePurchaseExpressOrderList) + // update.ExecuteAffrows(); + // } + // updateOrderPurchase?.ExecuteAffrows(); + // updateOrder?.ExecuteAffrows(); + // }); + //} ///// ///// 签收采购单 @@ -1486,6 +1685,7 @@ namespace BBWYB.Server.Business try { List insertPurchaseExpressOrderList = new List(); + List insertExpressOrderRelationInfoList = new List(); IList> updateOrderPurchaseSkuList = new List>(); IUpdate updateOrderPurchase = null; IUpdate updateOrder = null; @@ -1499,7 +1699,8 @@ namespace BBWYB.Server.Business Id = o.Id, OrderSn = o.OrderSn, OrderState = o.OrderState, - ShopId = o.ShopId + ShopId = o.ShopId, + IntoStoreType = o.IntoStoreType }); if (dbOrder == null) throw new Exception("未查询到采购单的订单信息"); @@ -1526,7 +1727,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 +1768,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 +1816,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 +1846,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 +1879,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) @@ -2034,17 +2273,12 @@ namespace BBWYB.Server.Business } public void KuaiDi100Publish(string param) - { - Task.Factory.StartNew(() => KuaiDi100PublishCore(param), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - } - - private void KuaiDi100PublishCore(string param) { nLogManager.GetLogger("快递100").Info($"KuaiDi100Publish {param}"); - JObject jobject = JObject.Parse(param); - var waybillNo = jobject["lastResult"].Value("nu"); try { + JObject jobject = JObject.Parse(param); + var waybillNo = jobject["lastResult"].Value("nu"); var state = jobject["lastResult"].Value("state"); var convertState = kuaiDi100Manager.GetExpressState(state); if (convertState == "Unknow") @@ -2059,88 +2293,182 @@ namespace BBWYB.Server.Business var lastData = dataArray.FirstOrDefault(); + Task.Factory.StartNew(() => OnExpressOrderChange(waybillNo, convertState, lastData.ftime, lastData.context), + CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + catch (Exception ex) + { + nLogManager.GetLogger("快递100").Error(ex, $"KuaiDi100Publish-{param}"); + } + } + + /// + /// 快递单信息变更 + /// + /// + /// + /// + /// + private void OnExpressOrderChange(string wayBillNo, string state, DateTime expressChangeTime, string expressContent) + { + try + { IUpdate updatePurchaseExpressOrder = null; - IUpdate updateOrderPurchase = null; - IUpdate updateOrder = null; + List> updateOrderPurchaseList = new List>(); + List> updateOrderList = new List>(); #region 查询该笔快递单 - var tpeo = fsql.Select(waybillNo).ToOne(); + var tpeo = fsql.Select(wayBillNo).ToOne(); if (tpeo == null) throw new Exception("未查询到快递单"); #endregion - #region 查询采购单 - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == tpeo.OrderId && opi.IsEnabled == true).ToList(); - var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == tpeo.PurchaseOrderId); - if (orderPurchaseInfo == null) - throw new Exception("未查询到采购单"); + #region 查询和该快递单有关的订单 (多笔订单) + var orderIds = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => eori.WayBillNo == wayBillNo) + .GroupBy((eori, peo) => eori.OrderId) + .ToList(g => g.Key); + if (orderIds.Count() == 0) + throw new Exception("未查询到任何订单号"); #endregion - #region 查询订单/采购sku/快递单/采购关系 - var dbOrder = fsql.Select(tpeo.OrderId).ToOne(o => new Order + #region 查询订单 + var orderList = fsql.Select(orderIds).ToList(o => new Order { Id = o.Id, ShopId = o.ShopId, - OrderState = o.OrderState + OrderState = o.OrderState, + IntoStoreType = o.IntoStoreType }); - if (dbOrder == null) - throw new Exception("未查询到订单"); - - IList orderPurchaseSkuList = null; - IList orderPurchaseRelationList = null; - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) - { - orderPurchaseSkuList = fsql.Select().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList(); - if (orderPurchaseSkuList.Count() == 0) - throw new BusinessException("未查询到采购单sku信息"); + if (orderList.Count() == 0) + throw new Exception("未查询到任何订单"); + #endregion - orderPurchaseRelationList = fsql.Select().Where(opri => opri.PurchaseOrderId == tpeo.PurchaseOrderId).ToList(); - if (orderPurchaseRelationList.Count() == 0) - throw new BusinessException("未查询到采购单的关联信息"); - } + #region 查询订单sku + var orderSkuList = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId)).ToList(); + if (orderSkuList.Count() == 0) + throw new Exception("未查询到任何订单sku"); + #endregion - var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList(); - var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == waybillNo); - purchaseExpressOrder.ExpressState = convertState; - purchaseExpressOrder.ExpressChangedTime = lastData.ftime; - purchaseExpressOrder.ExpressContent = lastData.context; - updatePurchaseExpressOrder = fsql.Update().SetSource(purchaseExpressOrder); + #region 查询采购单 + var purchaseOrderList = fsql.Select().Where(ori => ori.IsEnabled == true && orderIds.Contains(ori.OrderId)).ToList(); + if (purchaseOrderList.Count() == 0) + throw new Exception("未查询到任何采购单"); + var purchaseOrderIds = purchaseOrderList.Select(po => po.PurchaseOrderId).ToList(); + #endregion + #region 查询采购SKU + IList orderPurchaseSkuList = fsql.Select() + .Where(posku => purchaseOrderIds.Contains(posku.PurchaseOrderId)) + .ToList(); #endregion - #region 计算采购单状态 - orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); - updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) - .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); + #region 查询采购sku关联信息 + IList orderPurchaseRelationList = fsql.Select() + .Where(ops => purchaseOrderIds.Contains(ops.PurchaseOrderId)) + .ToList(); #endregion - #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); - updateOrder = fsql.Update(dbOrder.Id) - .Set(o => o.OrderState, dbOrder.OrderState); + #region 查询采购单关联的快递单 + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => orderIds.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 + }); #endregion - #region 通知齐库打包落仓情况 - Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseInfo, orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList), - CancellationToken.None, - TaskCreationOptions.LongRunning, - taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #region 更新采购单信息 + tpeo.ExpressState = state; + tpeo.ExpressChangedTime = expressChangeTime; + tpeo.ExpressContent = expressContent; + updatePurchaseExpressOrder = fsql.Update().SetSource(tpeo); #endregion - #region 通知C端状态 - Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #region 计算订单状态和采购单状态 + foreach (var order in orderList) + { + var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); + var currentPurchaseOrderList = purchaseOrderList.Where(po => po.OrderId == order.Id).ToList(); + foreach (var purchaseOrder in currentPurchaseOrderList) + { + var currentPurchaseOrderSkuList = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + + var currentPurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + var temp = currentPurchaseExpressOrderList.FirstOrDefault(p => p.WaybillNo == wayBillNo); + if (temp != null) + temp.ExpressState = state; + + var oldPurchaseOrderState = purchaseOrder.OrderState; + purchaseOrder.CalculationOrderState(fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList); + if (purchaseOrder.OrderState != oldPurchaseOrderState) + { + var update = fsql.Update(purchaseOrder.Id).Set(po => po.OrderState, purchaseOrder.OrderState); + updateOrderPurchaseList.Add(update); + + #region 通知齐库打包落仓情况 + if (order.IntoStoreType == Enums.IntoStoreType.发回齐越) + { + var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + + Task.Factory.StartNew(() => qiKuManager.PublishQiKu(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList), + CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + #endregion + } + + } + var oldOrderState = order.OrderState; + order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList); + if (order.OrderState != oldOrderState) + { + var update = fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState); + updateOrderList.Add(update); + + #region 通知C端状态 + Task.Factory.StartNew(() => SendPurchaseOrderStateToC(order.Id, order.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + } + } #endregion + #region 更新数据库 fsql.Transaction(() => { updatePurchaseExpressOrder?.ExecuteAffrows(); - updateOrderPurchase?.ExecuteAffrows(); - updateOrder?.ExecuteAffrows(); + if (updateOrderPurchaseList.Count() > 0) + { + foreach (var update in updateOrderPurchaseList) + update.ExecuteAffrows(); + } + if (updateOrderList.Count() > 0) + { + foreach (var update in updateOrderList) + update.ExecuteAffrows(); + } }); + #endregion } catch (Exception ex) { - nLogManager.GetLogger("快递100").Error(ex, waybillNo); + nLogManager.GetLogger("快递100").Error(ex, wayBillNo); } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 926bb4f..67e235d 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -126,6 +126,9 @@ namespace BBWYB.Server.Business.Sync if (jobject.ContainsKey("BelongSkus")) belongSkus = jobject["BelongSkus"] as JArray; + + if (jobject.ContainsKey("IntoStoreType")) + dbOrder.IntoStoreType = (Enums.IntoStoreType?)jobject.Value("IntoStoreType"); } catch (Exception ex) { @@ -236,7 +239,7 @@ namespace BBWYB.Server.Business.Sync } } - private Enums.OrderState ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased) + private Enums.OrderState? ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased) { /* -1、已取消; @@ -264,7 +267,7 @@ namespace BBWYB.Server.Business.Sync return Enums.OrderState.待收货; if (qtOrderState == "3") return Enums.OrderState.已完成; - return Enums.OrderState.Unknow; + return null; } } } 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; } + } + +} diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index 8e724ad..4f6863d 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -194,6 +194,12 @@ namespace BBWYB.Server.Model.Db [Column(IsIgnore = true)] public decimal? PurchaseAmount { get; set; } = 0.00M; + [Column(IsIgnore = true)] + public decimal? SkuAmount { get; set; } = 0.00M; + + [Column(IsIgnore = true)] + public decimal? PurchaseFreight { get; set; } = 0.00M; + /// /// 发货快递费 /// @@ -242,6 +248,10 @@ namespace BBWYB.Server.Model.Db /// [Column(DbType = "bit")] public bool? IsWaitPack { get; set; } = false; + + + [Column(MapType = typeof(int?))] + public Enums.IntoStoreType? IntoStoreType { get; set; } } } diff --git a/BBWYB.Server.Model/Db/Order/OrderSku.cs b/BBWYB.Server.Model/Db/Order/OrderSku.cs index cbab706..cedf9ec 100644 --- a/BBWYB.Server.Model/Db/Order/OrderSku.cs +++ b/BBWYB.Server.Model/Db/Order/OrderSku.cs @@ -7,67 +7,68 @@ namespace BBWYB.Server.Model.Db /// 订单SKU /// [Table(Name = "ordersku", DisableSyncStructure = true)] - public partial class OrderSku { + public partial class OrderSku + { - [Column(IsPrimary = true)] - public long Id { get; set; } + [Column(IsPrimary = true)] + public long Id { get; set; } - [Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } - /// - /// 是否退款 - /// - - public bool? IsRefund { get; set; } = false; + /// + /// 是否退款 + /// + + public bool? IsRefund { get; set; } = false; + + /// + /// 销售数量 + /// + [Column(DbType = "int(1)")] + public int? ItemTotal { get; set; } + + /// + /// Logo + /// + public string Logo { get; set; } - /// - /// 销售数量 - /// - [Column(DbType = "int(1)")] - public int? ItemTotal { get; set; } - /// - /// Logo - /// - public string Logo { get; set; } + [Column(StringLength = 50)] + public string OrderId { get; set; } + /// + /// 销售单价 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? Price { get; set; } - [Column(StringLength = 50)] - public string OrderId { get; set; } + [Column(StringLength = 50)] + public string ProductId { get; set; } - /// - /// 销售单价 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? Price { get; set; } + /// + /// 货号 + /// + [Column(StringLength = 50)] + public string ProductNo { get; set; } - [Column(StringLength = 50)] - public string ProductId { get; set; } - /// - /// 货号 - /// - [Column(StringLength = 50)] - public string ProductNo { get; set; } + public long? ShopId { get; set; } - - public long? ShopId { get; set; } + [Column(StringLength = 50, IsNullable = false)] + public string SkuId { get; set; } - [Column(StringLength = 50, IsNullable = false)] - public string SkuId { get; set; } + /// + /// 归属SkuId + /// + [Column(StringLength = 50)] + public string BelongSkuId { get; set; } - /// - /// 归属SkuId - /// - [Column(StringLength = 50)] - public string BelongSkuId { get; set; } + /// + /// Sku标题 + /// - /// - /// Sku标题 - /// - - public string Title { get; set; } + public string Title { get; set; } /// @@ -76,23 +77,29 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "int(1)", MapType = typeof(int?))] public Enums.PackConfigState? PackConfigState { get; set; } - /// - /// 买家支付运费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? BuyerPayFreight { get; set; } = 0.00M; - - /// - /// 实收打包费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? InPackAmount { get; set; } = 0.00M; - - /// - /// SKU备注 - /// - [Column(StringLength = 500)] - public string Remark { get; set; } - } + /// + /// 买家支付运费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? BuyerPayFreight { get; set; } = 0.00M; + + /// + /// 实收打包费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? InPackAmount { get; set; } = 0.00M; + + /// + /// SKU备注 + /// + [Column(StringLength = 500)] + public string Remark { get; set; } + + /// + /// 是否验收 + /// + [Column(DbType = "bit", IsNullable = true)] + public bool? IsCheck { get; set; } + } } diff --git a/BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs b/BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs index 46f0d8e..73ca20f 100644 --- a/BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs +++ b/BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs @@ -40,11 +40,6 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 100)] public string ExpressState { get; set; } - [Column(StringLength = 100)] - public string OrderId { get; set; } - - [Column(StringLength = 100)] - public string PurchaseOrderId { get; set; } [Column(StringLength = 100)] public long ShopId { get; set; } @@ -79,6 +74,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "bit")] public bool IsSubscribeKD100 { get; set; } = false; + [Column(IsIgnore = true)] + public string OrderId { get; set; } + + [Column(IsIgnore = true)] + public string PurchaseOrderId { get; set; } + } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs new file mode 100644 index 0000000..31e00a6 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs @@ -0,0 +1,15 @@ +namespace BBWYB.Server.Model.Dto +{ + public class CheckSkuRequest + { + /// + /// 订单Id + /// + public string OrderId { get; set; } + + /// + /// 来源SKUID (JD) + /// + public string SourceSkuId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs new file mode 100644 index 0000000..3fd7542 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs @@ -0,0 +1,12 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QueryExpressOrderRequest + { + public string OrderId { get; set; } + + /// + /// 来源SKUID (JD) + /// + public string SourceSkuId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs index 81bc878..0a2ed94 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs @@ -2,14 +2,25 @@ { public class ManualSignRequest { - /// - /// 采购单Id - /// - public string PurchaseOrderId { get; set; } + ///// + ///// 采购单Id + ///// + //public string PurchaseOrderId { get; set; } + + ///// + ///// 订单SkuId (OrderSku对象的SkuId) + ///// + //public string SkuId { get; set; } /// - /// 订单SkuId (OrderSku对象的SkuId) + /// 快递单号 /// - public string SkuId { get; set; } + public string WayBillNo { get; set; } + + } + + public class BatchManualSignRequest + { + public IList WayBillNoList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index 4c8933d..3c5e42a 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -145,6 +145,8 @@ /// 打包状态 /// public Enums.PackConfigState? PackConfigState { get; set; } + + public Enums.IntoStoreType? IntoStoreType { get; set; } } public class OrderListResponse diff --git a/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs index 58efff2..0a0a2a9 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs @@ -4,5 +4,9 @@ namespace BBWYB.Server.Model.Dto { public class PurchaseExpressOrderResponse: PurchaseExpressOrder { + /// + /// 归属SkuId,逗号间隔 (拳探SKU) + /// + public string BelongSkuIds { get; set; } } } diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index f77cacf..a64c561 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -78,13 +78,9 @@ /// 待发货 = 2, 部分发货 = 120 /// 待收货 = 3, 部分收货 = 130 /// 已完成 = 4 - /// 锁定 = 5 /// 已取消 = 6 - /// 暂停 = 7 - /// 已退款 = 8 - /// Unknow = 100 - /// 打包中 = 140 - /// 待完结 = 150 + /// 待验收 = 140 + /// 待核算 = 150 /// public enum OrderState { @@ -96,15 +92,9 @@ 待收货 = 3, 部分收货 = 130, 已完成 = 4, - 锁定 = 5, 已取消 = 6, - 暂停 = 7, - 已退款 = 8, - Unknow = 100, - 打包中 = 140, - 待完结 = 150 - - //待配置 = 101, + 待验收 = 140, + 待核算 = 150 } /// @@ -307,5 +297,13 @@ 待配置 = 0, 已配置 = 1 } + + /// + /// 入仓类型 (发回齐越 = 0, 厂商代发入仓 = 1) + /// + public enum IntoStoreType + { + 发回齐越 = 0, 厂商代发入仓 = 1 + } } } diff --git a/U/WebView2Manager.cs b/U/WebView2Manager.cs index 91ab8b7..f48d2eb 100644 --- a/U/WebView2Manager.cs +++ b/U/WebView2Manager.cs @@ -13,12 +13,12 @@ namespace U //{ // Init(); //} - public void Init() + public void Init(string folderName = "WebView2UserData") { if (wb2 == null) { wb2 = new WebView2(); - var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "UPC_WebView2UserData")).Result; + var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), folderName)).Result; wb2.EnsureCoreWebView2Async(wb2Setting); wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted; wb2.NavigationCompleted += Wb2_NavigationCompleted; @@ -29,7 +29,7 @@ namespace U public Action OnWebMessageReceived; public Action OnNavigationCompleted; public Action CoreWebView2InitializationCompleted; - public bool IsInitializationCompleted { get ; private set; } + public bool IsInitializationCompleted { get; private set; } private void Wb2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) {