From ea77596b9b663b21832a7580d972c065b5188510 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 9 Jul 2023 18:37:55 +0800 Subject: [PATCH 01/70] 1 --- BBWYB.Client/App.xaml.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BBWYB.Client/App.xaml.cs b/BBWYB.Client/App.xaml.cs index fed38fb..5f39299 100644 --- a/BBWYB.Client/App.xaml.cs +++ b/BBWYB.Client/App.xaml.cs @@ -32,10 +32,10 @@ namespace BBWYB.Client #if DEBUG //齐越山鸡 - //userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNjk0NjY5NjkxfQ.cSwro-7bGwOu92YejH9JhMenTai7Mvf99i2paQCmxIw"; + userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNjk0NjY5NjkxfQ.cSwro-7bGwOu92YejH9JhMenTai7Mvf99i2paQCmxIw"; //拳探店铺 测试002 - userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTYyMDM0NDE0MDg1MDAwODA2NCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MDk5ODUwOTB9.v9iMB4kSpiYvHoPK3WSaOn5GE7bIUhO7266yowvxjfU"; + //userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTYyMDM0NDE0MDg1MDAwODA2NCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MDk5ODUwOTB9.v9iMB4kSpiYvHoPK3WSaOn5GE7bIUhO7266yowvxjfU"; #else var tokenResult = ReadMMF(); From 97dd7185abb02c577793951f22cfd1dde89e9c70 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 10 Jul 2023 00:10:14 +0800 Subject: [PATCH 02/70] =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=99=90=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 1 + .../Sync/OrderSyncBusiness.cs | 96 ++++++++++++++----- BBWYB.Server.Model/Db/Order/Order.cs | 6 ++ .../Db/TimeLimitTask/TimeLimitTask.cs | 71 ++++++++++++++ .../Dto/Response/Order/OrderResponse.cs | 5 + BBWYB.Server.Model/Enums.cs | 8 ++ .../Client/Impl/OP_QuanTanClient.cs | 1 + .../Models/Response/Order/OP_OrderResponse.cs | 5 + 8 files changed, 171 insertions(+), 22 deletions(-) create mode 100644 BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index b89c2b6..88c895b 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -112,6 +112,7 @@ namespace BBWYB.Server.Business InPackAmount = o.InPackAmount, IsWaitPack = o.IsWaitPack, IntoStoreType = o.IntoStoreType, + PayTime = o.PayTime, ContactName = ocs.ContactName, Address = ocs.Address, diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 67e235d..130d683 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -74,12 +74,19 @@ namespace BBWYB.Server.Business.Sync var qtOrderIdList = qtOrderList.Items.Select(qto => qto.OrderId).ToList(); var dbOrderList = fsql.Select(qtOrderIdList).ToList(); + //采购限时任务列表 + var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).ToList(); + var dbPurchaseTimeLimitTaskList = fsql.Select().Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务 && + payedQTOrderIdList.Contains(t.OrderId)).ToList(); + List insertOrderList = new List(); List insertOrderSkuList = new List(); List insertOrderConsigneeList = new List(); + List insertTimeLimitTaskList = new List(); List> updateOrderList = new List>(); + foreach (var qtOrder in qtOrderList.Items) { var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == qtOrder.OrderId); @@ -113,7 +120,8 @@ namespace BBWYB.Server.Business.Sync OrderState = orderState, ClientOrderId = qtOrder.ClientOrderId, BuyerAccount = qtOrder.UserAccount, - InPackAmount = qtOrder.PackAmount + InPackAmount = qtOrder.PackAmount, + PayTime = qtOrder.PayTime, }; JArray belongSkus = null; if (!string.IsNullOrEmpty(qtOrder.Extended)) @@ -178,14 +186,8 @@ namespace BBWYB.Server.Business.Sync } else { - Enums.OrderState? updateOrderState = null; - var updateModifyTime = false; - var updateBuyerRemark = false; - var updateVenderRemark = false; - var updateBuyerAccount = false; - var updateOrderSn = false; - #region 订单状态脱离拳探 只处理付款和取消 + Enums.OrderState? updateOrderState = null; if (dbOrder.OrderState == Enums.OrderState.待付款 && orderState != Enums.OrderState.待付款) updateOrderState = Enums.OrderState.等待采购; @@ -193,30 +195,29 @@ namespace BBWYB.Server.Business.Sync updateOrderState = Enums.OrderState.已取消; #endregion - if (dbOrder.ModifyTime != qtOrder.ModifyTime) - updateModifyTime = true; - if (dbOrder.BuyerRemark != qtOrder.BuyerRemark) - updateBuyerRemark = true; - if (dbOrder.VenderRemark != qtOrder.VenderRemark) - updateVenderRemark = true; - if (dbOrder.BuyerAccount != qtOrder.UserAccount) - updateBuyerAccount = true; - if (dbOrder.OrderSn != qtOrder.OrderSn) - updateOrderSn = true; - - if (updateOrderState != null || updateModifyTime || updateBuyerRemark || updateVenderRemark || updateBuyerAccount || updateOrderSn) + var updateModifyTime = dbOrder.ModifyTime != qtOrder.ModifyTime; + var updateBuyerRemark = dbOrder.BuyerRemark != qtOrder.BuyerRemark; + var updateVenderRemark = dbOrder.VenderRemark != qtOrder.VenderRemark; + var updateBuyerAccount = dbOrder.BuyerAccount != qtOrder.UserAccount; + var updateOrderSn = dbOrder.OrderSn != qtOrder.OrderSn; + var updatePayTime = dbOrder.PayTime != qtOrder.PayTime; + + if (updateOrderState != null || updateModifyTime || updateBuyerRemark || updateVenderRemark || updateBuyerAccount || updateOrderSn || updatePayTime) { - var update = fsql.Update(dbOrder.Id).SetIf(updateOrderState != null, o => o.OrderState, orderState) + var update = fsql.Update(dbOrder.Id).SetIf(updateOrderState != null, o => o.OrderState, updateOrderState) .SetIf(updateModifyTime, o => o.ModifyTime, qtOrder.ModifyTime) .SetIf(updateBuyerRemark, o => o.BuyerRemark, qtOrder.BuyerRemark) .SetIf(updateVenderRemark, o => o.VenderRemark, qtOrder.VenderRemark) .SetIf(updateBuyerAccount, o => o.BuyerAccount, qtOrder.UserAccount) - .SetIf(updateOrderSn, o => o.OrderSn, qtOrder.OrderSn); + .SetIf(updateOrderSn, o => o.OrderSn, qtOrder.OrderSn) + .SetIf(updatePayTime, o => o.PayTime, qtOrder.PayTime); updateOrderList.Add(update); } } } + CheckPurchaseTimeLimitTask(shopId, qtOrderList.Items, dbPurchaseTimeLimitTaskList, insertTimeLimitTaskList); + fsql.Transaction(() => { if (insertOrderList.Count > 0) @@ -228,6 +229,9 @@ namespace BBWYB.Server.Business.Sync if (insertOrderConsigneeList.Count() > 0) fsql.Insert(insertOrderConsigneeList).ExecuteAffrows(); + if (insertTimeLimitTaskList.Count() > 0) + fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); + if (updateOrderList.Count() > 0) foreach (var update in updateOrderList) update.ExecuteAffrows(); @@ -239,6 +243,54 @@ namespace BBWYB.Server.Business.Sync } } + private void CheckPurchaseTimeLimitTask(long shopId, IList orderList, IList dbTimeLimits, List insertTimeLimitTasks) + { + foreach (var order in orderList) + { + if (!order.IsPay || order.PayTime == null) + continue; + var waitInserTimeLimitTasks = order.OrderSkuList.Where(osku => !dbTimeLimits.Any(x => x.OrderId == order.OrderId && x.SkuId == osku.SkuId)) + .Select(osku => new TimeLimitTask() + { + Id = idGenerator.NewLong(), + CreateTme = DateTime.Now, + OrderId = order.OrderId, + SkuId = osku.SkuId, + TaskType = Enums.TimeLimitTaskType.采购任务, + ShopId = shopId, + ExpirationTime = CalculationPurcashTimeLimitTaskExpirationTime(order.PayTime.Value), + PayTime = order.PayTime + }).ToList(); + if (waitInserTimeLimitTasks != null && waitInserTimeLimitTasks.Count() > 0) + insertTimeLimitTasks.AddRange(waitInserTimeLimitTasks); + } + } + + /// + /// 计算采购限时任务的到期时间 + /// + /// 付款时间 + /// + private DateTime CalculationPurcashTimeLimitTaskExpirationTime(DateTime payTime) + { + var addDays = 0; + if (payTime.DayOfWeek == DayOfWeek.Sunday || + payTime.DayOfWeek == DayOfWeek.Monday || + payTime.DayOfWeek == DayOfWeek.Tuesday || + payTime.DayOfWeek == DayOfWeek.Wednesday || + payTime.DayOfWeek == DayOfWeek.Thursday || + payTime.DayOfWeek == DayOfWeek.Friday) + { + if (payTime.Hour >= 0 && payTime.Hour < 15) + addDays = 0; //当日 + else + addDays = payTime.DayOfWeek == DayOfWeek.Friday ? 2 : 1; //次日,星期五是后天 + } + else if (payTime.DayOfWeek == DayOfWeek.Saturday) + addDays = 1; + return payTime.Date.AddDays(addDays).AddHours(16); + } + private Enums.OrderState? ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased) { /* diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index 4f6863d..8c3373d 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -50,6 +50,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "datetime")] public DateTime? ModifyTime { get; set; } + /// + /// 支付时间 + /// + [Column(DbType = "datetime", IsNullable = true)] + public DateTime? PayTime { get; set; } + /// /// 用户应付金额 /// diff --git a/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs b/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs new file mode 100644 index 0000000..77433f6 --- /dev/null +++ b/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs @@ -0,0 +1,71 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 时限任务表 + /// + [Table(Name = "timelimittask", DisableSyncStructure = true)] + public partial class TimeLimitTask { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + /// + /// 完成时间 + /// + [Column(DbType = "datetime")] + public DateTime? CompletionTime { get; set; } + + /// + /// 创建时间 + /// + [Column(DbType = "datetime")] + public DateTime? CreateTme { get; set; } + + /// + /// 付款时间 + /// + [Column(DbType = "datetime")] + public DateTime? PayTime { get; set; } + + /// + /// 到期时间(非时间长度,而是具体的时间) + /// + [Column(DbType = "datetime")] + public DateTime? ExpirationTime { get; set; } + + /// + /// 是否及时完成 + /// + + public bool? IsTimely { get; set; } + + /// + /// 订单Id (采购任务时有效) + /// + [Column(StringLength = 50)] + public string OrderId { get; set; } + + /// + /// 店铺Id + /// + + public long? ShopId { get; set; } + + /// + /// SKU + /// + [Column(StringLength = 50)] + public string SkuId { get; set; } + + /// + /// 任务类型(采购任务=0,合格证拟定任务=10,合格证补充任务=11) + /// + [Column(MapType = typeof(int?))] + public Enums.TimeLimitTaskType? TaskType { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index 3c5e42a..f1b3591 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -26,6 +26,11 @@ /// public DateTime ModifyTime { get; set; } + /// + /// 支付时间 + /// + public DateTime? PayTime { get; set; } + /// /// 订单平台 /// diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index a64c561..46b516e 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -305,5 +305,13 @@ { 发回齐越 = 0, 厂商代发入仓 = 1 } + + /// + /// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11 + /// + public enum TimeLimitTaskType + { + 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11 + } } } diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index d8d8589..63e927a 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -146,6 +146,7 @@ namespace SDKAdapter.OperationPlatform.Client PackAmount = qto.PackingCharge, PayType = 0, IsPay = qto.Paid == 1, + PayTime = qto.Paid == 1 ? qto.PayTime : null, PreferentialAmount = 0, SellerPreferentialAmount = 0, OrderSkuList = qto.OrderProduct.Select(qtosku => new OP_OrderProductSkuResponse() diff --git a/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs b/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs index f0bc2eb..6ba4431 100644 --- a/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs +++ b/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs @@ -42,6 +42,11 @@ /// public bool IsPay { get; set; } + /// + /// 支付时间 + /// + public DateTime? PayTime { get; set; } + /// /// 下单来源 /// 京东【】 From e39e85fb5ecb3467bd86846f14e91aa987c5b844 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 10 Jul 2023 01:25:15 +0800 Subject: [PATCH 03/70] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=87=87=E8=B4=AD=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index f149f2c..fb8599d 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -257,6 +257,7 @@ namespace BBWYB.Server.Business List insertOrderPurchaseSkuInfos = new List(); List updatePurchaseTimeSchemeIdList = new List(); List insertOrderPurchaseRelationInfoList = new List(); + List updatePurchaseTimeLimitTaskOrderSkuList = new List(); #region 待更新 IList updateOrderCostDetailIdList = fsql.Select() @@ -342,6 +343,7 @@ namespace BBWYB.Server.Business //采购单总件数,由于1688运费只存在订单层,sku层没有运费,所以需要以订单总件数为基础等比计算采购运费 var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); var belongSkuGroups = cargoParamGroup.CargoParamList.GroupBy(p => p.BelongSkuId); + var belongSkuIdList = belongSkuGroups.Select(bsg => bsg.Key).ToList(); foreach (var belongSkuGroup in belongSkuGroups) { var belongSkuId = belongSkuGroup.Key; @@ -402,7 +404,7 @@ namespace BBWYB.Server.Business PurchaserId = cargoParamGroup.PurchaserId, PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, - BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), + BelongSkuIds = string.Join(",", belongSkuIdList), IsEnabled = true, Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark }; @@ -425,6 +427,14 @@ namespace BBWYB.Server.Business insertOrderPurchaseSkuInfos.Add(orderPurchaseSkuInfo); } #endregion + + #region 采购限时任务 + foreach (var belongSkuId in belongSkuIdList) + { + if (!updatePurchaseTimeLimitTaskOrderSkuList.Any(x => x == belongSkuId)) + updatePurchaseTimeLimitTaskOrderSkuList.Add(belongSkuId); + } + #endregion } #region 订单成本 @@ -464,6 +474,15 @@ namespace BBWYB.Server.Business fsql.Update(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows(); if (updateOrderCostDetailIdList.Count() > 0) fsql.Update(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows(); + if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) + { + fsql.Update().Set(t => t.CompletionTime, DateTime.Now) + .SetIf(dbOrder.PayTime != null, t => t.IsTimely == DateTime.Now < t.ExpirationTime) + .Where(t => t.OrderId == request.OrderId) + .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) + .Where(t => t.CompletionTime == null) + .ExecuteAffrows(); + } fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); From c4f9580164155cc24234330c67c82530b67b3d12 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 10 Jul 2023 13:23:50 +0800 Subject: [PATCH 04/70] =?UTF-8?q?=E9=99=90=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TimeLimitTaskSyncController.cs | 24 ++++++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 57 ++++++++----------- .../PurchaseOrder/PurchaseOrderBusiness.cs | 32 +++++++---- .../Sync/TimeLimitTaskSyncBusiness.cs | 24 ++++++++ .../Dto/Response/Order/OrderSkuResponse.cs | 11 ++-- .../TimeLimitTask/TimeLimitTaskResponse.cs | 8 +++ 6 files changed, 107 insertions(+), 49 deletions(-) create mode 100644 BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs create mode 100644 BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs create mode 100644 BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs new file mode 100644 index 0000000..6b736db --- /dev/null +++ b/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs @@ -0,0 +1,24 @@ +using BBWYB.Server.Business.Sync; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + public class TimeLimitTaskSyncController : BaseApiController + { + private TimeLimitTaskSyncBusiness timeLimitTaskSyncBusiness; + public TimeLimitTaskSyncController(IHttpContextAccessor httpContextAccessor, TimeLimitTaskSyncBusiness timeLimitTaskSyncBusiness) : base(httpContextAccessor) + { + this.timeLimitTaskSyncBusiness = timeLimitTaskSyncBusiness; + } + + /// + /// 检查任务过期 + /// + [HttpPost] + public void CheckTask() + { + timeLimitTaskSyncBusiness.CheckTask(); + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 88c895b..cb198f1 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -217,42 +217,31 @@ namespace BBWYB.Server.Business continue; osku.PurchaseExpressOrderList.Add(purchaseExpressOrder); } + } + #endregion + + #region 限时任务 + + #region 需要订单关联的任务 (采购任务) + var purchaseTimeLimitTaskList = fsql.Select().Where(t => orderIdList.Contains(t.OrderId)) + .ToList(); + + #endregion + + #region 不需要订单关联的任务 (合格证任务) - //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 + + foreach (var order in orderList) + { + foreach (var orderSku in order.ItemList) + { + var purchaseTimeLimitTask = purchaseTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); + if (purchaseTimeLimitTask != null) + orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask); + } } + #endregion } return new OrderListResponse() diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index fb8599d..3c30438 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -477,7 +477,7 @@ namespace BBWYB.Server.Business if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) { fsql.Update().Set(t => t.CompletionTime, DateTime.Now) - .SetIf(dbOrder.PayTime != null, t => t.IsTimely == DateTime.Now < t.ExpirationTime) + .SetIf(dbOrder.PayTime != null, t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) .Where(t => t.OrderId == request.OrderId) .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) .Where(t => t.CompletionTime == null) @@ -573,15 +573,6 @@ 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 dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList(); - - //if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) - // throw new BusinessException("关联采购单时不能包含历史采购单"); - - var validation_groups_pid = request.AssociationPurchaseOrderList.GroupBy(po => po.PurchaseOrderId); if (validation_groups_pid.Any(x => x.Count() > 1)) throw new BusinessException("不允许包含重复的采购单"); @@ -641,6 +632,8 @@ namespace BBWYB.Server.Business IInsert insertOrderCost = null; IUpdate updateOrderCost = null; + List updatePurchaseTimeLimitTaskOrderSkuList = new List(); + foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { //if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) @@ -803,6 +796,15 @@ namespace BBWYB.Server.Business }; insertOrderPurchaseInfoList.Add(dbPurchaserOrder); #endregion + + #region 采购限时任务 + foreach (var ocd in purchaseOrder.AssocationOrderCostDetailList) + { + if (!updatePurchaseTimeLimitTaskOrderSkuList.Any(x => x == ocd.SkuId)) + updatePurchaseTimeLimitTaskOrderSkuList.Add(ocd.SkuId); + } + + #endregion } else { @@ -900,6 +902,15 @@ namespace BBWYB.Server.Business if (insertOrderPurchaseRelationInfoList.Count() > 0) fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); + if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) + { + fsql.Update().Set(t => t.CompletionTime, DateTime.Now) + .SetIf(dbOrder.PayTime != null, t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) + .Where(t => t.OrderId == request.OrderId) + .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) + .Where(t => t.CompletionTime == null) + .ExecuteAffrows(); + } if (updateOrderPurchaseInfoList.Count() > 0) { foreach (var update in updateOrderPurchaseInfoList) @@ -1493,6 +1504,7 @@ namespace BBWYB.Server.Business taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } + ///// ///// 手动收货 ///// diff --git a/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs b/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs new file mode 100644 index 0000000..34fc9ce --- /dev/null +++ b/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs @@ -0,0 +1,24 @@ +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using BBWYB.Server.Model.Db; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business.Sync +{ + public class TimeLimitTaskSyncBusiness : BaseBusiness, IDenpendency + { + //private TaskSchedulerManager taskSchedulerManager; + public TimeLimitTaskSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) + { + //this.taskSchedulerManager = taskSchedulerManager; + } + + public void CheckTask() + { + fsql.Update().Set(t => t.IsTimely, false) + .Where(t => t.CompletionTime == null) + .Where(t => t.ExpirationTime < DateTime.Now) + .ExecuteAffrows(); + } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index daafc7e..6e78a6c 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -4,19 +4,20 @@ namespace BBWYB.Server.Model.Dto { public class OrderSkuResponse : OrderSku { - // /// - // /// 采购方案 - // /// - //public long SchemeId { get;set; } - public OrderSkuResponse() { PurchaseExpressOrderList = new List(); + TimeLimitTaskList = new List(); } /// /// 快递单列表 /// public IList PurchaseExpressOrderList { get; set; } + + /// + /// 限时任务列表 + /// + public IList TimeLimitTaskList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs new file mode 100644 index 0000000..b4f0378 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs @@ -0,0 +1,8 @@ +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto +{ + public class TimeLimitTaskResponse : TimeLimitTask + { + } +} From 12fe34e009208f59710c2273c411cd3d68e14fc1 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 10 Jul 2023 13:29:36 +0800 Subject: [PATCH 05/70] 1 --- BBWYB.Server.Business/Order/OrderBusiness.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index cb198f1..2eb237b 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -223,8 +223,8 @@ namespace BBWYB.Server.Business #region 限时任务 #region 需要订单关联的任务 (采购任务) - var purchaseTimeLimitTaskList = fsql.Select().Where(t => orderIdList.Contains(t.OrderId)) - .ToList(); + var orderTimeLimitTaskList = fsql.Select().Where(t => orderIdList.Contains(t.OrderId)) + .ToList(); #endregion @@ -236,7 +236,7 @@ namespace BBWYB.Server.Business { foreach (var orderSku in order.ItemList) { - var purchaseTimeLimitTask = purchaseTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); + var purchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); if (purchaseTimeLimitTask != null) orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask); } From c0fc142cba9e9d0954a3bceebccd7cdaeac9d716 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 10 Jul 2023 15:21:01 +0800 Subject: [PATCH 06/70] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=80=83=E6=A0=B8?= =?UTF-8?q?=E7=BB=A9=E6=95=88=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/GlobalContext.cs | 2 +- BBWYB.Client/ViewModels/MainViewModel.cs | 2 +- BBWYB.Client/Views/WebB/WebB.xaml.cs | 15 ++-- BBWYB.Client/Views/WebB/WebB_KPI.xaml | 14 ++++ BBWYB.Client/Views/WebB/WebB_KPI.xaml.cs | 87 ++++++++++++++++++++++++ 5 files changed, 107 insertions(+), 13 deletions(-) create mode 100644 BBWYB.Client/Views/WebB/WebB_KPI.xaml create mode 100644 BBWYB.Client/Views/WebB/WebB_KPI.xaml.cs diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 2176586..c018495 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10025"; + BBWYBApiVersion = "10026"; } private User user; diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 0343adb..8e7c996 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -111,7 +111,7 @@ namespace BBWYB.Client.ViewModels ChildList = new List() { new MenuModel(){ Name="订单列表Bata",Url="/Views/WebB/WebB.xaml" }, - //new MenuModel(){ Name="团队配置",Url="/Views/Setting/TeamSetting.xaml" } + new MenuModel(){ Name="绩效考核",Url="/Views/WebB/WebB_KPI.xaml" } } }); MenuList.Add(new MenuModel() diff --git a/BBWYB.Client/Views/WebB/WebB.xaml.cs b/BBWYB.Client/Views/WebB/WebB.xaml.cs index 9c39e7f..b365133 100644 --- a/BBWYB.Client/Views/WebB/WebB.xaml.cs +++ b/BBWYB.Client/Views/WebB/WebB.xaml.cs @@ -1,10 +1,6 @@ -using BBWYB.Client.APIServices; -using CommunityToolkit.Mvvm.Messaging; +using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging.Messages; using Microsoft.Extensions.DependencyInjection; -using System.Collections.Generic; -using System.IO; -using System.Reflection; using System.Windows; using System.Windows.Controls; @@ -18,9 +14,6 @@ namespace BBWYB.Client.Views.WebB private WebView2Manager w2m; private bool isNavigated; - private IList managerDepartment; - private MdsApiService mdsApiService; - private ShopService shopService; private GlobalContext globalContext; public WebB() @@ -61,20 +54,20 @@ namespace BBWYB.Client.Views.WebB { w2m = s.ServiceProvider.GetRequiredService(); globalContext = s.ServiceProvider.GetRequiredService(); - mdsApiService = s.ServiceProvider.GetRequiredService(); - shopService = s.ServiceProvider.GetRequiredService(); } #if DEBUG var url = "http://192.168.1.8:8080"; + var registerName = "webTestContext"; //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html"); #else var url = "http://qtbbwy.qiyue666.com"; + var registerName = "webContext"; #endif //var url = "http://qtbbwy.qiyue666.com"; w2m.CoreWebView2InitializationCompleted = (e) => { - w2m.wb2.CoreWebView2.AddHostObjectToScript("webContext", this.globalContext); + w2m.wb2.CoreWebView2.AddHostObjectToScript(registerName, this.globalContext); isNavigated = true; w2m.wb2.CoreWebView2.Navigate(url); }; diff --git a/BBWYB.Client/Views/WebB/WebB_KPI.xaml b/BBWYB.Client/Views/WebB/WebB_KPI.xaml new file mode 100644 index 0000000..261dbfd --- /dev/null +++ b/BBWYB.Client/Views/WebB/WebB_KPI.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/BBWYB.Client/Views/WebB/WebB_KPI.xaml.cs b/BBWYB.Client/Views/WebB/WebB_KPI.xaml.cs new file mode 100644 index 0000000..da0813d --- /dev/null +++ b/BBWYB.Client/Views/WebB/WebB_KPI.xaml.cs @@ -0,0 +1,87 @@ +using CommunityToolkit.Mvvm.Messaging; +using CommunityToolkit.Mvvm.Messaging.Messages; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Windows; +using System.Windows.Controls; + +namespace BBWYB.Client.Views.WebB +{ + /// + /// WebB_KPI.xaml 的交互逻辑 + /// + public partial class WebB_KPI : Page + { + private WebView2Manager w2m; + private bool isNavigated; + + private GlobalContext globalContext; + public WebB_KPI() + { + InitializeComponent(); + + this.Loaded += WebB_KPI_Loaded; ; + this.Unloaded += WebB_KPI_Unloaded; + + WeakReferenceMessenger.Default.Register(this, (o, x) => + { + this.Dispatcher.Invoke(() => + { + _ = w2m.wb2.ExecuteScriptAsync("window.location.reload();"); + }); + }); + } + + private void WebB_KPI_Unloaded(object sender, RoutedEventArgs e) + { + grid.Children.Remove(w2m.wb2); + w2m.Close(); + WeakReferenceMessenger.Default.UnregisterAll(this); + } + + private void WebB_KPI_Loaded(object sender, RoutedEventArgs e) + { + var sp = (App.Current as App).ServiceProvider; + using (var s = sp.CreateScope()) + { + w2m = s.ServiceProvider.GetRequiredService(); + globalContext = s.ServiceProvider.GetRequiredService(); + } + +#if DEBUG + var url = "http://localhost:8080/#/performance"; + var registerName = "webTestContext"; +#else + var url = "http://qtbbwy.qiyue666.com/#/performance"; + var registerName = "webContext"; +#endif + w2m.CoreWebView2InitializationCompleted = (e) => + { + w2m.wb2.CoreWebView2.AddHostObjectToScript(registerName, this.globalContext); + isNavigated = true; + w2m.wb2.CoreWebView2.Navigate(url); + }; + + + w2m.Init("bbwyb_web"); + w2m.wb2.SetValue(Grid.RowProperty, 1); + w2m.wb2.Margin = new Thickness(1, 0, 1, 0); + //grid.Children.Clear(); + grid.Children.Add(w2m.wb2); + + if (w2m.IsInitializationCompleted && !isNavigated) + { + w2m.wb2.CoreWebView2.Navigate(url); + //w2m.wb2.CoreWebView2.NavigateToString(content); + isNavigated = true; + } + } + } + + public class Message_WebBKPI_Refresh : ValueChangedMessage + { + public Message_WebBKPI_Refresh(object value) : base(value) + { + } + } +} From 5bff392a5a22794936556b36080a40daacb79d69 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 10 Jul 2023 18:04:06 +0800 Subject: [PATCH 07/70] =?UTF-8?q?=E9=80=9F=E8=85=BE=E5=BF=AB=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDKAdapter/ExpressCompanyNameConverter.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SDKAdapter/ExpressCompanyNameConverter.cs b/SDKAdapter/ExpressCompanyNameConverter.cs index 262bb46..97fb329 100644 --- a/SDKAdapter/ExpressCompanyNameConverter.cs +++ b/SDKAdapter/ExpressCompanyNameConverter.cs @@ -124,7 +124,8 @@ namespace SDKAdapter new LogisticsCompanyRelationship(){SourceName="加运美速递",TargetName="加运美",TargetCode="jiayunmeiwuliu"}, new LogisticsCompanyRelationship(){SourceName="加运美",TargetName="加运美",TargetCode="jiayunmeiwuliu"}, new LogisticsCompanyRelationship(){SourceName="信丰物流",TargetName="信丰物流",TargetCode="xinfengwuliu"}, - new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"} + new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"}, + new LogisticsCompanyRelationship(){ SourceName="速腾快递",TargetName="速腾快递",TargetCode="suteng"} }); } From e9a3a60369c61fd51c6ae44fbcfd4c24397f6ca0 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 10 Jul 2023 22:40:45 +0800 Subject: [PATCH 08/70] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/TimeLimitTaskController.cs | 50 ++++++++++ .../TimeLimitTaskSyncController.cs | 24 ----- .../Sync/TimeLimitTaskSyncBusiness.cs | 24 ----- .../TimeLimitTask/TimeLimitTaskBusiness.cs | 98 +++++++++++++++++++ .../QueryTimeLimitTaskRequest.cs | 31 ++++++ .../TimeLimitTask/QueryTimeOutRequest.cs | 14 +++ .../TimeLimitTaskListResponse.cs | 9 ++ .../TimeLimitTaskStatisticsResponse.cs | 22 +++++ 8 files changed, 224 insertions(+), 48 deletions(-) create mode 100644 BBWYB.Server.API/Controllers/TimeLimitTaskController.cs delete mode 100644 BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs delete mode 100644 BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs create mode 100644 BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs create mode 100644 BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeOutRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskListResponse.cs create mode 100644 BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs new file mode 100644 index 0000000..f9c0282 --- /dev/null +++ b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs @@ -0,0 +1,50 @@ +using BBWYB.Server.Business; +using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + public class TimeLimitTaskController : BaseApiController + { + private TimeLimitTaskBusiness timeLimitTaskBusiness; + public TimeLimitTaskController(IHttpContextAccessor httpContextAccessor, TimeLimitTaskBusiness timeLimitTaskBusiness) : base(httpContextAccessor) + { + this.timeLimitTaskBusiness = timeLimitTaskBusiness; + } + + /// + /// 检查任务过期 + /// + [HttpPost] + [AllowAnonymous] + public void CheckTask() + { + timeLimitTaskBusiness.CheckTask(); + } + + /// + /// 查询限时任务列表 + /// + /// + /// + [HttpPost] + public TimeLimitTaskListResponse QueryTimeLimitTask([FromBody] QueryTimeLimitTaskRequest request) + { + return timeLimitTaskBusiness.QueryTimeLimitTask(request); + } + + /// + /// 限时任务统计 + /// + /// + /// + [HttpPost] + public IList TimeOutStatistics(QueryTimeOutRequest request) + { + return timeLimitTaskBusiness.TimeOutStatistics(request); + } + } +} diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs deleted file mode 100644 index 6b736db..0000000 --- a/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs +++ /dev/null @@ -1,24 +0,0 @@ -using BBWYB.Server.Business.Sync; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; - -namespace BBWYB.Server.API.Controllers -{ - public class TimeLimitTaskSyncController : BaseApiController - { - private TimeLimitTaskSyncBusiness timeLimitTaskSyncBusiness; - public TimeLimitTaskSyncController(IHttpContextAccessor httpContextAccessor, TimeLimitTaskSyncBusiness timeLimitTaskSyncBusiness) : base(httpContextAccessor) - { - this.timeLimitTaskSyncBusiness = timeLimitTaskSyncBusiness; - } - - /// - /// 检查任务过期 - /// - [HttpPost] - public void CheckTask() - { - timeLimitTaskSyncBusiness.CheckTask(); - } - } -} diff --git a/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs b/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs deleted file mode 100644 index 34fc9ce..0000000 --- a/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs +++ /dev/null @@ -1,24 +0,0 @@ -using BBWYB.Common.Log; -using BBWYB.Common.Models; -using BBWYB.Server.Model.Db; -using Yitter.IdGenerator; - -namespace BBWYB.Server.Business.Sync -{ - public class TimeLimitTaskSyncBusiness : BaseBusiness, IDenpendency - { - //private TaskSchedulerManager taskSchedulerManager; - public TimeLimitTaskSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) - { - //this.taskSchedulerManager = taskSchedulerManager; - } - - public void CheckTask() - { - fsql.Update().Set(t => t.IsTimely, false) - .Where(t => t.CompletionTime == null) - .Where(t => t.ExpirationTime < DateTime.Now) - .ExecuteAffrows(); - } - } -} diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs new file mode 100644 index 0000000..436af85 --- /dev/null +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -0,0 +1,98 @@ +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business +{ + public class TimeLimitTaskBusiness : BaseBusiness, IDenpendency + { + private VenderBusiness venderBusiness; + public TimeLimitTaskBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) + { + this.venderBusiness = venderBusiness; + } + public void CheckTask() + { + fsql.Update().Set(t => t.IsTimely, false) + .Where(t => t.CompletionTime == null) + .Where(t => t.ExpirationTime < DateTime.Now) + .ExecuteAffrows(); + } + + + public TimeLimitTaskListResponse QueryTimeLimitTask(QueryTimeLimitTaskRequest request) + { + if (request.StartDate > request.EndDate) + throw new BusinessException("开始时间不能大于结束时间"); + if (request.PageSize > 100) + request.PageSize = 100; + + request.EndDate = request.EndDate.Date.AddDays(1).AddSeconds(-1); + var list = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) + .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) + .WhereIf(request.IsCompleted, t => t.CompletionTime != null) + .WhereIf(!request.IsCompleted, t => t.CompletionTime == null) + .WhereIf(request.TimeLimitTaskType != null, t => t.TaskType == request.TimeLimitTaskType) + .OrderByDescending(t => t.CreateTme) + .Count(out var count) + .Page(request.PageIndex, request.PageSize) + .ToList(); + return new TimeLimitTaskListResponse() + { + Count = count, + ItemList = list + }; + } + + public IList TimeOutStatistics(QueryTimeOutRequest request) + { + if (request.StartDate > request.EndDate) + throw new BusinessException("开始时间不能大于结束时间"); + request.EndDate = request.EndDate.Date.AddDays(1).AddSeconds(-1); + + var list = new List(); + + var shopIdList = new List(); + + #region 采购超时率 + var purchaseTaskCountGroups = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) + .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) + .GroupBy(t => t.ShopId) + .ToList(g => new + { + ShopId = g.Key, + TaskCount = g.Count() + }); + + var purchaseTaskTimOutCountGroups = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) + .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) + .Where(t => t.IsTimely == false) + .GroupBy(t => t.ShopId) + .ToList(g => new + { + ShopId = g.Key, + TaskCount = g.Count() + }); + #endregion + + shopIdList.AddRange(purchaseTaskCountGroups.Select(g => g.ShopId.Value).ToList()); + + foreach (var shopId in shopIdList) + { + var response = new TimeLimitTaskStatisticsResponse(); + response.ShopId = shopId; + + var purchaseTaskCount = purchaseTaskCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId)?.TaskCount ?? 0; + var purchaseTaskTimeOutCount = purchaseTaskTimOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId)?.TaskCount ?? 0; + + response.PurchaseTimeOutPercent = purchaseTaskCount == 0 ? 0 : Math.Round(1.0 * purchaseTaskTimeOutCount / purchaseTaskCount * 100, 2); + + list.Add(response); + } + + return list; + } + } +} diff --git a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs new file mode 100644 index 0000000..3976ade --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs @@ -0,0 +1,31 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QueryTimeLimitTaskRequest + { + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + + public Enums.TimeLimitTaskType? TimeLimitTaskType { get; set; } + + /// + /// 是否完成 + /// + public bool IsCompleted { get; set; } + + /// + /// 店铺Id (可空) + /// + public long? ShopId { get; set; } + + /// + /// 页码,1开始 + /// + public int PageIndex { get; set; } + + /// + /// 每页记录数 + /// + public int PageSize { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeOutRequest.cs b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeOutRequest.cs new file mode 100644 index 0000000..32cf2aa --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeOutRequest.cs @@ -0,0 +1,14 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QueryTimeOutRequest + { + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + + /// + /// 店铺Id 可空 + /// + public long? ShopId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskListResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskListResponse.cs new file mode 100644 index 0000000..f8be7d9 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskListResponse.cs @@ -0,0 +1,9 @@ +namespace BBWYB.Server.Model.Dto +{ + public class TimeLimitTaskListResponse + { + public long Count { get; set; } + + public IList ItemList { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs new file mode 100644 index 0000000..049ad8b --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs @@ -0,0 +1,22 @@ +namespace BBWYB.Server.Model.Dto +{ + public class TimeLimitTaskStatisticsResponse + { + public long ShopId { get; set; } + + /// + /// 采购超时率(%) + /// + public double PurchaseTimeOutPercent { get; set; } + + /// + /// 合格证拟定超时量 + /// + public double CertificatesTimeOutCount { get; set; } + + /// + /// 合格证补充超时量 + /// + public double CertificatesSupplementTimeOutCount { get; set; } + } +} From c39002a55cff3614cf7ae8d549834f2a180af004 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 10 Jul 2023 22:41:39 +0800 Subject: [PATCH 09/70] 1 --- BBWYB.Server.API/Controllers/TimeLimitTaskController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs index f9c0282..8c30310 100644 --- a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs +++ b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs @@ -16,7 +16,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 检查任务过期 + /// 检查任务过期(自动任务,前端无需对接) /// [HttpPost] [AllowAnonymous] From 84b557566e52593ff121d997389c8aa402c964c7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 10 Jul 2023 22:42:24 +0800 Subject: [PATCH 10/70] 1 --- BBWYB.Server.API/Controllers/TimeLimitTaskController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs index 8c30310..e7e6d1f 100644 --- a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs +++ b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs @@ -42,7 +42,7 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost] - public IList TimeOutStatistics(QueryTimeOutRequest request) + public IList TimeOutStatistics([FromBody]QueryTimeOutRequest request) { return timeLimitTaskBusiness.TimeOutStatistics(request); } From d112888ee87fa11bb8143786e4a1c46c7f735314 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 11 Jul 2023 20:35:10 +0800 Subject: [PATCH 11/70] 1 --- .../Controllers/TimeLimitTaskController.cs | 13 ++ .../TimeLimitTask/TimeLimitTaskBusiness.cs | 16 ++- .../Db/TimeLimitTask/TimeLimitTask.cs | 127 +++++++++--------- .../EditTimeLimitTaskRemarkRequest.cs | 9 ++ .../TimeLimitTask/TimeLimitTaskResponse.cs | 1 + .../TimeLimitTaskStatisticsResponse.cs | 2 + 6 files changed, 107 insertions(+), 61 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/TimeLimitTask/EditTimeLimitTaskRemarkRequest.cs diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs index 8c30310..2e34801 100644 --- a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs +++ b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs @@ -6,6 +6,9 @@ using Microsoft.AspNetCore.Mvc; namespace BBWYB.Server.API.Controllers { + /// + /// 限时任务 + /// [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class TimeLimitTaskController : BaseApiController { @@ -46,5 +49,15 @@ namespace BBWYB.Server.API.Controllers { return timeLimitTaskBusiness.TimeOutStatistics(request); } + + /// + /// 修改备注 + /// + /// + [HttpPost] + public void EditTimeLimitTaskRemark([FromBody] EditTimeLimitTaskRemarkRequest request) + { + timeLimitTaskBusiness.EditTimeLimitTaskRemark(request); + } } } diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index 436af85..a3836de 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -29,6 +29,8 @@ namespace BBWYB.Server.Business if (request.PageSize > 100) request.PageSize = 100; + var shopList = venderBusiness.GetShopList(request.ShopId, Model.Enums.Platform.拳探); + request.EndDate = request.EndDate.Date.AddDays(1).AddSeconds(-1); var list = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) @@ -39,6 +41,11 @@ namespace BBWYB.Server.Business .Count(out var count) .Page(request.PageIndex, request.PageSize) .ToList(); + foreach (var task in list) + { + var shopId = task.ShopId.ToString(); + task.ShopName = shopList.FirstOrDefault(s => s.ShopId == shopId)?.ShopName; + } return new TimeLimitTaskListResponse() { Count = count, @@ -52,6 +59,7 @@ namespace BBWYB.Server.Business throw new BusinessException("开始时间不能大于结束时间"); request.EndDate = request.EndDate.Date.AddDays(1).AddSeconds(-1); + var shopList = venderBusiness.GetShopList(request.ShopId, Model.Enums.Platform.拳探); var list = new List(); var shopIdList = new List(); @@ -81,9 +89,10 @@ namespace BBWYB.Server.Business foreach (var shopId in shopIdList) { + var sid = shopId.ToString(); var response = new TimeLimitTaskStatisticsResponse(); response.ShopId = shopId; - + response.ShopName = shopList.FirstOrDefault(s => s.ShopId == sid)?.ShopName; var purchaseTaskCount = purchaseTaskCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId)?.TaskCount ?? 0; var purchaseTaskTimeOutCount = purchaseTaskTimOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId)?.TaskCount ?? 0; @@ -94,5 +103,10 @@ namespace BBWYB.Server.Business return list; } + + public void EditTimeLimitTaskRemark(EditTimeLimitTaskRemarkRequest request) + { + fsql.Update(request.TaskId).Set(t => t.Remark, request.Remark).ExecuteAffrows(); + } } } diff --git a/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs b/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs index 77433f6..0f324ae 100644 --- a/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs +++ b/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs @@ -7,65 +7,72 @@ namespace BBWYB.Server.Model.Db /// 时限任务表 /// [Table(Name = "timelimittask", DisableSyncStructure = true)] - public partial class TimeLimitTask { - - [Column(IsPrimary = true)] - public long Id { get; set; } - - /// - /// 完成时间 - /// - [Column(DbType = "datetime")] - public DateTime? CompletionTime { get; set; } - - /// - /// 创建时间 - /// - [Column(DbType = "datetime")] - public DateTime? CreateTme { get; set; } - - /// - /// 付款时间 - /// - [Column(DbType = "datetime")] - public DateTime? PayTime { get; set; } - - /// - /// 到期时间(非时间长度,而是具体的时间) - /// - [Column(DbType = "datetime")] - public DateTime? ExpirationTime { get; set; } - - /// - /// 是否及时完成 - /// - - public bool? IsTimely { get; set; } - - /// - /// 订单Id (采购任务时有效) - /// - [Column(StringLength = 50)] - public string OrderId { get; set; } - - /// - /// 店铺Id - /// - - public long? ShopId { get; set; } - - /// - /// SKU - /// - [Column(StringLength = 50)] - public string SkuId { get; set; } - - /// - /// 任务类型(采购任务=0,合格证拟定任务=10,合格证补充任务=11) - /// - [Column(MapType = typeof(int?))] - public Enums.TimeLimitTaskType? TaskType { get; set; } - - } + public partial class TimeLimitTask + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + /// + /// 完成时间 + /// + [Column(DbType = "datetime")] + public DateTime? CompletionTime { get; set; } + + /// + /// 创建时间 + /// + [Column(DbType = "datetime")] + public DateTime? CreateTme { get; set; } + + /// + /// 付款时间 + /// + [Column(DbType = "datetime")] + public DateTime? PayTime { get; set; } + + /// + /// 到期时间(非时间长度,而是具体的时间) + /// + [Column(DbType = "datetime")] + public DateTime? ExpirationTime { get; set; } + + /// + /// 是否及时完成 + /// + + public bool? IsTimely { get; set; } + + /// + /// 订单Id (采购任务时有效) + /// + [Column(StringLength = 50)] + public string OrderId { get; set; } + + /// + /// 店铺Id + /// + + public long? ShopId { get; set; } + + /// + /// SKU + /// + [Column(StringLength = 50)] + public string SkuId { get; set; } + + /// + /// 任务类型(采购任务=0,合格证拟定任务=10,合格证补充任务=11) + /// + [Column(MapType = typeof(int?))] + public Enums.TimeLimitTaskType? TaskType { get; set; } + + /// + /// 备注 + /// + [Column(StringLength = 500)] + public string Remark { get; set; } + + } } diff --git a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/EditTimeLimitTaskRemarkRequest.cs b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/EditTimeLimitTaskRemarkRequest.cs new file mode 100644 index 0000000..df2bf69 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/EditTimeLimitTaskRemarkRequest.cs @@ -0,0 +1,9 @@ +namespace BBWYB.Server.Model.Dto +{ + public class EditTimeLimitTaskRemarkRequest + { + public long TaskId { get; set; } + + public string Remark { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs index b4f0378..802c9ad 100644 --- a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs @@ -4,5 +4,6 @@ namespace BBWYB.Server.Model.Dto { public class TimeLimitTaskResponse : TimeLimitTask { + public string ShopName { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs index 049ad8b..ee2e09b 100644 --- a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs @@ -4,6 +4,8 @@ { public long ShopId { get; set; } + public string ShopName { get; set; } + /// /// 采购超时率(%) /// From 85db56a600bce6317b0ab8459166aa82d5ed3289 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 12 Jul 2023 00:37:21 +0800 Subject: [PATCH 12/70] =?UTF-8?q?=E9=99=90=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0OrderSn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Sync/OrderSyncBusiness.cs | 1 + BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 130d683..82a34ca 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -255,6 +255,7 @@ namespace BBWYB.Server.Business.Sync Id = idGenerator.NewLong(), CreateTme = DateTime.Now, OrderId = order.OrderId, + OrderSn = order.OrderSn, SkuId = osku.SkuId, TaskType = Enums.TimeLimitTaskType.采购任务, ShopId = shopId, diff --git a/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs b/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs index 0f324ae..d325eaf 100644 --- a/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs +++ b/BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs @@ -49,6 +49,12 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 50)] public string OrderId { get; set; } + /// + /// 订单Sn (采购任务时有效) + /// + [Column(StringLength = 100)] + public string OrderSn { get; set; } + /// /// 店铺Id /// From 0906bf741b4f1c4e24d5ec07a1eb912e46138d3f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 12 Jul 2023 13:51:03 +0800 Subject: [PATCH 13/70] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TimeLimitTask/TimeLimitTaskBusiness.cs | 6 ++++-- .../TimeLimitTask/QueryTimeLimitTaskRequest.cs | 11 ++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index a3836de..f80e3ea 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -34,8 +34,10 @@ namespace BBWYB.Server.Business request.EndDate = request.EndDate.Date.AddDays(1).AddSeconds(-1); var list = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) - .WhereIf(request.IsCompleted, t => t.CompletionTime != null) - .WhereIf(!request.IsCompleted, t => t.CompletionTime == null) + .WhereIf(request.IsCompleted != null && request.IsCompleted == true, t => t.CompletionTime != null) + .WhereIf(request.IsCompleted != null && request.IsCompleted == false, t => t.CompletionTime == null) + .WhereIf(request.IsTimeOut != null && request.IsTimeOut == true, t => t.IsTimely == false) + .WhereIf(request.IsTimeOut != null && request.IsTimeOut == false, t => t.IsTimely == true) .WhereIf(request.TimeLimitTaskType != null, t => t.TaskType == request.TimeLimitTaskType) .OrderByDescending(t => t.CreateTme) .Count(out var count) diff --git a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs index 3976ade..a538be5 100644 --- a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs @@ -9,12 +9,17 @@ public Enums.TimeLimitTaskType? TimeLimitTaskType { get; set; } /// - /// 是否完成 + /// 是否完成,可空 /// - public bool IsCompleted { get; set; } + public bool? IsCompleted { get; set; } /// - /// 店铺Id (可空) + /// 是否超时,可空 + /// + public bool? IsTimeOut { get; set; } + + /// + /// 店铺Id,可空 /// public long? ShopId { get; set; } From 5c95ed4907030ab48530d6ca19215e1618c2fefe Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 12 Jul 2023 13:53:45 +0800 Subject: [PATCH 14/70] 1 --- BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index f80e3ea..5ac4062 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -37,7 +37,7 @@ namespace BBWYB.Server.Business .WhereIf(request.IsCompleted != null && request.IsCompleted == true, t => t.CompletionTime != null) .WhereIf(request.IsCompleted != null && request.IsCompleted == false, t => t.CompletionTime == null) .WhereIf(request.IsTimeOut != null && request.IsTimeOut == true, t => t.IsTimely == false) - .WhereIf(request.IsTimeOut != null && request.IsTimeOut == false, t => t.IsTimely == true) + .WhereIf(request.IsTimeOut != null && request.IsTimeOut == false, t => t.IsTimely == true || t.IsTimely == null) .WhereIf(request.TimeLimitTaskType != null, t => t.TaskType == request.TimeLimitTaskType) .OrderByDescending(t => t.CreateTme) .Count(out var count) From 3f26626fdbf97e1362aaacd4d152e41867720b3e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 12 Jul 2023 14:11:44 +0800 Subject: [PATCH 15/70] 1 --- BBWYB.Client/App.xaml.cs | 4 ++-- BBWYB.Client/GlobalContext.cs | 2 +- BBWYB.Client/ViewModels/MainViewModel.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/BBWYB.Client/App.xaml.cs b/BBWYB.Client/App.xaml.cs index 5f39299..be15769 100644 --- a/BBWYB.Client/App.xaml.cs +++ b/BBWYB.Client/App.xaml.cs @@ -34,8 +34,8 @@ namespace BBWYB.Client //齐越山鸡 userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNjk0NjY5NjkxfQ.cSwro-7bGwOu92YejH9JhMenTai7Mvf99i2paQCmxIw"; - //拳探店铺 测试002 - //userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTYyMDM0NDE0MDg1MDAwODA2NCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MDk5ODUwOTB9.v9iMB4kSpiYvHoPK3WSaOn5GE7bIUhO7266yowvxjfU"; + //拳探店铺 陈默 + //userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjI0OTUxNjgzNTc2NTAwMjI0IiwidGVhbUlkIjoiMTYyMDM0MjAxNDcwNjk3ODgxNiIsInNvblRlYW1JZHMiOiIxNjIwMzQyMDE0NzA2OTc4ODE2LDE2MjAzNDM4Mjc0NzI1ODQ3MDQsMTYyMDM0NDAzMzczNTg3MjUxMiwxNjIwMzQ0MDkyODI5NDIxNTY4LDE2MjAzNDQxNDA4NTAwMDgwNjQiLCJleHAiOjE3MjA3NjQzMjV9.Q8fiKXCHgvzbm7NDEre-MeoSju_AmC6Ae6eDY22rUAw"; #else var tokenResult = ReadMMF(); diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index c018495..fe232b5 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10026"; + BBWYBApiVersion = "10027"; } private User user; diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 8e7c996..dc308ca 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -171,7 +171,7 @@ namespace BBWYB.Client.ViewModels var response = mdsApiService.GetShopDetailList(); if (!response.Success) throw new Exception(response.Msg); - departmentList = response.Data; + departmentList = response.Data?.Where(d => d.Name.Contains("供应链")).ToList(); if (departmentList.Count == 0) throw new Exception("缺少有效的部门数据"); From 68993b5cb827279fc1b1ee3e60c367e0c9a7ffd1 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 12 Jul 2023 14:32:14 +0800 Subject: [PATCH 16/70] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=99=90=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TimeLimitTask/TimeLimitTaskBusiness.cs | 8 ++++---- .../Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index 5ac4062..b7cf06d 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -34,10 +34,10 @@ namespace BBWYB.Server.Business request.EndDate = request.EndDate.Date.AddDays(1).AddSeconds(-1); var list = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) - .WhereIf(request.IsCompleted != null && request.IsCompleted == true, t => t.CompletionTime != null) - .WhereIf(request.IsCompleted != null && request.IsCompleted == false, t => t.CompletionTime == null) - .WhereIf(request.IsTimeOut != null && request.IsTimeOut == true, t => t.IsTimely == false) - .WhereIf(request.IsTimeOut != null && request.IsTimeOut == false, t => t.IsTimely == true || t.IsTimely == null) + .WhereIf(request.IsCompleted != null && request.IsCompleted == 1, t => t.CompletionTime != null) + .WhereIf(request.IsCompleted != null && request.IsCompleted == 0, t => t.CompletionTime == null) + .WhereIf(request.IsTimeOut != null && request.IsTimeOut == 1, t => t.IsTimely == false) + .WhereIf(request.IsTimeOut != null && request.IsTimeOut == 0, t => t.IsTimely == true || t.IsTimely == null) .WhereIf(request.TimeLimitTaskType != null, t => t.TaskType == request.TimeLimitTaskType) .OrderByDescending(t => t.CreateTme) .Count(out var count) diff --git a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs index a538be5..6f7b9cd 100644 --- a/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/TimeLimitTask/QueryTimeLimitTaskRequest.cs @@ -9,14 +9,14 @@ public Enums.TimeLimitTaskType? TimeLimitTaskType { get; set; } /// - /// 是否完成,可空 + /// 是否完成,完成=1,未完成=0,可空 /// - public bool? IsCompleted { get; set; } + public int? IsCompleted { get; set; } /// - /// 是否超时,可空 + /// 是否超时,超时=1,未超时=0,可空 /// - public bool? IsTimeOut { get; set; } + public int? IsTimeOut { get; set; } /// /// 店铺Id,可空 From 0a0ad75e314c3d7d9975c1fc2eb917490de6f91f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 12 Jul 2023 17:06:34 +0800 Subject: [PATCH 17/70] =?UTF-8?q?=E8=AE=A2=E5=8D=95sku=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=99=90=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=9B=BA=E5=AE=9A=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 1 + BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 2eb237b..aa106c5 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -239,6 +239,7 @@ namespace BBWYB.Server.Business var purchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); if (purchaseTimeLimitTask != null) orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask); + orderSku.PurchaseTimeLimitTask = orderSku.TimeLimitTaskList.FirstOrDefault(t => t.TaskType == Enums.TimeLimitTaskType.采购任务); } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index 6e78a6c..ccefa76 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -19,5 +19,10 @@ namespace BBWYB.Server.Model.Dto /// 限时任务列表 /// public IList TimeLimitTaskList { get; set; } + + /// + /// 采购限时任务 + /// + public TimeLimitTaskResponse? PurchaseTimeLimitTask { get; set; } } } From 534711237bb35f2c85a800cef383e86922606835 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 13 Jul 2023 12:44:54 +0800 Subject: [PATCH 18/70] =?UTF-8?q?=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=85=A5?= =?UTF-8?q?=E4=BB=93=E8=AE=A2=E5=8D=95=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 10 ++++++++++ .../PurchaseOrder/PurchaseOrderBusiness.cs | 16 ++++++++++++++++ .../PurchaseOrder/PurchaserDeliveryRequest.cs | 14 ++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 2b4dd1a..21c07e0 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -112,6 +112,16 @@ namespace BBWYB.Server.API.Controllers purchaseOrderBusiness.ManualDelivery(request); } + /// + /// 厂商代发入仓发货 + /// + /// + [HttpPost] + public void PurchaserDelivery([FromBody] PurchaserDeliveryRequest request) + { + purchaseOrderBusiness.PurchaserDelivery(request); + } + /// /// 手动收货 /// diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3c30438..8dba5c7 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1481,6 +1481,22 @@ namespace BBWYB.Server.Business }); } + /// + /// 厂家代入仓订单发货 + /// + /// + public void PurchaserDelivery(PurchaserDeliveryRequest request) + { + nLogManager.Default().Info($"ManualDelivery {JsonConvert.SerializeObject(request)}"); + + var dbOrder = fsql.Select(request.OrderId).ToOne(); + if (dbOrder == null) + throw new BusinessException("订单不存在"); + if (dbOrder.IntoStoreType != Enums.IntoStoreType.厂商代发入仓) + throw new BusinessException("此订单非厂商代发入仓"); + + } + public void ManualSign(ManualSignRequest request) { Task.Factory.StartNew(() => OnExpressOrderChange(request.WayBillNo, "QianShou", DateTime.Now, "手动签收"), diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs new file mode 100644 index 0000000..6fa7545 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs @@ -0,0 +1,14 @@ +namespace BBWYB.Server.Model.Dto +{ + public class PurchaserDeliveryRequest + { + public string OrderId { get; set; } + + public IList InStorePurchaseOrderManualDeliveryList { get; set; } + } + + public class InStorePurchaseOrderManualDeliveryRequest: ManualDeliveryRequest + { + public IList InStorePurchaseOrderIdList { get; set; } + } +} From 2af36c81ed2212021293c4148a274dd35301e7db Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 13 Jul 2023 16:44:49 +0800 Subject: [PATCH 19/70] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E9=BD=90=E5=BA=93?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E8=A7=84=E5=88=99=EF=BC=8C=E5=BF=AB=E9=80=92?= =?UTF-8?q?=E9=9D=9E=E7=AD=BE=E6=94=B6=E4=B8=8D=E5=81=9A=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=202.=E4=BF=AE=E6=94=B91688=E5=8F=91=E8=B4=A7=E6=8E=A8=E9=80=81?= =?UTF-8?q?=EF=BC=8C=E5=BF=BD=E7=95=A5=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=8F=91?= =?UTF-8?q?=E5=85=A5=E4=BB=93=E8=AE=A2=E5=8D=95=E7=9A=84=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E6=8E=A8=E9=80=81=203.=E4=BF=AE=E6=94=B9=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E5=8F=91=E8=B4=A7=E6=8E=A5=E5=8F=A3=EF=BC=8C=E9=99=90?= =?UTF-8?q?=E5=88=B6=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=8F=91=E5=85=A5=E4=BB=93?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=9A=84=E8=AF=B7=E6=B1=82=204.=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=AE=BE=E7=BD=AE=E5=BF=AB=E9=80=92=E5=8D=95=E5=92=8C?= =?UTF-8?q?=E5=85=A5=E4=BB=93=E9=87=87=E8=B4=AD=E5=8D=95=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20(=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=8F=91=E5=85=A5=E4=BB=93?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=93=E5=B1=9E)=205.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=BF=AB=E9=80=92=E5=8D=95=E5=B1=82=E8=BF=94=E5=9B=9E=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E9=87=87=E8=B4=AD=E5=8D=95=E5=8F=B7=206.=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AE=A2=E5=8D=95=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=99=90=E6=97=B6=E4=BB=BB=E5=8A=A1=207.?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5=EF=BC=8C?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=88=B0=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=87=E8=B4=AD=E9=99=90=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 2 +- .../Extensions/OrderStateExtension.cs | 12 +- BBWYB.Server.Business/Order/OrderBusiness.cs | 21 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 234 ++++++++++++++++-- .../Sync/OrderSyncBusiness.cs | 13 +- .../Order/InStorePurchaseOrdeRrelationInfo.cs | 35 +++ .../PurchaseOrder/PurchaserDeliveryRequest.cs | 27 +- .../Order/PurchaseExpressOrderResponse.cs | 7 +- 8 files changed, 314 insertions(+), 37 deletions(-) create mode 100644 BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 21c07e0..f1ab9e4 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -113,7 +113,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 厂商代发入仓发货 + /// 设置快递单和入仓采购单(厂商代发入仓订单专用) /// /// [HttpPost] diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 4fe1500..bf6d25c 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -125,10 +125,12 @@ namespace BBWYB.Server.Business /// 计算采购单状态 /// /// + /// /// /// /// public static void CalculationOrderState(this OrderPurchaseInfo orderPurchaseInfo, + Enums.IntoStoreType intoStoreType, IFreeSql fsql, IList orderPurchaseSkuList = null, IList purchaseExpressOrderList = null) @@ -145,18 +147,15 @@ namespace BBWYB.Server.Business if (orderPurchaseInfo.OrderState == Enums.PurchaseOrderState.已取消) return; + if (purchaseExpressOrderList == null) + return; - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) + if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴 && intoStoreType != Enums.IntoStoreType.厂商代发入仓) //支持采购sku和关联信息 { if (orderPurchaseSkuList == null) orderPurchaseSkuList = fsql.Select().Where(ops => ops.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); - } - if (purchaseExpressOrderList == null) - return; - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) //支持采购sku和关联信息 - { #region 待发货 if (orderPurchaseSkuList.Count() == orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo))) { @@ -186,7 +185,6 @@ namespace BBWYB.Server.Business #endregion } - #region 待收货 if (purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == 0) { diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index aa106c5..6c861ac 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -175,6 +175,21 @@ namespace BBWYB.Server.Business }); #endregion + #region 查询入仓采购单信息 + var inStoreRelationList = fsql.Select().Where(i => orderIdList.Contains(i.OrderId)).ToList(); + if (inStoreRelationList.Count() > 0) + { + foreach (var purchaseExpressOrder in purchaseExpressOrderList) + { + purchaseExpressOrder.InStorePurchaseOrderIdList = inStoreRelationList.Where(i => i.OrderId == purchaseExpressOrder.OrderId && + i.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId && + i.WaybillNo == purchaseExpressOrder.WaybillNo) + .Select(i => i.InStorePurchaseOrderId) + .ToList(); + } + } + #endregion + #region 处理订单成本明细 var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); foreach (var order in orderList) @@ -373,7 +388,11 @@ namespace BBWYB.Server.Business Remark = request.Remark }); - fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + fsql.Transaction(() => + { + fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + fsql.Delete().Where(t => t.OrderId == request.OrderId).ExecuteAffrows(); + }); try { diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 8dba5c7..ba2a5f8 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1252,7 +1252,7 @@ namespace BBWYB.Server.Business if (newPeo != null) purchaseExpressOrderList.Add(newPeo); var oldPurchaseOrderState = purchaseOrder.OrderState; - purchaseOrder.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); + purchaseOrder.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, orderPurchaseSkuList, purchaseExpressOrderList); if (oldPurchaseOrderState != purchaseOrder.OrderState) updatePurchaseOrder = fsql.Update(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState); #endregion @@ -1292,6 +1292,23 @@ namespace BBWYB.Server.Business if (request.ExpressId == "zhuanxianwuliu" && string.IsNullOrEmpty(request.WaybillNo)) request.WaybillNo = $"wdh{idGenerator.NewLong()}"; + #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, + OrderSn = o.OrderSn, + OrderState = o.OrderState, + ShopId = o.ShopId, + IntoStoreType = o.IntoStoreType + }); + if (dbOrder == null) + throw new BusinessException("未查询到采购单的订单信息"); + if (dbOrder.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) + throw new BusinessException("厂家代发入仓订单请使用【设置快递单和入仓采购单接口(厂家代发入仓专用)】"); + #endregion + #region 准备数据库更新对象 List insertPurchaseExpressOrderList = new List(); IList> updateOrderPurchaseSkuList = new List>(); @@ -1324,21 +1341,6 @@ namespace BBWYB.Server.Business bool isDbExists = fsql.Select(request.WaybillNo).Any(); #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, - OrderSn = o.OrderSn, - OrderState = o.OrderState, - ShopId = o.ShopId, - IntoStoreType = o.IntoStoreType - }); - if (dbOrder == null) - throw new BusinessException("未查询到采购单的订单信息"); - #endregion - #region 店铺信息 var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); if (shop == null) @@ -1451,7 +1453,7 @@ namespace BBWYB.Server.Business #endregion #region 计算采购单状态 - orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); + orderPurchaseInfo.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); #endregion @@ -1495,6 +1497,183 @@ namespace BBWYB.Server.Business if (dbOrder.IntoStoreType != Enums.IntoStoreType.厂商代发入仓) throw new BusinessException("此订单非厂商代发入仓"); + List insertPurchaseExpressOrderList = new List(); + List insertExpressOrderRelationList = new List(); + List insertInStorePurchaseOrderRelationList = new List(); + //IList> updateOrderPurchaseSkuList = new List>(); + IUpdate updateOrderPurchase = null; + IUpdate updateOrder = null; + + #region 查询该笔采购单的快递单信息 + //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 + }); + + var wayBillNos = request.InStorePurchaseOrderManualDeliveryList.Select(x => x.WaybillNo).ToList(); + var dbPurchaseExpressOrderList = fsql.Select(wayBillNos).ToList(); + #endregion + + #region 查询该订单的入库采购单关系 + var dbInStoreRelationList = fsql.Select().Where(x => x.OrderId == request.OrderId).ToList(); + #endregion + + #region 店铺信息 + var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); + if (shop == 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 + + foreach (var peoRequest in request.InStorePurchaseOrderManualDeliveryList) + { + bool isExists = purchaseExpressOrderList.Any(exo => exo.WaybillNo == peoRequest.WaybillNo); + bool isDbExists = dbPurchaseExpressOrderList.Any(exo => exo.WaybillNo == peoRequest.WaybillNo); + + #region 订阅快递100 + bool isSubscribeKD100 = false; + if (peoRequest.ExpressId != "zhuanxianwuliu" && !isDbExists) + { + try + { + kuaiDi100Manager.SubscribeKuaiDi100(peoRequest.WaybillNo, peoRequest.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); + isSubscribeKD100 = true; + } + catch (Exception ex) + { + if (!ex.Message.Contains("重复订阅")) + { + nLogManager.Default().Error(ex, $"ManualDelivery,Request:{JsonConvert.SerializeObject(request)}"); + + #region 订阅失败发送钉钉通知 + var dingdingMsg = new StringBuilder(); + dingdingMsg.AppendLine($"错误:{ex.Message}"); + dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}"); + dingdingMsg.AppendLine($"拳探订单号:{dbOrder.Id}"); + dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); + dingdingMsg.AppendLine($"源物流公司:无"); + dingdingMsg.AppendLine($"目标物流公司:{peoRequest.ExpressName} {peoRequest.ExpressId}"); + dingdingMsg.AppendLine($"快递单号:{peoRequest.WaybillNo}"); + dingdingMsg.AppendLine("触发环节:手动发货"); + dingdingMsg.Append($"店铺名:{shop.ShopName}"); + Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + } + } + } + #endregion + + #region 创建快递单 + if (!isDbExists) + { + var purchaseExpressOrder = new PurchaseExpressOrder() + { + //OrderId = dbOrder.Id, + CreateTime = DateTime.Now, + //PurchaseOrderId = request.PurchaseOrderId, + ShopId = dbOrder.ShopId ?? 0, + TargetExpressId = peoRequest.ExpressId, + TargetExpressName = peoRequest.ExpressName, + WaybillNo = peoRequest.WaybillNo, + ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收 + IsSubscribeKD100 = isSubscribeKD100, + ExpressContent = "手动发货", + ExpressChangedTime = DateTime.Now + }; + insertPurchaseExpressOrderList.Add(purchaseExpressOrder); + } + #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 = peoRequest.WaybillNo + }; + insertExpressOrderRelationList.Add(expressOrderRelation); + } + #endregion + + #region 入库采购单号 + var waitInsertInStoreRelationList = peoRequest.InStorePurchaseOrderIdList.Where(x => !dbInStoreRelationList.Any(r => r.WaybillNo == peoRequest.WaybillNo && + r.InStorePurchaseOrderId == x)).ToList(); + if (waitInsertInStoreRelationList.Count() > 0) + { + insertInStorePurchaseOrderRelationList.AddRange(waitInsertInStoreRelationList.Select(x => new InStorePurchaseOrdeRrelationInfo() + { + CreateTime = DateTime.Now, + Id = idGenerator.NewLong(), + InStorePurchaseOrderId = x, + OrderId = request.OrderId, + PurchaseOrderId = request.PurchaseOrderId, + ShopId = dbOrder.ShopId, + WaybillNo = peoRequest.WaybillNo + })); + } + #endregion + } + + #region 计算采购单状态 + orderPurchaseInfo.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, null, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); + 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 通知C端状态 + Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + + fsql.Transaction(() => + { + if (insertPurchaseExpressOrderList.Count() > 0) + fsql.Insert(insertPurchaseExpressOrderList).ExecuteAffrows(); + if (insertExpressOrderRelationList.Count() > 0) + fsql.Insert(insertExpressOrderRelationList).ExecuteAffrows(); + if (insertInStorePurchaseOrderRelationList.Count() > 0) + fsql.Insert(insertInStorePurchaseOrderRelationList).ExecuteAffrows(); + + //if (updateOrderPurchaseSkuList.Count() > 0) + //{ + // foreach (var update in updateOrderPurchaseSkuList) + // update.ExecuteAffrows(); + //} + updateOrderPurchase?.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); + }); + } public void ManualSign(ManualSignRequest request) @@ -1731,11 +1910,6 @@ namespace BBWYB.Server.Business string wayBillNoResponseInfo = string.Empty; try { - List insertPurchaseExpressOrderList = new List(); - List insertExpressOrderRelationInfoList = new List(); - IList> updateOrderPurchaseSkuList = new List>(); - IUpdate updateOrderPurchase = null; - IUpdate updateOrder = null; #region 查询当前采购单的订单信息 currentProgress = "查询当前采购单的订单信息"; @@ -1751,6 +1925,16 @@ namespace BBWYB.Server.Business }); if (dbOrder == null) throw new Exception("未查询到采购单的订单信息"); + + if (dbOrder.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) + return; + + List insertPurchaseExpressOrderList = new List(); + List insertExpressOrderRelationInfoList = new List(); + IList> updateOrderPurchaseSkuList = new List>(); + IUpdate updateOrderPurchase = null; + IUpdate updateOrder = null; + orderId = dbOrder.Id; shopId = dbOrder.ShopId; #endregion @@ -1909,7 +2093,7 @@ namespace BBWYB.Server.Business #endregion #region 计算采购单状态 - orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); + orderPurchaseInfo.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); #endregion @@ -2462,14 +2646,14 @@ namespace BBWYB.Server.Business temp.ExpressState = state; var oldPurchaseOrderState = purchaseOrder.OrderState; - purchaseOrder.CalculationOrderState(fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList); + purchaseOrder.CalculationOrderState(order.IntoStoreType.Value, 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.发回齐越) + if (order.IntoStoreType == Enums.IntoStoreType.发回齐越 && state == "QianShou") { var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 82a34ca..6f2ef91 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -5,6 +5,7 @@ using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json.Linq; +using Org.BouncyCastle.Bcpg; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; @@ -76,6 +77,7 @@ namespace BBWYB.Server.Business.Sync //采购限时任务列表 var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).ToList(); + var dbPurchaseTimeLimitTaskList = fsql.Select().Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务 && payedQTOrderIdList.Contains(t.OrderId)).ToList(); @@ -83,6 +85,7 @@ namespace BBWYB.Server.Business.Sync List insertOrderSkuList = new List(); List insertOrderConsigneeList = new List(); List insertTimeLimitTaskList = new List(); + List deleteTimeLimitTaskOrderIdList = new List(); List> updateOrderList = new List>(); @@ -192,7 +195,12 @@ namespace BBWYB.Server.Business.Sync updateOrderState = Enums.OrderState.等待采购; if (dbOrder.OrderState != Enums.OrderState.已取消 && orderState == Enums.OrderState.已取消) + { updateOrderState = Enums.OrderState.已取消; + if (dbPurchaseTimeLimitTaskList.Any(t => t.OrderId == qtOrder.OrderId)) + deleteTimeLimitTaskOrderIdList.Add(qtOrder.OrderId); + } + #endregion var updateModifyTime = dbOrder.ModifyTime != qtOrder.ModifyTime; @@ -235,6 +243,9 @@ namespace BBWYB.Server.Business.Sync if (updateOrderList.Count() > 0) foreach (var update in updateOrderList) update.ExecuteAffrows(); + + if (deleteTimeLimitTaskOrderIdList.Count() > 0) + fsql.Delete().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows(); }); } catch (Exception ex) @@ -247,7 +258,7 @@ namespace BBWYB.Server.Business.Sync { foreach (var order in orderList) { - if (!order.IsPay || order.PayTime == null) + if (!order.IsPay || order.PayTime == null || order.OrderState == "-1") continue; var waitInserTimeLimitTasks = order.OrderSkuList.Where(osku => !dbTimeLimits.Any(x => x.OrderId == order.OrderId && x.SkuId == osku.SkuId)) .Select(osku => new TimeLimitTask() diff --git a/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs new file mode 100644 index 0000000..1a67e40 --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs @@ -0,0 +1,35 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 入库采购单关系表 + /// + [Table(Name = "instorepurchaseorderrelationinfo", DisableSyncStructure = true)] + public partial class InStorePurchaseOrdeRrelationInfo + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + [Column(StringLength = 100)] + public string InStorePurchaseOrderId { get; set; } + + [Column(StringLength = 100)] + public string OrderId { get; set; } + + [Column(StringLength = 100)] + public string PurchaseOrderId { get; set; } + + public long? ShopId { get; set; } + + [Column(StringLength = 100)] + public string WaybillNo { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs index 6fa7545..1b06d38 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs @@ -4,11 +4,36 @@ { public string OrderId { get; set; } + public string PurchaseOrderId { get; set; } + + /// + /// 订单SkuId (OrderSku对象的SkuId) + /// + public string SkuId { get; set; } + public IList InStorePurchaseOrderManualDeliveryList { get; set; } } - public class InStorePurchaseOrderManualDeliveryRequest: ManualDeliveryRequest + public class InStorePurchaseOrderManualDeliveryRequest { + /// + /// 快递公司Id + /// + public string ExpressId { get; set; } + + /// + /// 快递公司名称 + /// + public string ExpressName { get; set; } + + /// + /// 快递单号 + /// + public string WaybillNo { get; set; } + + /// + /// 入库采购单集合 + /// public IList InStorePurchaseOrderIdList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs index 0a0a2a9..dd2f73f 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs @@ -2,11 +2,16 @@ namespace BBWYB.Server.Model.Dto { - public class PurchaseExpressOrderResponse: PurchaseExpressOrder + public class PurchaseExpressOrderResponse : PurchaseExpressOrder { /// /// 归属SkuId,逗号间隔 (拳探SKU) /// public string BelongSkuIds { get; set; } + + /// + /// 入仓采购单号 + /// + public IList InStorePurchaseOrderIdList { get; set; } } } From de565c034ea80c9dff92539b1682eabe43d33ed6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 13 Jul 2023 18:32:38 +0800 Subject: [PATCH 20/70] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=BF=AB=E9=80=92=E5=8D=95=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=AE=BE=E7=BD=AE=E5=8E=86=E5=8F=B2=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ba2a5f8..ef5a226 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1103,7 +1103,8 @@ namespace BBWYB.Server.Business if (deleteWaybillNoList.Count() > 0) fsql.Delete(deleteWaybillNoList).ExecuteAffrows(); - //fsql.Delete().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + fsql.Delete().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId) + .ExecuteAffrows(); fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); @@ -1496,6 +1497,12 @@ namespace BBWYB.Server.Business throw new BusinessException("订单不存在"); if (dbOrder.IntoStoreType != Enums.IntoStoreType.厂商代发入仓) throw new BusinessException("此订单非厂商代发入仓"); + if (request.InStorePurchaseOrderManualDeliveryList.Count() == 0) + throw new BusinessException("缺少快递信息"); + if (request.InStorePurchaseOrderManualDeliveryList.Any(x => x.InStorePurchaseOrderIdList.Count() == 0)) + throw new BusinessException("缺少入仓采购单信息"); + if (request.InStorePurchaseOrderManualDeliveryList.Any(x => x.InStorePurchaseOrderIdList.Count() != x.InStorePurchaseOrderIdList.Distinct().Count())) + throw new BusinessException("同一个快递单下不允许出现重复的入仓采购单"); List insertPurchaseExpressOrderList = new List(); List insertExpressOrderRelationList = new List(); From 28ed4dcf1ffd9c9db488368efd517965f60721e6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 14 Jul 2023 15:20:33 +0800 Subject: [PATCH 21/70] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=84=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.cs | 14 ++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 51 +++++++++++++++++-- .../Dto/Request/Order/QueryOrderRequest.cs | 2 +- .../Order/OrderCountByStateResponse.cs | 40 +++++++++++++++ 4 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index eb83425..7bebd65 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -119,7 +119,7 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost("{orderId}")] - public void CheckComputationOrder([FromRoute]string orderId) + public void CheckComputationOrder([FromRoute] string orderId) { orderBusiness.CheckComputationOrder(orderId); } @@ -133,5 +133,17 @@ namespace BBWYB.Server.API.Controllers { orderBusiness.QiKuPublishPackAmount(request); } + + /// + /// 统计各状态订单数量 + /// + /// + /// + [HttpPost("{shopId}")] + [AllowAnonymous] + public OrderCountByStateResponse StatisticsOrderCountByOrderState([FromRoute] long shopId) + { + return orderBusiness.StatisticsOrderCountByOrderState(shopId); + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 6c861ac..77483b8 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -38,13 +38,20 @@ namespace BBWYB.Server.Business select = select.Where((o, ocs, oct) => o.OrderSn == request.OrderSn); else { - if (!string.IsNullOrEmpty(request.Sku) || !string.IsNullOrEmpty(request.SourceSku) || !string.IsNullOrEmpty(request.ProductId)) + if (!string.IsNullOrEmpty(request.Sku) || + !string.IsNullOrEmpty(request.SourceSku) || + !string.IsNullOrEmpty(request.ProductId) || + request.IsWaitConfig) { var childSelect = fsql.Select().As("osku") .WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku) .WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku) - .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId); - select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); + .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId) + .WhereIf(request.IsWaitConfig, osku => osku.PackConfigState == Enums.PackConfigState.待配置); + select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消) + .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) + .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IsPurchased == true) + .Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); } if (!string.IsNullOrEmpty(request.PurchaseOrderId)) @@ -65,7 +72,6 @@ namespace BBWYB.Server.Business o.OrderState == Enums.OrderState.部分发货) .WhereIf(request.OrderState == Enums.OrderState.待收货, (o, ocs, oct) => o.OrderState == Enums.OrderState.待收货 || o.OrderState == Enums.OrderState.部分收货) - .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消 && o.IsPurchased == true) .WhereIf(request.StartDate != null, (o, ocs, oct) => o.StartTime >= request.StartDate) .WhereIf(request.EndDate != null, (o, ocs, oct) => o.StartTime <= request.EndDate) .WhereIf(!string.IsNullOrEmpty(request.ClientOrderId), (o, ocs, oct) => o.ClientOrderId == request.ClientOrderId) @@ -585,5 +591,42 @@ namespace BBWYB.Server.Business } } + + public OrderCountByStateResponse StatisticsOrderCountByOrderState(long shopId) + { + var noOrderStateList = new List() + { + Enums.OrderState.已取消, + Enums.OrderState.已完成 + }; + var orderCountGroup = fsql.Select().Where(o => !noOrderStateList.Contains(o.OrderState.Value)) + .GroupBy(o => o.OrderState) + .ToList(g => new + { + OrderState = g.Key, + OrderCount = g.Count() + }); + + var childSelect = fsql.Select().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.待配置); + var waitConfigCount = fsql.Select().Where(o => !noOrderStateList.Contains(o.OrderState.Value)) + .Where(o => o.IntoStoreType == Enums.IntoStoreType.发回齐越) + .Where(o => o.IsPurchased == true) + .Where(o => childSelect.Where(osku => osku.OrderId == o.Id).Any()) + .Count(); + + return new OrderCountByStateResponse() + { + WaitPayCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待付款)?.OrderCount ?? 0, + WaitPurchaseCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.等待采购 || + o.OrderState == Enums.OrderState.部分采购)?.OrderCount ?? 0, + WaitShipmentCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待发货 || + o.OrderState == Enums.OrderState.部分发货)?.OrderCount ?? 0, + WaitReceiveCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待收货 || + o.OrderState == Enums.OrderState.部分收货)?.OrderCount ?? 0, + WaitCheckCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待验收)?.OrderCount ?? 0, + WaitComputationCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待核算)?.OrderCount ?? 0, + WaitConfigCount = waitConfigCount, + }; + } } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 8f73ec2..0ffc3d1 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -71,7 +71,7 @@ /// /// 是否为待配置 (复合条件) - /// 条件1: 已采购 + 未取消 + /// 订单未取消 + 订单为发回齐越 + 订单已采购 + 任意sku为待配置 /// public bool IsWaitConfig { get; set; } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs new file mode 100644 index 0000000..723ad6f --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs @@ -0,0 +1,40 @@ +namespace BBWYB.Server.Model.Dto +{ + public class OrderCountByStateResponse + { + /// + /// 待付款数量 + /// + public long WaitPayCount { get; set; } + + /// + /// 待采购数量(含部分采购) + /// + public int WaitPurchaseCount { get; set; } + + /// + /// 待配置数量 + /// + public long WaitConfigCount { get; set; } + + /// + /// 待发货数量(含部分发货) + /// + public long WaitShipmentCount { get; set; } + + /// + /// 待收货数量(含部分收货) + /// + public long WaitReceiveCount { get; set; } + + /// + /// 待验收数量 + /// + public long WaitCheckCount { get; set; } + + /// + /// 待核算数量 + /// + public long WaitComputationCount { get; set; } + } +} From 2148031304bc6f0ebf89c9dfd13213c2ae767a6d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 14 Jul 2023 16:40:40 +0800 Subject: [PATCH 22/70] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/OrderController.cs | 1 - BBWYB.Server.Business/Order/OrderBusiness.cs | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index 7bebd65..958666a 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -140,7 +140,6 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost("{shopId}")] - [AllowAnonymous] public OrderCountByStateResponse StatisticsOrderCountByOrderState([FromRoute] long shopId) { return orderBusiness.StatisticsOrderCountByOrderState(shopId); diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 77483b8..e28acec 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -599,7 +599,8 @@ namespace BBWYB.Server.Business Enums.OrderState.已取消, Enums.OrderState.已完成 }; - var orderCountGroup = fsql.Select().Where(o => !noOrderStateList.Contains(o.OrderState.Value)) + var orderCountGroup = fsql.Select().Where(o => o.ShopId == shopId) + .Where(o => !noOrderStateList.Contains(o.OrderState.Value)) .GroupBy(o => o.OrderState) .ToList(g => new { @@ -608,7 +609,8 @@ namespace BBWYB.Server.Business }); var childSelect = fsql.Select().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.待配置); - var waitConfigCount = fsql.Select().Where(o => !noOrderStateList.Contains(o.OrderState.Value)) + var waitConfigCount = fsql.Select().Where(o => o.ShopId == shopId) + .Where(o => !noOrderStateList.Contains(o.OrderState.Value)) .Where(o => o.IntoStoreType == Enums.IntoStoreType.发回齐越) .Where(o => o.IsPurchased == true) .Where(o => childSelect.Where(osku => osku.OrderId == o.Id).Any()) From 7e3aa5fe2521f093a2415f14d619da9e06dbd7e8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 14 Jul 2023 17:06:53 +0800 Subject: [PATCH 23/70] =?UTF-8?q?=E5=BE=85=E9=85=8D=E7=BD=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index e28acec..528a8f0 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -47,7 +47,7 @@ namespace BBWYB.Server.Business .WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku) .WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku) .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId) - .WhereIf(request.IsWaitConfig, osku => osku.PackConfigState == Enums.PackConfigState.待配置); + .WhereIf(request.IsWaitConfig, osku => osku.PackConfigState == Enums.PackConfigState.待配置 || osku.PackConfigState == null); select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消) .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IsPurchased == true) @@ -608,7 +608,7 @@ namespace BBWYB.Server.Business OrderCount = g.Count() }); - var childSelect = fsql.Select().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.待配置); + var childSelect = fsql.Select().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.待配置 || osku.PackConfigState == null); var waitConfigCount = fsql.Select().Where(o => o.ShopId == shopId) .Where(o => !noOrderStateList.Contains(o.OrderState.Value)) .Where(o => o.IntoStoreType == Enums.IntoStoreType.发回齐越) From a6a367c8f1671c8ee1a36ac4d019e0a45c37f8d8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 15 Jul 2023 00:32:46 +0800 Subject: [PATCH 24/70] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E9=BD=90=E5=BA=93?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E8=AF=81=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 44 ++++++++++- BBWYB.Server.Business/QiKuManager.cs | 79 +++++++++++++++++-- .../QiKuPackTaskSkuPurchaseSchemeIdRequest.cs | 9 +++ .../QiKu/QiKuBindingSchemeResponse.cs | 22 ++++++ 4 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ef5a226..7d8cbcc 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -258,6 +258,9 @@ namespace BBWYB.Server.Business List updatePurchaseTimeSchemeIdList = new List(); List insertOrderPurchaseRelationInfoList = new List(); List updatePurchaseTimeLimitTaskOrderSkuList = new List(); + List notifyQikuPackSchemeParamList = null; + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) + notifyQikuPackSchemeParamList = new List(); #region 待更新 IList updateOrderCostDetailIdList = fsql.Select() @@ -323,6 +326,8 @@ namespace BBWYB.Server.Business foreach (var cargoParam in cargoParamGroup.CargoParamList) { var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId); + + #region 创建订单采购关系 insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo() { Id = idGenerator.NewLong(), @@ -337,7 +342,7 @@ namespace BBWYB.Server.Business SchemeId = cargoParam.SchemeId, SourceSkuId = orderSku?.BelongSkuId }); - + #endregion } //采购单总件数,由于1688运费只存在订单层,sku层没有运费,所以需要以订单总件数为基础等比计算采购运费 @@ -435,6 +440,29 @@ namespace BBWYB.Server.Business updatePurchaseTimeLimitTaskOrderSkuList.Add(belongSkuId); } #endregion + + #region 封装查询齐库合格证接口参数 + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) + { + foreach (var belongSkuId in belongSkuIdList) //订单skuId + { + var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); + if (orderSku == null) + continue; + var cargoParam = cargoParamGroup.CargoParamList.FirstOrDefault(c => c.BelongSkuId == belongSkuId); + if (cargoParam == null) + continue; + if (!notifyQikuPackSchemeParamList.Any(x => x.SkuId == orderSku.BelongSkuId)) + { + notifyQikuPackSchemeParamList.Add(new QiKuPackTaskSkuPurchaseSchemeIdRequest() + { + SkuId = orderSku.BelongSkuId, + SkuPurchaseSchemeId = cargoParam.SchemeId.ToString() + }); + } + } + } + #endregion } #region 订单成本 @@ -468,6 +496,15 @@ namespace BBWYB.Server.Business Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion + #region 查询齐库合格证 + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越 && + notifyQikuPackSchemeParamList != null && + notifyQikuPackSchemeParamList.Count() > 0) + { + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, orderSkus), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + #endregion + fsql.Transaction(() => { if (updatePurchaseOrderIdList.Count() > 0) @@ -495,8 +532,8 @@ namespace BBWYB.Server.Business fsql.Update(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState) .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .Set(o => o.IsPurchased, true) - .Set(o => o.PackConfigState, Enums.PackConfigState.待配置) .ExecuteAffrows(); + //.Set(o => o.PackConfigState, Enums.PackConfigState.待配置) }); } @@ -2664,7 +2701,7 @@ namespace BBWYB.Server.Business { var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); - Task.Factory.StartNew(() => qiKuManager.PublishQiKu(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList), + Task.Factory.StartNew(() => qiKuManager.PublishQiKuReceiveInfo(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); @@ -2736,5 +2773,6 @@ namespace BBWYB.Server.Business } } + } } diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index 8a93d99..b0e61b8 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -1,7 +1,11 @@ using BBWYB.Common.Http; +using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; +using FreeSql; +using Newtonsoft.Json; namespace BBWYB.Server.Business { @@ -9,14 +13,15 @@ namespace BBWYB.Server.Business { private RestApiService restApiService; private IFreeSql fsql; - public QiKuManager(RestApiService restApiService, IFreeSql fsql) + private NLogManager nLogManager; + public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager) { this.restApiService = restApiService; this.fsql = fsql; } /// - /// 通知齐库 + /// 通知齐库到货情况 /// 支持关联的采购平台以来源SKU为单位通知齐库 /// 不支持关联的采购平台以采购单为单位通知齐库 /// @@ -24,10 +29,10 @@ namespace BBWYB.Server.Business /// /// /// - public void PublishQiKu(OrderPurchaseInfo orderPurchaseInfo, - IList orderPurchaseRelationInfoList, - IList orderPurchaseSkuInfoList, - IList purchaseExpressOrderList) + public void PublishQiKuReceiveInfo(OrderPurchaseInfo orderPurchaseInfo, + IList orderPurchaseRelationInfoList, + IList orderPurchaseSkuInfoList, + IList purchaseExpressOrderList) { if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) PublishQiKuByRelation(orderPurchaseRelationInfoList, orderPurchaseSkuInfoList, purchaseExpressOrderList); @@ -114,5 +119,67 @@ namespace BBWYB.Server.Business } } + + + /// + /// 查询齐库合格证 + /// + /// + /// + /// + public void SearchCerConfigured(string orderId, IList packTaskSkuPurchaseSchemeIdList, IList orderSkuList) + { + try + { + var restApiResult = restApiService.SendRequest("http://qiku.qiyue666.com", "api/PackPurchaseTask/SearchCerConfigured", new + { + orderId, + packTaskSkuPurchaseSchemeIdList + }, null, HttpMethod.Post); + + if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new Exception(restApiResult.Content); + var response = JsonConvert.DeserializeObject>(restApiResult.Content); + if (!response.Success) + throw new Exception(response.Msg); + + if (response.Data.PackTaskSkuPurchaseSchemeIdList != null && response.Data.PackTaskSkuPurchaseSchemeIdList.Count() > 0) + { + IList> updateOrderSkuList = new List>(); + foreach (var skuConfigured in response.Data.PackTaskSkuPurchaseSchemeIdList) + { + var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == skuConfigured.SkuId); + if (orderSku == null) + continue; + var oldPackState = orderSku.PackConfigState ?? Enums.PackConfigState.待配置; + var qiKuPackState = skuConfigured.IsConfiguredCer ? Enums.PackConfigState.已配置 : Enums.PackConfigState.待配置; + if (oldPackState != qiKuPackState) + { + orderSku.PackConfigState = qiKuPackState; + var update = fsql.Update(orderSku.Id).Set(osku => osku.PackConfigState, qiKuPackState); + updateOrderSkuList.Add(update); + } + + if (qiKuPackState == Enums.PackConfigState.待配置) + { + //创建合格证拟定任务 + } + } + + fsql.Transaction(() => + { + if (updateOrderSkuList.Count() > 0) + { + foreach (var update in updateOrderSkuList) + update.ExecuteAffrows(); + } + }); + } + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, $"SearchCerConfigured\r\n{JsonConvert.SerializeObject(new { orderId, packTaskSkuPurchaseSchemeIdList })}"); + } + } } } diff --git a/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs b/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs new file mode 100644 index 0000000..8bde0fe --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs @@ -0,0 +1,9 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QiKuPackTaskSkuPurchaseSchemeIdRequest + { + public string SkuId { get; set; } + + public string SkuPurchaseSchemeId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs new file mode 100644 index 0000000..6b0c1ba --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs @@ -0,0 +1,22 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QiKuBindingSchemeResponse + { + public string OrderId { get; set; } + + public IList PackTaskSkuPurchaseSchemeIdList { get; set; } + } + + public class QiKuBindingSchemeSkuResponse + { + /// + /// 来源skuId + /// + public string SkuId { get; set; } + + /// + /// 是否配置合格证 + /// + public bool IsConfiguredCer { get; set; } + } +} From 0d1b87465af7f756d29f5f43c6713bef716112d7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 15 Jul 2023 12:16:50 +0800 Subject: [PATCH 25/70] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E5=AF=B9=E6=8E=A5=E9=BD=90=E5=BA=93=E5=90=88=E6=A0=BC?= =?UTF-8?q?=E8=AF=81=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 38 +++++++++++++++++++ SDKAdapter/ExpressCompanyNameConverter.cs | 3 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 7d8cbcc..0fc8bb1 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -670,6 +670,7 @@ namespace BBWYB.Server.Business IUpdate updateOrderCost = null; List updatePurchaseTimeLimitTaskOrderSkuList = new List(); + List notifyQikuPackSchemeParamList = new List(); foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { @@ -840,7 +841,36 @@ namespace BBWYB.Server.Business if (!updatePurchaseTimeLimitTaskOrderSkuList.Any(x => x == ocd.SkuId)) updatePurchaseTimeLimitTaskOrderSkuList.Add(ocd.SkuId); } + #endregion + + #region 封装查询齐库合格证参数 + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) + { + if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + { + var waitList = insertOrderPurchaseRelationInfoList.Where(r => !notifyQikuPackSchemeParamList.Any(x => x.SkuId == r.SourceSkuId && + x.SkuPurchaseSchemeId == r.SchemeId?.ToString())) + .Select(r => new QiKuPackTaskSkuPurchaseSchemeIdRequest() + { + SkuId = r.SourceSkuId, + SkuPurchaseSchemeId = r.SchemeId?.ToString() + }).ToList(); + if (waitList != null && waitList.Count() > 0) + notifyQikuPackSchemeParamList.AddRange(waitList); + } + else + { + foreach (var ocd in purchaseOrder.AssocationOrderCostDetailList) + { + var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == ocd.SkuId); + if (orderSku == null) + continue; + if (!notifyQikuPackSchemeParamList.Any(x => x.SkuId == orderSku.BelongSkuId)) + notifyQikuPackSchemeParamList.Add(new QiKuPackTaskSkuPurchaseSchemeIdRequest() { SkuId = orderSku.BelongSkuId, SkuPurchaseSchemeId = null }); + } + } + } #endregion } else @@ -930,6 +960,14 @@ namespace BBWYB.Server.Business Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion + #region 查询齐库合格证 + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越 && + notifyQikuPackSchemeParamList.Count() > 0) + { + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, dbOrderSkuList), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + #endregion + fsql.Transaction(() => { if (insertOrderPurchaseInfoList.Count() > 0) diff --git a/SDKAdapter/ExpressCompanyNameConverter.cs b/SDKAdapter/ExpressCompanyNameConverter.cs index 97fb329..65906b7 100644 --- a/SDKAdapter/ExpressCompanyNameConverter.cs +++ b/SDKAdapter/ExpressCompanyNameConverter.cs @@ -125,7 +125,8 @@ namespace SDKAdapter new LogisticsCompanyRelationship(){SourceName="加运美",TargetName="加运美",TargetCode="jiayunmeiwuliu"}, new LogisticsCompanyRelationship(){SourceName="信丰物流",TargetName="信丰物流",TargetCode="xinfengwuliu"}, new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"}, - new LogisticsCompanyRelationship(){ SourceName="速腾快递",TargetName="速腾快递",TargetCode="suteng"} + new LogisticsCompanyRelationship(){SourceName="速腾快递",TargetName="速腾快递",TargetCode="suteng"}, + new LogisticsCompanyRelationship(){SourceName="运通快运",TargetName="运通快运",TargetCode="ytky168"} }); } From 609fd6cb0c3dd5f5f580fdb773db3626e5dd384f Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Sun, 16 Jul 2023 10:21:15 +0800 Subject: [PATCH 26/70] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E4=B8=BA0=E7=9A=84sku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 3 +-- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 528a8f0..3079f41 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -217,8 +217,7 @@ namespace BBWYB.Server.Business #endregion #region 处理SKU - var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && - orderIdList.Contains(osku.OrderId)).ToList(); + var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); foreach (var order in orderList) { order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 0fc8bb1..955919c 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -247,7 +247,7 @@ namespace BBWYB.Server.Business var isRepurchase = fsql.Select(dbOrder.Id).Any(); - var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == request.OrderId).ToList(); + var orderSkus = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); var extJArray = JsonConvert.DeserializeObject(request.Extensions); From 1238c820d49e78e691716289d87289cbc702bd4f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 16 Jul 2023 23:44:48 +0800 Subject: [PATCH 27/70] =?UTF-8?q?=E5=85=A5=E5=BA=93=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/OrderStateExtension.cs | 22 +- BBWYB.Server.Business/JD/JDBusiness.cs | 54 +++ BBWYB.Server.Business/Order/OrderBusiness.cs | 2 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 353 +++++------------- .../Vender/VenderBusiness.cs | 5 +- .../Dto/Response/JD/JDInStoreOrderDetail.cs | 34 ++ 6 files changed, 212 insertions(+), 258 deletions(-) create mode 100644 BBWYB.Server.Business/JD/JDBusiness.cs create mode 100644 BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index bf6d25c..1834f9c 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -2,6 +2,7 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; +using JD.Dto; namespace BBWYB.Server.Business { @@ -11,14 +12,19 @@ namespace BBWYB.Server.Business /// 计算订单状态 /// /// + /// + /// 是否在入库单验证失败后通知钉钉 /// /// - /// + /// public static void CalculationOrderState(this Order order, IFreeSql fsql, + out bool IsNotifyDingDingWhenInStoreOrderFail, IList orderSkuList = null, - IList orderPurchaseInfoList = null) + IList orderPurchaseInfoList = null, + IList jdInStoreOrderDetailList = null) { + IsNotifyDingDingWhenInStoreOrderFail = false; if (order.OrderState == Enums.OrderState.已取消 || order.OrderState == Enums.OrderState.已完成 || order.OrderState == Enums.OrderState.待付款) @@ -112,8 +118,16 @@ namespace BBWYB.Server.Business else order.OrderState = Enums.OrderState.待核算; } - else - order.OrderState = Enums.OrderState.已完成; + else if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) + { + if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2")) + { + order.OrderState = Enums.OrderState.待验收; + IsNotifyDingDingWhenInStoreOrderFail = true; + } + else + order.OrderState = Enums.OrderState.待核算; + } return; } #endregion diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs new file mode 100644 index 0000000..d00139d --- /dev/null +++ b/BBWYB.Server.Business/JD/JDBusiness.cs @@ -0,0 +1,54 @@ +using BBWYB.Common.Http; +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using JD.Dto; +using Newtonsoft.Json; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business.JD +{ + public class JDBusiness : BaseBusiness, IDenpendency + { + private RestApiService restApiService; + private VenderBusiness venderBusiness; + public JDBusiness(IFreeSql fsql, + NLogManager nLogManager, + IIdGenerator idGenerator, + RestApiService restApiService, + VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) + { + this.restApiService = restApiService; + this.venderBusiness = venderBusiness; + } + + public ApiResponse> GetJDInStoreOrderDetailList(string sourceShopName, IList poOrderNos) + { + var shop = venderBusiness.GetShopList(shopName: sourceShopName).FirstOrDefault(); + if (shop == null) + return new ApiResponse>() { Code = 0, Msg = $"未找到店铺{sourceShopName}" }; + + try + { + var httpResult = restApiService.SendRequest("https://yunding.qiyue666.com/", "api/PlatformSDK/GetJDInStorePurchaseOrderList", new + { + Platform = shop.PlatformId, + shop.AppKey, + shop.AppSecret, + shop.AppToken, + PoOrderNos = string.Join(',', poOrderNos) + }, null, HttpMethod.Post); + + if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) + return new ApiResponse>() { Code = 0, Msg = httpResult.Content }; + + + var response = JsonConvert.DeserializeObject>>(httpResult.Content); + return response; + } + catch (Exception ex) + { + return new ApiResponse>() { Code = 0, Msg = ex.Message }; + } + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 528a8f0..60d53ec 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -548,7 +548,7 @@ namespace BBWYB.Server.Business updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.IsCheck, true); var oldOrderState = dbOrder.OrderState; - dbOrder.CalculationOrderState(fsql, orderSkuList, null); + dbOrder.CalculationOrderState(fsql, out _, orderSkuList, null); if (oldOrderState != dbOrder.OrderState) updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 0fc8bb1..695bcd9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2,12 +2,14 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Business.Extensions; +using BBWYB.Server.Business.JD; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db.Mds; using BBWYB.Server.Model.Db.MDS; using BBWYB.Server.Model.Dto; using FreeSql; +using JD.Dto; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -29,6 +31,7 @@ namespace BBWYB.Server.Business private Lazy dingDingBusinessLazy; private Lazy qiKuManagerLazy; private Lazy restApiServiceLazy; + private Lazy jdBusinessLazy; private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; @@ -39,6 +42,8 @@ namespace BBWYB.Server.Business private QiKuManager qiKuManager => qiKuManagerLazy.Value; private RestApiService restApiService => restApiServiceLazy.Value; + private JDBusiness jdBusiness => jdBusinessLazy.Value; + private IList cantPurchaseOrderStateList; public PurchaseOrderBusiness(IFreeSql fsql, @@ -54,6 +59,7 @@ namespace BBWYB.Server.Business dingDingBusinessLazy = new Lazy(() => serviceProvider.GetService()); qiKuManagerLazy = new Lazy(() => serviceProvider.GetService()); restApiServiceLazy = new Lazy(() => serviceProvider.GetService()); + jdBusinessLazy = new Lazy(() => serviceProvider.GetService()); cantPurchaseOrderStateList = new List() { Enums.OrderState.已取消, @@ -489,7 +495,7 @@ namespace BBWYB.Server.Business #endregion #region 订单状态 - dbOrder.CalculationOrderState(fsql, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); + dbOrder.CalculationOrderState(fsql, out _, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); #endregion #region 通知C端状态 @@ -953,7 +959,7 @@ namespace BBWYB.Server.Business updateOrderCost = fsql.Update().SetSource(dbOrderCost); #region 订单状态 - dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); + dbOrder.CalculationOrderState(fsql, out _, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); #endregion #region 通知C端状态 @@ -1156,7 +1162,7 @@ namespace BBWYB.Server.Business orderPurchaseInfoList.Remove(historyPurchaseOrder); - dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); fsql.Transaction(() => { @@ -1282,7 +1288,7 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}"); dingdingMsg.AppendLine("触发环节:修改物流单号"); dingdingMsg.Append($"店铺名:{shop.ShopName}"); - Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion } insertPEO = fsql.Insert(newPeo); @@ -1335,7 +1341,7 @@ namespace BBWYB.Server.Business #region 计算订单状态 var oldOrderState = dbOrder.OrderState; - dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); if (oldOrderState != dbOrder.OrderState) { updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); @@ -1484,7 +1490,7 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"快递单号:{request.WaybillNo}"); dingdingMsg.AppendLine("触发环节:手动发货"); dingdingMsg.Append($"店铺名:{shop.ShopName}"); - Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion } #endregion @@ -1535,7 +1541,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -1659,7 +1665,7 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"快递单号:{peoRequest.WaybillNo}"); dingdingMsg.AppendLine("触发环节:手动发货"); dingdingMsg.Append($"店铺名:{shop.ShopName}"); - Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion } } @@ -1729,7 +1735,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -2122,7 +2128,7 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}"); dingdingMsg.AppendLine("触发环节:1688发货回调"); dingdingMsg.Append($"店铺名:{shop.ShopName}"); - Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion } } @@ -2181,7 +2187,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -2222,243 +2228,6 @@ namespace BBWYB.Server.Business } #endregion - ///// - ///// 采购平台发货回调 - ///// - ///// - ///// - ///// - //private void DeliveryCallback(string purchaseOrderId, PP_QueryOrderLogisticsResponse wayBillNoResponse, Enums.Platform callbackPlatform) - //{ - // string currentProgress = string.Empty; - // string wayBillNoResponseInfo = string.Empty; - // string expressCompanyListInfo = string.Empty; - // string expressCompanyInfo = string.Empty; - // string orderId = string.Empty; - // long? shopId = null; - // try - // { - // #region 查询代发信息 - // currentProgress = "查询代发信息"; - // var orderPurchaseInfo = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId && o.IsEnabled == true).ToOne(); - // if (orderPurchaseInfo == null) - // throw new Exception("未查询到代发信息"); - // orderId = orderPurchaseInfo.OrderId; - // shopId = orderPurchaseInfo.ShopId; - // #endregion - - // //#region 查询采购账号的归属店铺 - // //currentProgress = "查询采购账号归属店铺"; - // //var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault(); - // //if (shop == null) - // // throw new Exception("未查询到店铺信息"); - // //#endregion - - // #region 查询采购账号 - // currentProgress = "查询采购账号"; - // var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); - // if (purchaseAccount == null) - // throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); - // #endregion - - // #region 获取采购单的物流信息 - // currentProgress = "获取采购单的物流信息"; - // if (wayBillNoResponse == null) - // { - // var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)callbackPlatform); - // var ppQueryOrderLogisticsRequest = new PP_QueryOrderLogisticsRequest() - // { - // AppKey = purchaseAccount.AppKey, - // AppSecret = purchaseAccount.AppSecret, - // AppToken = purchaseAccount.AppToken, - // OrderId = purchaseOrderId, - // Platform = (AdapterEnums.PlatformType)callbackPlatform - // }; - // wayBillNoResponse = client.QueryOrderLogistics(ppQueryOrderLogisticsRequest); - // wayBillNoResponseInfo = JsonConvert.SerializeObject(new { Request = ppQueryOrderLogisticsRequest, Result = wayBillNoResponse }); - // } - // #endregion - - // //#region 获取目标平台的物流公司列表 - // //currentProgress = "获取店铺平台物流公司列表"; - // //var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest() - // //{ - // // AppKey = shop.AppKey, - // // AppSecret = shop.AppSecret, - // // AppToken = shop.AppToken, - // // Platform = shop.PlatformId - // //}); - // //if (expressCompanyList != null) - // // expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList); - // //#endregion - - - - // //#region 物流公司翻译 - // //currentProgress = "物流公司翻译"; - - // //OP_QueryExpressCompanyResponse convertExpressCompany = null; - - // //try - // //{ - // // convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName, - // // (AdapterEnums.PlatformType)callbackPlatform, - // // (AdapterEnums.PlatformType)shop.PlatformId, - // // expressCompanyList); - // // if (convertExpressCompany != null) - // // expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany); - // //} - // //catch - // //{ - // // throw; - // //} - // //finally - // //{ - // // #region 店铺平台订单出库 - // // currentProgress = "店铺平台订单出库"; - // // orderBusiness.OutStock(new OutStockRequest() - // // { - // // AppKey = shop.AppKey, - // // AppSecret = shop.AppSecret, - // // AppToken = shop.AppToken, - // // OrderId = orderId, - // // TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id - // // TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称 - // // SourceExpressId = wayBillNoResponse.ExpressId, - // // SourceExpressName = wayBillNoResponse.ExpressName, - // // PurchaseOrderId = purchaseOrderId, - // // Platform = shop.PlatformId, - // // WayBillNo = wayBillNoResponse.WayBillNo - // // }); - // // #endregion - // //} - // //#endregion - - - // //#region 店铺平台订单出库 - // //currentProgress = "店铺平台订单出库"; - // //orderBusiness.OutStock(new OutStockRequest() - // //{ - // // //AppKey = shop.AppKey, - // // //AppSecret = shop.AppSecret, - // // //AppToken = shop.AppToken, - // // OrderId = orderId, - // // //TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id - // // //TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称 - // // SourceExpressId = wayBillNoResponse.ExpressId, - // // SourceExpressName = wayBillNoResponse.ExpressName, - // // PurchaseOrderId = purchaseOrderId, - // // //Platform = shop.PlatformId, - // // WayBillNo = wayBillNoResponse.WayBillNo - // //}); - // //#endregion - - - // nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}"); - // } - // catch (Exception ex) - // { - // nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}"); - // } - //} - - ///// - ///// 1688物流信息变更回调 - ///// - ///// - //private void LogisticsUpdateCallbackFrom1688(JObject jObject) - //{ - // Task.Factory.StartNew(() => - // { - // IList> updateOrderPurchaseSkuInfoList = new List>(); - // IList> updateOrderPurchaseInfoList = new List>(); - - // var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value("statusChanged").ToUpper(); - // var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children(); - - // var purchaseOrderIds = orderLogsItems.Select(x => x.Value("orderId")).Distinct().ToList(); - // var orderEntryIds = orderLogsItems.Select(x => x.Value("orderEntryId")).Distinct().ToList(); - - // var dbOrderPurchaseInfoList = fsql.Select().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList(); - - // var dbOrderPurchaseSkuInfoList = fsql.Select() - // .WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId)) - // .WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0]) - // .ToList(); - - // var dbOrderPurchaseRelationInfoList = fsql.Select() - // .WhereIf(purchaseOrderIds.Count() > 1, opr => purchaseOrderIds.Contains(opr.PurchaseOrderId)) - // .WhereIf(purchaseOrderIds.Count() == 1, opr => opr.PurchaseOrderId == purchaseOrderIds[0]) - // .ToList(); - - // foreach (var orderEntryId in orderEntryIds) - // { - // var dbOrderPurchaseSkuInfo = dbOrderPurchaseSkuInfoList.FirstOrDefault(x => x.Id == orderEntryId); - // if (dbOrderPurchaseSkuInfo.ExpressState != statusChanged) - // { - // var update = fsql.Update(orderEntryId).Set(x => x.ExpressState, statusChanged) - // .Set(x => x.ExpressChangeTime, DateTime.Now); - // updateOrderPurchaseSkuInfoList.Add(update); - // dbOrderPurchaseSkuInfo.ExpressState = statusChanged; - // } - // } - - // if (statusChanged == "SIGN") - // { - // var groupsByPoIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.PurchaseOrderId); - // foreach (var group in groupsByPoIds) - // { - // var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count(); - // if (isSignAll) - // { - // var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(x => x.PurchaseOrderId == group.Key && x.IsEnabled == true); - // if (dbOrderPurchaseInfo != null) - // { - // dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收; - // updateOrderPurchaseInfoList.Add(fsql.Update().SetSource(dbOrderPurchaseInfo)); - // } - // } - - // #region 通知齐库 - // var relationList = dbOrderPurchaseRelationInfoList.Where(x => x.PurchaseOrderId == group.Key).ToList(); - // foreach (var relation in relationList) - // { - // try - // { - // restApiService.SendRequest("http://qiku.qiyue666.com", - // "/Api/PackPurchaseTask/UpdateAvailabilityState", - // new - // { - // availability = isSignAll ? 0 : 1, - // orderId = relation.OrderId, - // skuId = relation.SourceSkuId - // }, - // null, - // HttpMethod.Post); - // } - // catch (Exception ex) - // { - - // } - // } - // #endregion - // } - // } - - // if (updateOrderPurchaseSkuInfoList.Count() > 0 || updateOrderPurchaseInfoList.Count() > 0) - // { - // fsql.Transaction(() => - // { - // foreach (var update in updateOrderPurchaseSkuInfoList) - // update.ExecuteAffrows(); - // foreach (var update in updateOrderPurchaseInfoList) - // update.ExecuteAffrows(); - // }); - // } - - - // }, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - //} /// /// 采购平台改价回调 @@ -2652,9 +2421,11 @@ namespace BBWYB.Server.Business var orderList = fsql.Select(orderIds).ToList(o => new Order { Id = o.Id, + OrderSn = o.OrderSn, ShopId = o.ShopId, OrderState = o.OrderState, - IntoStoreType = o.IntoStoreType + IntoStoreType = o.IntoStoreType, + SourceShopName = o.SourceShopName }); if (orderList.Count() == 0) throw new Exception("未查询到任何订单"); @@ -2713,6 +2484,12 @@ namespace BBWYB.Server.Business updatePurchaseExpressOrder = fsql.Update().SetSource(tpeo); #endregion + #region 查询入库单信息 + IList inStoreOrderRelationList = null; + if (orderList.Any(o => o.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) && state == "QianShou") + inStoreOrderRelationList = fsql.Select().Where(i => orderIds.Contains(i.OrderId)).ToList(); + #endregion + #region 计算订单状态和采购单状态 foreach (var order in orderList) { @@ -2749,7 +2526,81 @@ namespace BBWYB.Server.Business } var oldOrderState = order.OrderState; - order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList); + + if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && state == "QianShou") + { + #region 检查入库采购单状态 + var isNotifyDingDingWhenInOrderFail = false; + var currentOrder_InStoreOrderRelationList = inStoreOrderRelationList.Where(i => i.OrderId == order.Id).ToList(); + ApiResponse> inStoreResponse = null; + if (currentOrder_InStoreOrderRelationList.Count() > 0) + { + var poOrderNos = currentOrder_InStoreOrderRelationList.Select(i => i.InStorePurchaseOrderId).Distinct().ToList(); + //查询京东 + inStoreResponse = jdBusiness.GetJDInStoreOrderDetailList(order.SourceShopName, poOrderNos); + } + order.CalculationOrderState(fsql, out isNotifyDingDingWhenInOrderFail, currentOrderSkuList, currentPurchaseOrderList, inStoreResponse?.Data); + + if (isNotifyDingDingWhenInOrderFail && inStoreResponse != null) + { + #region 入库单查询有误,通知钉钉 + var dingdingMsg = new StringBuilder(); + + if (inStoreResponse.Data == null || inStoreResponse.Data.Count() == 0) + { + foreach (var opi in currentPurchaseOrderList) + { + dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine("缺少入仓采购单号"); + dingdingMsg.AppendLine(); + } + } + else + { + foreach (var inStoreOrderRelation in currentOrder_InStoreOrderRelationList) + { + var jdInStore = inStoreResponse.Data.FirstOrDefault(x => x.poOrderNo == inStoreOrderRelation.InStorePurchaseOrderId); + if (jdInStore == null || jdInStore.storageStatus == "2") + continue; + var opi = currentPurchaseOrderList.FirstOrDefault(opi => opi.PurchaseOrderId == inStoreOrderRelation.PurchaseOrderId); + if (opi == null) + continue; + + var stateText = ""; + switch (jdInStore.storageStatus) + { + case "1": + stateText = "有差异待确认"; + break; + case "3": + stateText = "待确认"; + break; + case "4": + stateText = "有差异已确认"; + break; + } + + dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单状态:{jdInStore.storageStatus} {stateText}"); + dingdingMsg.AppendLine(); + } + } + + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + } + #endregion + } + else + { + order.CalculationOrderState(fsql, out _, currentOrderSkuList, currentPurchaseOrderList); + } + if (order.OrderState != oldOrderState) { var update = fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState); @@ -2785,7 +2636,7 @@ namespace BBWYB.Server.Business } } - private void SendDingDingOnKD100SubscribeFail(string content) + private void SendDingDing(string content) { try { diff --git a/BBWYB.Server.Business/Vender/VenderBusiness.cs b/BBWYB.Server.Business/Vender/VenderBusiness.cs index e11998b..1f55d66 100644 --- a/BBWYB.Server.Business/Vender/VenderBusiness.cs +++ b/BBWYB.Server.Business/Vender/VenderBusiness.cs @@ -23,11 +23,12 @@ namespace BBWYB.Server.Business this.kuaiDi100Manager = kuaiDi100Manager; } - public IList GetShopList(long? shopId = null, Enums.Platform? platform = null) + public IList GetShopList(long? shopId = null, Enums.Platform? platform = null, string shopName = "") { return fsqlManager.MDSfsql.Select().Where(s => !string.IsNullOrEmpty(s.ShopId)) .WhereIf(shopId != null, s => s.ShopId == shopId.ToString()) .WhereIf(platform != null, s => s.PlatformId == (int)platform) + .WhereIf(!string.IsNullOrEmpty(shopName), s => s.ShopName == shopName) .ToList(); } @@ -87,7 +88,7 @@ namespace BBWYB.Server.Business public IList GetKuaiDi100ExpressCompanyList(KuaiDi100ExpressSearchRequest request) { - return kuaiDi100Manager.GetKuaiDi100ExpressCompanyList(request); + return kuaiDi100Manager.GetKuaiDi100ExpressCompanyList(request); } } } diff --git a/BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs b/BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs new file mode 100644 index 0000000..e80da50 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs @@ -0,0 +1,34 @@ +namespace JD.Dto +{ + public class JDInStoreOrderDetail + { + public string poOrderNo { get; set; } + + public string isvPoOrderNo { get; set; } + + /// + /// 开放平台事业部编号 + /// + public string deptNo { get; set; } + + /// + /// 开放平台库房编号 + /// + public string whNo { get; set; } + + /// + /// 开放平台供应商编号 + /// + public string supplierNo { get; set; } + + /// + /// 采购入库单状态:4等待箱明细、5等待序列号清单、6待集单、10新建、15追加中、16已集单、20初始、30预约、31单据申报、32入园放行、33理货申报、34入库放行、40叫号、50验收、51 TC验收、60上架、70完成、80异常、81未完成、82申报失败、90取消中、91取消成功、92取消失败、93待取消、94等待取消中、95库房修改;最大长度4字符 + /// + public string poOrderStatus { get; set; } + + /// + /// 采购入库单入库状态;1:有差异待确认,2:无差异已确认,3:待确认,4:有差异已确认 + /// + public string storageStatus { get; set; } + } +} From f95d9fdad06d62aa7a154f007f88e49b10b6056a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 16 Jul 2023 23:54:17 +0800 Subject: [PATCH 28/70] 1 --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 85433de..254578e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2557,6 +2557,17 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine(); } } + else if (!inStoreResponse.Success) + { + foreach (var opi in currentPurchaseOrderList) + { + dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); + dingdingMsg.AppendLine(); + } + } else { foreach (var inStoreOrderRelation in currentOrder_InStoreOrderRelationList) From 33c77424758cc1d8ed5f4d7244fe0d9af7c7d1dd Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 17 Jul 2023 13:06:04 +0800 Subject: [PATCH 29/70] 10028 --- BBWYB.Client/APIServices/ProductService.cs | 29 ++++++++++--------- BBWYB.Client/GlobalContext.cs | 2 +- .../ViewModels/Ware/WareManagerViewModel.cs | 5 ++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/BBWYB.Client/APIServices/ProductService.cs b/BBWYB.Client/APIServices/ProductService.cs index 6bb7947..8de8ee3 100644 --- a/BBWYB.Client/APIServices/ProductService.cs +++ b/BBWYB.Client/APIServices/ProductService.cs @@ -10,20 +10,21 @@ namespace BBWYB.Client.APIServices { public ProductService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) { } - public ApiResponse GetProductList(string spu, string productName, string productItem, int pageIndex) + public ApiResponse GetProductList(string spu, string productName, string productItem, int pageIndex, int pageSize) { return SendRequest(globalContext.BBWYApiHost, "api/product/GetProductList", new { - Spu = spu, - ProductName = productName, - ProductItem = productItem, - PageIndex = pageIndex, - Platform = globalContext.User.Shop.Platform, - AppKey = globalContext.User.Shop.AppKey, - AppSecret = globalContext.User.Shop.AppSecret, - AppToken = globalContext.User.Shop.AppToken + spu, + productName, + productItem, + pageIndex, + pageSize, + globalContext.User.Shop.Platform, + globalContext.User.Shop.AppKey, + globalContext.User.Shop.AppSecret, + globalContext.User.Shop.AppToken }, null, HttpMethod.Post); @@ -37,10 +38,10 @@ namespace BBWYB.Client.APIServices { Spu = spu, Sku = sku, - Platform = globalContext.User.Shop.Platform, - AppKey = globalContext.User.Shop.AppKey, - AppSecret = globalContext.User.Shop.AppSecret, - AppToken = globalContext.User.Shop.AppToken + globalContext.User.Shop.Platform, + globalContext.User.Shop.AppKey, + globalContext.User.Shop.AppSecret, + globalContext.User.Shop.AppToken }, null, HttpMethod.Post); @@ -85,5 +86,5 @@ namespace BBWYB.Client.APIServices // } - + } diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index fe232b5..911130a 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10027"; + BBWYBApiVersion = "10028"; } private User user; diff --git a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs index c0d4a14..78bbdc0 100644 --- a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs @@ -57,6 +57,7 @@ namespace BBWYB.Client.ViewModels #region Methods public WareManagerViewModel(GlobalContext globalContext, BindingPurchaseProductViewModel bindingPurchaseProduct, PurchaseService purchaseService, ProductService productService) { + PageSize = 5; AddPurchaserCommand = new RelayCommand(AddPurchaser); EditPurchaserCommand = new RelayCommand(EditPurchaser); DeletePurchaserCommand = new RelayCommand(DeletePurchaser); @@ -111,7 +112,7 @@ namespace BBWYB.Client.ViewModels IsLoading = false; return; } - productApiResponse = productService.GetProductList(skuResponse.Data.Items[0].ProductId, string.Empty, string.Empty, pageIndex); + productApiResponse = productService.GetProductList(skuResponse.Data.Items[0].ProductId, string.Empty, string.Empty, pageIndex, PageSize); } else { @@ -122,7 +123,7 @@ namespace BBWYB.Client.ViewModels } else { - productApiResponse = productService.GetProductList(SearchSpu, SearchProductName, SearchProductItem, pageIndex); + productApiResponse = productService.GetProductList(SearchSpu, SearchProductName, SearchProductItem, pageIndex, PageSize); } if (!productApiResponse.Success) From 6f3051a968e1a3cef67d5a31bc7a3be82c4bf827 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 17 Jul 2023 18:40:45 +0800 Subject: [PATCH 30/70] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 2 + .../Db/Order/OrderPurchaseInfo.cs | 39 +++---------------- 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 254578e..ee1de14 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1126,6 +1126,7 @@ namespace BBWYB.Server.Business /// public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request) { + nLogManager.Default().Info($"SetHistoryPurchaseOrder {JsonConvert.SerializeObject(request)}"); var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); @@ -1169,6 +1170,7 @@ namespace BBWYB.Server.Business fsql.Update(historyPurchaseOrder.Id) .Set(opi => opi.IsEnabled, false) .Set(opi => opi.OrderState, Enums.PurchaseOrderState.已取消) + .Set(opi => opi.HistorySettingTime, DateTime.Now) .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) .ExecuteAffrows(); diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs index c40d326..5eb6899 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs @@ -56,35 +56,6 @@ namespace BBWYB.Server.Model.Db /// public long? ShopId { get; set; } - ///// - ///// ݵ - ///// - //[Column(StringLength = 100)] - //public string WaybillNo { get; set; } - - ///// - ///// ԭʼݹ˾ - ///// - //[Column(StringLength = 100)] - //public string SourceExpressName { get; set; } - - ///// - ///// ԭʼݹ˾Id - ///// - //[Column(StringLength = 100)] - //public string SourceExpressId { get; set; } - - ///// - ///// Ŀݹ˾ - ///// - //[Column(StringLength = 100)] - //public string TargetExpressName { get; set; } - - ///// - ///// Ŀݹ˾Id - ///// - //[Column(StringLength = 100)] - //public string TargetExpressId { get; set; } /// /// Sku @@ -101,11 +72,11 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 500)] public string Remark { get; set; } - ///// - ///// Ƿǩ - ///// - //[Column(DbType = "bit")] - //public bool? IsSign { get; set; } = false; + /// + /// ʷɹʱ + /// + [Column(DbType = "datetime", IsNullable = true)] + public DateTime HistorySettingTime { get; set; } /// /// ɹ״̬ From 4dfc8b52c918eeba510554a8f5feb992819572f9 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 12:07:03 +0800 Subject: [PATCH 31/70] 1 --- BBWYB.Server.Business/Order/OrderBusiness.cs | 18 ++++++++++++++++++ .../Dto/Request/Order/QueryOrderRequest.cs | 12 ++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 5a9d02a..21d3e30 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -54,6 +54,24 @@ namespace BBWYB.Server.Business .Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); } + if (request.IsOnlyDisplayPurchaseTimeOut == 1 && (request.OrderState == Enums.OrderState.等待采购 || request.OrderState == Enums.OrderState.部分采购)) + { + var childSelect = fsql.Select().As("t") + .Where(t => t.ShopId == request.ShopId) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) + .Where(t => t.IsTimely == false); + select = select.Where((o, ocs, oct) => childSelect.Where(t => t.OrderId == o.Id).Any()); + } + if (request.IsOnlyDisplayDeliveryTimeout == 1 && (request.OrderState == Enums.OrderState.待发货 || request.OrderState == Enums.OrderState.部分发货)) + { + var before24hTime = DateTime.Now.AddHours(-24); + var childSelect = fsql.Select().As("opi2") + .Where(opi2 => opi2.ShopId == request.ShopId && + (opi2.OrderState == Enums.PurchaseOrderState.待发货 || opi2.OrderState == Enums.PurchaseOrderState.部分发货) && + opi2.CreateTime < before24hTime); + select = select.Where((o, ocs, oct) => childSelect.Where(opi2 => opi2.OrderId == o.Id).Any()); + } + if (!string.IsNullOrEmpty(request.PurchaseOrderId)) { var childSelect = fsql.Select().As("opi") diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 0ffc3d1..1ee5d7b 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -75,10 +75,14 @@ /// public bool IsWaitConfig { get; set; } - ///// - ///// 是否过滤已配置 - ///// - //public bool ExcludeConfigured { get; set; } + /// + /// 是否仅显示待采购超时,是=1否=0,只在订单状态为【待采购和部分采购】时生效 + /// + public int IsOnlyDisplayPurchaseTimeOut { get; set; } + /// + /// 是否仅显示待发货超时,是=1否=0,只在订单状态为【待发货和部分发货】时生效 + /// + public int IsOnlyDisplayDeliveryTimeout { get; set; } } } From 14a4ddfcd8b0a7ea4805a182edd02c1958263fd6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 12:07:47 +0800 Subject: [PATCH 32/70] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 1ee5d7b..6d42a6c 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -78,11 +78,11 @@ /// /// 是否仅显示待采购超时,是=1否=0,只在订单状态为【待采购和部分采购】时生效 /// - public int IsOnlyDisplayPurchaseTimeOut { get; set; } + public int? IsOnlyDisplayPurchaseTimeOut { get; set; } /// /// 是否仅显示待发货超时,是=1否=0,只在订单状态为【待发货和部分发货】时生效 /// - public int IsOnlyDisplayDeliveryTimeout { get; set; } + public int? IsOnlyDisplayDeliveryTimeout { get; set; } } } From 90a0bc15b8dba7a29931090c40f26dd4bed8e7d3 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 15:34:06 +0800 Subject: [PATCH 33/70] =?UTF-8?q?1688=E5=8F=91=E8=B4=A7=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E7=BF=BB=E8=AF=91=E4=B8=AD=E6=96=AD=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ee1de14..8c130eb 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2132,6 +2132,9 @@ namespace BBWYB.Server.Business dingdingMsg.Append($"店铺名:{shop.ShopName}"); Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion + + if (ex.Message.Contains("无翻译结果")) + throw; } } #endregion From 0674c5f826b07999a76a6b733f25a9d08f422dcb Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 17:06:34 +0800 Subject: [PATCH 34/70] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=95=86Id2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 2 +- .../PurchaseScheme/PurchaseProductAPIService.cs | 1 + .../PurchaseScheme/PurchaseSchemeBusiness.cs | 2 ++ BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs | 8 +++++++- .../Request/PurchaseScheme/InputPurchaseSchemeRequest.cs | 6 ++++++ .../Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs | 2 ++ 6 files changed, 19 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 8c130eb..6bade0a 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1038,7 +1038,7 @@ namespace BBWYB.Server.Business purchaserId = purchaserId.Replace("b2b-", string.Empty); var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5); var purchaserIds = new List() { purchaserId, purchaserId2 }; - var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && purchaserIds.Contains(p.Id)).ToOne(); + var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && (purchaserIds.Contains(p.Id) || purchaserIds.Contains(p.Id2))).ToOne(); if (dbPurchaser == null) throw new BusinessException($"采购单{request.PurchaseOrderId}缺少有效采购商"); purchaserId = dbPurchaser.Id; diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index 9fa4e91..0995f7f 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -197,6 +197,7 @@ namespace BBWYB.Server.Business var purchaser = new Purchaser() { Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), + Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), Location = jobject["data"]["1081181309101"] != null ? jobject["data"]["1081181309101"]["data"]["location"].ToString() : diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 54d8390..2347173 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -30,6 +30,7 @@ namespace BBWYB.Server.Business addPurchaserList.Add(new Purchaser() { Id = scheme.PurchaserId, + Id2 = scheme.PurchaserId2, Name = scheme.PurchaserName, Location = scheme.PurchaserLocation, Platform = scheme.PurchasePlatform @@ -163,6 +164,7 @@ namespace BBWYB.Server.Business SkuId = ps.SkuId, ShopId = ps.ShopId, PurchaserId = p.Id, + PurchaserId2 = p.Id2, PurchaserName = p.Name, PurchaserLocation = p.Location, DefaultCost = ps.DefaultCost, diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs index 6833df3..d04021f 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs @@ -11,11 +11,17 @@ namespace BBWYB.Server.Model.Db { /// - /// 采购商Id + /// 采购商Id (1688 SellerUserId) /// [Column(StringLength = 20, IsPrimary = true, IsNullable = false)] public string Id { get; set; } + /// + /// 采购商Id2 (1688 SellerLoginId) + /// + [Column(StringLength = 20)] + public string Id2 { get; set; } + /// /// 采购商名称 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index 6d07002..fda1121 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -19,6 +19,12 @@ namespace BBWYB.Server.Model.Dto /// 采购商Id /// public string PurchaserId { get; set; } + + /// + /// 采购商Id + /// + public string PurchaserId2 { get; set; } + /// /// 采购商名称 /// diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs index 30bbb75..f322e0a 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs @@ -8,6 +8,8 @@ namespace BBWYB.Server.Model.Dto { public string PurchaserName { get; set; } + public string PurchaserId2 { get; set; } + public string PurchaserLocation { get; set; } public new List PurchaseSchemeProductList { get; set; } From d5e2eee528f41e17e4c02868f6cc669813c895e2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 17:29:06 +0800 Subject: [PATCH 35/70] 10129 --- .../APIServices/PurchaseProductAPIService.cs | 1 + BBWYB.Client/GlobalContext.cs | 2 +- .../APIModel/Response/PurchaseSchemeResponse.cs | 5 +++++ BBWYB.Client/Models/Product/Purchaser.cs | 2 ++ .../Models/PurchaseScheme/PurchaseScheme.cs | 1 + .../Ware/BindingPurchaseProductViewModel.cs | 8 +++++++- .../ViewModels/Ware/WareManagerViewModel.cs | 16 +++++++++++----- 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs index f3ddb57..b5f42d4 100644 --- a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs +++ b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs @@ -195,6 +195,7 @@ namespace BBWYB.Client.APIServices var purchaser = new Purchaser() { Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), + Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), Location = jobject["data"]["1081181309101"] != null ? jobject["data"]["1081181309101"]["data"]["location"].ToString() : diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 911130a..02ac109 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10028"; + BBWYBApiVersion = "10029"; } private User user; diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs index c44c023..b010fef 100644 --- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs @@ -15,6 +15,11 @@ namespace BBWYB.Client.Models /// 采购商Id /// public string PurchaserId { get; set; } + + /// + /// 采购商Id + /// + public string PurchaserId2 { get; set; } public string PurchaserName { get; set; } /// /// 发货地 diff --git a/BBWYB.Client/Models/Product/Purchaser.cs b/BBWYB.Client/Models/Product/Purchaser.cs index 9d0040d..0b021fb 100644 --- a/BBWYB.Client/Models/Product/Purchaser.cs +++ b/BBWYB.Client/Models/Product/Purchaser.cs @@ -11,6 +11,8 @@ namespace BBWYB.Client.Models public string Id { get; set; } + public string Id2 { get; set; } + public string Name { get; set; } /// diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs index bb84ac1..3d5ad1c 100644 --- a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs @@ -22,6 +22,7 @@ namespace BBWYB.Client.Models public decimal RealCost { get => realCost; set { SetProperty(ref realCost, value); } } public string PurchaserId { get; set; } + public string PurchaserId2 { get; set; } public string PurchaserName { get; set; } public string PurchaserLocation { get; set; } public string PurchaseProductId1 { get; set; } diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index 2a8ec79..85775b6 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -35,6 +35,9 @@ namespace BBWYB.Client.ViewModels public IList ProductSkuList { get; set; } public string PurchaserId { get; set; } + + public string PurchaserId2 { get; set; } + public string PurchaserName { get => purchaserName; set { SetProperty(ref purchaserName, value); } } public string PurchaserLocation { get; set; } public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } } @@ -85,11 +88,12 @@ namespace BBWYB.Client.ViewModels }; } - public void SetData(IList productSkuList, string purchaserId, string purchaserName, Platform purchasePlatform) + public void SetData(IList productSkuList, string purchaserId, string purchaserId2, string purchaserName, Platform purchasePlatform) { this.ProductSkuList = productSkuList; //this.Product = product; this.PurchaserId = purchaserId; + this.PurchaserId2 = purchaserId2; this.PurchaserName = purchaserName; this.PurchasePlatform = purchasePlatform; } @@ -177,6 +181,7 @@ namespace BBWYB.Client.ViewModels } PurchaserId = data.Value.purchaser.Id; + PurchaserId2 = data.Value.purchaser.Id2; PurchaserName = data.Value.purchaser.Name; PurchaserLocation = data.Value.purchaser.Location; @@ -315,6 +320,7 @@ namespace BBWYB.Client.ViewModels var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId); productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId; + productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2; productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName; productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation; productSku.SelectedPurchaseScheme.DefaultCost = productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Sum(p => p.PurchaseSchemeProductSkuList.Count() == 0 ? 0 : p.PurchaseSchemeProductSkuList.Sum(s => s.Price)); diff --git a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs index 78bbdc0..5661f0a 100644 --- a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs @@ -242,7 +242,13 @@ namespace BBWYB.Client.ViewModels var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId); if (purchaser == null) { - purchaser = new Purchaser() { Id = pscheme.PurchaserId, Name = pscheme.PurchaserName, ProductId = product.Id }; + purchaser = new Purchaser() + { + Id = pscheme.PurchaserId, + Id2 = pscheme.PurchaserId2, + Name = pscheme.PurchaserName, + ProductId = product.Id + }; product.PurchaserList.Add(purchaser); } purchaser.SkuUseCount++; @@ -260,13 +266,13 @@ namespace BBWYB.Client.ViewModels return; } - OpenBindingView(product, string.Empty, string.Empty); + OpenBindingView(product, string.Empty, string.Empty, string.Empty); } private void EditPurchaser(Purchaser purchaser) { var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); - OpenBindingView(product, purchaser.Id, purchaser.Name); + OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name); } private void DeletePurchaser(Purchaser purchaser) @@ -306,10 +312,10 @@ namespace BBWYB.Client.ViewModels }); } - private void OpenBindingView(Product product, string purchaserId, string purchaserName) + private void OpenBindingView(Product product, string purchaserId, string purchaserId2, string purchaserName) { var skuList = product.SkuList; - bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserName, product.SelectedPurchasePlatformModel); + bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel); var bindingView = new BindingPurchaseProduct(); var r = bindingView.ShowDialog(); if (r == true) From faa314dc0073f77363b47cba4d5b14df7b0505c0 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 18:01:15 +0800 Subject: [PATCH 36/70] 1 --- SDKAdapter/ExpressCompanyNameConverter.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SDKAdapter/ExpressCompanyNameConverter.cs b/SDKAdapter/ExpressCompanyNameConverter.cs index 65906b7..7ea24ce 100644 --- a/SDKAdapter/ExpressCompanyNameConverter.cs +++ b/SDKAdapter/ExpressCompanyNameConverter.cs @@ -126,7 +126,8 @@ namespace SDKAdapter new LogisticsCompanyRelationship(){SourceName="信丰物流",TargetName="信丰物流",TargetCode="xinfengwuliu"}, new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"}, new LogisticsCompanyRelationship(){SourceName="速腾快递",TargetName="速腾快递",TargetCode="suteng"}, - new LogisticsCompanyRelationship(){SourceName="运通快运",TargetName="运通快运",TargetCode="ytky168"} + new LogisticsCompanyRelationship(){SourceName="运通快运",TargetName="运通快运",TargetCode="ytky168"}, + new LogisticsCompanyRelationship(){SourceName="汇森速运",TargetName="汇森速运",TargetCode="huisenky"} }); } From 2443a4ef0b558dbc43d20570d1137578d1a33f0d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 18 Jul 2023 21:49:09 +0800 Subject: [PATCH 37/70] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 10 +++ .../PurchaseOrder/PurchaseOrderBusiness.cs | 88 +++++++++++++++++-- .../DeletePurchaseOrderRequest.cs | 6 ++ 3 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseOrder/DeletePurchaseOrderRequest.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index f1ab9e4..877a32b 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -91,6 +91,16 @@ namespace BBWYB.Server.API.Controllers purchaseOrderBusiness.SetHistoryPurchaseOrder(request); } + /// + /// 删除历史采购单 + /// + /// + [HttpDelete] + public void DeletePurchaseOrder([FromBody] DeletePurchaseOrderRequest request) + { + purchaseOrderBusiness.DeletePurchaseOrder(request); + } + /// /// 手动签收采购单 /// diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 6bade0a..ceecd06 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1127,6 +1127,12 @@ namespace BBWYB.Server.Business public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request) { nLogManager.Default().Info($"SetHistoryPurchaseOrder {JsonConvert.SerializeObject(request)}"); + + var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + if (historyPurchaseOrder == null) + throw new BusinessException("未查询到采购单"); + var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); @@ -1137,12 +1143,6 @@ namespace BBWYB.Server.Business var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M; dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); - - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); - var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); - if (historyPurchaseOrder == null) - throw new BusinessException("未查询到采购单"); - #region 找出失效的快递单 List deleteWaybillNoList = new List(); @@ -1161,7 +1161,6 @@ namespace BBWYB.Server.Business } #endregion - orderPurchaseInfoList.Remove(historyPurchaseOrder); dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); @@ -1194,6 +1193,81 @@ namespace BBWYB.Server.Business }); } + public void DeletePurchaseOrder(DeletePurchaseOrderRequest request) + { + nLogManager.Default().Info($"DeletePurchaseOrder {JsonConvert.SerializeObject(request)}"); + + //var po = fsql.Select().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId).ToOne(); + //if (po == null) + // throw new BusinessException("采购单不不存在"); + //var orderId = po.OrderId; + + var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + var deletePurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + if (deletePurchaseOrder == null) + throw new BusinessException("采购单不不存在"); + + var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && + ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); + var dbOrderCost = fsql.Select(request.OrderId).ToOne(); + var dbOrder = fsql.Select(request.OrderId).ToOne(); + + 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; + dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); + + + #region 找出失效的快递单 + List deleteWaybillNoList = new List(); + + //查询该采购单所使用的快递单号 + var useWaybillNos = fsql.Select().Where(eori => eori.PurchaseOrderId == request.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 == request.PurchaseOrderId)) + deleteWaybillNoList.Add(group.Key); + } + #endregion + + orderPurchaseInfoList.Remove(deletePurchaseOrder); + while (orderPurchaseInfoList.Any(opi => opi.IsEnabled == false)) + { + var historyPo = orderPurchaseInfoList.FirstOrDefault(opi => opi.IsEnabled == false); + orderPurchaseInfoList.Remove(historyPo); + } + dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); + + fsql.Transaction(() => + { + fsql.Delete(deletePurchaseOrder.Id).ExecuteAffrows(); + + fsql.Update() + .Set(ocd => ocd.IsEnabled, false) + .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId) + .ExecuteAffrows(); + + fsql.Delete().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + fsql.Delete().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + + fsql.Delete().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + if (deleteWaybillNoList.Count() > 0) + fsql.Delete(deleteWaybillNoList).ExecuteAffrows(); + + fsql.Delete().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId) + .ExecuteAffrows(); + + fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); + fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); + }); + } + /// /// 修改采购快递单 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/DeletePurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/DeletePurchaseOrderRequest.cs new file mode 100644 index 0000000..81fa3ad --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/DeletePurchaseOrderRequest.cs @@ -0,0 +1,6 @@ +namespace BBWYB.Server.Model.Dto +{ + public class DeletePurchaseOrderRequest : SetHistoryPurchaseOrderRequest + { + } +} From 99e1c9e0622f800243d78dd25b42cce427f485f1 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 20 Jul 2023 11:14:42 +0800 Subject: [PATCH 38/70] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E5=8F=91?= =?UTF-8?q?=E5=85=A5=E4=BB=93=E8=AE=A2=E5=8D=95=E7=9A=84=E5=BF=AB=E9=80=92?= =?UTF-8?q?=E5=BD=92=E5=B1=9E=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseExpressOrderExtension.cs | 21 ++------- BBWYB.Server.Business/Order/OrderBusiness.cs | 47 +++++-------------- 2 files changed, 14 insertions(+), 54 deletions(-) diff --git a/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs b/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs index ad26a54..db654d7 100644 --- a/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs +++ b/BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs @@ -10,10 +10,12 @@ namespace BBWYB.Server.Business.Extensions /// 计算快递单归属 /// /// 必须是经过与快递单关系表进行联合查询的结果 (ExpressOrderRelationInfo-PurchaseExpressOrder) + /// /// /// /// public static void CalculationBelongOrderSku(this PurchaseExpressOrderResponse purchaseExpressOrder, + Enums.IntoStoreType? intoStoreType, IList orderPurchaseInfoList, IList orderPurchaseRelationInfoList, IList orderPurchaseSkuInfoList) @@ -21,7 +23,7 @@ namespace BBWYB.Server.Business.Extensions var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId); if (purchaseOrder == null) return; - if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) + if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴 && intoStoreType != Enums.IntoStoreType.厂商代发入仓) { var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo && posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId) @@ -32,27 +34,10 @@ namespace BBWYB.Server.Business.Extensions .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 21d3e30..9921777 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -245,7 +245,10 @@ namespace BBWYB.Server.Business #region 处理SKU的快递单 foreach (var purchaseExpressOrder in purchaseExpressOrderList) { - purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationInfoList, orderPurchaseSkuInfoList); + var order = orderList.FirstOrDefault(o => o.Id == purchaseExpressOrder.OrderId); + if (order == null) + continue; + purchaseExpressOrder.CalculationBelongOrderSku(order.IntoStoreType, orderPurchaseInfoList, orderPurchaseRelationInfoList, orderPurchaseSkuInfoList); var currentOrderSkuList = orderSkuList.Where(osku => !string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds) && osku.OrderId == purchaseExpressOrder.OrderId && purchaseExpressOrder.BelongSkuIds.Contains(osku.SkuId)).ToList(); @@ -310,7 +313,7 @@ namespace BBWYB.Server.Business TargetExpressName = peo.TargetExpressName, WaybillNo = peo.WaybillNo }); - + var order = fsql.Select(request.OrderId).ToOne(); 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(); @@ -320,7 +323,7 @@ namespace BBWYB.Server.Business #region 处理SKU的快递单 foreach (var purchaseExpressOrder in purchaseExpressOrderList) { - purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList); + purchaseExpressOrder.CalculationBelongOrderSku(order.IntoStoreType, orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList); if (!string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds)) { if (purchaseExpressOrder.BelongSkuIds.Contains(orderSku.SkuId)) @@ -330,37 +333,6 @@ namespace BBWYB.Server.Business } } } - //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; } @@ -385,7 +357,7 @@ namespace BBWYB.Server.Business TargetExpressName = peo.TargetExpressName, WaybillNo = peo.WaybillNo }); - + var orderList = fsql.Select(orderIds).ToList(); 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(); @@ -393,7 +365,10 @@ namespace BBWYB.Server.Business #region 处理SKU的快递单 foreach (var purchaseExpressOrder in purchaseExpressOrderList) { - purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList); + var order = orderList.FirstOrDefault(o => o.Id == purchaseExpressOrder.OrderId); + if (order == null) + continue; + purchaseExpressOrder.CalculationBelongOrderSku(order.IntoStoreType, orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList); } #endregion return purchaseExpressOrderList; From 1b1c37f674cccc69917719a6ebcb227ffbd4a5a6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 20 Jul 2023 13:05:11 +0800 Subject: [PATCH 39/70] =?UTF-8?q?=E8=AE=A2=E5=8D=95sku=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E8=A3=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 42 +++++++++++++++++++ .../Dto/Response/Order/OrderSkuResponse.cs | 5 +++ 2 files changed, 47 insertions(+) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 9921777..35ef554 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -277,10 +277,52 @@ namespace BBWYB.Server.Business { foreach (var orderSku in order.ItemList) { + #region 寻找sku的限时任务 var purchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); if (purchaseTimeLimitTask != null) orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask); orderSku.PurchaseTimeLimitTask = orderSku.TimeLimitTaskList.FirstOrDefault(t => t.TaskType == Enums.TimeLimitTaskType.采购任务); + #endregion + + #region 判断sku的发货状态 + var purchaseOrder = order.OrderPurchaseInfoList.FirstOrDefault(opi => opi.OrderId == order.Id && opi.BelongSkuIds.Contains(orderSku.SkuId)); + if (purchaseOrder != null) + { + if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴 && order.IntoStoreType != Enums.IntoStoreType.厂商代发入仓) + { + //验证采购关系 + var currentSku_PurchaseSkuIdList = orderPurchaseRelationInfoList.Where(opri => opri.OrderId == order.Id && + opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId && + opri.BelongSkuId == orderSku.SkuId) + .Select(x => x.PurchaseSkuId) + .Distinct() + .ToList(); + if (currentSku_PurchaseSkuIdList.Count() > 0) + { + var currentSku_PurchaseSkuList = orderPurchaseSkuInfoList.Where(posku => posku.OrderId == order.Id && + posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId && + currentSku_PurchaseSkuIdList.Contains(posku.PurchaseSkuId)) + .ToList(); + if (currentSku_PurchaseSkuList.Count() > 0) + { + var totalCount = currentSku_PurchaseSkuList.Count(); + var shipCount = currentSku_PurchaseSkuList.Count(posku => !string.IsNullOrEmpty(posku.WaybillNo)); + if (totalCount == shipCount) + orderSku.ShipState = 1; + if (shipCount == 0) + orderSku.ShipState = 0; + if (totalCount > shipCount) + orderSku.ShipState = 2; + } + } + } + else + { + orderSku.ShipState = purchaseOrder.PurchaseExpressOrderList != null && + purchaseOrder.PurchaseExpressOrderList.Count() > 0 ? 1 : 0; + } + } + #endregion } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index ccefa76..a883c01 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -10,6 +10,11 @@ namespace BBWYB.Server.Model.Dto TimeLimitTaskList = new List(); } + /// + /// 订单SKU发货状态 (未发货=0,已发货=1,部分发=2) + /// + public int ShipState { get; set; } + /// /// 快递单列表 /// From 2e61d573ef772df3cec12d386377297c25528361 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 20 Jul 2023 13:08:57 +0800 Subject: [PATCH 40/70] =?UTF-8?q?=E8=AE=A2=E5=8D=95sku=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 35ef554..a06e331 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -299,11 +299,9 @@ namespace BBWYB.Server.Business .ToList(); if (currentSku_PurchaseSkuIdList.Count() > 0) { - var currentSku_PurchaseSkuList = orderPurchaseSkuInfoList.Where(posku => posku.OrderId == order.Id && - posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId && - currentSku_PurchaseSkuIdList.Contains(posku.PurchaseSkuId)) - .ToList(); - if (currentSku_PurchaseSkuList.Count() > 0) + var currentSku_PurchaseSkuList = purchaseOrder.OrderPurchaseSkuInfoList?.Where(posku => currentSku_PurchaseSkuIdList.Contains(posku.PurchaseSkuId)) + ?.ToList(); + if (currentSku_PurchaseSkuList != null && currentSku_PurchaseSkuList.Count() > 0) { var totalCount = currentSku_PurchaseSkuList.Count(); var shipCount = currentSku_PurchaseSkuList.Count(posku => !string.IsNullOrEmpty(posku.WaybillNo)); From 42c0f26ecedb4ba1947f489b18c605cc51a25ef2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 20 Jul 2023 19:34:58 +0800 Subject: [PATCH 41/70] 1 --- BBWYB.Server.API/Controllers/OrderController.cs | 10 ++++++++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 15 +++++++++++++-- BBWYB.Server.Model/Db/Order/OrderSku.cs | 4 ---- .../QikuPublishOrderSkuPackConfigStateRequest.cs | 11 +++++++++++ BBWYB.Server.Model/Enums.cs | 13 +++++++------ 5 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/QiKu/QikuPublishOrderSkuPackConfigStateRequest.cs diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index 958666a..e381a72 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -144,5 +144,15 @@ namespace BBWYB.Server.API.Controllers { return orderBusiness.StatisticsOrderCountByOrderState(shopId); } + + /// + /// 齐库推送sku配置状态 + /// + /// + [HttpPost] + public void QikuPublishOrderSkuPackConfigState([FromBody] QikuPublishOrderSkuPackConfigStateRequest request) + { + orderBusiness.QikuPublishOrderSkuPackConfigState(request); + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index a06e331..dd7aff5 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -21,10 +21,12 @@ namespace BBWYB.Server.Business { private OP_PlatformClientFactory opPlatformClientFactory; private RestApiService restApiService; + private IList waitConfigStateList; public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) { this.opPlatformClientFactory = opPlatformClientFactory; this.restApiService = restApiService; + waitConfigStateList = new List() { Enums.PackConfigState.待配置, Enums.PackConfigState.需修改 }; } private ISelect GetOrderListQueryConditions(QueryOrderRequest request) @@ -47,7 +49,7 @@ namespace BBWYB.Server.Business .WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku) .WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku) .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId) - .WhereIf(request.IsWaitConfig, osku => osku.PackConfigState == Enums.PackConfigState.待配置 || osku.PackConfigState == null); + .WhereIf(request.IsWaitConfig, osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null); select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消) .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IsPurchased == true) @@ -640,7 +642,7 @@ namespace BBWYB.Server.Business OrderCount = g.Count() }); - var childSelect = fsql.Select().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.待配置 || osku.PackConfigState == null); + var childSelect = fsql.Select().As("osku").Where(osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null); var waitConfigCount = fsql.Select().Where(o => o.ShopId == shopId) .Where(o => !noOrderStateList.Contains(o.OrderState.Value)) .Where(o => o.IntoStoreType == Enums.IntoStoreType.发回齐越) @@ -662,5 +664,14 @@ namespace BBWYB.Server.Business WaitConfigCount = waitConfigCount, }; } + + /// + /// 齐库推送sku配置状态 + /// + /// + public void QikuPublishOrderSkuPackConfigState(QikuPublishOrderSkuPackConfigStateRequest request) + { + + } } } diff --git a/BBWYB.Server.Model/Db/Order/OrderSku.cs b/BBWYB.Server.Model/Db/Order/OrderSku.cs index cedf9ec..2d07800 100644 --- a/BBWYB.Server.Model/Db/Order/OrderSku.cs +++ b/BBWYB.Server.Model/Db/Order/OrderSku.cs @@ -70,10 +70,6 @@ namespace BBWYB.Server.Model.Db public string Title { get; set; } - - /// - /// 打包配置状态(0=待配置, 1=已配置) - /// [Column(DbType = "int(1)", MapType = typeof(int?))] public Enums.PackConfigState? PackConfigState { get; set; } diff --git a/BBWYB.Server.Model/Dto/Request/QiKu/QikuPublishOrderSkuPackConfigStateRequest.cs b/BBWYB.Server.Model/Dto/Request/QiKu/QikuPublishOrderSkuPackConfigStateRequest.cs new file mode 100644 index 0000000..7767790 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/QiKu/QikuPublishOrderSkuPackConfigStateRequest.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QikuPublishOrderSkuPackConfigStateRequest + { + public string OrderId { get; set; } + + public string SkuId { get; set; } + + public Enums.PackConfigState PackConfigState { get; set; } + } +} diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index 46b516e..caf06b6 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -103,10 +103,10 @@ public enum PurchaseOrderState { 待发货 = 0, - 部分发货 = 1, - 待收货 = 10, - 部分收货 = 11, - 已签收 = 20, + 部分发货 = 1, + 待收货 = 10, + 部分收货 = 11, + 已签收 = 20, 已取消 = 100 } @@ -290,12 +290,13 @@ } /// - /// 打包配置状态 待配置 = 0,已配置 = 1 + /// 打包配置状态 待配置 = 0,已配置 = 1,需修改 = 2 /// public enum PackConfigState { 待配置 = 0, - 已配置 = 1 + 已配置 = 1, + 需修改 = 2 } /// From 2375fe11c386a6f12704baf08db832ddf794ca25 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 22 Jul 2023 01:15:26 +0800 Subject: [PATCH 42/70] =?UTF-8?q?1.=E8=AE=A2=E5=8D=95sku=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=20=20=20?= =?UTF-8?q?=201.1=20=E6=94=B6=E5=88=B0=E9=9C=80=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=9D=A1=E4=BB=B6=E5=88=9B=E5=BB=BA=E5=90=88?= =?UTF-8?q?=E6=A0=BC=E8=AF=81=E8=A1=A5=E5=85=85=E4=BB=BB=E5=8A=A1=20=20=20?= =?UTF-8?q?=201.2=20=E6=94=B6=E5=88=B0=E5=B7=B2=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=90=88=E6=A0=BC=E8=AF=81=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=20=20=20=201.3=20=E6=9B=B4=E6=96=B0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95SKU=E9=85=8D=E7=BD=AE=E7=8A=B6=E6=80=81=202.=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E9=87=87=E8=B4=AD=E5=8D=95=E5=92=8C=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=97=B6=E6=A0=B9=E6=8D=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=88=9B=E5=BB=BA=E5=90=88=E6=A0=BC=E8=AF=81=E6=8B=9F?= =?UTF-8?q?=E5=AE=9A=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 25 ++-- .../PurchaseOrder/PurchaseOrderBusiness.cs | 6 +- BBWYB.Server.Business/QiKuManager.cs | 107 ++++++++++++++++-- BBWYB.Server.Model/Enums.cs | 4 +- 4 files changed, 123 insertions(+), 19 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index dd7aff5..2b0502d 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -7,6 +7,7 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; @@ -19,13 +20,23 @@ namespace BBWYB.Server.Business { public class OrderBusiness : BaseBusiness, IDenpendency { - private OP_PlatformClientFactory opPlatformClientFactory; - private RestApiService restApiService; + private IList waitConfigStateList; - public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) + + private Lazy qikuManagerLazy; + private Lazy opPlatformClientFactoryLazy; + private Lazy restApiServiceLazy; + + private OP_PlatformClientFactory opPlatformClientFactory => opPlatformClientFactoryLazy.Value; + private RestApiService restApiService => restApiServiceLazy.Value; + private QiKuManager qikuManager => qikuManagerLazy.Value; + + public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) { - this.opPlatformClientFactory = opPlatformClientFactory; - this.restApiService = restApiService; + qikuManagerLazy = new Lazy(() => serviceProvider.GetService()); + opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService()); + restApiServiceLazy = new Lazy(() => serviceProvider.GetService()); + waitConfigStateList = new List() { Enums.PackConfigState.待配置, Enums.PackConfigState.需修改 }; } @@ -670,8 +681,8 @@ namespace BBWYB.Server.Business /// /// public void QikuPublishOrderSkuPackConfigState(QikuPublishOrderSkuPackConfigStateRequest request) - { - + { + qikuManager.QikuPublishOrderSkuPackConfigState(request); } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ceecd06..589f8b4 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -507,7 +507,7 @@ namespace BBWYB.Server.Business notifyQikuPackSchemeParamList != null && notifyQikuPackSchemeParamList.Count() > 0) { - Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, orderSkus), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(dbOrder, notifyQikuPackSchemeParamList, orderSkus), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } #endregion @@ -524,6 +524,7 @@ namespace BBWYB.Server.Business .Where(t => t.OrderId == request.OrderId) .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) .Where(t => t.CompletionTime == null) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) .ExecuteAffrows(); } @@ -970,7 +971,7 @@ namespace BBWYB.Server.Business if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越 && notifyQikuPackSchemeParamList.Count() > 0) { - Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, dbOrderSkuList), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(dbOrder, notifyQikuPackSchemeParamList, dbOrderSkuList), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } #endregion @@ -990,6 +991,7 @@ namespace BBWYB.Server.Business .Where(t => t.OrderId == request.OrderId) .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) .Where(t => t.CompletionTime == null) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) .ExecuteAffrows(); } if (updateOrderPurchaseInfoList.Count() > 0) diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index b0e61b8..272a2b4 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -6,18 +6,19 @@ using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json; +using Yitter.IdGenerator; namespace BBWYB.Server.Business { - public class QiKuManager : IDenpendency + public class QiKuManager : BaseBusiness, IDenpendency { private RestApiService restApiService; private IFreeSql fsql; private NLogManager nLogManager; - public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager) + + public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) { this.restApiService = restApiService; - this.fsql = fsql; } /// @@ -124,16 +125,17 @@ namespace BBWYB.Server.Business /// /// 查询齐库合格证 /// - /// + /// /// /// - public void SearchCerConfigured(string orderId, IList packTaskSkuPurchaseSchemeIdList, IList orderSkuList) + public void SearchCerConfigured(Order order, IList packTaskSkuPurchaseSchemeIdList, IList orderSkuList) { try { + nLogManager.Default().Info($"SearchCerConfigured OrderId {order.Id}, packTaskSkuPurchaseSchemeIdList {JsonConvert.SerializeObject(packTaskSkuPurchaseSchemeIdList)}"); var restApiResult = restApiService.SendRequest("http://qiku.qiyue666.com", "api/PackPurchaseTask/SearchCerConfigured", new { - orderId, + orderId = order.Id, packTaskSkuPurchaseSchemeIdList }, null, HttpMethod.Post); @@ -146,6 +148,7 @@ namespace BBWYB.Server.Business if (response.Data.PackTaskSkuPurchaseSchemeIdList != null && response.Data.PackTaskSkuPurchaseSchemeIdList.Count() > 0) { IList> updateOrderSkuList = new List>(); + List insertTimeLimitTaskList = new List(); foreach (var skuConfigured in response.Data.PackTaskSkuPurchaseSchemeIdList) { var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == skuConfigured.SkuId); @@ -160,9 +163,21 @@ namespace BBWYB.Server.Business updateOrderSkuList.Add(update); } - if (qiKuPackState == Enums.PackConfigState.待配置) + if (qiKuPackState == Enums.PackConfigState.待配置 && order.ShopId != 9) { //创建合格证拟定任务 + var t = new TimeLimitTask() + { + CreateTme = DateTime.Now, + Id = idGenerator.NewLong(), + OrderId = order.Id, + SkuId = orderSku.SkuId, + OrderSn = order.OrderSn, + ShopId = order.ShopId, + TaskType = Enums.TimeLimitTaskType.合格证拟定任务, + ExpirationTime = DateTime.Now.AddDays(1), + }; + insertTimeLimitTaskList.Add(t); } } @@ -173,13 +188,89 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderSkuList) update.ExecuteAffrows(); } + if (insertTimeLimitTaskList.Count() > 0) + fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); }); } } catch (Exception ex) { - nLogManager.Default().Error(ex, $"SearchCerConfigured\r\n{JsonConvert.SerializeObject(new { orderId, packTaskSkuPurchaseSchemeIdList })}"); + nLogManager.Default().Error(ex, $"SearchCerConfigured\r\n{JsonConvert.SerializeObject(new { order.Id, packTaskSkuPurchaseSchemeIdList })}"); } } + + + /// + /// 齐库推送sku配置状态 + /// + /// + public void QikuPublishOrderSkuPackConfigState(QikuPublishOrderSkuPackConfigStateRequest request) + { + var order = fsql.Select(request.OrderId).ToOne(); + if (order == null) + throw new BusinessException($"未查询到订单{request.OrderId}"); + + if (request.PackConfigState == Enums.PackConfigState.需修改 && order.ShopId != 9) + return; + + var orderSku = fsql.Select().Where(osku => osku.OrderId == request.OrderId && osku.BelongSkuId == request.SkuId).ToOne(); + if (orderSku == null) + throw new BusinessException($"未查询到订单来源sku{request.SkuId}"); + + + IInsert insertTimeLimitTask = null; + IUpdate updateTimeLimitTask = null; + IUpdate updateOrderSku = null; + + if (orderSku.PackConfigState != request.PackConfigState) + updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.PackConfigState, request.PackConfigState); + + if (request.PackConfigState == Enums.PackConfigState.需修改) + { + var isExists = fsql.Select().Where(t => t.OrderId == request.OrderId && + t.SkuId == orderSku.SkuId && + t.TaskType == Enums.TimeLimitTaskType.合格证补充任务) + .Any(); + if (!isExists) + { + var t = new TimeLimitTask() + { + CreateTme = DateTime.Now, + Id = idGenerator.NewLong(), + OrderId = request.OrderId, + SkuId = orderSku.SkuId, + OrderSn = order.OrderSn, + ShopId = order.ShopId, + TaskType = Enums.TimeLimitTaskType.合格证补充任务 + }; + if (DateTime.Now.Hour < 16) + t.ExpirationTime = DateTime.Now.AddHours(2); + else + t.ExpirationTime = DateTime.Now.Date.AddDays(1).AddHours(13); + insertTimeLimitTask = fsql.Insert(t); + } + } + else if (request.PackConfigState == Enums.PackConfigState.已配置) + { + var taskTypeList = new List() + { + Enums.TimeLimitTaskType.合格证拟定任务, + Enums.TimeLimitTaskType.合格证补充任务 + }; + updateTimeLimitTask = fsql.Update().Set(t => t.CompletionTime, DateTime.Now) + .Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) + .Where(t => t.OrderId == request.OrderId) + .Where(t => t.SkuId == orderSku.SkuId) + .Where(t => t.CompletionTime == null) + .Where(t => taskTypeList.Contains(t.TaskType)); + } + + fsql.Transaction(() => + { + insertTimeLimitTask?.ExecuteAffrows(); + updateTimeLimitTask?.ExecuteAffrows(); + updateOrderSku?.ExecuteAffrows(); + }); + } } } diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index caf06b6..48a2e81 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -308,11 +308,11 @@ } /// - /// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11 + /// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20 /// public enum TimeLimitTaskType { - 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11 + 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20 } } } From 58c99f9a447fe01f485da8d675840eef67b166b9 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 22 Jul 2023 21:56:22 +0800 Subject: [PATCH 43/70] =?UTF-8?q?3.=E6=A0=B9=E6=8D=AE=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=BE=85=E6=A0=B8=E7=AE=97=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=204.=E6=A0=B8=E7=AE=97=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A0=B8=E7=AE=97=E4=BB=BB=E5=8A=A1=E5=AE=8C=E6=88=90=E9=80=BB?= =?UTF-8?q?=E8=BE=91=205.=E8=AE=A2=E5=8D=95=E6=90=9C=E7=B4=A2=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=96=B0=E5=A2=9E=20=20=205.1=20=E5=BE=85=E9=85=8D?= =?UTF-8?q?=E7=BD=AE-=E4=BB=85=E6=98=BE=E7=A4=BA=E9=9C=80=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=20=205.2=20=E5=BE=85=E9=85=8D=E7=BD=AE-=E4=BB=85?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=85=8D=E7=BD=AE=E8=B6=85=E6=97=B6(?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E8=AF=81=E6=8B=9F=E5=AE=9A=E6=88=96=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E8=B6=85=E6=97=B6)=20=20=205.3=20=E5=BE=85=E6=A0=B8?= =?UTF-8?q?=E7=AE=97-=E4=BB=85=E6=98=BE=E7=A4=BA=E8=B6=85=E6=97=B6=20=20?= =?UTF-8?q?=205.4=20=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?=206.=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2=E8=BF=94=E5=9B=9Esku?= =?UTF-8?q?=E7=9A=84=E5=90=88=E6=A0=BC=E8=AF=81=E6=8B=9F=E5=AE=9A=E6=88=96?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E8=AF=81=E8=A1=A5=E5=85=85=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?(=E5=A6=82=E6=9E=9C=E6=9C=89)=207.=E7=BB=A9=E6=95=88=E8=80=83?= =?UTF-8?q?=E6=A0=B8=E5=A2=9E=E5=8A=A0=E5=90=88=E6=A0=BC=E8=AF=81=E6=8B=9F?= =?UTF-8?q?=E5=AE=9A=E4=BB=BB=E5=8A=A1=E5=92=8C=E5=90=88=E6=A0=BC=E8=AF=81?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 97 ++++++++++++++----- .../PurchaseOrder/PurchaseOrderBusiness.cs | 26 +++++ BBWYB.Server.Business/QiKuManager.cs | 20 ++-- .../TimeLimitTask/TimeLimitTaskBusiness.cs | 28 +++++- .../Dto/Request/Order/QueryOrderRequest.cs | 15 +++ .../Dto/Response/Order/OrderSkuResponse.cs | 25 ++++- .../TimeLimitTaskStatisticsResponse.cs | 9 +- 7 files changed, 178 insertions(+), 42 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 2b0502d..b22b880 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -31,6 +31,8 @@ namespace BBWYB.Server.Business private RestApiService restApiService => restApiServiceLazy.Value; private QiKuManager qikuManager => qikuManagerLazy.Value; + private List hgzTaskTypeList; + public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) { qikuManagerLazy = new Lazy(() => serviceProvider.GetService()); @@ -38,6 +40,12 @@ namespace BBWYB.Server.Business restApiServiceLazy = new Lazy(() => serviceProvider.GetService()); waitConfigStateList = new List() { Enums.PackConfigState.待配置, Enums.PackConfigState.需修改 }; + + hgzTaskTypeList = new List() + { + Enums.TimeLimitTaskType.合格证拟定任务, + Enums.TimeLimitTaskType.合格证补充任务 + }; } private ISelect GetOrderListQueryConditions(QueryOrderRequest request) @@ -60,11 +68,21 @@ namespace BBWYB.Server.Business .WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku) .WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku) .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId) - .WhereIf(request.IsWaitConfig, osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null); + .WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState != 1, osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null) + .WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState == 1, osku => osku.PackConfigState == Enums.PackConfigState.需修改); select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消) .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IsPurchased == true) .Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); + + if (request.IsWaitConfig && request.IsOnlyDisplayCerConfigTimeOut == 1) + { + var configTimeOutChildSelect = fsql.Select().As("t") + .Where(t => t.ShopId == request.ShopId) + .Where(t => hgzTaskTypeList.Contains(t.TaskType)) + .Where(t => t.IsTimely == false); + select = select.Where((o, ocs, oct) => configTimeOutChildSelect.Where(t => t.OrderId == o.Id).Any()); + } } if (request.IsOnlyDisplayPurchaseTimeOut == 1 && (request.OrderState == Enums.OrderState.等待采购 || request.OrderState == Enums.OrderState.部分采购)) @@ -75,22 +93,34 @@ namespace BBWYB.Server.Business .Where(t => t.IsTimely == false); select = select.Where((o, ocs, oct) => childSelect.Where(t => t.OrderId == o.Id).Any()); } - if (request.IsOnlyDisplayDeliveryTimeout == 1 && (request.OrderState == Enums.OrderState.待发货 || request.OrderState == Enums.OrderState.部分发货)) + + if (request.IsOnlyDisplayCheckComputationTimeOut == 1 && request.OrderState == Enums.OrderState.待核算) { - var before24hTime = DateTime.Now.AddHours(-24); - var childSelect = fsql.Select().As("opi2") - .Where(opi2 => opi2.ShopId == request.ShopId && - (opi2.OrderState == Enums.PurchaseOrderState.待发货 || opi2.OrderState == Enums.PurchaseOrderState.部分发货) && - opi2.CreateTime < before24hTime); - select = select.Where((o, ocs, oct) => childSelect.Where(opi2 => opi2.OrderId == o.Id).Any()); + var childSelect = fsql.Select().As("t") + .Where(t => t.ShopId == request.ShopId) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务) + .Where(t => t.IsTimely == false); + select = select.Where((o, ocs, oct) => childSelect.Where(t => t.OrderId == o.Id).Any()); } - if (!string.IsNullOrEmpty(request.PurchaseOrderId)) + var isDeliveryTimeout = request.IsOnlyDisplayDeliveryTimeout == 1 && (request.OrderState == Enums.OrderState.待发货 || request.OrderState == Enums.OrderState.部分发货); + if (isDeliveryTimeout || !string.IsNullOrEmpty(request.PurchaseOrderId)) { - var childSelect = fsql.Select().As("opi") - .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + var childSelect = fsql.Select().As("opi"); + if (isDeliveryTimeout) + { + var before24hTime = DateTime.Now.AddHours(-24); + childSelect = childSelect.Where(opi => opi.ShopId == request.ShopId && + (opi.OrderState == Enums.PurchaseOrderState.待发货 || opi.OrderState == Enums.PurchaseOrderState.部分发货) && + opi.CreateTime < before24hTime); + } + if (!string.IsNullOrEmpty(request.PurchaseOrderId)) + { + childSelect = childSelect.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + } 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.待核算 || @@ -275,26 +305,34 @@ namespace BBWYB.Server.Business #endregion #region 限时任务 - - #region 需要订单关联的任务 (采购任务) var orderTimeLimitTaskList = fsql.Select().Where(t => orderIdList.Contains(t.OrderId)) .ToList(); - #endregion - - #region 不需要订单关联的任务 (合格证任务) - - #endregion - foreach (var order in orderList) { foreach (var orderSku in order.ItemList) { - #region 寻找sku的限时任务 - var purchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); - if (purchaseTimeLimitTask != null) - orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask); - orderSku.PurchaseTimeLimitTask = orderSku.TimeLimitTaskList.FirstOrDefault(t => t.TaskType == Enums.TimeLimitTaskType.采购任务); + #region 采购限时任务 + orderSku.PurchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && + t.SkuId == orderSku.SkuId && + t.TaskType == Enums.TimeLimitTaskType.采购任务); + #endregion + + #region 合格证拟定任务 + orderSku.CerConfigTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && + t.SkuId == orderSku.SkuId && + t.TaskType == Enums.TimeLimitTaskType.合格证拟定任务); + #endregion + + #region 合格证补充任务 + orderSku.CerEditTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && + t.SkuId == orderSku.SkuId && + t.TaskType == Enums.TimeLimitTaskType.合格证补充任务); + #endregion + + #region 待核算任务 + orderSku.CheckComputationTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && + t.TaskType == Enums.TimeLimitTaskType.待核算任务); #endregion #region 判断sku的发货状态 @@ -617,7 +655,16 @@ namespace BBWYB.Server.Business if (Math.Abs(orderCost.Profit ?? 0) > 1M) throw new BusinessException("订单利润绝对值不能大于1"); - fsql.Update(orderId).Set(o => o.OrderState, Enums.OrderState.已完成).ExecuteAffrows(); + fsql.Transaction(() => + { + fsql.Update(orderId).Set(o => o.OrderState, Enums.OrderState.已完成).ExecuteAffrows(); + fsql.Update().Set(t => t.CompletionTime, DateTime.Now) + .Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) + .Where(t => t.OrderId == orderId) + .Where(t => t.CompletionTime == null) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务).ExecuteAffrows(); + }); + SendPurchaseOrderStateToC(orderId, Enums.OrderState.已完成); } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 589f8b4..cbd3f28 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2481,6 +2481,7 @@ namespace BBWYB.Server.Business IUpdate updatePurchaseExpressOrder = null; List> updateOrderPurchaseList = new List>(); List> updateOrderList = new List>(); + List insertTimeLimitTaskList = new List(); #region 查询该笔快递单 var tpeo = fsql.Select(wayBillNo).ToOne(); @@ -2701,6 +2702,29 @@ namespace BBWYB.Server.Business #region 通知C端状态 Task.Factory.StartNew(() => SendPurchaseOrderStateToC(order.Id, order.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion + + #region 创建待核算任务 + if (order.OrderState == Enums.OrderState.待核算) + { + var isExists = fsql.Select().Where(t => t.OrderId == order.Id && t.TaskType == Enums.TimeLimitTaskType.待核算任务).Any(); + if (!isExists) + { + //创建合格证拟定任务 + var t = new TimeLimitTask() + { + CreateTme = DateTime.Now, + Id = idGenerator.NewLong(), + OrderId = order.Id, + //SkuId = orderSku.SkuId, + OrderSn = order.OrderSn, + ShopId = order.ShopId, + TaskType = Enums.TimeLimitTaskType.待核算任务, + ExpirationTime = DateTime.Now.AddDays(1) + }; + insertTimeLimitTaskList.Add(t); + } + } + #endregion } } #endregion @@ -2719,6 +2743,8 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderList) update.ExecuteAffrows(); } + if (insertTimeLimitTaskList.Count() > 0) + fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); }); #endregion } diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index 272a2b4..7916237 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -15,10 +15,16 @@ namespace BBWYB.Server.Business private RestApiService restApiService; private IFreeSql fsql; private NLogManager nLogManager; + private List hgzTaskTypeList; public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) { this.restApiService = restApiService; + hgzTaskTypeList = new List() + { + Enums.TimeLimitTaskType.合格证拟定任务, + Enums.TimeLimitTaskType.合格证补充任务 + }; } /// @@ -149,6 +155,9 @@ namespace BBWYB.Server.Business { IList> updateOrderSkuList = new List>(); List insertTimeLimitTaskList = new List(); + + var dbTimeLimitTaskList = fsql.Select().Where(t => t.OrderId == order.Id && + t.TaskType == Enums.TimeLimitTaskType.合格证拟定任务).ToList(); foreach (var skuConfigured in response.Data.PackTaskSkuPurchaseSchemeIdList) { var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == skuConfigured.SkuId); @@ -163,7 +172,7 @@ namespace BBWYB.Server.Business updateOrderSkuList.Add(update); } - if (qiKuPackState == Enums.PackConfigState.待配置 && order.ShopId != 9) + if (qiKuPackState == Enums.PackConfigState.待配置 && order.ShopId != 9 && !dbTimeLimitTaskList.Any(t=>t.SkuId == orderSku.SkuId)) { //创建合格证拟定任务 var t = new TimeLimitTask() @@ -229,6 +238,7 @@ namespace BBWYB.Server.Business { var isExists = fsql.Select().Where(t => t.OrderId == request.OrderId && t.SkuId == orderSku.SkuId && + t.CompletionTime == null && t.TaskType == Enums.TimeLimitTaskType.合格证补充任务) .Any(); if (!isExists) @@ -252,17 +262,13 @@ namespace BBWYB.Server.Business } else if (request.PackConfigState == Enums.PackConfigState.已配置) { - var taskTypeList = new List() - { - Enums.TimeLimitTaskType.合格证拟定任务, - Enums.TimeLimitTaskType.合格证补充任务 - }; + updateTimeLimitTask = fsql.Update().Set(t => t.CompletionTime, DateTime.Now) .Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) .Where(t => t.OrderId == request.OrderId) .Where(t => t.SkuId == orderSku.SkuId) .Where(t => t.CompletionTime == null) - .Where(t => taskTypeList.Contains(t.TaskType)); + .Where(t => hgzTaskTypeList.Contains(t.TaskType)); } fsql.Transaction(() => diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index b7cf06d..4a016b8 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -1,5 +1,6 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using Yitter.IdGenerator; @@ -9,9 +10,15 @@ namespace BBWYB.Server.Business public class TimeLimitTaskBusiness : BaseBusiness, IDenpendency { private VenderBusiness venderBusiness; + private List hgzTaskTypeList; public TimeLimitTaskBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) { this.venderBusiness = venderBusiness; + hgzTaskTypeList = new List() + { + Enums.TimeLimitTaskType.合格证拟定任务, + Enums.TimeLimitTaskType.合格证补充任务 + }; } public void CheckTask() { @@ -69,6 +76,7 @@ namespace BBWYB.Server.Business #region 采购超时率 var purchaseTaskCountGroups = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) + .Where(t => t.TaskType == Model.Enums.TimeLimitTaskType.采购任务) .GroupBy(t => t.ShopId) .ToList(g => new { @@ -79,6 +87,7 @@ namespace BBWYB.Server.Business var purchaseTaskTimOutCountGroups = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) .Where(t => t.IsTimely == false) + .Where(t => t.TaskType == Model.Enums.TimeLimitTaskType.采购任务) .GroupBy(t => t.ShopId) .ToList(g => new { @@ -87,6 +96,20 @@ namespace BBWYB.Server.Business }); #endregion + #region 合格证补充/拟定超时量 + var cerTimeOutCountGroups = fsql.Select().WhereIf(request.ShopId != null, t => t.ShopId == request.ShopId) + .Where(t => t.CreateTme >= request.StartDate && t.CreateTme <= request.EndDate) + .Where(t => t.IsTimely == false) + .Where(t => hgzTaskTypeList.Contains(t.TaskType)) + .GroupBy(t => new { t.ShopId, t.TaskType }) + .ToList(g => new + { + ShopId = g.Key.ShopId, + TaskType = g.Key.TaskType, + TaskCount = g.Count() + }); + #endregion + shopIdList.AddRange(purchaseTaskCountGroups.Select(g => g.ShopId.Value).ToList()); foreach (var shopId in shopIdList) @@ -99,7 +122,10 @@ namespace BBWYB.Server.Business var purchaseTaskTimeOutCount = purchaseTaskTimOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId)?.TaskCount ?? 0; response.PurchaseTimeOutPercent = purchaseTaskCount == 0 ? 0 : Math.Round(1.0 * purchaseTaskTimeOutCount / purchaseTaskCount * 100, 2); - + response.CerEditTimeOutCount = cerTimeOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId && + x.TaskType == Enums.TimeLimitTaskType.合格证补充任务)?.TaskCount ?? 0; + response.CerConfigTimeOutCount = cerTimeOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId && + x.TaskType == Enums.TimeLimitTaskType.合格证拟定任务)?.TaskCount ?? 0; list.Add(response); } diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 6d42a6c..36afa8f 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -84,5 +84,20 @@ /// 是否仅显示待发货超时,是=1否=0,只在订单状态为【待发货和部分发货】时生效 /// public int? IsOnlyDisplayDeliveryTimeout { get; set; } + + /// + /// 是否仅显示待配置-需修改,是=1否=0,只在【IsWaitConfig=true】时生效 + /// + public int? IsOnlyDisplayPackConfigEditState { get; set; } + + /// + /// 是否仅显示配置超时,是=1否=0,只在【IsWaitConfig=true】时生效(优先) + /// + public int? IsOnlyDisplayCerConfigTimeOut { get; set; } + + /// + /// 是否仅显示核算超时,是=1否=0,只在订单状态为【待核算】时生效 + /// + public int? IsOnlyDisplayCheckComputationTimeOut { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index a883c01..98b51c9 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -7,7 +7,7 @@ namespace BBWYB.Server.Model.Dto public OrderSkuResponse() { PurchaseExpressOrderList = new List(); - TimeLimitTaskList = new List(); + //TimeLimitTaskList = new List(); } /// @@ -20,14 +20,29 @@ namespace BBWYB.Server.Model.Dto /// public IList PurchaseExpressOrderList { get; set; } - /// - /// 限时任务列表 - /// - public IList TimeLimitTaskList { get; set; } + ///// + ///// 限时任务列表 + ///// + //public IList TimeLimitTaskList { get; set; } /// /// 采购限时任务 /// public TimeLimitTaskResponse? PurchaseTimeLimitTask { get; set; } + + /// + /// 合格证拟定任务 + /// + public TimeLimitTaskResponse? CerConfigTimeLimitTask { get; set; } + + /// + /// 合格证补充任务 + /// + public TimeLimitTaskResponse? CerEditTimeLimitTask { get; set; } + + /// + /// 待核算任务 + /// + public TimeLimitTaskResponse? CheckComputationTimeLimitTask { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs index ee2e09b..e350e0f 100644 --- a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskStatisticsResponse.cs @@ -11,14 +11,15 @@ /// public double PurchaseTimeOutPercent { get; set; } + /// - /// 合格证拟定超时量 + /// 合格证补充超时量 /// - public double CertificatesTimeOutCount { get; set; } + public int? CerEditTimeOutCount { get; set; } /// - /// 合格证补充超时量 + /// 合格证拟定超时量 /// - public double CertificatesSupplementTimeOutCount { get; set; } + public int? CerConfigTimeOutCount { get; set; } } } From a5f1446bd4e5bdf734889508e694a066872d21d7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 23 Jul 2023 01:57:43 +0800 Subject: [PATCH 44/70] =?UTF-8?q?=E9=BD=90=E5=BA=93=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E8=AF=81=E4=BF=A1=E6=81=AF=E6=97=B6=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E6=89=B9=E9=87=8F=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/QiKuManager.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index 7916237..4026576 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -156,7 +156,7 @@ namespace BBWYB.Server.Business IList> updateOrderSkuList = new List>(); List insertTimeLimitTaskList = new List(); - var dbTimeLimitTaskList = fsql.Select().Where(t => t.OrderId == order.Id && + var dbTimeLimitTaskList = fsql.Select().Where(t => t.OrderId == order.Id && t.TaskType == Enums.TimeLimitTaskType.合格证拟定任务).ToList(); foreach (var skuConfigured in response.Data.PackTaskSkuPurchaseSchemeIdList) { @@ -172,7 +172,7 @@ namespace BBWYB.Server.Business updateOrderSkuList.Add(update); } - if (qiKuPackState == Enums.PackConfigState.待配置 && order.ShopId != 9 && !dbTimeLimitTaskList.Any(t=>t.SkuId == orderSku.SkuId)) + if (qiKuPackState == Enums.PackConfigState.待配置 && order.ShopId != 9 && !dbTimeLimitTaskList.Any(t => t.SkuId == orderSku.SkuId)) { //创建合格证拟定任务 var t = new TimeLimitTask() @@ -232,7 +232,16 @@ namespace BBWYB.Server.Business IUpdate updateOrderSku = null; if (orderSku.PackConfigState != request.PackConfigState) - updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.PackConfigState, request.PackConfigState); + { + updateOrderSku = fsql.Select() + .InnerJoin((osku, o) => osku.OrderId == o.Id) + .Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && + o.IntoStoreType == Enums.IntoStoreType.发回齐越 && + osku.SkuId == orderSku.SkuId && + osku.PackConfigState != request.PackConfigState) + .ToUpdate() + .Set(osku => osku.PackConfigState, request.PackConfigState); + } if (request.PackConfigState == Enums.PackConfigState.需修改) { @@ -265,7 +274,7 @@ namespace BBWYB.Server.Business updateTimeLimitTask = fsql.Update().Set(t => t.CompletionTime, DateTime.Now) .Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) - .Where(t => t.OrderId == request.OrderId) + //.Where(t => t.OrderId == request.OrderId) .Where(t => t.SkuId == orderSku.SkuId) .Where(t => t.CompletionTime == null) .Where(t => hgzTaskTypeList.Contains(t.TaskType)); From b2d2738ee6c3ec1a0c224adb85e0caf41def39aa Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 23 Jul 2023 14:06:53 +0800 Subject: [PATCH 45/70] =?UTF-8?q?=E5=90=88=E6=A0=BC=E8=AF=81=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E4=BB=BB=E5=8A=A1=E5=A2=9E=E5=8A=A0=E9=92=89=E9=92=89?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/QiKuManager.cs | 47 ++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index 4026576..be646e8 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -5,7 +5,9 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; +using System.Text; using Yitter.IdGenerator; namespace BBWYB.Server.Business @@ -17,7 +19,13 @@ namespace BBWYB.Server.Business private NLogManager nLogManager; private List hgzTaskTypeList; - public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) + private Lazy dingDingBusinessLazy; + private Lazy venderBusinessLazy; + + private DingDingBusiness dingDingBusiness => dingDingBusinessLazy.Value; + private VenderBusiness venderBusiness => venderBusinessLazy.Value; + + public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) { this.restApiService = restApiService; hgzTaskTypeList = new List() @@ -25,6 +33,8 @@ namespace BBWYB.Server.Business Enums.TimeLimitTaskType.合格证拟定任务, Enums.TimeLimitTaskType.合格证补充任务 }; + this.dingDingBusinessLazy = new Lazy(() => serviceProvider.GetService()); + this.venderBusinessLazy = new Lazy(() => serviceProvider.GetService()); } /// @@ -233,14 +243,15 @@ namespace BBWYB.Server.Business if (orderSku.PackConfigState != request.PackConfigState) { - updateOrderSku = fsql.Select() - .InnerJoin((osku, o) => osku.OrderId == o.Id) - .Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && - o.IntoStoreType == Enums.IntoStoreType.发回齐越 && - osku.SkuId == orderSku.SkuId && - osku.PackConfigState != request.PackConfigState) - .ToUpdate() - .Set(osku => osku.PackConfigState, request.PackConfigState); + //updateOrderSku = fsql.Select() + // .InnerJoin((osku, o) => osku.OrderId == o.Id) + // .Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && + // o.IntoStoreType == Enums.IntoStoreType.发回齐越 && + // osku.SkuId == orderSku.SkuId && + // osku.PackConfigState != request.PackConfigState) + // .ToUpdate() + // .Set(osku => osku.PackConfigState, request.PackConfigState); + updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.PackConfigState, request.PackConfigState); } if (request.PackConfigState == Enums.PackConfigState.需修改) @@ -267,6 +278,22 @@ namespace BBWYB.Server.Business else t.ExpirationTime = DateTime.Now.Date.AddDays(1).AddHours(13); insertTimeLimitTask = fsql.Insert(t); + + #region 发送钉钉通知 + try + { + var shop = venderBusiness.GetShopList(order.ShopId.Value).FirstOrDefault(); + var content = new StringBuilder(); + content.AppendLine($"拳探店铺:{shop?.ShopName}"); + content.AppendLine($"订单号:{order.OrderSn}"); + content.AppendLine($"拳探SKU:{orderSku.SkuId}"); + content.AppendLine("信息:需补充合格证信息"); + dingDingBusiness.SendDingDingBotMessage("SECf32e6111bb4bd633cfe44cf0c1d4c3384cda4b91096bcdd962402fdfd67f31c6", + "https://oapi.dingtalk.com/robot/send?access_token=c87a037e038ec38e379ad5bc6fe50adc679ba89d4957f8fc5396e15fbc3a9df7", + content.ToString()); + } + catch { } + #endregion } } else if (request.PackConfigState == Enums.PackConfigState.已配置) @@ -274,7 +301,7 @@ namespace BBWYB.Server.Business updateTimeLimitTask = fsql.Update().Set(t => t.CompletionTime, DateTime.Now) .Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) - //.Where(t => t.OrderId == request.OrderId) + .Where(t => t.OrderId == request.OrderId) .Where(t => t.SkuId == orderSku.SkuId) .Where(t => t.CompletionTime == null) .Where(t => hgzTaskTypeList.Contains(t.TaskType)); From fdd6ab9a6b35c853fd7107bc547dcd447cb7db37 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 23 Jul 2023 14:21:59 +0800 Subject: [PATCH 46/70] 1 --- BBWYB.Server.API/Controllers/OrderController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index e381a72..caccde6 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -150,6 +150,7 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost] + [AllowAnonymous] public void QikuPublishOrderSkuPackConfigState([FromBody] QikuPublishOrderSkuPackConfigStateRequest request) { orderBusiness.QikuPublishOrderSkuPackConfigState(request); From 5f38a0b4363f2add3338080746fb6c8ef402fd8f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 23 Jul 2023 14:29:29 +0800 Subject: [PATCH 47/70] 1 --- BBWYB.Server.Business/QiKuManager.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index be646e8..3788bdf 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -15,8 +15,6 @@ namespace BBWYB.Server.Business public class QiKuManager : BaseBusiness, IDenpendency { private RestApiService restApiService; - private IFreeSql fsql; - private NLogManager nLogManager; private List hgzTaskTypeList; private Lazy dingDingBusinessLazy; From e3d0f02c75d3a2480f10904d081cac799e699477 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 24 Jul 2023 02:28:16 +0800 Subject: [PATCH 48/70] 1 --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index cbd3f28..75248b4 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -268,14 +268,14 @@ namespace BBWYB.Server.Business if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) notifyQikuPackSchemeParamList = new List(); - #region 待更新 - IList updateOrderCostDetailIdList = fsql.Select() - .Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true) - .ToList(ocd => ocd.Id); - IList updatePurchaseOrderIdList = fsql.Select() - .Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true) - .ToList(opi => opi.Id); - #endregion + //#region 待更新 + //IList updateOrderCostDetailIdList = fsql.Select() + // .Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true) + // .ToList(ocd => ocd.Id); + //IList updatePurchaseOrderIdList = fsql.Select() + // .Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true) + // .ToList(opi => opi.Id); + //#endregion IInsert insertOrderCost = null; IUpdate updateOrderCost = null; @@ -513,10 +513,10 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - if (updatePurchaseOrderIdList.Count() > 0) - fsql.Update(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows(); - if (updateOrderCostDetailIdList.Count() > 0) - fsql.Update(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows(); + //if (updatePurchaseOrderIdList.Count() > 0) + // fsql.Update(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows(); + //if (updateOrderCostDetailIdList.Count() > 0) + // fsql.Update(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows(); if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) { fsql.Update().Set(t => t.CompletionTime, DateTime.Now) From afa9defe17c9cc4b28c3e462965a4a213cf82300 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 24 Jul 2023 12:29:33 +0800 Subject: [PATCH 49/70] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=88=86=E6=89=B9=E9=87=87=E8=B4=AD=201.?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=B0=86=E7=8E=B0=E6=9C=89=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E8=AE=BE=E4=B8=BA=E5=A4=B1=E6=95=88=202.=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E8=AE=A2=E5=8D=95=E6=88=90=E6=9C=AC=E6=97=B6=E5=B0=86?= =?UTF-8?q?=E8=AF=A5=E7=AC=94=E8=AE=A2=E5=8D=95=E4=B8=8B=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=88=90=E6=9C=AC=E6=9F=A5=E5=87=BA?= =?UTF-8?q?=E5=B9=B6=E8=BF=9B=E8=A1=8C=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 75248b4..6b7f948 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -255,6 +255,23 @@ namespace BBWYB.Server.Business var isRepurchase = fsql.Select(dbOrder.Id).Any(); var orderSkus = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); + + foreach (var cargoParamGroup in request.CargoParamGroupList) + { + var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaserId == cargoParamGroup.PurchaserId); + if (purchaseOrder != null) + { + foreach (var cargoParam in cargoParamGroup.CargoParamList) + { + if (purchaseOrder.BelongSkuIds.Contains(cargoParam.BelongSkuId)) + { + //throw new BusinessException($"订单sku[{cargoParam.BelongSkuId}]已经存在同一个商家[{cargoParamGroup.PurchaserId}][{cargoParamGroup.PurchaserName}]的另一笔采购单中[{purchaseOrder.PurchaseOrderId}],请不要为同一笔订单sku进行同商家采购"); + throw new BusinessException($"提示:请勿为同一个订单中的sku重复向同一个商家下采购单\r\n重复信息:\r\n- 订单sku:{cargoParam.BelongSkuId}\r\n- 商家:{cargoParamGroup.PurchaserName}"); + } + } + } + } var extJArray = JsonConvert.DeserializeObject(request.Extensions); @@ -279,8 +296,8 @@ namespace BBWYB.Server.Business IInsert insertOrderCost = null; IUpdate updateOrderCost = null; - var totalPurchaseProductAmount = 0M; - var totalPurchaseFreight = 0M; + //var totalPurchaseProductAmount = 0M; + //var totalPurchaseFreight = 0M; foreach (var cargoParamGroup in request.CargoParamGroupList) { @@ -326,8 +343,8 @@ namespace BBWYB.Server.Business OrderId = createOrderResponse.OrderId }); - totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; - totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; + //totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; + //totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; foreach (var cargoParam in cargoParamGroup.CargoParamList) { @@ -478,9 +495,12 @@ namespace BBWYB.Server.Business CreateTime = DateTime.Now, IsManualEdited = false }; + + var totalPurchaseProductAmount = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.SkuAmount); + var totalPurchaseFreight = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.PurchaseFreight); orderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, - totalPurchaseProductAmount, - totalPurchaseFreight, + totalPurchaseProductAmount ?? 0M, + totalPurchaseFreight ?? 0M, 0M, 0M); From 58f784c0b1956ecc06a86223c86133f84de2422a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 25 Jul 2023 00:16:44 +0800 Subject: [PATCH 50/70] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=90=8C=E9=85=8D=E4=BB=B6=E6=8C=89=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E4=BB=B6=E6=95=B0=E7=AD=89=E6=AF=94=E5=88=86=E9=85=8D?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=B4=A7=E6=AC=BE=E5=92=8C=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E8=BF=90=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 6b7f948..cb2edf7 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1097,17 +1097,49 @@ namespace BBWYB.Server.Business #region 匹配采购单所使用到的采购方案 var assocationOrderCostDetailList = new List(); var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); - var totalPurchaseCount = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); + var cargoParamList = new List(); foreach (var schemeGroup in purchaseSchemeGroups) { var schemePurchaseSkuList = schemeGroup.ToList(); if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0)) continue; + cargoParamList.AddRange(schemePurchaseSkuList.Select(x => new CargoParamRequest() + { + BelongSkuId = x.SkuId, + ProductId = x.PurchaseProductId, + SkuId = x.PurchaseSkuId, + Quantity = dbOrderSkuList.FirstOrDefault(s => s.SkuId == x.SkuId)?.ItemTotal ?? 1, + SchemeId = x.SkuPurchaseSchemeId, + SpecId = x.PurchaseSkuSpecId + })); + } - var orderPurchaseSkuOfCurrentSchemeList = purchaseOrderSimpleInfo.ItemList.Where(psku => schemePurchaseSkuList.Count(x => x.PurchaseSkuId == psku.SkuId) > 0); + var belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId); + var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity); + foreach (var belongSkuGroup in belongSkuGroups) + { + var skuId = belongSkuGroup.Key; + var currentOrderSkuCargoParamList = cargoParamList.Where(p => p.BelongSkuId == skuId); //找当前skuId的采购skuId + var currentSkuAmount = 0M; //采购成本 + var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和 + var currentPurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * + (1.0M * currentSkuTotalPurchaseQuantity / purchaseSkuTotalQuantity); //采购运费 + + foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) + { + var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + .Sum(p => p.ProductAmount); + //var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + // .Sum(p => p.Quantity); + + var currentPurchaseSkuTotalQuantity = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + .Sum(p => p.Quantity); + + currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); + + } - var skuId = schemePurchaseSkuList.FirstOrDefault().SkuId; var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() { @@ -1115,9 +1147,9 @@ namespace BBWYB.Server.Business Title = orderSku.Title, SkuId = skuId, OrderId = orderSku.OrderId, - SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), + SkuAmount = currentSkuAmount, PurchaseQuantity = orderSku.ItemTotal.Value, - PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (1.0M * orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) + PurchaseFreight = currentPurchaseFreight }; assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; assocationOrderCostDetailList.Add(assocationOrderCostDetail); From 60ad5da497158d155b719d4ed8a4dc1470d3124c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 25 Jul 2023 10:07:12 +0800 Subject: [PATCH 51/70] =?UTF-8?q?=E6=94=B9=E4=BB=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 26 +++++++++++++++++++ .../QuanTan_Supplier_EditPriceRequest.cs | 7 ++++- .../Client/Impl/OP_QuanTanClient.cs | 3 ++- .../Request/Order/OP_EditPriceRequest.cs | 18 ++++++++----- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index b22b880..45e944e 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -547,14 +547,34 @@ namespace BBWYB.Server.Business var order = orderListResponse.Items.FirstOrDefault(); var orderCost = fsql.Select(request.OrderId).ToOne(); + var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); IList> updates_orderSku = new List>(); IUpdate updateOrderCost = null; + IList> updateOrderCostDetailList = new List>(); + + foreach (var orderSku in order.OrderSkuList) { updates_orderSku.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.SkuPrice) .Set(osku => osku.BuyerPayFreight, orderSku.FreightAmount) .Set(osku => osku.InPackAmount, orderSku.PackAmount)); + + var ocdList = orderCostDetailList.Where(ocd => ocd.SkuId == orderSku.SkuId).ToList(); + if (ocdList != null && ocdList.Count()>0) + { + foreach (var orderCostDetail in ocdList) + { + orderCostDetail.CalculationOrderCostDetailCostAndProfit(orderSku.SkuPrice * orderSku.Quantity, + orderSku.FreightAmount, + orderSku.PackAmount, + orderCostDetail.SkuAmount ?? 0M, + orderCostDetail.PurchaseFreight ?? 0M, + orderCostDetail.OutPackAmount ?? 0M, + orderCostDetail.DeliveryExpressFreight ?? 0M); + updateOrderCostDetailList.Add(fsql.Update(orderCostDetail.Id).Set(ocd => ocd.Profit, orderCostDetail.Profit)); + } + } } if (orderCost != null) @@ -573,6 +593,7 @@ namespace BBWYB.Server.Business fsql.Update(request.OrderId).Set(o => o.OrderTotalPrice, order.OrderTotalAmount) .Set(o => o.OrderSellerPrice, order.OrderProductAmount) .Set(o => o.FreightPrice, order.FreightAmount) + .Set(o => o.InPackAmount, order.PackAmount) .ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); @@ -581,6 +602,11 @@ namespace BBWYB.Server.Business foreach (var update in updates_orderSku) update.ExecuteAffrows(); } + if (updateOrderCostDetailList.Count() > 0) + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + } }); #region 通知C端 diff --git a/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_EditPriceRequest.cs b/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_EditPriceRequest.cs index 203ad72..35c2f21 100644 --- a/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_EditPriceRequest.cs +++ b/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_EditPriceRequest.cs @@ -22,8 +22,13 @@ public decimal price { get; set; } /// - /// Sku总运费 + /// Sku运费 /// public decimal postagePrice { get; set; } + + /// + /// 单个订单商品的打包费 + /// + public decimal packingChargeSingle { get; set; } } } diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index 63e927a..590be55 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -216,7 +216,8 @@ namespace SDKAdapter.OperationPlatform.Client { orderProductId = item.OrderSkuId, postagePrice = item.Freight, - price = item.Price + price = item.Price, + packingChargeSingle = item.InPackAmountPrice }).ToList() }, request.AppKey, request.AppSecret); diff --git a/SDKAdapter/OperationPlatform/Models/Request/Order/OP_EditPriceRequest.cs b/SDKAdapter/OperationPlatform/Models/Request/Order/OP_EditPriceRequest.cs index 9cbe0b2..a0effe9 100644 --- a/SDKAdapter/OperationPlatform/Models/Request/Order/OP_EditPriceRequest.cs +++ b/SDKAdapter/OperationPlatform/Models/Request/Order/OP_EditPriceRequest.cs @@ -10,26 +10,32 @@ public class OP_EditPriceSkuRequest { /// - /// 订单Sku商品Id + /// 订单Sku对象Id主键 /// public string OrderSkuId { get; set; } - public string SkuId { get; set; } /// - /// 单价 + /// sku单价 /// public decimal Price { get; set; } + /// - /// 数量 + /// sku打包费单价 /// - public int Quantity { get; set; } + public decimal InPackAmountPrice { get; set; } + + ///// + ///// 数量 + ///// + //public int Quantity { get; set; } /// - /// 运费 + /// 单笔sku的订单运费(用户支付运费) /// public decimal Freight { get; set; } + } } From 25795b92e482d5425ada649b492a2f3de3fbb82b Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 26 Jul 2023 01:09:08 +0800 Subject: [PATCH 52/70] =?UTF-8?q?1.=E5=9C=A81688=E6=94=B9=E4=BB=B7?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=AF=B9=E6=8E=A5=E6=8B=B3=E6=8E=A2=E6=94=B9?= =?UTF-8?q?=E4=BB=B7=E5=81=9A=E5=B9=B3=E4=BB=B7=E5=A4=84=E7=90=86=202.?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8B=B3=E6=8E=A2=E5=95=86=E5=93=81=E6=94=B9?= =?UTF-8?q?=E4=BB=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProductController.cs | 10 ++ BBWYB.Server.API/appsettings.json | 8 +- .../Product/ProductBusiness.cs | 5 + .../PurchaseOrder/PurchaseOrderBusiness.cs | 111 ++++++++++++++---- .../QuanTan_Supplier_ProductClient.cs | 5 + ...uanTan_Supplier_EditProductPriceRequest.cs | 18 +++ .../Client/Base/OP_PlatformClient.cs | 5 + .../Client/Impl/OP_QuanTanClient.cs | 16 +++ .../Product/OP_EditProductPriceRequest.cs | 16 +++ 9 files changed, 166 insertions(+), 28 deletions(-) create mode 100644 QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_EditProductPriceRequest.cs create mode 100644 SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs diff --git a/BBWYB.Server.API/Controllers/ProductController.cs b/BBWYB.Server.API/Controllers/ProductController.cs index 7d34e71..3ed179e 100644 --- a/BBWYB.Server.API/Controllers/ProductController.cs +++ b/BBWYB.Server.API/Controllers/ProductController.cs @@ -33,5 +33,15 @@ namespace BBWYB.Server.API.Controllers { return productBusiness.GetProductSkuList(request); } + + /// + /// 修改商品价格 + /// + /// + [HttpPost] + public void EditProductPrice([FromBody] OP_EditProductPriceRequest request) + { + productBusiness.EditProductPrice(request); + } } } diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json index 9be7fb6..9a15df4 100644 --- a/BBWYB.Server.API/appsettings.json +++ b/BBWYB.Server.API/appsettings.json @@ -15,9 +15,9 @@ "AllowedSwagger": true, "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0", "ApiVersionRequirements": [ - { - "Api": "/api/purchaseOrder/createpurchaseorder", - "MinimumVersion": 10017 - } + //{ + // "Api": "/api/purchaseOrder/createpurchaseorder", + // "MinimumVersion": 10017 + //} ] } diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs index 39d0d55..0d644cf 100644 --- a/BBWYB.Server.Business/Product/ProductBusiness.cs +++ b/BBWYB.Server.Business/Product/ProductBusiness.cs @@ -24,5 +24,10 @@ namespace BBWYB.Server.Business { return opPlatformClientFactory.GetClient(request.Platform).GetProductSkuList(request); } + + public void EditProductPrice(OP_EditProductPriceRequest request) + { + opPlatformClientFactory.GetClient(request.Platform).EditProductPrice(request); + } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index cb2edf7..a661ad6 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -14,6 +14,8 @@ using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SDKAdapter; +using SDKAdapter.OperationPlatform.Client; +using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; using System.Text; @@ -32,6 +34,7 @@ namespace BBWYB.Server.Business private Lazy qiKuManagerLazy; private Lazy restApiServiceLazy; private Lazy jdBusinessLazy; + private Lazy opPlatformClientFactoryLazy; private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; @@ -41,6 +44,7 @@ namespace BBWYB.Server.Business private DingDingBusiness dingDingBusiness => dingDingBusinessLazy.Value; private QiKuManager qiKuManager => qiKuManagerLazy.Value; private RestApiService restApiService => restApiServiceLazy.Value; + private OP_PlatformClientFactory opPlatformClientFactory => opPlatformClientFactoryLazy.Value; private JDBusiness jdBusiness => jdBusinessLazy.Value; @@ -60,6 +64,8 @@ namespace BBWYB.Server.Business qiKuManagerLazy = new Lazy(() => serviceProvider.GetService()); restApiServiceLazy = new Lazy(() => serviceProvider.GetService()); jdBusinessLazy = new Lazy(() => serviceProvider.GetService()); + opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService()); + cantPurchaseOrderStateList = new List() { Enums.OrderState.已取消, @@ -2369,8 +2375,7 @@ namespace BBWYB.Server.Business /// private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform) { - string currentProgress = string.Empty; - + bool isEditOrderPrice = true; try { var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); @@ -2386,6 +2391,8 @@ namespace BBWYB.Server.Business if (dbOrderCost == null) throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本"); + var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); + var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); if (dbOrderCostDetails.Count() == 0) throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); @@ -2395,23 +2402,34 @@ namespace BBWYB.Server.Business if (dbOrderPurchaseInfoList.Count() == 0) throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); + isEditOrderPrice = dbOrderPurchaseInfoList.Count() == dbOrderPurchaseInfoList.Count(opi => opi.PurchasePlatform == Enums.Platform.阿里巴巴 && + opi.PurchaseMethod == Enums.PurchaseMethod.线上采购); + var dbPurchaseOrderIdList = dbOrderPurchaseInfoList.Select(x => x.PurchaseOrderId).ToList(); var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => dbPurchaseOrderIdList.Contains(x.PurchaseOrderId)).ToList(); if (dbOrderPurchaseRelationInfos.Count() == 0) - throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细"); var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList(); List> updateOrderCostDetailList = new List>(); IUpdate updateOrderCost = null; - var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); + IList> updateOrderSkuList = new List>(); + IUpdate updateOrder = null; + + IList op_EditPriceSkuRequests = new List(); + + var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); var totalPurchaseProductAmount = 0M; var totalPurchaseFreight = 0M; foreach (var opi in dbOrderPurchaseInfoList) { - var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() + if (opi.PurchasePlatform != Enums.Platform.阿里巴巴) + continue; + + var purchaseOrderSimpleInfo = ppclient.QueryOrderDetail(new PP_QueryOrderDetailRequest() { AppKey = purchaseAccount.AppKey, AppSecret = purchaseAccount.AppSecret, @@ -2429,6 +2447,7 @@ namespace BBWYB.Server.Business foreach (var belongSkuGroup in belongSkuGroups) { var belongSkuId = belongSkuGroup.Key; + var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId var currentOrderSkuProductAmount = 0M; //采购成本 var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和 @@ -2444,12 +2463,26 @@ namespace BBWYB.Server.Business currentOrderSkuProductAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / currentPurchaseSkuTotalQuantity); } - var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId); + #region 订单sku平价 var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); - //dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount; - //dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount; - //dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount; + if (isEditOrderPrice) + { + orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; + orderSku.BuyerPayFreight = currentPurchaseFreight; + op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() + { + Freight = currentPurchaseFreight ?? 0M, + InPackAmountPrice = orderSku.InPackAmount ?? 0M, + OrderSkuId = orderSku.Id.ToString(), + Price = orderSku.Price ?? 0M, + SkuId = orderSku.SkuId + }); + updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) + .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); + } + #endregion + var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, orderSku.BuyerPayFreight ?? 0M, orderSku.InPackAmount ?? 0M, @@ -2459,31 +2492,61 @@ namespace BBWYB.Server.Business dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); } + } + if (isEditOrderPrice) + { + dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight; + dbOrder.OrderSellerPrice = totalPurchaseProductAmount; + dbOrder.FreightPrice = totalPurchaseFreight; + updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice) + .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice) + .Set(o => o.FreightPrice, dbOrder.FreightPrice); + } - //dbOrderCost.TotalCost = dbOrderCost.PurchaseAmount = totalPurchaseAmount; - //dbOrderCost.Profit = dbOrder.OrderTotalPrice - - // dbOrderCost.PurchaseAmount - - // dbOrderCost.DeliveryExpressFreight; + dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, + totalPurchaseProductAmount, + totalPurchaseFreight, + dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), + dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); + updateOrderCost = fsql.Update().SetSource(dbOrderCost); + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + updateOrderCost?.ExecuteAffrows(); + foreach (var update in updateOrderSkuList) + update.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); + }); - dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, - totalPurchaseProductAmount, - totalPurchaseFreight, - dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), - dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); - updateOrderCost = fsql.Update().SetSource(dbOrderCost); - fsql.Transaction(() => + if (isEditOrderPrice) + { + #region 通知拳探改价 + var opclient = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探); + opclient.EditPrice(new OP_EditPriceRequest() { - foreach (var update in updateOrderCostDetailList) - update.ExecuteAffrows(); - updateOrderCost?.ExecuteAffrows(); + AppKey = shop.AppKey, + AppSecret = shop.AppSecret, + AppToken = shop.AppToken, + OrderId = dbOrder.Id, + EditItems = op_EditPriceSkuRequests }); + #endregion + + #region 通知C端改价 + restApiService.SendRequest("https://bbwy.qiyue666.com", + "/Api/PurchaseOrder/QuanTanEditPriceCallback", + new { orderId = dbOrder.Id }, + null, + HttpMethod.Post); + #endregion } } catch (Exception ex) { - nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]"); + nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId}"); } } diff --git a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs index d38770c..01770d1 100644 --- a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs +++ b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs @@ -19,5 +19,10 @@ namespace QuanTan.SDK.Client.Supplier { return SendRequest("api/platform/supply/product/list", request, appId, appSecret); } + + public QuanTanResponse EditProductPrice(QuanTan_Supplier_EditProductPriceRequest request, string appId, string appSecret) + { + return SendRequest("api/platform/supply/product/price/change", request, appId, appSecret); + } } } diff --git a/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_EditProductPriceRequest.cs b/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_EditProductPriceRequest.cs new file mode 100644 index 0000000..abee5c5 --- /dev/null +++ b/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_EditProductPriceRequest.cs @@ -0,0 +1,18 @@ +namespace QuanTan.SDK.Models.Supplier +{ + public class QuanTan_Supplier_EditProductPriceRequest + { + public string productId { get; set; } + + public string editAdmin { get; set; } + + public IList skuList { get; set; } + } + + public class QuanTan_Supplier_EditProductSkuPriceRequest + { + public string skuId { get; set; } + + public decimal price { get; set; } + } +} diff --git a/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs b/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs index ffbc8f7..066e416 100644 --- a/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs @@ -51,5 +51,10 @@ namespace SDKAdapter.OperationPlatform.Client { throw new NotImplementedException(); } + + public virtual void EditProductPrice(OP_EditProductPriceRequest request) + { + throw new NotImplementedException(); + } } } diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index 590be55..6e1cf4a 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -224,5 +224,21 @@ namespace SDKAdapter.OperationPlatform.Client if (qtResponse.Status != 200) throw new Exception(qtResponse.Message); } + + public override void EditProductPrice(OP_EditProductPriceRequest request) + { + var qtResponse = supplier_ProductClient.EditProductPrice(new QuanTan_Supplier_EditProductPriceRequest() + { + productId = request.Spu, + editAdmin = request.AppToken, + skuList = request.EditSkuList.Select(x => new QuanTan_Supplier_EditProductSkuPriceRequest() + { + price = x.Price, + skuId = x.Sku + }).ToList() + }, request.AppKey, request.AppSecret); + if (qtResponse.Status != 200) + throw new Exception(qtResponse.Message); + } } } diff --git a/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs b/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs new file mode 100644 index 0000000..2c9c420 --- /dev/null +++ b/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs @@ -0,0 +1,16 @@ +namespace SDKAdapter.OperationPlatform.Models +{ + public class OP_EditProductPriceRequest : BasePlatformRequest + { + public string Spu { get; set; } + + public IList EditSkuList { get; set; } + } + + public class OP_EditProductSkuPriceRequest + { + public string Sku { get; set; } + + public decimal Price { get; set; } + } +} From 532221ecc1976537838320613076076004596a4c Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 26 Jul 2023 12:00:05 +0800 Subject: [PATCH 53/70] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=94=AE=E4=BB=B7=E6=8C=89=E5=85=A8=E9=87=8F=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Product/ProductBusiness.cs | 37 ++++++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 98 +++++++++---------- .../Product/OP_EditProductPriceRequest.cs | 2 +- 3 files changed, 86 insertions(+), 51 deletions(-) diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs index 0d644cf..1f2e4fc 100644 --- a/BBWYB.Server.Business/Product/ProductBusiness.cs +++ b/BBWYB.Server.Business/Product/ProductBusiness.cs @@ -1,5 +1,6 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; using Yitter.IdGenerator; @@ -14,7 +15,7 @@ namespace BBWYB.Server.Business { this.opPlatformClientFactory = opPlatformClientFactory; } - + public OP_ProductListResponse GetProductList(OP_QueryProductRequest request) { return opPlatformClientFactory.GetClient(request.Platform).GetProductList(request); @@ -27,6 +28,40 @@ namespace BBWYB.Server.Business public void EditProductPrice(OP_EditProductPriceRequest request) { + var skuRequest = new OP_QueryProductSkuRequest() + { + AppKey = request.AppKey, + AppSecret = request.AppSecret, + AppToken = request.AppToken, + PageIndex = 1, + PageSize = 50, + Platform = request.Platform, + Spu = request.Spu + }; + var editSkuList = new List(); + while (true) + { + var response = GetProductSkuList(skuRequest); + if (response.Items.Count > 0) + { + editSkuList.AddRange(response.Items.Select(sku => new OP_EditProductSkuPriceRequest() + { + Sku = sku.Id, + Price = sku.Price, + })); + } + if (response.Items.Count < 50) + break; + skuRequest.PageIndex++; + } + foreach (var editReq in request.EditSkuList) + { + var editSku = editSkuList.FirstOrDefault(x => x.Sku == editReq.Sku); + if (editSku != null) + editSku.Price = editReq.Price; + } + request.EditSkuList.Clear(); + request.EditSkuList.AddRange(editSkuList); opPlatformClientFactory.GetClient(request.Platform).EditProductPrice(request); } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index a661ad6..5b3aaf9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2465,21 +2465,21 @@ namespace BBWYB.Server.Business #region 订单sku平价 var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); - if (isEditOrderPrice) - { - orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; - orderSku.BuyerPayFreight = currentPurchaseFreight; - op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() - { - Freight = currentPurchaseFreight ?? 0M, - InPackAmountPrice = orderSku.InPackAmount ?? 0M, - OrderSkuId = orderSku.Id.ToString(), - Price = orderSku.Price ?? 0M, - SkuId = orderSku.SkuId - }); - updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) - .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); - } + //if (isEditOrderPrice) + //{ + // orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; + // orderSku.BuyerPayFreight = currentPurchaseFreight; + // op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() + // { + // Freight = currentPurchaseFreight ?? 0M, + // InPackAmountPrice = orderSku.InPackAmount ?? 0M, + // OrderSkuId = orderSku.Id.ToString(), + // Price = orderSku.Price ?? 0M, + // SkuId = orderSku.SkuId + // }); + // updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) + // .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); + //} #endregion var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); @@ -2493,15 +2493,15 @@ namespace BBWYB.Server.Business updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); } } - if (isEditOrderPrice) - { - dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight; - dbOrder.OrderSellerPrice = totalPurchaseProductAmount; - dbOrder.FreightPrice = totalPurchaseFreight; - updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice) - .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice) - .Set(o => o.FreightPrice, dbOrder.FreightPrice); - } + //if (isEditOrderPrice) + //{ + // dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight; + // dbOrder.OrderSellerPrice = totalPurchaseProductAmount; + // dbOrder.FreightPrice = totalPurchaseFreight; + // updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice) + // .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice) + // .Set(o => o.FreightPrice, dbOrder.FreightPrice); + //} dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, totalPurchaseProductAmount, @@ -2515,34 +2515,34 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderCostDetailList) update.ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); - foreach (var update in updateOrderSkuList) - update.ExecuteAffrows(); - updateOrder?.ExecuteAffrows(); + //foreach (var update in updateOrderSkuList) + // update.ExecuteAffrows(); + //updateOrder?.ExecuteAffrows(); }); - if (isEditOrderPrice) - { - #region 通知拳探改价 - var opclient = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探); - opclient.EditPrice(new OP_EditPriceRequest() - { - AppKey = shop.AppKey, - AppSecret = shop.AppSecret, - AppToken = shop.AppToken, - OrderId = dbOrder.Id, - EditItems = op_EditPriceSkuRequests - }); - #endregion - - #region 通知C端改价 - restApiService.SendRequest("https://bbwy.qiyue666.com", - "/Api/PurchaseOrder/QuanTanEditPriceCallback", - new { orderId = dbOrder.Id }, - null, - HttpMethod.Post); - #endregion - } + //if (isEditOrderPrice) + //{ + // #region 通知拳探改价 + // var opclient = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探); + // opclient.EditPrice(new OP_EditPriceRequest() + // { + // AppKey = shop.AppKey, + // AppSecret = shop.AppSecret, + // AppToken = shop.AppToken, + // OrderId = dbOrder.Id, + // EditItems = op_EditPriceSkuRequests + // }); + // #endregion + + // #region 通知C端改价 + // restApiService.SendRequest("https://bbwy.qiyue666.com", + // "/Api/PurchaseOrder/QuanTanEditPriceCallback", + // new { orderId = dbOrder.Id }, + // null, + // HttpMethod.Post); + // #endregion + //} } catch (Exception ex) { diff --git a/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs b/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs index 2c9c420..78828c9 100644 --- a/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs +++ b/SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs @@ -4,7 +4,7 @@ { public string Spu { get; set; } - public IList EditSkuList { get; set; } + public List EditSkuList { get; set; } } public class OP_EditProductSkuPriceRequest From 1c63268657938a1ca096f5e9d734c6d2e140cb4b Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 26 Jul 2023 16:41:48 +0800 Subject: [PATCH 54/70] =?UTF-8?q?1.=E6=89=B9=E9=87=8F=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=95=86=E6=95=B0=E6=8D=AE=202.=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E5=80=BC=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=87=87=E8=B4=AD=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../APIServices/PurchaseProductAPIService.cs | 5 -- .../Controllers/DataRepairController.cs | 8 ++ .../DataRepair/DataRepairBusiness.cs | 74 ++++++++++++++++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 11 ++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 11 ++- .../PurchaseProductAPIService.cs | 63 +++++++++++----- .../Db/PurchaseScheme/PurchaseScheme.cs | 2 - .../Db/PurchaseScheme/Purchaser.cs | 2 +- .../Order/OrderPurchaseInfoResponse.cs | 5 ++ 9 files changed, 149 insertions(+), 32 deletions(-) diff --git a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs index b5f42d4..4ad8e49 100644 --- a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs +++ b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs @@ -20,13 +20,8 @@ namespace BBWYB.Client.APIServices private string oneBoundKey = "t5060712539"; private string oneBoundSecret = "20211103"; - //private string qtAppId = "BBWY2023022001"; - //private string qtAppSecret = "908e131365d5448ca651ba20ed7ddefe"; private TimeSpan purchaseProductCacheTimeSpan; - //private TimeSpan _1688SessionIdTimeSpan; - - //private ConcurrentDictionary purchaseSchemeProductSkus)> productChaches; private IDictionary _1688ProductDetailRequestHeader; diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index e01a121..da563c3 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -25,5 +25,13 @@ namespace BBWYB.Server.API.Controllers dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); } + /// + /// 修复采购商信息 + /// + [HttpPost] + public void SupplementPurchaserInfo() + { + dataRepairBusiness.SupplementPurchaserInfo(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 7c953d0..93f4187 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -1,8 +1,10 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; +using System.Net.Http.Headers; using Yitter.IdGenerator; namespace BBWYB.Server.Business @@ -10,9 +12,11 @@ namespace BBWYB.Server.Business public class DataRepairBusiness : BaseBusiness, IDenpendency { private KuaiDi100Manager kuaiDi100Manager; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager) : base(fsql, nLogManager, idGenerator) + private PurchaseSchemeBusiness purchaseSchemeBusiness; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; + this.purchaseSchemeBusiness = purchaseSchemeBusiness; } @@ -20,5 +24,73 @@ namespace BBWYB.Server.Business { kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } + + public void SupplementPurchaserInfo() + { + var purlList = fsql.Select() + .InnerJoin((psp, ps, p) => psp.SkuPurchaseSchemeId == ps.Id) + .InnerJoin((psp, ps, p) => ps.PurchaserId == p.Id) + .Where((psp, ps, p) => ps.PurchasePlatform == Enums.Platform.阿里巴巴 && string.IsNullOrEmpty(p.Id2)) + .ToList((psp, ps, p) => new + { + //psp.PurchaseUrl, + psp.PurchaseProductId, + p.Id + }); + var groups = purlList.GroupBy(p => p.Id); + Console.WriteLine(groups.Count()); + IList> updatePurchaserList = new List>(); + int i = 1; + foreach (var group in groups) + { + var purchaseId = group.Key; + var productId = group.Max(p => p.PurchaseProductId); + Thread.Sleep(1000); + Console.WriteLine(); + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine($"index {i}"); + Console.ResetColor(); + Console.WriteLine(); + var response = purchaseSchemeBusiness.GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() + { + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + Platform = Enums.Platform.阿里巴巴, + PriceMode = Enums.PurchaseOrderMode.批发, + PurchaseProductId = productId + }); + if (!string.IsNullOrEmpty(response?.Purchaser?.Id2)) + { + if (response.Purchaser.Id2.Length > 20) + Console.WriteLine(response.Purchaser.Id2); + var update = fsql.Update(purchaseId).Set(p => p.Id2, response.Purchaser.Id2); + updatePurchaserList.Add(update); + } + i++; + + if (updatePurchaserList.Count >= 10) + { + fsql.Transaction(() => + { + foreach (var update in updatePurchaserList) + update.ExecuteAffrows(); + }); + updatePurchaserList.Clear(); + Console.WriteLine(); + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("更新数据库更新"); + Console.ResetColor(); + Console.WriteLine(); + } + } + + if (updatePurchaserList.Count() > 0) + { + fsql.Transaction(() => + { + foreach (var update in updatePurchaserList) + update.ExecuteAffrows(); + }); + } + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 45e944e..84b9acb 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -265,6 +265,7 @@ namespace BBWYB.Server.Business #region 处理采购信息 var orderPurchaseInfoList = fsql.Select().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList(); + var purchaserIdList = orderPurchaseInfoList.Select(opi => opi.PurchaserId).Distinct().ToList(); var orderPurchaseSkuInfoList = fsql.Select().Where(o => orderIdList.Contains(o.OrderId)).ToList(); foreach (var order in orderList) { @@ -277,6 +278,14 @@ namespace BBWYB.Server.Business } #endregion + #region 处理采购单商家信息 + var purchaserList = fsql.Select(purchaserIdList).ToList(); + foreach (var purchaseOrder in orderPurchaseInfoList) + { + purchaseOrder.Purchaser = purchaserList.FirstOrDefault(p => p.Id == purchaseOrder.PurchaserId); + } + #endregion + #region 处理SKU var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); foreach (var order in orderList) @@ -561,7 +570,7 @@ namespace BBWYB.Server.Business .Set(osku => osku.InPackAmount, orderSku.PackAmount)); var ocdList = orderCostDetailList.Where(ocd => ocd.SkuId == orderSku.SkuId).ToList(); - if (ocdList != null && ocdList.Count()>0) + if (ocdList != null && ocdList.Count() > 0) { foreach (var orderCostDetail in ocdList) { diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5b3aaf9..7289b69 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -739,10 +739,13 @@ namespace BBWYB.Server.Business purchaserId = purchaserId.Replace("b2b-", string.Empty); var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5); var purchaserIds = new List() { purchaserId, purchaserId2 }; - var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && purchaserIds.Contains(p.Id)).ToOne(); + var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && (purchaserIds.Contains(p.Id) || + purchaserIds.Contains(p.Id2))).ToOne(); if (dbPurchaser == null) throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效采购商"); purchaserId = dbPurchaser.Id; + if (string.IsNullOrEmpty(purchaseOrder.PurchaserId)) + purchaseOrder.PurchaserId = purchaserId; #endregion #region 匹配采购方案 @@ -914,8 +917,10 @@ namespace BBWYB.Server.Business dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName; //dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)); dbPurchaserOrder.PurchasePlatform = purchaseOrder.PurchasePlatform; - dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId; - dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName; + if (!string.IsNullOrEmpty(purchaseOrder.PurchaserId) && purchaseOrder.PurchaserId != dbPurchaserOrder.PurchaserId) + dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId; + if (!string.IsNullOrEmpty(purchaseOrder.PurchaserName) && purchaseOrder.PurchaserName != dbPurchaserOrder.PurchaserName) + dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName; updateOrderPurchaseInfoList.Add(fsql.Update().SetSource(dbPurchaserOrder)); foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index 0995f7f..2a76e38 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -27,6 +27,10 @@ namespace BBWYB.Server.Business private IDictionary _1688ProductDetailRequestHeader; + private List _1688ColorPropertyFieldIdList; + private List locationIdList; + private List priceIdList; + public PurchaseProductAPIService(RestApiService restApiService, IMemoryCache memoryCache) { this.memoryCache = memoryCache; @@ -40,6 +44,16 @@ namespace BBWYB.Server.Business { "Accept-Language","zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"} }; purchaseProductCacheTimeSpan = TimeSpan.FromDays(1); + _1688ColorPropertyFieldIdList = new List() { 3216, 1627207, 1234, 3151, 7853, 446, 374, 404, 100019516, 3114, 2068 }; + //jobject["data"]["1081181309101"] != null ? + // jobject["data"]["1081181309101"]["data"]["location"].ToString() : + // jobject["data"]["16347413030323"]["data"]["location"].ToString(), + locationIdList = new List() { "1081181309101", "16347413030323", "13772573013156" }; + + //var firstPrice = jobject["data"]["1081181309582"] != null ? + // jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value("price") : + // jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value("price"); + priceIdList = new List() { "1081181309582", "1081181309582", "16347413030316", "13772573013151" }; } public PurchaseSkuBasicInfoResponse GetProductInfo(PurchaseSkuBasicInfoRequest request) @@ -193,32 +207,43 @@ namespace BBWYB.Server.Business var jsonStr = match.Groups[2].Value; var jobject = JObject.Parse(jsonStr); - //16347413030323 + var location = ""; + for (var i = 0; i < locationIdList.Count(); i++) + { + if (jobject["data"][locationIdList[i]] != null) + { + location = jobject["data"][locationIdList[i]]["data"]["location"].ToString(); + break; + } + } var purchaser = new Purchaser() { Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), - Location = jobject["data"]["1081181309101"] != null ? - jobject["data"]["1081181309101"]["data"]["location"].ToString() : - jobject["data"]["16347413030323"]["data"]["location"].ToString(), + Location = location, Platform = Enums.Platform.阿里巴巴 }; - - var colorsProperty = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value("fid") == 3216 || - j.Value("fid") == 1627207 || - j.Value("fid") == 1234 || - j.Value("fid") == 3151)["value"] - .Children() - .Select(j => new - { - name = j.Value("name"), - imageUrl = j.Value("imageUrl") - }).ToList(); - - var firstPrice = jobject["data"]["1081181309582"] != null ? - jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value("price") : - jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value("price"); + var fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => _1688ColorPropertyFieldIdList.Contains(j.Value("fid"))); + if (fidJToken == null) + fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value("prop").Contains("颜色")); + if (fidJToken == null && jobject["globalData"]["skuModel"]["skuProps"].Children().Count() == 1) + fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(); + var colorsProperty = fidJToken["value"].Children() + .Select(j => new + { + name = j.Value("name"), + imageUrl = j.Value("imageUrl") + }).ToList(); + var firstPrice = 0.0M; + for (var i = 0; i < priceIdList.Count(); i++) + { + if (jobject["data"][priceIdList[i]] != null) + { + firstPrice = jobject["data"][priceIdList[i]]["data"]["priceModel"]["currentPrices"][0].Value("price"); + break; + } + } var list = new List(); diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index 3b1ae95..be1d49c 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -1,8 +1,6 @@ using BBWYB.Server.Model.Db; using FreeSql.DataAnnotations; -using System; -using System.Collections.Generic; namespace BBWYB.Server.Model { diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs index d04021f..d8e6d38 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs @@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Db /// /// 采购商Id2 (1688 SellerLoginId) /// - [Column(StringLength = 20)] + [Column(StringLength = 50)] public string Id2 { get; set; } /// diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs index 61c2004..06c4120 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs @@ -13,5 +13,10 @@ namespace BBWYB.Server.Model.Dto /// 快递单列表 /// public IList PurchaseExpressOrderList { get; set; } + + /// + /// 采购商家 + /// + public Purchaser Purchaser { get; set; } } } From fc235ad6ade36f637871186a951b12a1afd5bde1 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 26 Jul 2023 22:16:06 +0800 Subject: [PATCH 55/70] 10030 --- .../APIServices/PurchaseProductAPIService.cs | 58 +++++++++++++----- BBWYB.Client/GlobalContext.cs | 23 ++++++- BBWYB.Client/Resources/Images/bbwylogo.ico | Bin 915 -> 67646 bytes BBWYB.Client/ViewModels/MainViewModel.cs | 2 - 4 files changed, 63 insertions(+), 20 deletions(-) diff --git a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs index 4ad8e49..17b0308 100644 --- a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs +++ b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs @@ -25,6 +25,10 @@ namespace BBWYB.Client.APIServices private IDictionary _1688ProductDetailRequestHeader; + private List _1688ColorPropertyFieldIdList; + private List locationIdList; + private List priceIdList; + public PurchaseProductAPIService(RestApiService restApiService, IMemoryCache memoryCache) { this.restApiService = restApiService; @@ -38,6 +42,10 @@ namespace BBWYB.Client.APIServices { "Accept-Language","zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"} }; purchaseProductCacheTimeSpan = TimeSpan.FromDays(1); + + _1688ColorPropertyFieldIdList = new List() { 3216, 1627207, 1234, 3151, 7853, 446, 374, 404, 100019516, 3114, 2068 }; + locationIdList = new List() { "1081181309101", "16347413030323", "13772573013156" }; + priceIdList = new List() { "1081181309582", "1081181309582", "16347413030316", "13772573013151" }; } public (Purchaser purchaser, IList purchaseSchemeProductSkus)? GetProductInfo(Platform platform, string productId, string skuId, string purchaseProductId, PurchaseOrderMode priceMode, PurchaseProductAPIMode apiMode) @@ -186,31 +194,47 @@ namespace BBWYB.Client.APIServices var jsonStr = match.Groups[2].Value; var jobject = JObject.Parse(jsonStr); + var location = ""; + for (var i = 0; i < locationIdList.Count(); i++) + { + if (jobject["data"][locationIdList[i]] != null) + { + location = jobject["data"][locationIdList[i]]["data"]["location"].ToString(); + break; + } + } + //16347413030323 var purchaser = new Purchaser() { Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), - Location = jobject["data"]["1081181309101"] != null ? - jobject["data"]["1081181309101"]["data"]["location"].ToString() : - jobject["data"]["16347413030323"]["data"]["location"].ToString() + Location = location, + Platform = platform }; - var colorsProperty = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value("fid") == 3216 || - j.Value("fid") == 1627207 || - j.Value("fid") == 1234 || - j.Value("fid") == 3151)["value"] - .Children() - .Select(j => new - { - name = j.Value("name"), - imageUrl = j.Value("imageUrl") - }).ToList(); - - var firstPrice = jobject["data"]["1081181309582"] != null ? - jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value("price") : - jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value("price"); + var fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => _1688ColorPropertyFieldIdList.Contains(j.Value("fid"))); + if (fidJToken == null) + fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value("prop").Contains("颜色")); + if (fidJToken == null && jobject["globalData"]["skuModel"]["skuProps"].Children().Count() == 1) + fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(); + var colorsProperty = fidJToken["value"].Children() + .Select(j => new + { + name = j.Value("name"), + imageUrl = j.Value("imageUrl") + }).ToList(); + + var firstPrice = 0.0M; + for (var i = 0; i < priceIdList.Count(); i++) + { + if (jobject["data"][priceIdList[i]] != null) + { + firstPrice = jobject["data"][priceIdList[i]]["data"]["priceModel"]["currentPrices"][0].Value("price"); + break; + } + } var purchaseSchemeProductSkus = new List(); diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 02ac109..dcc7452 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -1,4 +1,5 @@ using BBWYB.Client.APIServices; +using BBWYB.Client.Helpers; using BBWYB.Client.Models; using BBWYB.Client.ViewModels; using BBWYB.Client.Views.PackPurchaseTaska; @@ -7,6 +8,7 @@ using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Messaging; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Windows; @@ -20,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10029"; + BBWYBApiVersion = "10030"; } private User user; @@ -57,6 +59,25 @@ namespace BBWYB.Client return BBWYBApiVersion; } + public void CallALiWangWang(string sellerLoginId) + { + var url = $"aliim:sendmsg?siteid=cnalichn&portalId=&gid=&itemsId=&touid=cnalichn{sellerLoginId}&status=1"; + try + { + //Process.Start("explorer.exe", url); + ShellExecuteHelper.ShellExecute(IntPtr.Zero, "open", url, string.Empty, string.Empty, ShellExecuteHelper.ShowCommands.SW_SHOWNORMAL); + } + catch (Exception ex) + { + try + { + Clipboard.SetText(url); + } + catch { } + MessageBox.Show($"{ex.Message}\r\n唤醒旺旺失败,唤醒链接已复制到剪切板,请手动打开浏览器唤醒", "提示"); + } + } + /// /// 对web版提供的修改打包任务方法 /// diff --git a/BBWYB.Client/Resources/Images/bbwylogo.ico b/BBWYB.Client/Resources/Images/bbwylogo.ico index 5fb3f35cc9aaa93fe187a5c0211fbfa597d607f4..c743326916abf73524b1c8dbbd9c031416f0d7a8 100644 GIT binary patch literal 67646 zcmeI5YmgjO6~|{QNKn+23Id`oVj++smVydlvpZv62vP)5pcIivA|era1SGuNA@VSU zg3Zo8vH}L9NDLq#TBVkf{i0NrB=Fmx_fTV z^lbHZpT4hi{{M4t-+TLZcd69JU$t7||1qT#4(Thsxl}5hz{V*#sn5%y7Mug?|1TR; z?;4y?A0Di!YszD4VrX3LV*jObO`X4NLY>0)2J4M*6&%{GjvE?Nmkf@nyV*a?{%P5U zYU=BQ<7zY8$5xD}Bl2QTntGl-s@@4kUxx4RHrv2(eVV$on>RjsEZpAe@!f2X-5UlT zRIh8d+`OhA8da;CaXv3x>d>Sbu+3(;JgXVsjlxOy5a&;}&7QRNf!7D-acj^9cxmL? zkhYGd`7h%d)ri|T=dkN^)AI5jk2Z3P$74JD%BVW6(^%k#tK#q+6?bV(NjI*mfAD=? zJDdm8R_;-UbqcV-DRmUS{6rL|al)`|q*JzJQSS0dbu`zzhl3opDR0a|_eN#NSS1d> zhH=+4DytjL!TqIea@}x@z}WHBtnsN#slyEU)MG!>xZtxrYg@7^kMZyAY4BfRJe`#d zUO9TM!X4L}a%&oIU_>47mD4TzN>v>M_m8K+e|cP8lQmA*vC)*zxbdhb=VWb9+U3do zUK-p>p74Kf+WH6c=UR48TwYD%Gp4vKSYF;`Y+sWa|6}UWtntB~2~$2}$D?1FwLNK< z2luC^#XoiN!L;=c=ASbER|d<=yF56m4o{8$nyO}v54Kce*K5Q6B6(kwwLMvsM?Kx1 ziVxJ(x-9hfm%+Tx+O+s*UctKi8-CkcJ%;;@sqjCpR=28CtLYeXz9%jI$@{gf>Sc2} znJZ74fAV~U@zOgwVK=snC+!1LM>=6kR%LPxxFty+0RI(P=^iX+*{E8XH2<<5B3Mp0 z$!CtLg^BTBQ#W@S8*JH>ln>C3eWKI$WKlkCz)%uCAik7^zENc?y;r>&TSnUT0rKeT zc0Y(AzP_YoA7C6I_g{i}c1p$v-U$D9x9kHQn7{56R{nA;d(=T-w%*ha7<26=uC-%h z#%-6!_JNxEs2`JFJZAp>gY@ICXS=_FFFa0LaXZ(HO9!UZ+il0E!WtfI*ciDkWL$ki z{JvNNJfF=K_p2kyqiPU**2q00xomi=eW->nu@Ce=y!f~;{p4_iKhA1@!;rjD~; z`$EG4fdYX7fdYX7fdYX7fdYX7fdYX7fdYX7fn*S1Onf5qWm^~%%bMWlncw*@o9eZV zd5%AV!Bg0MUu8_4oeaA6=2F?A4uS8RvH739#S`&c#8h`N7r-IjvWR@=J`W@y_Ni~fGK z;J>BozTa0KvyWLbjo|oS1kDdbHRVx{Hvi!wcIXdn`{HMbI@1trqpZT{*_+lpZi{Wc*bQH7;J;5 zo0tb*C*O6>eJ(yNmt>%kf+t~bT7rW{h&Uf-I`wz5=Pg3c` z@8tWbN#&PRK5*ZyYyF?BOsJJf;na=!$UDzypZ?Zm_5T_AW<=xu*wy+t^=D{3UVm?{s{0zA%sc^R4AX-YGBd^~U}Sz~L^&zzx4s9_zd_ zpL_-WFp!7ufnm42qd!-3eKKF)ZoR2&Qzz+qo&@J%d5o!t#J6nr1N8e&uJ~sjy&dkQ z-N4=rvFdafzozF|`-!iu;U4R&+R;6Yv|#avyzo!|tL61GGRGk z_^r_8W2ztCAFzh|IbYb?>FWXf-wH6BqEC9fr+1cn>i%=K*MEF8_C4I833X0hxcBr-di_~5KdOwX zx5E8i%lUt@nH|A!`L?r%X`c3s4@ZNxq$$fhw&mQbxa)RgeOI11pQkJH5@~Yo&l`Wc z-e&&MZ>L}1X2>NO(I-lW%0ak+_jqJ33X)@_t?88h?|rF z-aG2)YU;YdNi`6Rm!vG;oNn4T&EP%~Ha}}|{f{-*qwirx)j{Un!Z-wj8$AB;g-o8! z(R0vI`i`kv!t_nzJa`?B&9k=h4-YrRv6FHBbsmR}_T+bGSbhi8#SH45r$-|_{pVO? zQ1Rj>y$7%5wsJ3e$+JkNHnW!gy?)#p9p{mMI2uW7evrQZl@{~=f+_bB51ejp#JT@m zF8SyBAnT3dU||{;JSME=e_TzP+QEIDWBojb9b@l~u(ewB3vctK%jCHn>0|oJY&a*V z!+9Rx6pJ|Vz+;cC{L4KlQ(Gji5suU)Y`&JZVu^o~xkYgJwwDKS?&SDW{y0e=Q^r#A zjO?#?`pBN=kKb*Ihe^CsN7d`G`R}&!FV9z-*dcMivFgXF8;`jLtTn~MBpyCLU@P~u z#d}O_kT@&9q84={-}7u@ZK)|HCh-{We8yJ(v3-|`4HAbjYHhp}epNK;&z z#e@HQt>r(4uhaH#>KXnM{Jt>U%lk>JT<=TY$avld{wI5df3Ay(d{6YuQMC~6U$m8f zI9=DQ{qn+z+w|FtF7l6!p55*2^?Qsgt^4AW@~$Nl``q=M;p658*ZRDU|HOy6W^XpZ zrCA&>u=+V~@y}*9NVq(Y7pHDxcRuHTJU@=nFN(sCHuElP+kR=6c*k0l{$3dOdIw|j zpS$}%2iV7RM4s*K?BV`NoB5ab>zUXm^Wq2KuibLDK#AfbAH(8GpWrG*ScOS`)6{aZ*$N zYlVM#Uu~9~sh`9BMZLnm^mk2hX%vrZ&N;1cPr9cXhYsi!Ja>M(zv^6U^koBDejs2f}S z<=S|>dZ#)REFWryrEnakztrz~`UZ1EVd>gEUoSJt4+77DRagf^z5fR`$8O8xrb&9; zal3ehrN^!dnqiq+{saD~?aY9CFnuu$Z`;nxyA{!QD#{1)$UklT<$kPn-Oq-5XqoeYVK?^xW~!9JG96&W}4bj>1do?Y@*D*F=BWwjaxLl3W+V=hd0#mwP>p?4aGK z&m&UjV!vysQJ&4t;g74L+AI2A^Pc-7{tq+Ze_Z`b)`>Q=!M1RDuVxgc_{Vr~EXTP6 zpC95`FzVTD!FY+vGG>jsUWGjOOPZH6;h*;b+s3V_KJa-}qz^>(wJix_eqeDUducO% zmj(a$`W21J&&xUZueaxU^99CSKyUm`rNJ7s}=OOQsrLH{OaX(;u4`-)z8joHqU*-TAM}MIs zJ|J_t%v<@TJF9H znH<9T$Vt{Z&>pPC7q+$S3#_$dJij8iZYLi|6k5u=mgHVL9InR~HZpeDto?#xq z)aPC7ze?CveCAfkSQ*X3aXC1ah_bg2}S%MwgMUU)L{TzO7@Au{?7Q#!wZ zzQ_mK=h^Go@8RL$Gov$_!*8zxjLt`8UPPk7V7W?AL)w%r2lD-YO zU((NIr|Vf=9#*sdaKPWM3320>N%|a{7hewLhr7$qb52ioxSR{`m$>qC;}2_LPWD7M z9BTGCSvu~)anB>5ql<3IL zP8>wbeL8zxfGf{PsZtTOJ1uZoos+9NyzGWAbW!V{lQ(fZjRHFTqWz_P#GOH&k%X>1 z3kifv?Sakn{r_dA|ix8IfbI@$H% ze!A81Wa7E9#}E^GZ4R9)HQ16g~%E6aKmEj#?q`edD-JhQFCUH=dnJNc239LuKV zX%S0hHorV9=XCfCN5Eh8WNl!dusN*5wLuHijCWPlxJWG$pO>E`cT{m?a&n7uN0096203aX$0096P0DS`h02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|AOHXW zAP5Ek0047(dh`GQ00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E000SaNLh0L01m?d z01m?e$8V@)0009LNkl2zK)$beTsuPqB{-&b*B%Tt(U?3Eo`4HjXT~0d6K;GW z6xxg{pLCn&4S?DJlFG!jePl9_iLwUK%O25~EFcRxJ?u7(s}Of!nl>+Qz=9S#4#&wv zfE&;v!n$y}-~)}zEnF_vjwZU`t=*#?qw@uwiQgAbbBXc@yx2qRsA$)h&rL-1X*%cb zK!GqCiL(1tBX>^5SLs$z?f`{%v({V~iV4*WtiVlny`br5&s7>pMFV_5za+PoCX_t_ z4?F^$1x=KVs5FwYM}RBn@HUs!#6WHkOjYycgtZ<)L@OA;d!m8?)l<*~e^g@0{}`ye z1OI5CCPyF)_FE;E_`UVyGb-8l+3i+{O!KZHq*G>(5@ p-SKpv#%L{M)x}1j4AzLcz+ZMandohh>k$9|002ovPDHLkV1o7)o7eyV diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index dc308ca..41da673 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -1,13 +1,11 @@ using BBWYB.Client.APIServices; using BBWYB.Client.Models; -using BBWYB.Client.Views; using BBWYB.Client.Views.SelectShop; using BBWYB.Client.Views.WebB; using BBWYB.Common.Extensions; using BBWYB.Common.Models; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; -using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; From dff359d6395f2224b9473dd9f71c00677d454701 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 26 Jul 2023 22:47:49 +0800 Subject: [PATCH 56/70] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 84b9acb..8aed16b 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -279,10 +279,13 @@ namespace BBWYB.Server.Business #endregion #region 处理采购单商家信息 - var purchaserList = fsql.Select(purchaserIdList).ToList(); - foreach (var purchaseOrder in orderPurchaseInfoList) + if (purchaserIdList.Count() > 0) { - purchaseOrder.Purchaser = purchaserList.FirstOrDefault(p => p.Id == purchaseOrder.PurchaserId); + var purchaserList = fsql.Select(purchaserIdList).ToList(); + foreach (var purchaseOrder in orderPurchaseInfoList) + { + purchaseOrder.Purchaser = purchaserList.FirstOrDefault(p => p.Id == purchaseOrder.PurchaserId); + } } #endregion From c2b3b22cef38af1066d40dabc58bc2abe55c8796 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 26 Jul 2023 22:56:56 +0800 Subject: [PATCH 57/70] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 8aed16b..939cb7f 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -265,7 +265,7 @@ namespace BBWYB.Server.Business #region 处理采购信息 var orderPurchaseInfoList = fsql.Select().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList(); - var purchaserIdList = orderPurchaseInfoList.Select(opi => opi.PurchaserId).Distinct().ToList(); + var purchaserIdList = orderPurchaseInfoList.Where(opi=>!string.IsNullOrEmpty(opi.PurchaserId)).Select(opi => opi.PurchaserId).Distinct().ToList(); var orderPurchaseSkuInfoList = fsql.Select().Where(o => orderIdList.Contains(o.OrderId)).ToList(); foreach (var order in orderList) { From 67ed4491d9bbdbaf607523264eaa4da059ec90ff Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 28 Jul 2023 09:46:14 +0800 Subject: [PATCH 58/70] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E1688=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E9=80=9A=E7=9F=A5=EF=BC=8C=E5=A4=84=E7=90=86=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=B9=B3=E4=BB=B7=202.1688=E6=94=B9=E4=BB=B7=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=EF=BC=8C=E5=A4=84=E7=90=86=E8=AE=A2=E5=8D=95=E5=B9=B3?= =?UTF-8?q?=E4=BB=B7=203.=E5=B9=B3=E4=BB=B7=E8=A7=A6=E5=8F=91=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E4=BF=AE=E6=94=B9=20=20=20=201=EF=BC=89=E6=89=80?= =?UTF-8?q?=E6=9C=89=E9=87=87=E8=B4=AD=E5=8D=95=E4=B8=BA1688=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=20=20=20=202=EF=BC=89=E6=89=80=E6=9C=89=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=8D=95=E4=B8=BA=E5=9C=A8=E7=BA=BF=E9=87=87=E8=B4=AD?= =?UTF-8?q?=20=20=20=203=EF=BC=89=E8=AE=A2=E5=8D=95=E4=B8=8D=E5=A4=84?= =?UTF-8?q?=E4=BA=8E=E5=8F=96=E6=B6=88/=E9=83=A8=E5=88=86=E9=87=87?= =?UTF-8?q?=E8=B4=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 375 ++++++++++-------- 1 file changed, 202 insertions(+), 173 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 7289b69..a753d63 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -739,7 +739,7 @@ namespace BBWYB.Server.Business purchaserId = purchaserId.Replace("b2b-", string.Empty); var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5); var purchaserIds = new List() { purchaserId, purchaserId2 }; - var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && (purchaserIds.Contains(p.Id) || + var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && (purchaserIds.Contains(p.Id) || purchaserIds.Contains(p.Id2))).ToOne(); if (dbPurchaser == null) throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效采购商"); @@ -2112,6 +2112,9 @@ namespace BBWYB.Server.Business case "LOGISTICS_BUYER_VIEW_TRACE": // LogisticsUpdateCallbackFrom1688(jObject);//1688物流信息变更 break; + case "ORDER_BUYER_VIEW_ORDER_PAY": + OrderPayFrom1688(jObject); + break; default: break; } @@ -2370,6 +2373,12 @@ namespace BBWYB.Server.Business var purchaseOrderId = jObject["data"].Value("orderId"); Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } + + private void OrderPayFrom1688(JObject jObject) + { + var purchaseOrderId = jObject["data"].Value("orderId"); + Task.Factory.StartNew(() => OrderPayCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } #endregion @@ -2380,179 +2389,12 @@ namespace BBWYB.Server.Business /// private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform) { - bool isEditOrderPrice = true; - try - { - var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); - if (orderPurchaseInfo == null) - throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); - - var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); - if (purchaseAccount == null) - throw new Exception($"采购单{purchaseOrderId}-未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); - - var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); - var dbOrderCost = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); - if (dbOrderCost == null) - throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本"); - - var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); - - var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); - if (dbOrderCostDetails.Count() == 0) - throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); - - - var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId && opi.IsEnabled == true).ToList(); - if (dbOrderPurchaseInfoList.Count() == 0) - throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); - - isEditOrderPrice = dbOrderPurchaseInfoList.Count() == dbOrderPurchaseInfoList.Count(opi => opi.PurchasePlatform == Enums.Platform.阿里巴巴 && - opi.PurchaseMethod == Enums.PurchaseMethod.线上采购); - - var dbPurchaseOrderIdList = dbOrderPurchaseInfoList.Select(x => x.PurchaseOrderId).ToList(); - var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => dbPurchaseOrderIdList.Contains(x.PurchaseOrderId)).ToList(); - if (dbOrderPurchaseRelationInfos.Count() == 0) - throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细"); - - var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList(); - - List> updateOrderCostDetailList = new List>(); - IUpdate updateOrderCost = null; - - IList> updateOrderSkuList = new List>(); - IUpdate updateOrder = null; - - IList op_EditPriceSkuRequests = new List(); - - var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); - - var totalPurchaseProductAmount = 0M; - var totalPurchaseFreight = 0M; - foreach (var opi in dbOrderPurchaseInfoList) - { - if (opi.PurchasePlatform != Enums.Platform.阿里巴巴) - continue; - - var purchaseOrderSimpleInfo = ppclient.QueryOrderDetail(new PP_QueryOrderDetailRequest() - { - AppKey = purchaseAccount.AppKey, - AppSecret = purchaseAccount.AppSecret, - AppToken = purchaseAccount.AppToken, - OrderId = opi.PurchaseOrderId - }); - - totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; - totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; - - var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); - var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); - - var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId); - foreach (var belongSkuGroup in belongSkuGroups) - { - var belongSkuId = belongSkuGroup.Key; - - var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId - var currentOrderSkuProductAmount = 0M; //采购成本 - var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和 - var currentPurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * - (1.0M * currentSkuTotalPurchaseQuantity / purchaseSkuTotalQuantity); //采购运费 - - foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) - { - var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) - .Sum(p => p.ProductAmount); - var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) - .Sum(p => p.Quantity); - currentOrderSkuProductAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / currentPurchaseSkuTotalQuantity); - } - - #region 订单sku平价 - var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); - //if (isEditOrderPrice) - //{ - // orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; - // orderSku.BuyerPayFreight = currentPurchaseFreight; - // op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() - // { - // Freight = currentPurchaseFreight ?? 0M, - // InPackAmountPrice = orderSku.InPackAmount ?? 0M, - // OrderSkuId = orderSku.Id.ToString(), - // Price = orderSku.Price ?? 0M, - // SkuId = orderSku.SkuId - // }); - // updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) - // .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); - //} - #endregion - - var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); - dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, - orderSku.BuyerPayFreight ?? 0M, - orderSku.InPackAmount ?? 0M, - currentOrderSkuProductAmount, - currentPurchaseFreight ?? 0M, - dbOrderSkuDetail.OutPackAmount ?? 0M, - dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); - updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); - } - } - //if (isEditOrderPrice) - //{ - // dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight; - // dbOrder.OrderSellerPrice = totalPurchaseProductAmount; - // dbOrder.FreightPrice = totalPurchaseFreight; - // updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice) - // .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice) - // .Set(o => o.FreightPrice, dbOrder.FreightPrice); - //} - - dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, - totalPurchaseProductAmount, - totalPurchaseFreight, - dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), - dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); - updateOrderCost = fsql.Update().SetSource(dbOrderCost); - - fsql.Transaction(() => - { - foreach (var update in updateOrderCostDetailList) - update.ExecuteAffrows(); - updateOrderCost?.ExecuteAffrows(); - //foreach (var update in updateOrderSkuList) - // update.ExecuteAffrows(); - //updateOrder?.ExecuteAffrows(); - }); - + OnSomeOnePurchaseOrderChanged(purchaseOrderId, true); + } - //if (isEditOrderPrice) - //{ - // #region 通知拳探改价 - // var opclient = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探); - // opclient.EditPrice(new OP_EditPriceRequest() - // { - // AppKey = shop.AppKey, - // AppSecret = shop.AppSecret, - // AppToken = shop.AppToken, - // OrderId = dbOrder.Id, - // EditItems = op_EditPriceSkuRequests - // }); - // #endregion - - // #region 通知C端改价 - // restApiService.SendRequest("https://bbwy.qiyue666.com", - // "/Api/PurchaseOrder/QuanTanEditPriceCallback", - // new { orderId = dbOrder.Id }, - // null, - // HttpMethod.Post); - // #endregion - //} - } - catch (Exception ex) - { - nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId}"); - } + private void OrderPayCallback(string purchaseOrderId, Enums.Platform callbackPlatform) + { + OnSomeOnePurchaseOrderChanged(purchaseOrderId, false); } public void KuaiDi100Publish(string param) @@ -2874,6 +2716,193 @@ namespace BBWYB.Server.Business } } + /// + /// 采购单信息变更(改价,付款) + /// + /// 采购单Id + /// 当不需要触发订单改价时是否继续走流程 + private void OnSomeOnePurchaseOrderChanged(string purchaseOrderId, bool keepRunWhenNoEditOrderPirce) + { + bool isEditOrderPrice = true; + try + { + var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); + if (orderPurchaseInfo == null) + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); + + var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); + + var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId && opi.IsEnabled == true).ToList(); + if (dbOrderPurchaseInfoList.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); + + isEditOrderPrice = dbOrderPurchaseInfoList.Count() == dbOrderPurchaseInfoList.Count(opi => opi.PurchasePlatform == Enums.Platform.阿里巴巴 && + opi.PurchaseMethod == Enums.PurchaseMethod.线上采购) && + dbOrder.OrderState != Enums.OrderState.已取消 && + dbOrder.OrderState != Enums.OrderState.部分采购; + + if (!keepRunWhenNoEditOrderPirce && !isEditOrderPrice) + return; + + var dbOrderCost = fsql.Select(dbOrder.Id).ToOne(); + if (dbOrderCost == null) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{dbOrder.Id}的成本"); + + var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); + if (purchaseAccount == null) + throw new Exception($"采购单{purchaseOrderId}-未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); + + var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); + + var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); + if (dbOrderCostDetails.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); + + + var dbPurchaseOrderIdList = dbOrderPurchaseInfoList.Select(x => x.PurchaseOrderId).ToList(); + var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => dbPurchaseOrderIdList.Contains(x.PurchaseOrderId)).ToList(); + if (dbOrderPurchaseRelationInfos.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细"); + + var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList(); + + List> updateOrderCostDetailList = new List>(); + IUpdate updateOrderCost = null; + + IList> updateOrderSkuList = new List>(); + IUpdate updateOrder = null; + + IList op_EditPriceSkuRequests = new List(); + + var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); + + var totalPurchaseProductAmount = 0M; + var totalPurchaseFreight = 0M; + foreach (var opi in dbOrderPurchaseInfoList) + { + if (opi.PurchasePlatform != Enums.Platform.阿里巴巴) + continue; + + var purchaseOrderSimpleInfo = ppclient.QueryOrderDetail(new PP_QueryOrderDetailRequest() + { + AppKey = purchaseAccount.AppKey, + AppSecret = purchaseAccount.AppSecret, + AppToken = purchaseAccount.AppToken, + OrderId = opi.PurchaseOrderId + }); + + totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; + totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; + + var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); + var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); + + var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId); + foreach (var belongSkuGroup in belongSkuGroups) + { + var belongSkuId = belongSkuGroup.Key; + + var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId + var currentOrderSkuProductAmount = 0M; //采购成本 + var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和 + var currentPurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * + (1.0M * currentSkuTotalPurchaseQuantity / purchaseSkuTotalQuantity); //采购运费 + + foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) + { + var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.ProductAmount); + var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.Quantity); + currentOrderSkuProductAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / currentPurchaseSkuTotalQuantity); + } + + #region 订单sku平价 + var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); + if (isEditOrderPrice) + { + orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; + orderSku.BuyerPayFreight = currentPurchaseFreight; + op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() + { + Freight = currentPurchaseFreight ?? 0M, + InPackAmountPrice = orderSku.InPackAmount ?? 0M, + OrderSkuId = orderSku.Id.ToString(), + Price = orderSku.Price ?? 0M, + SkuId = orderSku.SkuId + }); + updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) + .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); + } + #endregion + + var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); + dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, + orderSku.BuyerPayFreight ?? 0M, + orderSku.InPackAmount ?? 0M, + currentOrderSkuProductAmount, + currentPurchaseFreight ?? 0M, + dbOrderSkuDetail.OutPackAmount ?? 0M, + dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); + } + } + if (isEditOrderPrice) + { + dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight; + dbOrder.OrderSellerPrice = totalPurchaseProductAmount; + dbOrder.FreightPrice = totalPurchaseFreight; + updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice) + .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice) + .Set(o => o.FreightPrice, dbOrder.FreightPrice); + } + + dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, + totalPurchaseProductAmount, + totalPurchaseFreight, + dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), + dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); + updateOrderCost = fsql.Update().SetSource(dbOrderCost); + + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + updateOrderCost?.ExecuteAffrows(); + foreach (var update in updateOrderSkuList) + update.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); + }); + + if (isEditOrderPrice) + { + #region 通知拳探改价 + var opclient = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探); + opclient.EditPrice(new OP_EditPriceRequest() + { + AppKey = shop.AppKey, + AppSecret = shop.AppSecret, + AppToken = shop.AppToken, + OrderId = dbOrder.Id, + EditItems = op_EditPriceSkuRequests + }); + #endregion + + #region 通知C端改价 + restApiService.SendRequest("https://bbwy.qiyue666.com", + "/Api/PurchaseOrder/QuanTanEditPriceCallback", + new { orderId = dbOrder.Id }, + null, + HttpMethod.Post); + #endregion + } + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 采购单号{purchaseOrderId}"); + } + } + private void SendDingDing(string content) { try From c4559ef3051ca7ead525196c05261a669f7da3ba Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 28 Jul 2023 09:47:39 +0800 Subject: [PATCH 59/70] =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=94=B9=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index a753d63..d86c16c 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2823,16 +2823,20 @@ namespace BBWYB.Server.Business { orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; orderSku.BuyerPayFreight = currentPurchaseFreight; - op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() + if (!op_EditPriceSkuRequests.Any(x => x.SkuId == orderSku.SkuId)) { - Freight = currentPurchaseFreight ?? 0M, - InPackAmountPrice = orderSku.InPackAmount ?? 0M, - OrderSkuId = orderSku.Id.ToString(), - Price = orderSku.Price ?? 0M, - SkuId = orderSku.SkuId - }); - updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) - .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); + op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() + { + Freight = currentPurchaseFreight ?? 0M, + InPackAmountPrice = orderSku.InPackAmount ?? 0M, + OrderSkuId = orderSku.Id.ToString(), + Price = orderSku.Price ?? 0M, + SkuId = orderSku.SkuId + }); + updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) + .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); + } + } #endregion From 39a911b71c11de0c06d002d94dd63ebd1ca926a4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 29 Jul 2023 22:02:09 +0800 Subject: [PATCH 60/70] =?UTF-8?q?=E5=85=A5=E4=BB=93=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E9=92=89=E9=92=89=E6=8F=90=E7=A4=BA=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=BA=97=E9=93=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index d86c16c..b341cf9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -35,6 +35,7 @@ namespace BBWYB.Server.Business private Lazy restApiServiceLazy; private Lazy jdBusinessLazy; private Lazy opPlatformClientFactoryLazy; + private Lazy venderBusinessLazy; private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; @@ -45,6 +46,7 @@ namespace BBWYB.Server.Business private QiKuManager qiKuManager => qiKuManagerLazy.Value; private RestApiService restApiService => restApiServiceLazy.Value; private OP_PlatformClientFactory opPlatformClientFactory => opPlatformClientFactoryLazy.Value; + private VenderBusiness venderBusiness => venderBusinessLazy.Value; private JDBusiness jdBusiness => jdBusinessLazy.Value; @@ -65,7 +67,7 @@ namespace BBWYB.Server.Business restApiServiceLazy = new Lazy(() => serviceProvider.GetService()); jdBusinessLazy = new Lazy(() => serviceProvider.GetService()); opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService()); - + venderBusinessLazy = new Lazy(() => serviceProvider.GetService()); cantPurchaseOrderStateList = new List() { Enums.OrderState.已取消, @@ -2588,12 +2590,13 @@ namespace BBWYB.Server.Business if (isNotifyDingDingWhenInOrderFail && inStoreResponse != null) { #region 入库单查询有误,通知钉钉 + var shop = venderBusiness.GetShopList(order.ShopId).FirstOrDefault(); var dingdingMsg = new StringBuilder(); - if (inStoreResponse.Data == null || inStoreResponse.Data.Count() == 0) { foreach (var opi in currentPurchaseOrderList) { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); @@ -2605,6 +2608,7 @@ namespace BBWYB.Server.Business { foreach (var opi in currentPurchaseOrderList) { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); @@ -2637,6 +2641,7 @@ namespace BBWYB.Server.Business break; } + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); From 0cb4e2b7b76a4a5fef80d5db89178cecee0eb64f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 30 Jul 2023 13:56:10 +0800 Subject: [PATCH 61/70] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E8=AE=A2=E5=8D=95Sku?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E9=80=BB=E8=BE=91=20=20=201.1=20=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E9=87=87=E8=B4=AD=E5=8D=95=E5=A2=9E=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95Sku=E6=88=90=E6=9C=AC=20=20=201.2=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E5=A2=9E=E5=8A=A0=E8=AE=A2=E5=8D=95?= =?UTF-8?q?Sku=E6=88=90=E6=9C=AC=20=20=201.3=20=E8=AE=BE=E7=BD=AE=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E9=87=87=E8=B4=AD=E5=8D=95=E5=A2=9E=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95Sku=E6=88=90=E6=9C=AC=20=20=201.4=201688=E6=94=B9?= =?UTF-8?q?=E4=BB=B7=E9=80=9A=E7=9F=A5,=E4=BB=98=E6=AC=BE=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=A2=9E=E5=8A=A0=E8=AE=A2=E5=8D=95Sku=E6=88=90?= =?UTF-8?q?=E6=9C=AC=20=20=201.5=20=E8=B0=83=E6=95=B4=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3,=20=E5=9C=A8=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=88=90=E6=9C=AC=E5=B1=82=E8=BF=94=E5=9B=9E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95Sku=E6=88=90=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 3 +- .../Extensions/OrderAmountExtension.cs | 83 +++- BBWYB.Server.Business/Order/OrderBusiness.cs | 46 ++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 389 ++++++++++++------ .../Db/Order/{ => Cost}/OrderCost.cs | 0 .../Db/Order/{ => Cost}/OrderCostDetail.cs | 0 .../Db/Order/Cost/OrderSkuCost.cs | 62 +++ .../SetHistoryPurchaseOrderRequest.cs | 2 + .../Dto/Response/Order/OrderCostResponse.cs | 2 +- .../Response/Order/OrderSkuCostResponse.cs | 9 + .../Dto/Response/Order/OrderSkuResponse.cs | 5 - 11 files changed, 434 insertions(+), 167 deletions(-) rename BBWYB.Server.Model/Db/Order/{ => Cost}/OrderCost.cs (100%) rename BBWYB.Server.Model/Db/Order/{ => Cost}/OrderCostDetail.cs (100%) create mode 100644 BBWYB.Server.Model/Db/Order/Cost/OrderSkuCost.cs create mode 100644 BBWYB.Server.Model/Dto/Response/Order/OrderSkuCostResponse.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 877a32b..35b8645 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -98,7 +98,8 @@ namespace BBWYB.Server.API.Controllers [HttpDelete] public void DeletePurchaseOrder([FromBody] DeletePurchaseOrderRequest request) { - purchaseOrderBusiness.DeletePurchaseOrder(request); + request.IsDelete = true; + purchaseOrderBusiness.SetHistoryPurchaseOrder(request); } /// diff --git a/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs b/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs index b5becfd..4538bae 100644 --- a/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs @@ -8,17 +8,11 @@ namespace BBWYB.Server.Business.Extensions /// 计算订单sku明细的成本和利润 /// /// 订单SKU明细成本对象 - /// sku商品金额(收入) - /// sku买家支付运费(收入) - /// sku实收打包费(收入) /// sku采购货款(支出) /// sku采购运费(支出) /// sku支出打包费(支出) /// sku发货运费(支出) public static void CalculationOrderCostDetailCostAndProfit(this OrderCostDetail ocd, - decimal skuProductAmount, - decimal skuBuyerPayFreight, - decimal skuInPackAmount, decimal skuPurchaseProductAmount, decimal skuPurchaseFreight, decimal skuOutPackAmount, @@ -29,7 +23,50 @@ namespace BBWYB.Server.Business.Extensions ocd.OutPackAmount = skuOutPackAmount; ocd.DeliveryExpressFreight = skuDeliveryExpressFreight; ocd.TotalCost = ocd.SkuAmount + ocd.PurchaseFreight + ocd.OutPackAmount + ocd.DeliveryExpressFreight; //采购货款+采购运费+支出打包费+发货运费 - ocd.Profit = skuProductAmount + skuBuyerPayFreight + skuInPackAmount - ocd.TotalCost; //SKU货款+买家支付运费+SKU打包费 - SKU总成本 + //ocd.Profit = skuProductAmount + skuBuyerPayFreight + skuInPackAmount - ocd.TotalCost; //SKU货款+买家支付运费+SKU打包费 - SKU总成本 + } + + /// + /// 计算订单sku成本和利润 + /// + /// 订单SKU明细成本对象 + /// sku商品金额(收入) + /// sku买家支付运费(收入) + /// sku实收打包费(收入) + /// 订单成本明细列表 + public static void CalculationOrderSkuCostAndProfit(this OrderSkuCost orderSkuCost, + decimal skuProductAmount, + decimal skuBuyerPayFreight, + decimal skuInPackAmount, + IList orderCostDetailList) + { + var currentSkuCostDetailList = orderCostDetailList.Where(ocd => ocd.SkuId == orderSkuCost.SkuId && ocd.IsEnabled == true).ToList(); + + orderSkuCost.SkuAmount = currentSkuCostDetailList.Sum(ocd => ocd.SkuAmount); + orderSkuCost.PurchaseFreight = currentSkuCostDetailList.Sum(ocd => ocd.PurchaseFreight); + orderSkuCost.OutPackAmount = currentSkuCostDetailList.Sum(ocd => ocd.OutPackAmount); + orderSkuCost.DeliveryExpressFreight = currentSkuCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight); + orderSkuCost.TotalCost = orderSkuCost.SkuAmount + + orderSkuCost.PurchaseFreight + + orderSkuCost.OutPackAmount + + orderSkuCost.DeliveryExpressFreight; //采购货款+采购运费+支出打包费+发货运费 + orderSkuCost.Profit = skuProductAmount + skuBuyerPayFreight + skuInPackAmount - orderSkuCost.TotalCost; //SKU货款+买家支付运费+SKU打包费 - SKU总成本 + } + + /// + /// 计算订单sku成本和利润 + /// + /// + /// + /// + public static void CalculationOrderSkuCostAndProfit(this OrderSkuCost orderSkuCost, + OrderSku orderSku, + IList orderCostDetailList) + { + orderSkuCost.CalculationOrderSkuCostAndProfit((orderSku.ItemTotal * orderSku.Price) ?? 0M, + orderSku.BuyerPayFreight ?? 0M, + orderSku.InPackAmount ?? 0M, + orderCostDetailList); } /// @@ -41,12 +78,12 @@ namespace BBWYB.Server.Business.Extensions /// 采购运费 /// 支出打包费 /// 发货运费 - public static void CalculationOrderCostCostAndProfit(this OrderCost oc, - decimal orderAmount, - decimal purchaseProductAmount, - decimal purchaseFreight, - decimal outPackAmount, - decimal deliveryExpressFreight) + public static void CalculationOrderCostAndProfit(this OrderCost oc, + decimal orderAmount, + decimal purchaseProductAmount, + decimal purchaseFreight, + decimal outPackAmount, + decimal deliveryExpressFreight) { oc.PurchaseAmount = purchaseProductAmount + purchaseFreight; //兼容以前 @@ -57,5 +94,25 @@ namespace BBWYB.Server.Business.Extensions oc.TotalCost = oc.SkuAmount + oc.PurchaseFreight + oc.OutPackAmount + oc.DeliveryExpressFreight; oc.Profit = orderAmount - oc.TotalCost; } + + /// + /// 计算订单的成本和利润 + /// + /// + /// + /// + public static void CalculationOrderCostAndProfit(this OrderCost oc, + decimal orderAmount, + IList orderSkuCostList) + { + var currentOrderSkuCostList = orderSkuCostList.Where(osc => osc.OrderId == oc.OrderId).ToList(); + oc.SkuAmount = currentOrderSkuCostList.Sum(osc => osc.SkuAmount); + oc.PurchaseFreight = currentOrderSkuCostList.Sum(osc => osc.PurchaseFreight); + oc.PurchaseAmount = oc.SkuAmount + oc.PurchaseFreight; //兼容以前 + oc.OutPackAmount = currentOrderSkuCostList.Sum(osc => osc.OutPackAmount); + oc.DeliveryExpressFreight = currentOrderSkuCostList.Sum(osc => osc.DeliveryExpressFreight); + oc.TotalCost = oc.SkuAmount + oc.PurchaseFreight + oc.OutPackAmount + oc.DeliveryExpressFreight; + oc.Profit = orderAmount - oc.TotalCost; + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 939cb7f..4761bf8 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -263,9 +263,23 @@ namespace BBWYB.Server.Business order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); #endregion + #region 处理订单Sku成本 + var orderSkuCostList = fsql.Select().Where(osc => orderIdList.Contains(osc.OrderId)).ToList(); + foreach (var order in orderList) + { + if (order.OrderCost == null) + continue; + order.OrderCost.OrderSkuCostList = orderSkuCostList.Where(osc => osc.OrderId == order.Id).ToList(); + foreach (var orderSkuCost in order.OrderCost.OrderSkuCostList) + { + orderSkuCost.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id && ocd.SkuId == orderSkuCost.SkuId).ToList(); + } + } + #endregion + #region 处理采购信息 var orderPurchaseInfoList = fsql.Select().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList(); - var purchaserIdList = orderPurchaseInfoList.Where(opi=>!string.IsNullOrEmpty(opi.PurchaserId)).Select(opi => opi.PurchaserId).Distinct().ToList(); + var purchaserIdList = orderPurchaseInfoList.Where(opi => !string.IsNullOrEmpty(opi.PurchaserId)).Select(opi => opi.PurchaserId).Distinct().ToList(); var orderPurchaseSkuInfoList = fsql.Select().Where(o => orderIdList.Contains(o.OrderId)).ToList(); foreach (var order in orderList) { @@ -559,10 +573,12 @@ namespace BBWYB.Server.Business var order = orderListResponse.Items.FirstOrDefault(); var orderCost = fsql.Select(request.OrderId).ToOne(); + var orderSkuCostList = fsql.Select().Where(osc => osc.OrderId == request.OrderId).ToList(); var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); IList> updates_orderSku = new List>(); IUpdate updateOrderCost = null; + IList> updateOrderSkuCostList = new List>(); IList> updateOrderCostDetailList = new List>(); @@ -577,25 +593,32 @@ namespace BBWYB.Server.Business { foreach (var orderCostDetail in ocdList) { - orderCostDetail.CalculationOrderCostDetailCostAndProfit(orderSku.SkuPrice * orderSku.Quantity, - orderSku.FreightAmount, - orderSku.PackAmount, - orderCostDetail.SkuAmount ?? 0M, + orderCostDetail.CalculationOrderCostDetailCostAndProfit(orderCostDetail.SkuAmount ?? 0M, orderCostDetail.PurchaseFreight ?? 0M, orderCostDetail.OutPackAmount ?? 0M, orderCostDetail.DeliveryExpressFreight ?? 0M); updateOrderCostDetailList.Add(fsql.Update(orderCostDetail.Id).Set(ocd => ocd.Profit, orderCostDetail.Profit)); } } + + var orderSkuCost = orderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); + if (orderSkuCost != null) + { + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku.SkuPrice * orderSku.Quantity, + orderSku.FreightAmount, + orderSku.PackAmount, + ocdList); + updateOrderSkuCostList.Add(fsql.Update(orderSkuCost.Id).Set(osc => osc.Profit, orderSkuCost.Profit)); + } } if (orderCost != null) { - orderCost.CalculationOrderCostCostAndProfit(order.OrderTotalAmount, - orderCost.SkuAmount ?? 0M, - orderCost.PurchaseFreight ?? 0M, - orderCost.OutPackAmount ?? 0M, - orderCost.DeliveryExpressFreight ?? 0M); + orderCost.CalculationOrderCostAndProfit(order.OrderTotalAmount, + orderCost.SkuAmount ?? 0M, + orderCost.PurchaseFreight ?? 0M, + orderCost.OutPackAmount ?? 0M, + orderCost.DeliveryExpressFreight ?? 0M); updateOrderCost = fsql.Update().SetSource(orderCost); } @@ -619,6 +642,9 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderCostDetailList) update.ExecuteAffrows(); } + if (updateOrderSkuCostList.Count() > 0) + foreach (var update in updateOrderSkuCostList) + update.ExecuteAffrows(); }); #region 通知C端 diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index d86c16c..68f02ff 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -262,6 +262,8 @@ namespace BBWYB.Server.Business var orderSkus = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); + var orderSkuCostList = fsql.Select().Where(osc => osc.OrderId == request.OrderId).ToList(); + foreach (var cargoParamGroup in request.CargoParamGroupList) { @@ -291,19 +293,10 @@ namespace BBWYB.Server.Business if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) notifyQikuPackSchemeParamList = new List(); - //#region 待更新 - //IList updateOrderCostDetailIdList = fsql.Select() - // .Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true) - // .ToList(ocd => ocd.Id); - //IList updatePurchaseOrderIdList = fsql.Select() - // .Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true) - // .ToList(opi => opi.Id); - //#endregion - IInsert insertOrderCost = null; IUpdate updateOrderCost = null; - //var totalPurchaseProductAmount = 0M; - //var totalPurchaseFreight = 0M; + List insertOrderSkuCostList = new List(); + IList> updateOrderSkuCostList = new List>(); foreach (var cargoParamGroup in request.CargoParamGroupList) { @@ -412,10 +405,7 @@ namespace BBWYB.Server.Business SkuId = belongSkuId, IsEnabled = true }; - orderCostDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, - orderSku.BuyerPayFreight ?? 0M, - orderSku.InPackAmount ?? 0M, - currentSkuAmount, + orderCostDetail.CalculationOrderCostDetailCostAndProfit(currentSkuAmount, currentPurchaseFreight, 0M, 0M); @@ -494,6 +484,32 @@ namespace BBWYB.Server.Business #endregion } + #region 订单Sku成本 + var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList(); + foreach (var orderSku in orderSkus) + { + var orderSkuCost = orderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); + if (orderSkuCost == null) + { + orderSkuCost = new OrderSkuCost() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = request.OrderId, + SkuId = orderSku.SkuId + }; + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); + insertOrderSkuCostList.Add(orderSkuCost); + } + else + { + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); + var update = fsql.Update().SetSource(orderSkuCost); + updateOrderSkuCostList.Add(update); + } + } + #endregion + #region 订单成本 var orderCost = new OrderCost() { @@ -502,13 +518,15 @@ namespace BBWYB.Server.Business IsManualEdited = false }; - var totalPurchaseProductAmount = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.SkuAmount); - var totalPurchaseFreight = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.PurchaseFreight); - orderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, - totalPurchaseProductAmount ?? 0M, - totalPurchaseFreight ?? 0M, - 0M, - 0M); + //var totalPurchaseProductAmount = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.SkuAmount); + //var totalPurchaseFreight = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.PurchaseFreight); + //orderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, + // totalPurchaseProductAmount ?? 0M, + // totalPurchaseFreight ?? 0M, + // 0M, + // 0M); + orderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, orderSkuCostList.Union(insertOrderSkuCostList).ToList()); + if (!isRepurchase) { @@ -539,10 +557,6 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - //if (updatePurchaseOrderIdList.Count() > 0) - // fsql.Update(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows(); - //if (updateOrderCostDetailIdList.Count() > 0) - // fsql.Update(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows(); if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) { fsql.Update().Set(t => t.CompletionTime, DateTime.Now) @@ -553,11 +567,14 @@ namespace BBWYB.Server.Business .Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) .ExecuteAffrows(); } - - fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); - fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); - fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); - fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); + if (insertOrderCostDetails.Count() > 0) + fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); + if (insertOrderPurchaseInfos.Count() > 0) + fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); + if (insertOrderPurchaseSkuInfos.Count() > 0) + fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); + if (insertOrderPurchaseRelationInfoList.Count() > 0) + fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); if (updatePurchaseTimeSchemeIdList.Count() > 0) @@ -566,7 +583,13 @@ namespace BBWYB.Server.Business .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .Set(o => o.IsPurchased, true) .ExecuteAffrows(); - //.Set(o => o.PackConfigState, Enums.PackConfigState.待配置) + if (insertOrderSkuCostList.Count() > 0) + fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); + if (updateOrderSkuCostList.Count() > 0) + { + foreach (var update in updateOrderSkuCostList) + update.ExecuteAffrows(); + } }); } @@ -689,7 +712,7 @@ namespace BBWYB.Server.Business var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); - + var dbOrderSkuCostList = fsql.Select().Where(osc => osc.OrderId == request.OrderId).ToList(); List insertOrderPurchaseInfoList = new List(); @@ -702,6 +725,9 @@ namespace BBWYB.Server.Business IInsert insertOrderCost = null; IUpdate updateOrderCost = null; + List insertOrderSkuCostList = new List(); + IList> updateOrderSkuCostList = new List>(); + List updatePurchaseTimeLimitTaskOrderSkuList = new List(); List notifyQikuPackSchemeParamList = new List(); @@ -839,10 +865,7 @@ namespace BBWYB.Server.Business SkuId = assOrderCostDetail.SkuId, PurchaseOrderId = purchaseOrder.PurchaseOrderId }; - orderCostDetail.CalculationOrderCostDetailCostAndProfit(dbOrderSku.Price.Value * dbOrderSku.ItemTotal.Value, - dbOrderSku.BuyerPayFreight ?? 0M, - dbOrderSku.InPackAmount ?? 0M, - assOrderCostDetail.SkuAmount, + orderCostDetail.CalculationOrderCostDetailCostAndProfit(assOrderCostDetail.SkuAmount, purchaseFreight, 0M, 0M); @@ -932,8 +955,8 @@ namespace BBWYB.Server.Business var purchaseFreight = purchaseOrder.PurchaseFreight * (1.0M * assOrderCostDetail.PurchaseQuantity / totalQuantity); - - if (orderCostDetail == null) + var isOcdEmpty = orderCostDetail == null; + if (isOcdEmpty) { orderCostDetail = new OrderCostDetail() { @@ -949,15 +972,12 @@ namespace BBWYB.Server.Business }; } orderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; - orderCostDetail.CalculationOrderCostDetailCostAndProfit(dbOrderSku.Price.Value * dbOrderSku.ItemTotal.Value, - dbOrderSku.BuyerPayFreight ?? 0M, - dbOrderSku.InPackAmount ?? 0M, - assOrderCostDetail.SkuAmount, - purchaseFreight, - orderCostDetail.OutPackAmount ?? 0M, - orderCostDetail.DeliveryExpressFreight ?? 0M); - - if (orderCostDetail == null) + orderCostDetail.CalculationOrderCostDetailCostAndProfit(assOrderCostDetail.SkuAmount, + purchaseFreight, + orderCostDetail.OutPackAmount ?? 0M, + orderCostDetail.DeliveryExpressFreight ?? 0M); + + if (isOcdEmpty) insertOrderCostDetailList.Add(orderCostDetail); else updateOrderCostDetailList.Add(fsql.Update().SetSource(orderCostDetail)); @@ -965,6 +985,33 @@ namespace BBWYB.Server.Business } } + #region 订单Sku成本 + var allOrderCostDetail = dbOrderCostDetailList.Union(insertOrderCostDetailList).ToList(); + foreach (var orderSku in dbOrderSkuList) + { + var orderSkuCost = dbOrderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); + if (orderSkuCost == null) + { + orderSkuCost = new OrderSkuCost() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = request.OrderId, + SkuId = orderSku.SkuId + }; + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); + insertOrderSkuCostList.Add(orderSkuCost); + } + else + { + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); + var update = fsql.Update().SetSource(orderSkuCost); + updateOrderSkuCostList.Add(update); + } + } + #endregion + + #region 订单成本 var dbOrderCostIsEmpty = dbOrderCost == null; if (dbOrderCostIsEmpty) { @@ -975,20 +1022,21 @@ namespace BBWYB.Server.Business CreateTime = DateTime.Now }; } - - var totalPurchaseProductAmount = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseAmount); - var totalPurchaseFreight = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseFreight); - var totalOutPackAmount = dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount); - dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, - totalPurchaseProductAmount, - totalPurchaseFreight, - totalOutPackAmount ?? 0M, - 0M); + dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, dbOrderSkuCostList.Union(insertOrderSkuCostList).ToList()); + //var totalPurchaseProductAmount = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseAmount); + //var totalPurchaseFreight = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseFreight); + //var totalOutPackAmount = dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount); + //dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, + // totalPurchaseProductAmount, + // totalPurchaseFreight, + // totalOutPackAmount ?? 0M, + // 0M); if (dbOrderCostIsEmpty) insertOrderCost = fsql.Insert(dbOrderCost); else updateOrderCost = fsql.Update().SetSource(dbOrderCost); + #endregion #region 订单状态 dbOrder.CalculationOrderState(fsql, out _, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); @@ -1043,6 +1091,14 @@ namespace BBWYB.Server.Business fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState) .Set(o => o.IsPurchased, true) .ExecuteAffrows(); + + if (insertOrderSkuCostList.Count() > 0) + fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); + if (updateOrderSkuCostList.Count() > 0) + { + foreach (var update in updateOrderSkuCostList) + update.ExecuteAffrows(); + } }); } @@ -1198,15 +1254,26 @@ namespace BBWYB.Server.Business if (historyPurchaseOrder == null) throw new BusinessException("未查询到采购单"); + IList> updateOrderSkuCostList = new List>(); + var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && - ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); + ocd.PurchaseOrderId != request.PurchaseOrderId && + ocd.IsEnabled == true).ToList(); + var dbOrderSkuCostList = fsql.Select().Where(osc => osc.OrderId == request.OrderId).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); var dbOrder = fsql.Select(request.OrderId).ToOne(); + var dbOrderSku = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); + + foreach (var orderSkuCost in dbOrderSkuCostList) + { + var orderSku = dbOrderSku.FirstOrDefault(osku => osku.SkuId == orderSkuCost.SkuId); + if (orderSku == null) + continue; + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, dbOrderCostDetailList); + updateOrderSkuCostList.Add(fsql.Update().SetSource(orderSkuCost)); + } - 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; - dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); + dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, dbOrderSkuCostList); #region 找出失效的快递单 List deleteWaybillNoList = new List(); @@ -1231,12 +1298,19 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - fsql.Update(historyPurchaseOrder.Id) - .Set(opi => opi.IsEnabled, false) - .Set(opi => opi.OrderState, Enums.PurchaseOrderState.已取消) - .Set(opi => opi.HistorySettingTime, DateTime.Now) - .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) - .ExecuteAffrows(); + if (request.IsDelete == true) + { + fsql.Delete(historyPurchaseOrder.Id).ExecuteAffrows(); + } + else + { + fsql.Update(historyPurchaseOrder.Id) + .Set(opi => opi.IsEnabled, false) + .Set(opi => opi.OrderState, Enums.PurchaseOrderState.已取消) + .Set(opi => opi.HistorySettingTime, DateTime.Now) + .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) + .ExecuteAffrows(); + } fsql.Update() .Set(ocd => ocd.IsEnabled, false) @@ -1255,83 +1329,88 @@ namespace BBWYB.Server.Business fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); + if (updateOrderSkuCostList.Count() > 0) + { + foreach (var update in updateOrderSkuCostList) + update.ExecuteAffrows(); + } }); } - public void DeletePurchaseOrder(DeletePurchaseOrderRequest request) - { - nLogManager.Default().Info($"DeletePurchaseOrder {JsonConvert.SerializeObject(request)}"); + //public void DeletePurchaseOrder(DeletePurchaseOrderRequest request) + //{ + // nLogManager.Default().Info($"DeletePurchaseOrder {JsonConvert.SerializeObject(request)}"); - //var po = fsql.Select().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId).ToOne(); - //if (po == null) - // throw new BusinessException("采购单不不存在"); - //var orderId = po.OrderId; + // //var po = fsql.Select().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId).ToOne(); + // //if (po == null) + // // throw new BusinessException("采购单不不存在"); + // //var orderId = po.OrderId; - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); - var deletePurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); - if (deletePurchaseOrder == null) - throw new BusinessException("采购单不不存在"); + // var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + // var deletePurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + // if (deletePurchaseOrder == null) + // throw new BusinessException("采购单不不存在"); - var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && - ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); - var dbOrderCost = fsql.Select(request.OrderId).ToOne(); - var dbOrder = fsql.Select(request.OrderId).ToOne(); + // var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && + // ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); + // var dbOrderCost = fsql.Select(request.OrderId).ToOne(); + // var dbOrder = fsql.Select(request.OrderId).ToOne(); - 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; - dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); + // 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; + // dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); - #region 找出失效的快递单 - List deleteWaybillNoList = new List(); + // #region 找出失效的快递单 + // List deleteWaybillNoList = new List(); - //查询该采购单所使用的快递单号 - var useWaybillNos = fsql.Select().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ToList(eori => eori.WayBillNo); + // //查询该采购单所使用的快递单号 + // var useWaybillNos = fsql.Select().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ToList(eori => eori.WayBillNo); - //查询使用上述快递单号的快递单关系 - var expressOrderRelationList = fsql.Select().Where(eori => useWaybillNos.Contains(eori.WayBillNo)).ToList(); + // //查询使用上述快递单号的快递单关系 + // 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 == request.PurchaseOrderId)) - deleteWaybillNoList.Add(group.Key); - } - #endregion + // //以快递单号进行分组 + // var expressOrderRelationGroups = expressOrderRelationList.GroupBy(eori => eori.WayBillNo); + // foreach (var group in expressOrderRelationGroups) + // { + // if (group.Count() == group.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) + // deleteWaybillNoList.Add(group.Key); + // } + // #endregion - orderPurchaseInfoList.Remove(deletePurchaseOrder); - while (orderPurchaseInfoList.Any(opi => opi.IsEnabled == false)) - { - var historyPo = orderPurchaseInfoList.FirstOrDefault(opi => opi.IsEnabled == false); - orderPurchaseInfoList.Remove(historyPo); - } - dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); + // orderPurchaseInfoList.Remove(deletePurchaseOrder); + // while (orderPurchaseInfoList.Any(opi => opi.IsEnabled == false)) + // { + // var historyPo = orderPurchaseInfoList.FirstOrDefault(opi => opi.IsEnabled == false); + // orderPurchaseInfoList.Remove(historyPo); + // } + // dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); - fsql.Transaction(() => - { - fsql.Delete(deletePurchaseOrder.Id).ExecuteAffrows(); + // fsql.Transaction(() => + // { + // fsql.Delete(deletePurchaseOrder.Id).ExecuteAffrows(); - fsql.Update() - .Set(ocd => ocd.IsEnabled, false) - .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId) - .ExecuteAffrows(); + // fsql.Update() + // .Set(ocd => ocd.IsEnabled, false) + // .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId) + // .ExecuteAffrows(); - fsql.Delete().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); - fsql.Delete().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + // fsql.Delete().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + // fsql.Delete().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); - fsql.Delete().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); - if (deleteWaybillNoList.Count() > 0) - fsql.Delete(deleteWaybillNoList).ExecuteAffrows(); + // fsql.Delete().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); + // if (deleteWaybillNoList.Count() > 0) + // fsql.Delete(deleteWaybillNoList).ExecuteAffrows(); - fsql.Delete().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId) - .ExecuteAffrows(); + // fsql.Delete().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId) + // .ExecuteAffrows(); - fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); - fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); - }); - } + // fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); + // fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); + // }); + //} /// /// 修改采购快递单 @@ -2758,13 +2837,14 @@ namespace BBWYB.Server.Business if (dbOrderCostDetails.Count() == 0) throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); - var dbPurchaseOrderIdList = dbOrderPurchaseInfoList.Select(x => x.PurchaseOrderId).ToList(); var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => dbPurchaseOrderIdList.Contains(x.PurchaseOrderId)).ToList(); if (dbOrderPurchaseRelationInfos.Count() == 0) throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细"); - var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList(); + var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == dbOrder.Id).ToList(); + var dbOrderSkuCostList = fsql.Select().Where(osc => osc.OrderId == dbOrder.Id).ToList(); + List> updateOrderCostDetailList = new List>(); IUpdate updateOrderCost = null; @@ -2772,6 +2852,9 @@ namespace BBWYB.Server.Business IList> updateOrderSkuList = new List>(); IUpdate updateOrder = null; + List insertOrderSkuCostList = new List(); + IList> updateOrderSkuCostList = new List>(); + IList op_EditPriceSkuRequests = new List(); var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); @@ -2841,10 +2924,7 @@ namespace BBWYB.Server.Business #endregion var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); - dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, - orderSku.BuyerPayFreight ?? 0M, - orderSku.InPackAmount ?? 0M, - currentOrderSkuProductAmount, + dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(currentOrderSkuProductAmount, currentPurchaseFreight ?? 0M, dbOrderSkuDetail.OutPackAmount ?? 0M, dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); @@ -2861,12 +2941,40 @@ namespace BBWYB.Server.Business .Set(o => o.FreightPrice, dbOrder.FreightPrice); } - dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, - totalPurchaseProductAmount, - totalPurchaseFreight, - dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), - dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); + #region 订单Sku成本 + foreach (var orderSku in dbOrderSkus) + { + var orderSkuCost = dbOrderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); + if (orderSkuCost == null) + { + orderSkuCost = new OrderSkuCost() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = dbOrder.Id, + SkuId = orderSku.SkuId + }; + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, dbOrderCostDetails); + insertOrderSkuCostList.Add(orderSkuCost); + } + else + { + orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, dbOrderCostDetails); + var update = fsql.Update().SetSource(orderSkuCost); + updateOrderSkuCostList.Add(update); + } + } + #endregion + + #region 订单成本 + dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, dbOrderSkuCostList.Union(insertOrderSkuCostList).ToList()); + //dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, + // totalPurchaseProductAmount, + // totalPurchaseFreight, + // dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), + // dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); updateOrderCost = fsql.Update().SetSource(dbOrderCost); + #endregion fsql.Transaction(() => { @@ -2876,6 +2984,13 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderSkuList) update.ExecuteAffrows(); updateOrder?.ExecuteAffrows(); + if (insertOrderSkuCostList.Count() > 0) + fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); + if (updateOrderSkuCostList.Count() > 0) + { + foreach (var update in updateOrderSkuCostList) + update.ExecuteAffrows(); + } }); if (isEditOrderPrice) diff --git a/BBWYB.Server.Model/Db/Order/OrderCost.cs b/BBWYB.Server.Model/Db/Order/Cost/OrderCost.cs similarity index 100% rename from BBWYB.Server.Model/Db/Order/OrderCost.cs rename to BBWYB.Server.Model/Db/Order/Cost/OrderCost.cs diff --git a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs b/BBWYB.Server.Model/Db/Order/Cost/OrderCostDetail.cs similarity index 100% rename from BBWYB.Server.Model/Db/Order/OrderCostDetail.cs rename to BBWYB.Server.Model/Db/Order/Cost/OrderCostDetail.cs diff --git a/BBWYB.Server.Model/Db/Order/Cost/OrderSkuCost.cs b/BBWYB.Server.Model/Db/Order/Cost/OrderSkuCost.cs new file mode 100644 index 0000000..6053218 --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/Cost/OrderSkuCost.cs @@ -0,0 +1,62 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + [Table(Name = "orderskucost", DisableSyncStructure = true)] + public partial class OrderSkuCost { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 发货运费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? DeliveryExpressFreight { get; set; } + + /// + /// 订单Id + /// + [Column(StringLength = 50)] + public string OrderId { get; set; } + + /// + /// 支出打包费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? OutPackAmount { get; set; } + + /// + /// 订单利润 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? Profit { get; set; } + + /// + /// 采购运费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? PurchaseFreight { get; set; } + + /// + /// 采购货款 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? SkuAmount { get; set; } + + [Column(StringLength = 50)] + public string SkuId { get; set; } + + /// + /// Sku总成本 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? TotalCost { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs index 72a02b9..0a9476f 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs @@ -11,5 +11,7 @@ /// 采购单Id /// public string PurchaseOrderId { get; set; } + + public bool? IsDelete { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs index a11a0ff..4a01b40 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs @@ -4,6 +4,6 @@ namespace BBWYB.Server.Model.Dto { public class OrderCostResponse : OrderCost { - + public IList OrderSkuCostList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuCostResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuCostResponse.cs new file mode 100644 index 0000000..f3c62b1 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuCostResponse.cs @@ -0,0 +1,9 @@ +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto +{ + public class OrderSkuCostResponse : OrderSkuCost + { + public IList OrderCostDetailList { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index 98b51c9..a890d67 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -20,11 +20,6 @@ namespace BBWYB.Server.Model.Dto /// public IList PurchaseExpressOrderList { get; set; } - ///// - ///// 限时任务列表 - ///// - //public IList TimeLimitTaskList { get; set; } - /// /// 采购限时任务 /// From fb430bfddf2f1c424e3800f037f1e7c64365c45e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 30 Jul 2023 14:32:56 +0800 Subject: [PATCH 62/70] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 9 ++++ .../DataRepair/DataRepairBusiness.cs | 43 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index da563c3..027cc64 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -33,5 +33,14 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SupplementPurchaserInfo(); } + + /// + /// 修复订单Sku成本 + /// + [HttpPost] + public void SupplementOrderSkuCost() + { + dataRepairBusiness.SupplementOrderSkuCost(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 93f4187..d396495 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -92,5 +92,48 @@ namespace BBWYB.Server.Business }); } } + + public void SupplementOrderSkuCost() + { + var orderSkuCostList = fsql.Select().InnerJoin((ocd, o) => ocd.OrderId == o.Id) + .Where((ocd, o) => ocd.IsEnabled == true && + o.IsPurchased == true && + o.OrderState != Enums.OrderState.已取消 && + !fsql.Select().As("osc").Where(osc => osc.OrderId == o.Id).Any()) + .GroupBy((ocd, o) => new { ocd.OrderId, ocd.SkuId }) + .ToList(g => new + { + OrderId = g.Key.OrderId, + SkuId = g.Key.SkuId, + SkuAmount = g.Sum(g.Value.Item1.SkuAmount), + PurchaseFreight = g.Sum(g.Value.Item1.PurchaseFreight) + }); + var orderIds = orderSkuCostList.Select(x => x.OrderId).Distinct().ToList(); + var orderSkuList = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId)).ToList(); + + var insertOrderSkuCostList = new List(); + foreach (var osc in orderSkuCostList) + { + var osku = orderSkuList.FirstOrDefault(osku => osku.SkuId == osc.SkuId && osku.OrderId == osc.OrderId); + var insert = new OrderSkuCost() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + DeliveryExpressFreight = 0M, + OrderId = osc.OrderId, + SkuId = osc.SkuId, + OutPackAmount = 0M, + PurchaseFreight = osc.PurchaseFreight, + SkuAmount = osc.SkuAmount, + TotalCost = osc.PurchaseFreight + osc.SkuAmount, + Profit = ((osku.Price * osku.ItemTotal) ?? 0M) - osc.PurchaseFreight - osc.SkuAmount + }; + insertOrderSkuCostList.Add(insert); + } + fsql.Transaction(() => + { + fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); + }); + } } } From f7db652fd1942c9a08744415607716afc224aebd Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 30 Jul 2023 15:33:39 +0800 Subject: [PATCH 63/70] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=BC=BA=E5=B0=91=E8=AE=A2=E5=8D=95=E6=88=90?= =?UTF-8?q?=E6=9C=ACSkuAmount=E5=92=8CPurchaseFreight?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Model/MappingProfiles.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Model/MappingProfiles.cs b/BBWYB.Server.Model/MappingProfiles.cs index 467dbb8..65112b1 100644 --- a/BBWYB.Server.Model/MappingProfiles.cs +++ b/BBWYB.Server.Model/MappingProfiles.cs @@ -45,7 +45,9 @@ namespace BBWYB.Server.Model .ForPath(t => t.OrderCost.PlatformCommissionAmount, opt => opt.MapFrom(f => f.PlatformCommissionAmount ?? 0)) .ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0)) .ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount)) - .ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited)); + .ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited)) + .ForPath(t => t.OrderCost.SkuAmount, opt => opt.MapFrom(f => f.SkuAmount)) + .ForPath(t => t.OrderCost.PurchaseFreight, opt => opt.MapFrom(f => f.PurchaseFreight)); CreateMap(); //CreateMap(); From ea2fac9e5bb184ee9724b99fed2a6f15343c2a79 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 30 Jul 2023 19:55:32 +0800 Subject: [PATCH 64/70] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=20=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=A2=9E=E5=8A=A0=E5=B9=B3=E4=BB=B7=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataRepair/DataRepairBusiness.cs | 2 +- BBWYB.Server.Business/Order/OrderBusiness.cs | 21 ++++++++++++++++++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 7 ++++++- .../Db/Order/OrderPurchaseInfo.cs | 6 ++++++ .../Dto/Response/Order/OrderResponse.cs | 2 ++ BBWYB.Server.Model/Enums.cs | 8 +++++++ 6 files changed, 43 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index d396495..3fbebc0 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -126,7 +126,7 @@ namespace BBWYB.Server.Business PurchaseFreight = osc.PurchaseFreight, SkuAmount = osc.SkuAmount, TotalCost = osc.PurchaseFreight + osc.SkuAmount, - Profit = ((osku.Price * osku.ItemTotal) ?? 0M) - osc.PurchaseFreight - osc.SkuAmount + Profit = ((osku.Price * osku.ItemTotal) ?? 0M) + osku.BuyerPayFreight - osc.PurchaseFreight - osc.SkuAmount }; insertOrderSkuCostList.Add(insert); } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 4761bf8..9e97055 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -179,7 +179,7 @@ namespace BBWYB.Server.Business InPackAmount = o.InPackAmount, IsWaitPack = o.IsWaitPack, IntoStoreType = o.IntoStoreType, - PayTime = o.PayTime, + PayTime = o.PayTime ContactName = ocs.ContactName, Address = ocs.Address, @@ -289,6 +289,25 @@ namespace BBWYB.Server.Business orderPurchaseInfo.OrderPurchaseSkuInfoList = orderPurchaseSkuInfoList.Where(opsi => opsi.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); orderPurchaseInfo.PurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); } + + if (order.OrderPurchaseInfoList != null && order.OrderPurchaseInfoList.Count() > 0) + { + if (order.OrderState == Enums.OrderState.部分采购 && + order.OrderPurchaseInfoList.Any(opi => opi.IsAutoEditOrderPrice == Enums.AutoEditOrderPriceType.已平价)) + { + order.IsAutoEditOrderPrice = Enums.AutoEditOrderPriceType.部分平价; + continue; + } + + var opiCount = order.OrderPurchaseInfoList.Count(); + var pjCount = order.OrderPurchaseInfoList.Count(opi => opi.IsAutoEditOrderPrice == Enums.AutoEditOrderPriceType.已平价); + if (pjCount == 0) + order.IsAutoEditOrderPrice = Enums.AutoEditOrderPriceType.未平价; + if (opiCount == pjCount) + order.IsAutoEditOrderPrice = Enums.AutoEditOrderPriceType.已平价; + else if (opiCount > pjCount) + order.IsAutoEditOrderPrice = Enums.AutoEditOrderPriceType.部分平价; + } } #endregion diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index b605dea..9347618 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2810,7 +2810,7 @@ namespace BBWYB.Server.Business bool isEditOrderPrice = true; try { - var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); + var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId && opi.IsEnabled == true).ToOne(); if (orderPurchaseInfo == null) throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); @@ -2862,6 +2862,8 @@ namespace BBWYB.Server.Business IList op_EditPriceSkuRequests = new List(); + IUpdate updatePurchaseOrder = null; + var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); var totalPurchaseProductAmount = 0M; @@ -2944,6 +2946,8 @@ namespace BBWYB.Server.Business updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice) .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice) .Set(o => o.FreightPrice, dbOrder.FreightPrice); + + updatePurchaseOrder = fsql.Update(orderPurchaseInfo.Id).Set(opi => opi.IsAutoEditOrderPrice, Enums.AutoEditOrderPriceType.已平价); } #region 订单Sku成本 @@ -2983,6 +2987,7 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { + updatePurchaseOrder?.ExecuteAffrows(); foreach (var update in updateOrderCostDetailList) update.ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs index 5eb6899..112db0e 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs @@ -83,6 +83,12 @@ namespace BBWYB.Server.Model.Db /// [Column(MapType = typeof(int?))] public Enums.PurchaseOrderState? OrderState { get; set; } + + /// + /// Ƿƽ + /// + [Column(MapType = typeof(int?))] + public Enums.AutoEditOrderPriceType? IsAutoEditOrderPrice { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index f1b3591..2655e4f 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -152,6 +152,8 @@ public Enums.PackConfigState? PackConfigState { get; set; } public Enums.IntoStoreType? IntoStoreType { get; set; } + + public Enums.AutoEditOrderPriceType? IsAutoEditOrderPrice { get; set; } } public class OrderListResponse diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index 48a2e81..0c1429f 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -314,5 +314,13 @@ { 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20 } + + /// + /// 平价状态 未平价=0 已平价=1 部分平价=2 + /// + public enum AutoEditOrderPriceType + { + 未平价 = 0, 已平价 = 1, 部分平价 = 2 + } } } From 27a95a644028fdbe3fd8193a93e2c04efc7e5fc7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 30 Jul 2023 19:57:07 +0800 Subject: [PATCH 65/70] 1 --- BBWYB.Server.Business/Order/OrderBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 9e97055..4b64c6a 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -179,7 +179,7 @@ namespace BBWYB.Server.Business InPackAmount = o.InPackAmount, IsWaitPack = o.IsWaitPack, IntoStoreType = o.IntoStoreType, - PayTime = o.PayTime + PayTime = o.PayTime, ContactName = ocs.ContactName, Address = ocs.Address, From 49bdfb2d77d57d5951a80ffd58751fb984c12567 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 31 Jul 2023 13:28:53 +0800 Subject: [PATCH 66/70] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=95=99=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BaseApiController.cs | 13 +++++ .../Controllers/OrderController.cs | 6 +-- .../Controllers/OrderMessageController.cs | 32 +++++++++++++ BBWYB.Server.Business/MDS/MDSBusiness.cs | 32 +++++++++++++ .../Order/Message/OrderMessageBusiness.cs | 47 +++++++++++++++++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 8 ++++ BBWYB.Server.Model/Db/Order/OrderMessage.cs | 35 ++++++++++++++ .../Request/Order/AddOrderMessageRequest.cs | 15 ++++++ .../Dto/Response/MDS/UserInfoResponse.cs | 11 +++++ .../Response/Order/OrderMessageResponse.cs | 8 ++++ .../Dto/Response/Order/OrderResponse.cs | 2 + 11 files changed, 205 insertions(+), 4 deletions(-) create mode 100644 BBWYB.Server.API/Controllers/OrderMessageController.cs create mode 100644 BBWYB.Server.Business/MDS/MDSBusiness.cs create mode 100644 BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs create mode 100644 BBWYB.Server.Model/Db/Order/OrderMessage.cs create mode 100644 BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs create mode 100644 BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs diff --git a/BBWYB.Server.API/Controllers/BaseApiController.cs b/BBWYB.Server.API/Controllers/BaseApiController.cs index bfb1ca8..27be7be 100644 --- a/BBWYB.Server.API/Controllers/BaseApiController.cs +++ b/BBWYB.Server.API/Controllers/BaseApiController.cs @@ -1,5 +1,7 @@ using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; + namespace BBWYB.Server.API.Controllers { [Produces("application/json")] @@ -13,5 +15,16 @@ namespace BBWYB.Server.API.Controllers { this.httpContextAccessor = httpContextAccessor; } + + protected string GetUserId() + { + return httpContextAccessor?.HttpContext?.User.Claims.Where(x => x.Type == "userId")?.FirstOrDefault()?.Value; + } + + protected string GetToken() + { + httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token); + return token; + } } } diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index caccde6..2f4d37f 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -68,10 +68,8 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public void CancelOrder([FromBody] CancelOrderRequest request) { - if (!httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token)) - throw new Exception("未获取到token"); - - orderBusiness.CancelOrder(request, token.ToString()); + var token = GetToken(); + orderBusiness.CancelOrder(request, token); } /// diff --git a/BBWYB.Server.API/Controllers/OrderMessageController.cs b/BBWYB.Server.API/Controllers/OrderMessageController.cs new file mode 100644 index 0000000..6175eec --- /dev/null +++ b/BBWYB.Server.API/Controllers/OrderMessageController.cs @@ -0,0 +1,32 @@ +using BBWYB.Server.Business; +using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + public class OrderMessageController : BaseApiController + { + private OrderMessageBusiness orderMessageBusiness; + + public OrderMessageController(IHttpContextAccessor httpContextAccessor, OrderMessageBusiness orderMessageBusiness) : base(httpContextAccessor) + { + this.orderMessageBusiness = orderMessageBusiness; + } + + [HttpPost] + public void AddOrderMessage([FromBody] AddOrderMessageRequest request) + { + var token = GetToken(); + orderMessageBusiness.AddOrderMessage(request, token); + } + + [HttpGet("{orderId}")] + public IList GetOrderMessageList([FromRoute] string orderId) + { + return orderMessageBusiness.GetOrderMessageList(orderId); + } + } +} diff --git a/BBWYB.Server.Business/MDS/MDSBusiness.cs b/BBWYB.Server.Business/MDS/MDSBusiness.cs new file mode 100644 index 0000000..e442f62 --- /dev/null +++ b/BBWYB.Server.Business/MDS/MDSBusiness.cs @@ -0,0 +1,32 @@ +using BBWYB.Common.Http; +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using BBWYB.Server.Model.Dto; +using Newtonsoft.Json; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business +{ + public class MDSBusiness : BaseBusiness, IDenpendency + { + private RestApiService restApiService; + public MDSBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) + { + this.restApiService = restApiService; + } + + public UserInfoResponse GetUserInfo(string token) + { + var httpResult = restApiService.SendRequest("http://mdsapi.qiyue666.com/", "TaskList/User/GetUserInfo", null, new Dictionary() + { + { "Authorization",token} + }, HttpMethod.Get); + if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new BusinessException($"获取用户信息失败 {httpResult.Content}"); + var response = JsonConvert.DeserializeObject>(httpResult.Content); + if (!response.Success) + throw new BusinessException($"获取用户信息失败 {response.Msg}"); + return response.Data; + } + } +} diff --git a/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs new file mode 100644 index 0000000..4542934 --- /dev/null +++ b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs @@ -0,0 +1,47 @@ +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business +{ + public class OrderMessageBusiness : BaseBusiness, IDenpendency + { + private MDSBusiness mdsBusiness; + + public OrderMessageBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, MDSBusiness mdsBusiness) : base(fsql, nLogManager, idGenerator) + { + this.mdsBusiness = mdsBusiness; + } + + public void AddOrderMessage(AddOrderMessageRequest request, string token) + { + if (string.IsNullOrEmpty(request.Message) || + string.IsNullOrEmpty(request.OrderId) || + string.IsNullOrEmpty(request.OrderSn) || + request.ShopId == null || + request.ShopId == 0) + throw new BusinessException("留言信息不完整"); + + var user = mdsBusiness.GetUserInfo(token); + var om = new OrderMessage() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + CreatorId = user.Id, + CreatorName = user.UserName, + Message = request.Message, + OrderId = request.OrderId, + OrderSn = request.OrderSn, + ShopId = request.ShopId + }; + fsql.Insert(om).ExecuteAffrows(); + } + + public IList GetOrderMessageList(string orderId) + { + return fsql.Select().Where(om => om.OrderId == orderId).ToList(); + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 4b64c6a..a304858 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -257,6 +257,12 @@ namespace BBWYB.Server.Business } #endregion + #region 查询订单留言 + var orderMessageList = fsql.Select().Where(om => orderIdList.Contains(om.OrderId)).ToList(); + foreach (var order in orderList) + order.OrderMessageList = orderMessageList.Where(om => om.OrderId == order.Id).ToList(); + #endregion + #region 处理订单成本明细 var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); foreach (var order in orderList) @@ -421,6 +427,8 @@ namespace BBWYB.Server.Business } #endregion + + } return new OrderListResponse() { diff --git a/BBWYB.Server.Model/Db/Order/OrderMessage.cs b/BBWYB.Server.Model/Db/Order/OrderMessage.cs new file mode 100644 index 0000000..61ecf9f --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/OrderMessage.cs @@ -0,0 +1,35 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + [Table(Name = "ordermessage", DisableSyncStructure = true)] + public partial class OrderMessage + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + [Column(StringLength = 50)] + public string CreatorId { get; set; } + + [Column(StringLength = 50)] + public string CreatorName { get; set; } + + [Column(StringLength = 500)] + public string Message { get; set; } + + [Column(StringLength = 50)] + public string OrderId { get; set; } + + [Column(StringLength = 50)] + public string OrderSn { get; set; } + + public long? ShopId { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs new file mode 100644 index 0000000..33663da --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs @@ -0,0 +1,15 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AddOrderMessageRequest + { + public DateTime? CreateTime { get; set; } + + public string Message { get; set; } + + public string OrderId { get; set; } + + public string OrderSn { get; set; } + + public long? ShopId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs new file mode 100644 index 0000000..75600c0 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class UserInfoResponse + { + public string Id { get; set; } + + public string UserName { get; set; } + + //其余字段需要用到的时候再扩充 + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs new file mode 100644 index 0000000..b2236ca --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs @@ -0,0 +1,8 @@ +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto +{ + public class OrderMessageResponse : OrderMessage + { + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index 2655e4f..b4b50ff 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -154,6 +154,8 @@ public Enums.IntoStoreType? IntoStoreType { get; set; } public Enums.AutoEditOrderPriceType? IsAutoEditOrderPrice { get; set; } + + public IList OrderMessageList { get; set; } } public class OrderListResponse From ef4efb2701456d7e2a78b73d0c604d1c2d698dbd Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 31 Jul 2023 13:29:49 +0800 Subject: [PATCH 67/70] 1 --- BBWYB.Server.API/Controllers/OrderMessageController.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/BBWYB.Server.API/Controllers/OrderMessageController.cs b/BBWYB.Server.API/Controllers/OrderMessageController.cs index 6175eec..2606f9e 100644 --- a/BBWYB.Server.API/Controllers/OrderMessageController.cs +++ b/BBWYB.Server.API/Controllers/OrderMessageController.cs @@ -16,6 +16,10 @@ namespace BBWYB.Server.API.Controllers this.orderMessageBusiness = orderMessageBusiness; } + /// + /// 新增订单留言 + /// + /// [HttpPost] public void AddOrderMessage([FromBody] AddOrderMessageRequest request) { @@ -23,6 +27,11 @@ namespace BBWYB.Server.API.Controllers orderMessageBusiness.AddOrderMessage(request, token); } + /// + /// 查询订单留言 + /// + /// + /// [HttpGet("{orderId}")] public IList GetOrderMessageList([FromRoute] string orderId) { From cf60e8a9b913cc59bd2ac4edd9c7600d27a41038 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 31 Jul 2023 15:09:18 +0800 Subject: [PATCH 68/70] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=95=99=E8=A8=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BaseApiController.cs | 6 +++++ .../Controllers/OrderMessageController.cs | 14 ++++++++++- .../Order/Message/OrderMessageBusiness.cs | 23 +++++++++++++------ BBWYB.Server.Model/Db/Order/Order.cs | 5 ++++ BBWYB.Server.Model/Db/Order/OrderMessage.cs | 3 +++ .../Request/Order/AddOrderMessageRequest.cs | 6 ----- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/BBWYB.Server.API/Controllers/BaseApiController.cs b/BBWYB.Server.API/Controllers/BaseApiController.cs index 27be7be..283c4fe 100644 --- a/BBWYB.Server.API/Controllers/BaseApiController.cs +++ b/BBWYB.Server.API/Controllers/BaseApiController.cs @@ -26,5 +26,11 @@ namespace BBWYB.Server.API.Controllers httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token); return token; } + + protected string GetClientCode() + { + httpContextAccessor.HttpContext.Request.Headers.TryGetValue("ClientCode", out StringValues clientCode); + return clientCode; + } } } diff --git a/BBWYB.Server.API/Controllers/OrderMessageController.cs b/BBWYB.Server.API/Controllers/OrderMessageController.cs index 2606f9e..3c3f4c1 100644 --- a/BBWYB.Server.API/Controllers/OrderMessageController.cs +++ b/BBWYB.Server.API/Controllers/OrderMessageController.cs @@ -24,7 +24,8 @@ namespace BBWYB.Server.API.Controllers public void AddOrderMessage([FromBody] AddOrderMessageRequest request) { var token = GetToken(); - orderMessageBusiness.AddOrderMessage(request, token); + var clientCode = GetClientCode(); + orderMessageBusiness.AddOrderMessage(request, token, clientCode); } /// @@ -37,5 +38,16 @@ namespace BBWYB.Server.API.Controllers { return orderMessageBusiness.GetOrderMessageList(orderId); } + + /// + /// 批量查询订单留言 + /// + /// + /// + [HttpPost] + public IList GetOrdersMessageList([FromBody]string[] orderIds) + { + return orderMessageBusiness.GetOrderMessageList(orderIds); + } } } diff --git a/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs index 4542934..c65a7dc 100644 --- a/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs +++ b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs @@ -15,14 +15,17 @@ namespace BBWYB.Server.Business this.mdsBusiness = mdsBusiness; } - public void AddOrderMessage(AddOrderMessageRequest request, string token) + public void AddOrderMessage(AddOrderMessageRequest request, string token, string clientCode) { if (string.IsNullOrEmpty(request.Message) || - string.IsNullOrEmpty(request.OrderId) || - string.IsNullOrEmpty(request.OrderSn) || - request.ShopId == null || - request.ShopId == 0) + string.IsNullOrEmpty(request.OrderId)) throw new BusinessException("留言信息不完整"); + if (string.IsNullOrEmpty(clientCode)) + throw new BusinessException("缺少客户端标识"); + + var order = fsql.Select(request.OrderId).ToOne(); + if (order == null) + throw new BusinessException("订单不存在"); var user = mdsBusiness.GetUserInfo(token); var om = new OrderMessage() @@ -33,8 +36,9 @@ namespace BBWYB.Server.Business CreatorName = user.UserName, Message = request.Message, OrderId = request.OrderId, - OrderSn = request.OrderSn, - ShopId = request.ShopId + OrderSn = order.OrderSn, + ShopId = order.ShopId, + From = clientCode }; fsql.Insert(om).ExecuteAffrows(); } @@ -43,5 +47,10 @@ namespace BBWYB.Server.Business { return fsql.Select().Where(om => om.OrderId == orderId).ToList(); } + + public IList GetOrderMessageList(string[] orderIds) + { + return fsql.Select().Where(om => orderIds.Contains(om.OrderId)).ToList(); + } } } diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index 8c3373d..e605da3 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -258,6 +258,11 @@ namespace BBWYB.Server.Model.Db [Column(MapType = typeof(int?))] public Enums.IntoStoreType? IntoStoreType { get; set; } + + /// + /// + /// + public int? IsSpecialOrder { get; set; } } } diff --git a/BBWYB.Server.Model/Db/Order/OrderMessage.cs b/BBWYB.Server.Model/Db/Order/OrderMessage.cs index 61ecf9f..cb9c0d8 100644 --- a/BBWYB.Server.Model/Db/Order/OrderMessage.cs +++ b/BBWYB.Server.Model/Db/Order/OrderMessage.cs @@ -30,6 +30,9 @@ namespace BBWYB.Server.Model.Db public long? ShopId { get; set; } + [Column(StringLength = 50)] + public string From { get; set; } + } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs index 33663da..4588593 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs @@ -2,14 +2,8 @@ { public class AddOrderMessageRequest { - public DateTime? CreateTime { get; set; } - public string Message { get; set; } public string OrderId { get; set; } - - public string OrderSn { get; set; } - - public long? ShopId { get; set; } } } From 003ac6f41bbf757600c44656da621fb847c9f67e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 31 Jul 2023 15:30:55 +0800 Subject: [PATCH 69/70] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.cs | 12 ++++++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 11 +++++++- BBWYB.Server.Model/Db/Order/Order.cs | 3 ++- .../Dto/Request/Order/QueryOrderRequest.cs | 25 +++++++++++++++---- .../Request/Order/SetSpecialOrderRequest.cs | 12 +++++++++ .../Dto/Response/Order/OrderResponse.cs | 5 ++++ 6 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index 2f4d37f..538d1f8 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -151,7 +151,17 @@ namespace BBWYB.Server.API.Controllers [AllowAnonymous] public void QikuPublishOrderSkuPackConfigState([FromBody] QikuPublishOrderSkuPackConfigStateRequest request) { - orderBusiness.QikuPublishOrderSkuPackConfigState(request); + orderBusiness.QikuPublishOrderSkuPackConfigState(request); + } + + /// + /// 设置/取消特殊单 + /// + /// + [HttpPost] + public void SetSpecialOrder([FromBody] SetSpecialOrderRequest request) + { + orderBusiness.SetSpecialOrder(request); } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index a304858..e889a35 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -136,7 +136,10 @@ namespace BBWYB.Server.Business .WhereIf(request.StartDate != null, (o, ocs, oct) => o.StartTime >= request.StartDate) .WhereIf(request.EndDate != null, (o, ocs, oct) => o.StartTime <= request.EndDate) .WhereIf(!string.IsNullOrEmpty(request.ClientOrderId), (o, ocs, oct) => o.ClientOrderId == request.ClientOrderId) - .WhereIf(!string.IsNullOrEmpty(request.SourceShopName), (o, ocs, oct) => o.SourceShopName == request.SourceShopName); + .WhereIf(!string.IsNullOrEmpty(request.SourceShopName), (o, ocs, oct) => o.SourceShopName == request.SourceShopName) + .WhereIf(request.IsOnlyDisplaySpecialOrder == 1, (o, ocs, oct) => o.IsSpecialOrder == 1) + .WhereIf(request.IsOnlyDisplaySendQiYue == 1, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) + .WhereIf(request.IsOnlyDisplayPurchaserSendInStore == 1, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.厂商代发入仓); } select = select.WhereIf(request.ShopId != null, (o, ocs, oct) => o.ShopId == request.ShopId); @@ -180,6 +183,7 @@ namespace BBWYB.Server.Business IsWaitPack = o.IsWaitPack, IntoStoreType = o.IntoStoreType, PayTime = o.PayTime, + IsSpecialOrder = o.IsSpecialOrder, ContactName = ocs.ContactName, Address = ocs.Address, @@ -822,5 +826,10 @@ namespace BBWYB.Server.Business { qikuManager.QikuPublishOrderSkuPackConfigState(request); } + + public void SetSpecialOrder(SetSpecialOrderRequest request) + { + fsql.Update(request.OrderId).Set(o => o.IsSpecialOrder, request.IsSpecialOrder).ExecuteAffrows(); + } } } diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index e605da3..37cca53 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -260,8 +260,9 @@ namespace BBWYB.Server.Model.Db public Enums.IntoStoreType? IntoStoreType { get; set; } /// - /// + /// 是否为特殊单 /// + [Column(DbType = "int(1)", IsNullable = true)] public int? IsSpecialOrder { get; set; } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 36afa8f..7a0508d 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -76,28 +76,43 @@ public bool IsWaitConfig { get; set; } /// - /// 是否仅显示待采购超时,是=1否=0,只在订单状态为【待采购和部分采购】时生效 + /// 是否仅显示待采购超时,是=1否=0,null则不处理该条件,只在订单状态为【待采购和部分采购】时生效 /// public int? IsOnlyDisplayPurchaseTimeOut { get; set; } /// - /// 是否仅显示待发货超时,是=1否=0,只在订单状态为【待发货和部分发货】时生效 + /// 是否仅显示待发货超时,是=1否=0,null则不处理该条件,只在订单状态为【待发货和部分发货】时生效 /// public int? IsOnlyDisplayDeliveryTimeout { get; set; } /// - /// 是否仅显示待配置-需修改,是=1否=0,只在【IsWaitConfig=true】时生效 + /// 是否仅显示待配置-需修改,是=1否=0,null则不处理该条件,只在【IsWaitConfig=true】时生效 /// public int? IsOnlyDisplayPackConfigEditState { get; set; } /// - /// 是否仅显示配置超时,是=1否=0,只在【IsWaitConfig=true】时生效(优先) + /// 是否仅显示配置超时,是=1否=0,null则不处理该条件,只在【IsWaitConfig=true】时生效(优先) /// public int? IsOnlyDisplayCerConfigTimeOut { get; set; } /// - /// 是否仅显示核算超时,是=1否=0,只在订单状态为【待核算】时生效 + /// 是否仅显示核算超时,是=1否=0,null则不处理该条件,只在订单状态为【待核算】时生效 /// public int? IsOnlyDisplayCheckComputationTimeOut { get; set; } + + /// + /// 是否仅显示发回齐越,是=1否=0,null则不处理该条件 + /// + public int? IsOnlyDisplaySendQiYue { get; set; } + + /// + /// 是否仅显示厂家代发入仓,是=1否=0,null则不处理该条件 + /// + public int? IsOnlyDisplayPurchaserSendInStore { get; set; } + + /// + /// 是否仅显示特殊单,是=1否=0,null则不处理该条件 + /// + public int? IsOnlyDisplaySpecialOrder { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs new file mode 100644 index 0000000..f2649a4 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs @@ -0,0 +1,12 @@ +namespace BBWYB.Server.Model.Dto +{ + public class SetSpecialOrderRequest + { + public string OrderId { get; set; } + + /// + /// 是=1 否=1 + /// + public int IsSpecialOrder { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index b4b50ff..5943840 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -156,6 +156,11 @@ public Enums.AutoEditOrderPriceType? IsAutoEditOrderPrice { get; set; } public IList OrderMessageList { get; set; } + + /// + /// 是否为特殊单 是=1 否=0 + /// + public int? IsSpecialOrder { get; set; } } public class OrderListResponse From 0c10831ae982ba8cf2ee82b9a935c81d93659f9d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 31 Jul 2023 16:54:48 +0800 Subject: [PATCH 70/70] teshudan --- BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs index f2649a4..e07f0b7 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/SetSpecialOrderRequest.cs @@ -5,7 +5,7 @@ public string OrderId { get; set; } /// - /// 是=1 否=1 + /// 是=1 否=0 /// public int IsSpecialOrder { get; set; } }