From 5cb767afef8e746e4c98e0f02f3a8fa2edceb10b Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 1 Aug 2023 10:35:48 +0800 Subject: [PATCH 01/89] =?UTF-8?q?=E6=9F=A5=E8=AF=A2sku=E7=8E=B0=E6=9C=89?= =?UTF-8?q?=E5=94=AE=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/ViewModels/MainViewModel.cs | 2 +- .../Controllers/ProductController.cs | 12 ++++++++++++ BBWYB.Server.Business/Product/ProductBusiness.cs | 16 ++++++++++++++++ .../Product/QueryProductSkuPriceRequest.cs | 15 +++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 BBWYB.Server.Model/Dto/Request/Product/QueryProductSkuPriceRequest.cs diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 41da673..233aafa 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -232,7 +232,7 @@ namespace BBWYB.Client.ViewModels vm.OrderVM.Refresh(); if (vm.IsCreateWareManager) vm.WareManager.Refresh(); - if (SelectedMenuModel.Name == "订单列表Bata") + if (SelectedMenuModel?.Name == "订单列表Bata") { WeakReferenceMessenger.Default.Send(new Message_WebB_Refresh(null)); } diff --git a/BBWYB.Server.API/Controllers/ProductController.cs b/BBWYB.Server.API/Controllers/ProductController.cs index 3ed179e..9aeec32 100644 --- a/BBWYB.Server.API/Controllers/ProductController.cs +++ b/BBWYB.Server.API/Controllers/ProductController.cs @@ -1,4 +1,5 @@ using BBWYB.Server.Business; +using BBWYB.Server.Model.Dto; using Microsoft.AspNetCore.Mvc; using SDKAdapter.OperationPlatform.Models; @@ -34,6 +35,17 @@ namespace BBWYB.Server.API.Controllers return productBusiness.GetProductSkuList(request); } + /// + /// 查询sku现有售价 + /// + /// + /// + [HttpPost] + public decimal? GetProductSkuPrice([FromBody] QueryProductSkuPriceRequest request) + { + return productBusiness.GetProductSkuPrice(request); + } + /// /// 修改商品价格 /// diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs index 1f2e4fc..d8b6326 100644 --- a/BBWYB.Server.Business/Product/ProductBusiness.cs +++ b/BBWYB.Server.Business/Product/ProductBusiness.cs @@ -1,6 +1,7 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; +using BBWYB.Server.Model.Dto; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; using Yitter.IdGenerator; @@ -26,6 +27,21 @@ namespace BBWYB.Server.Business return opPlatformClientFactory.GetClient(request.Platform).GetProductSkuList(request); } + public decimal? GetProductSkuPrice(QueryProductSkuPriceRequest request) + { + var response = GetProductSkuList(new OP_QueryProductSkuRequest() + { + AppSecret = request.AppSecret, + AppKey = request.AppKey, + AppToken = request.AppToken, + PageIndex = 1, + PageSize = 1, + Platform = (SDKAdapter.AdapterEnums.PlatformType)request.Platform, + Sku = request.Sku + }); + return response.Items?.FirstOrDefault()?.Price; + } + public void EditProductPrice(OP_EditProductPriceRequest request) { var skuRequest = new OP_QueryProductSkuRequest() diff --git a/BBWYB.Server.Model/Dto/Request/Product/QueryProductSkuPriceRequest.cs b/BBWYB.Server.Model/Dto/Request/Product/QueryProductSkuPriceRequest.cs new file mode 100644 index 0000000..3f11d72 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Product/QueryProductSkuPriceRequest.cs @@ -0,0 +1,15 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QueryProductSkuPriceRequest + { + public Enums.Platform Platform { get; set; } + + public string AppKey { get; set; } + + public string AppSecret { get; set; } + + public string AppToken { get; set; } + + public string Sku { get; set; } + } +} From 178e9c79c3a9bcb686b3018db063877fff267a9d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 1 Aug 2023 12:32:00 +0800 Subject: [PATCH 02/89] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=8F=98=E6=9B=B4=E4=B8=BAsku=E5=88=A9?= =?UTF-8?q?=E6=B6=A6=E7=BB=9D=E5=AF=B9=E5=80=BC=E4=B8=8D=E8=B6=85=E8=BF=87?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 32 ++++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index e889a35..f3a3ff8 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -744,21 +744,27 @@ namespace BBWYB.Server.Business throw new BusinessException("未查询到订单"); if (order.OrderState != Enums.OrderState.待核算) throw new BusinessException("订单状态不正确,只有待核算的订单才允许核算"); - var orderCost = fsql.Select(orderId).ToOne(); - if (orderCost == null) - throw new BusinessException("未查询到订单成本"); - if (Math.Abs(orderCost.Profit ?? 0) > 1M) - throw new BusinessException("订单利润绝对值不能大于1"); + //var orderCost = fsql.Select(orderId).ToOne(); + //if (orderCost == null) + // throw new BusinessException("未查询到订单成本"); + //if (Math.Abs(orderCost.Profit ?? 0) > 1M) + // throw new BusinessException("订单利润绝对值不能大于1"); + + var orderSkuCostList = fsql.Select().Where(o => o.OrderId == orderId).ToList(); + if (orderSkuCostList.Count() == 0) + throw new BusinessException("未查询到订单sku成本"); + if (orderSkuCostList.Any(osc => Math.Abs(osc.Profit ?? 0) > 1)) + throw new BusinessException("订单sku利润绝对值不能大于1"); 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(); - }); + { + 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.已完成); } From a4af56b1b7adc66b9d342cb1e15e66ee9679832e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 1 Aug 2023 15:07:17 +0800 Subject: [PATCH 03/89] =?UTF-8?q?=E4=BF=AE=E6=94=B9=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 --- BBWYB.Server.API/Program.cs | 7 +- BBWYB.Server.API/appsettings.json | 1 + .../FreeSqlMultiDBManager.cs | 4 +- .../Order/Message/OrderMessageBusiness.cs | 35 ++- BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs | 223 ++++++++++++++++++ 5 files changed, 263 insertions(+), 7 deletions(-) create mode 100644 BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs diff --git a/BBWYB.Server.API/Program.cs b/BBWYB.Server.API/Program.cs index 7cbd9f9..4174b6a 100644 --- a/BBWYB.Server.API/Program.cs +++ b/BBWYB.Server.API/Program.cs @@ -32,10 +32,13 @@ services.AddSingleton(typeof(IFreeSql), fsql); var fsql2 = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, configuration.GetConnectionString("MDSDB")).Build(); +var fsql_bbwyc = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, configuration.GetConnectionString("BBWYCDB")).Build(); + services.AddSingleton(new FreeSqlMultiDBManager() { - BBWYfsql = fsql, - MDSfsql = fsql2 + BBWYBfsql = fsql, + MDSfsql = fsql2, + BBWYCfsql = fsql_bbwyc, }); services.AddSingleton(); diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json index 9a15df4..d071f85 100644 --- a/BBWYB.Server.API/appsettings.json +++ b/BBWYB.Server.API/appsettings.json @@ -10,6 +10,7 @@ "ConnectionStrings": { //"DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy;charset=utf8;sslmode=none;" "DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwyb;charset=utf8;sslmode=none;", + "BBWYCDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;", "MDSDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;" }, "AllowedSwagger": true, diff --git a/BBWYB.Server.Business/FreeSqlMultiDBManager.cs b/BBWYB.Server.Business/FreeSqlMultiDBManager.cs index 5f970e1..a9f54b6 100644 --- a/BBWYB.Server.Business/FreeSqlMultiDBManager.cs +++ b/BBWYB.Server.Business/FreeSqlMultiDBManager.cs @@ -2,7 +2,9 @@ { public class FreeSqlMultiDBManager { - public IFreeSql BBWYfsql { get; set; } + public IFreeSql BBWYBfsql { get; set; } public IFreeSql MDSfsql { get; set; } + + public IFreeSql BBWYCfsql { get; set; } } } diff --git a/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs index c65a7dc..72cf597 100644 --- a/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs +++ b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs @@ -1,5 +1,6 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Business.Sync; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using Yitter.IdGenerator; @@ -9,10 +10,19 @@ namespace BBWYB.Server.Business public class OrderMessageBusiness : BaseBusiness, IDenpendency { private MDSBusiness mdsBusiness; + private OrderSyncBusiness orderSyncBusiness; + private FreeSqlMultiDBManager mfsql; - public OrderMessageBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, MDSBusiness mdsBusiness) : base(fsql, nLogManager, idGenerator) + public OrderMessageBusiness(IFreeSql fsql, + NLogManager nLogManager, + IIdGenerator idGenerator, + MDSBusiness mdsBusiness, + OrderSyncBusiness orderSyncBusiness, + FreeSqlMultiDBManager mfsql) : base(fsql, nLogManager, idGenerator) { this.mdsBusiness = mdsBusiness; + this.orderSyncBusiness = orderSyncBusiness; + this.mfsql = mfsql; } public void AddOrderMessage(AddOrderMessageRequest request, string token, string clientCode) @@ -23,9 +33,26 @@ namespace BBWYB.Server.Business if (string.IsNullOrEmpty(clientCode)) throw new BusinessException("缺少客户端标识"); + string orderSn = string.Empty; + long? shopId = null; var order = fsql.Select(request.OrderId).ToOne(); if (order == null) - throw new BusinessException("订单不存在"); + { + var bbwyPurchaseOrder = mfsql.BBWYCfsql.Ado.QuerySingle($"select * from purchaseorderv2 where Id='{request.OrderId}'"); + if (bbwyPurchaseOrder == null) + throw new BusinessException("订单不存在"); + else + { + orderSn = bbwyPurchaseOrder.OrderSn; + shopId = bbwyPurchaseOrder.ShopId; + } + } + else + { + orderSn = order.OrderSn; + shopId = order.ShopId; + } + var user = mdsBusiness.GetUserInfo(token); var om = new OrderMessage() @@ -36,8 +63,8 @@ namespace BBWYB.Server.Business CreatorName = user.UserName, Message = request.Message, OrderId = request.OrderId, - OrderSn = order.OrderSn, - ShopId = order.ShopId, + OrderSn = orderSn, + ShopId = shopId, From = clientCode }; fsql.Insert(om).ExecuteAffrows(); diff --git a/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs b/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs new file mode 100644 index 0000000..ccc561c --- /dev/null +++ b/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs @@ -0,0 +1,223 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db.BBWY +{ + + /// + /// 采购单表 + /// + [Table(Name = "purchaseorderv2", DisableSyncStructure = true)] + public partial class PurchaseOrderV2 + { + + /// + /// 采购单号 + /// + [Column(StringLength = 100, IsPrimary = true, IsNullable = false)] + public string Id { get; set; } + + /// + /// 拳探订单独有Sn号 + /// + [Column(StringLength = 50)] + public string OrderSn { get; set; } + + /// + /// 完成时间 + /// + [Column(DbType = "datetime")] + public DateTime? CompletionTime { get; set; } + + /// + /// 收货详细地址 + /// + + public string ConsigneeAddress { get; set; } + + /// + /// 收货市 + /// + [Column(StringLength = 30)] + public string ConsigneeCity { get; set; } + + /// + /// 收货联系人名称 + /// + [Column(StringLength = 50)] + public string ConsigneeContactName { get; set; } + + /// + /// 收货区 + /// + [Column(StringLength = 30)] + public string ConsigneeCounty { get; set; } + + /// + /// 收货联系人电话 + /// + [Column(StringLength = 50)] + public string ConsigneeMobile { get; set; } + + /// + /// 收货省 + /// + [Column(StringLength = 30)] + public string ConsigneeProvince { get; set; } + + /// + /// 收货镇 + /// + [Column(StringLength = 30)] + public string ConsigneeTown { get; set; } + + /// + /// 打包耗材费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? ConsumableAmount { get; set; } = 0.00M; + + /// + /// 创建时间 + /// + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 快递公司 + /// + [Column(StringLength = 100)] + public string ExpressName { get; set; } + + /// + /// 头程运费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? FirstFreight { get; set; } = 0.00M; + + /// + /// 入仓费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? InStorageAmount { get; set; } = 0.00M; + + /// + /// 是否转入库存 + /// + + public bool? IsConvertToStock { get; set; } = false; + + /// + /// 是否订阅快递100 + /// + + public bool? IsSubscribeKuaiDi100 { get; set; } = false; + + /// + /// 采购单状态(待付款=0,待发货=1,待收货=2,待质检=3,待打包=4,待结算=5,已完成=6) + /// + [Column(MapType = typeof(int?))] + public Enums.PurchaseOrderState? OrderState { get; set; } + + /// + /// 支付时间 + /// + [Column(DbType = "datetime")] + public DateTime? PayTime { get; set; } + + /// + /// 采购货款 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? ProductAmount { get; set; } = 0.00M; + + /// + /// 采购账号Id + /// + + public long? PurchaseAccountId { get; set; } + + /// + /// 采购金额(采购货款+采购运费) + /// + [Column(DbType = "decimal(18,2)")] + public decimal? PurchaseAmount { get; set; } = 0.00M; + + /// + /// 采购运费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? PurchaseFreight { get; set; } = 0.00M; + + /// + /// 采购平台 + /// + [Column(MapType = typeof(int?))] + public Enums.Platform? PurchasePlatform { get; set; } + + /// + /// 商家Id + /// + [Column(StringLength = 20)] + public string PurchaserId { get; set; } + + /// + /// 商家名称 + /// + [Column(StringLength = 100)] + public string PurchaserName { get; set; } + + /// + /// 质检费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? QualityInspectionAmount { get; set; } = 0.00M; + + /// + /// 备注信息 + /// + + public string Remark { get; set; } + + /// + /// 店铺Id + /// + + public long ShopId { get; set; } + + /// + /// 签收时间 + /// + [Column(DbType = "datetime")] + public DateTime? SignTime { get; set; } + + /// + /// 快递单号 + /// + [Column(StringLength = 100)] + public string WaybillNo { get; set; } + + /// + /// 采购方式(线上=0, 线下=1) + /// + [Column(MapType = typeof(int))] + public Enums.PurchaseMethod PurchaseMethod { get; set; } + + /// + /// 采购单模式 批发 = 0,代发 = 1 + /// + [Column(MapType = typeof(int))] + public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; } + ///// + ///// 打包状态 (待发布=0,打包中=1,已完成=2) + ///// + //[Column(MapType = typeof(int))] + //public Enums.PackState PackState { get; set; } + + /// + /// 入仓类型 (发回齐越 = 0, 厂商代发入仓 = 1) + /// + [Column(MapType = typeof(int?))] + public Enums.IntoStoreType? IntoStoreType { get; set; } + } + +} From 52476a10c74ac97b7401d6e3001062155098a9a4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 2 Aug 2023 23:19:47 +0800 Subject: [PATCH 04/89] 1 --- BBWYB.Client/App.xaml.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BBWYB.Client/App.xaml.cs b/BBWYB.Client/App.xaml.cs index be15769..9f2d3f5 100644 --- a/BBWYB.Client/App.xaml.cs +++ b/BBWYB.Client/App.xaml.cs @@ -50,9 +50,9 @@ namespace BBWYB.Client gl.UserToken = userToken; #region 注册全局异常 - this.DispatcherUnhandledException += App_DispatcherUnhandledException; ; - AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; ; - TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; ; + this.DispatcherUnhandledException += App_DispatcherUnhandledException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; #endregion From d2d886be951c544a420b3f7997a60354205f9639 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 4 Aug 2023 18:49:19 +0800 Subject: [PATCH 05/89] =?UTF-8?q?=E5=85=A5=E4=BB=93=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 9347618..b5b644d 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2671,7 +2671,7 @@ namespace BBWYB.Server.Business #region 入库单查询有误,通知钉钉 var shop = venderBusiness.GetShopList(order.ShopId).FirstOrDefault(); var dingdingMsg = new StringBuilder(); - if (inStoreResponse.Data == null || inStoreResponse.Data.Count() == 0) + if (!inStoreResponse.Success) { foreach (var opi in currentPurchaseOrderList) { @@ -2679,11 +2679,11 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); - dingdingMsg.AppendLine("缺少入仓采购单号"); + dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); dingdingMsg.AppendLine(); } } - else if (!inStoreResponse.Success) + else if (inStoreResponse.Data == null || inStoreResponse.Data.Count() == 0) { foreach (var opi in currentPurchaseOrderList) { @@ -2691,7 +2691,7 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); - dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); + dingdingMsg.AppendLine("缺少入仓采购单号"); dingdingMsg.AppendLine(); } } From bfa65847e3ca320fd874939d21f19e57355eb306 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 5 Aug 2023 11:56:43 +0800 Subject: [PATCH 06/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=20=E5=BD=93?= =?UTF-8?q?=E4=B8=80=E7=AC=94=E8=AE=A2=E5=8D=95sku=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=A4=9A=E7=AC=94=E9=87=87=E8=B4=AD=E5=8D=95=E6=97=B6=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=AE=A2=E5=8D=95=E5=B9=B3=E4=BB=B7=E7=9A=84=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 54 +++++++++++++++---- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index b5b644d..5a01ee9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2864,6 +2864,8 @@ namespace BBWYB.Server.Business IUpdate updatePurchaseOrder = null; + IDictionary oskuPriceEditParamDictionary = new Dictionary(); + var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); var totalPurchaseProductAmount = 0M; @@ -2911,21 +2913,34 @@ namespace BBWYB.Server.Business var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); if (isEditOrderPrice) { - orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal; - orderSku.BuyerPayFreight = currentPurchaseFreight; - if (!op_EditPriceSkuRequests.Any(x => x.SkuId == orderSku.SkuId)) + if (!oskuPriceEditParamDictionary.TryGetValue(orderSku.SkuId, out OP_EditPriceSkuRequest editSkuPrice)) { - op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest() + editSkuPrice = new OP_EditPriceSkuRequest() { - Freight = currentPurchaseFreight ?? 0M, - InPackAmountPrice = orderSku.InPackAmount ?? 0M, + SkuId = orderSku.SkuId, 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)); + InPackAmountPrice = orderSku.InPackAmount ?? 0M + }; + oskuPriceEditParamDictionary.Add(orderSku.SkuId, editSkuPrice); } + editSkuPrice.Price += currentOrderSkuProductAmount / (orderSku.ItemTotal ?? 1M); + editSkuPrice.Freight += currentPurchaseFreight ?? 0M; + + //orderSku.Price = + //orderSku.BuyerPayFreight = currentPurchaseFreight; + //if (!op_EditPriceSkuRequests.Any(x => x.SkuId == orderSku.SkuId)) + //{ + // 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 @@ -2938,8 +2953,24 @@ namespace BBWYB.Server.Business updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); } } + if (isEditOrderPrice) { + #region 更新订单sku金额 + foreach (var editSkuPriceKey in oskuPriceEditParamDictionary.Keys) + { + oskuPriceEditParamDictionary.TryGetValue(editSkuPriceKey, out var editSkuPrice); + var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == editSkuPrice.SkuId); + orderSku.Price = editSkuPrice.Price; + orderSku.BuyerPayFreight = editSkuPrice.Freight; + + op_EditPriceSkuRequests.Add(editSkuPrice); + updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price) + .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight)); + } + #endregion + + #region 更新订单金额 dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight; dbOrder.OrderSellerPrice = totalPurchaseProductAmount; dbOrder.FreightPrice = totalPurchaseFreight; @@ -2948,6 +2979,7 @@ namespace BBWYB.Server.Business .Set(o => o.FreightPrice, dbOrder.FreightPrice); updatePurchaseOrder = fsql.Update(orderPurchaseInfo.Id).Set(opi => opi.IsAutoEditOrderPrice, Enums.AutoEditOrderPriceType.已平价); + #region } #region 订单Sku成本 From fdf30b5879d013a2b50f4c8350672d6c739b0870 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 5 Aug 2023 12:02:30 +0800 Subject: [PATCH 07/89] 1 --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5a01ee9..743f28c 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2979,7 +2979,7 @@ namespace BBWYB.Server.Business .Set(o => o.FreightPrice, dbOrder.FreightPrice); updatePurchaseOrder = fsql.Update(orderPurchaseInfo.Id).Set(opi => opi.IsAutoEditOrderPrice, Enums.AutoEditOrderPriceType.已平价); - #region + #endregion } #region 订单Sku成本 From cc6b81804d6afa390350837a562b89956a496ae8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 6 Aug 2023 13:57:48 +0800 Subject: [PATCH 08/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E5=AF=BC=E8=87=B4=E9=87=87=E8=B4=AD=E5=B8=A6?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8D=E5=AF=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 108 ++++++------------ 1 file changed, 32 insertions(+), 76 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 743f28c..bf3eddf 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1339,80 +1339,6 @@ 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.CalculationOrderCostAndProfit(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(); - // }); - //} /// /// 修改采购快递单 @@ -1753,6 +1679,21 @@ namespace BBWYB.Server.Business WayBillNo = request.WaybillNo }; insertExpressOrderRelation = fsql.Insert(expressOrderRelation); + if (!insertPurchaseExpressOrderList.Any(p => p.WaybillNo == request.WaybillNo)) + { + purchaseExpressOrderList.Add(new PurchaseExpressOrder() + { + CreateTime = DateTime.Now, + ShopId = dbOrder.ShopId ?? 0, + TargetExpressId = request.ExpressId, + TargetExpressName = request.ExpressName, + WaybillNo = request.WaybillNo, + ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收 + IsSubscribeKD100 = isSubscribeKD100, + ExpressContent = "手动发货", + ExpressChangedTime = DateTime.Now + }); + } } #endregion @@ -1793,7 +1734,7 @@ namespace BBWYB.Server.Business /// public void PurchaserDelivery(PurchaserDeliveryRequest request) { - nLogManager.Default().Info($"ManualDelivery {JsonConvert.SerializeObject(request)}"); + nLogManager.Default().Info($"PurchaserDelivery {JsonConvert.SerializeObject(request)}"); var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) @@ -1885,7 +1826,7 @@ namespace BBWYB.Server.Business dingdingMsg.AppendLine($"源物流公司:无"); dingdingMsg.AppendLine($"目标物流公司:{peoRequest.ExpressName} {peoRequest.ExpressId}"); dingdingMsg.AppendLine($"快递单号:{peoRequest.WaybillNo}"); - dingdingMsg.AppendLine("触发环节:手动发货"); + dingdingMsg.AppendLine("触发环节:厂家代发入仓手动发货"); dingdingMsg.Append($"店铺名:{shop.ShopName}"); Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion @@ -1928,6 +1869,21 @@ namespace BBWYB.Server.Business WayBillNo = peoRequest.WaybillNo }; insertExpressOrderRelationList.Add(expressOrderRelation); + if (!insertPurchaseExpressOrderList.Any(p => p.WaybillNo == peoRequest.WaybillNo)) + { + purchaseExpressOrderList.Add(new PurchaseExpressOrder() + { + CreateTime = DateTime.Now, + ShopId = dbOrder.ShopId ?? 0, + TargetExpressId = peoRequest.ExpressId, + TargetExpressName = peoRequest.ExpressName, + WaybillNo = peoRequest.WaybillNo, + ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收 + IsSubscribeKD100 = isSubscribeKD100, + ExpressContent = "手动发货", + ExpressChangedTime = DateTime.Now + }); + } } #endregion From 7bac2c32ded3f3adc3dc807f8fc3e136629cadd7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 6 Aug 2023 18:17:55 +0800 Subject: [PATCH 09/89] 1 --- .../Controllers/DataRepairController.cs | 6 ++++++ .../DataRepair/DataRepairBusiness.cs | 15 ++++++++++++++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 027cc64..c741111 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -42,5 +42,11 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SupplementOrderSkuCost(); } + + [HttpPost] + public void PingJia() + { + dataRepairBusiness.PingJia(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 3fbebc0..f70c444 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -13,10 +13,12 @@ namespace BBWYB.Server.Business { private KuaiDi100Manager kuaiDi100Manager; private PurchaseSchemeBusiness purchaseSchemeBusiness; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness) : base(fsql, nLogManager, idGenerator) + private PurchaseOrderBusiness purchaseOrderBusiness; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; + this.purchaseOrderBusiness = purchaseOrderBusiness; } @@ -25,6 +27,17 @@ namespace BBWYB.Server.Business kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } + public void PingJia() + { + + var list = new List() + { + + }; + foreach (var pid in list) + purchaseOrderBusiness.OnSomeOnePurchaseOrderChanged(pid, false); + } + public void SupplementPurchaserInfo() { var purlList = fsql.Select() diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index bf3eddf..8068d69 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2761,7 +2761,7 @@ namespace BBWYB.Server.Business /// /// 采购单Id /// 当不需要触发订单改价时是否继续走流程 - private void OnSomeOnePurchaseOrderChanged(string purchaseOrderId, bool keepRunWhenNoEditOrderPirce) + public void OnSomeOnePurchaseOrderChanged(string purchaseOrderId, bool keepRunWhenNoEditOrderPirce) { bool isEditOrderPrice = true; try From a6641411f2fc7492d76e93ed604615daa0298b04 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 7 Aug 2023 11:39:13 +0800 Subject: [PATCH 10/89] =?UTF-8?q?=E4=BF=9D=E7=95=99sku=E6=9C=80=E5=88=9D?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC?= 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/Order/OrderSku.cs | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 6f2ef91..2ddcfe4 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -163,6 +163,7 @@ namespace BBWYB.Server.Business.Sync Logo = qtOrderSku.SkuLogo, OrderId = qtOrder.OrderId, Price = qtOrderSku.SkuPrice, + InitialPrice = qtOrderSku.SkuPrice, Title = qtOrderSku.SkuTitle, ShopId = shopId, ProductId = qtOrderSku.ProductId, diff --git a/BBWYB.Server.Model/Db/Order/OrderSku.cs b/BBWYB.Server.Model/Db/Order/OrderSku.cs index 2d07800..95b13d2 100644 --- a/BBWYB.Server.Model/Db/Order/OrderSku.cs +++ b/BBWYB.Server.Model/Db/Order/OrderSku.cs @@ -43,6 +43,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? Price { get; set; } + /// + /// 最初单价 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? InitialPrice { get; set; } + [Column(StringLength = 50)] public string ProductId { get; set; } From 989cbda8408451ae6c9640b97114108d884e4691 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 8 Aug 2023 11:59:42 +0800 Subject: [PATCH 11/89] =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=85=A5=E4=BB=93?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/JDController.cs | 25 +++ .../Extensions/OrderStateExtension.cs | 21 ++- BBWYB.Server.Business/JD/JDBusiness.cs | 148 +++++++++++++++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 2 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 120 +++----------- .../Vender/VenderBusiness.cs | 7 + .../Db/Order/InStoreOrderCheckTask.cs | 29 ++++ .../Order/InStorePurchaseOrdeRrelationInfo.cs | 30 ++-- 8 files changed, 258 insertions(+), 124 deletions(-) create mode 100644 BBWYB.Server.API/Controllers/JDController.cs create mode 100644 BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs diff --git a/BBWYB.Server.API/Controllers/JDController.cs b/BBWYB.Server.API/Controllers/JDController.cs new file mode 100644 index 0000000..ef06731 --- /dev/null +++ b/BBWYB.Server.API/Controllers/JDController.cs @@ -0,0 +1,25 @@ +using BBWYB.Server.Business.JD; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + + public class JDController : BaseApiController + { + private JDBusiness jdBusiness; + + public JDController(IHttpContextAccessor httpContextAccessor, JDBusiness jdBusiness) : base(httpContextAccessor) + { + this.jdBusiness = jdBusiness; + } + + /// + /// 检查入仓采购单 + /// + [HttpPost] + public void CheckInStoreOrder() + { + jdBusiness.CheckInStoreOrder(); + } + } +} diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 1834f9c..9b5c861 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -13,18 +13,13 @@ namespace BBWYB.Server.Business /// /// /// - /// 是否在入库单验证失败后通知钉钉 /// /// - /// public static void CalculationOrderState(this Order order, IFreeSql fsql, - out bool IsNotifyDingDingWhenInStoreOrderFail, IList orderSkuList = null, - IList orderPurchaseInfoList = null, - IList jdInStoreOrderDetailList = null) + IList orderPurchaseInfoList = null) { - IsNotifyDingDingWhenInStoreOrderFail = false; if (order.OrderState == Enums.OrderState.已取消 || order.OrderState == Enums.OrderState.已完成 || order.OrderState == Enums.OrderState.待付款) @@ -120,13 +115,15 @@ namespace BBWYB.Server.Business } else if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) { - if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2")) - { + if (order.OrderState != Enums.OrderState.待核算) order.OrderState = Enums.OrderState.待验收; - IsNotifyDingDingWhenInStoreOrderFail = true; - } - else - order.OrderState = Enums.OrderState.待核算; + //if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2")) + //{ + // order.OrderState = Enums.OrderState.待验收; + // IsNotifyDingDingWhenInStoreOrderFail = true; + //} + //else + // order.OrderState = Enums.OrderState.待核算; } return; } diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs index d00139d..5b2f1ba 100644 --- a/BBWYB.Server.Business/JD/JDBusiness.cs +++ b/BBWYB.Server.Business/JD/JDBusiness.cs @@ -1,8 +1,10 @@ using BBWYB.Common.Http; using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model.Db; using JD.Dto; using Newtonsoft.Json; +using System.Text; using Yitter.IdGenerator; namespace BBWYB.Server.Business.JD @@ -11,14 +13,20 @@ namespace BBWYB.Server.Business.JD { private RestApiService restApiService; private VenderBusiness venderBusiness; + private DingDingBusiness dingDingBusiness; + private TaskSchedulerManager taskSchedulerManager; public JDBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService, - VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) + VenderBusiness venderBusiness, + DingDingBusiness dingDingBusiness, + TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator) { this.restApiService = restApiService; this.venderBusiness = venderBusiness; + this.dingDingBusiness = dingDingBusiness; + this.taskSchedulerManager = taskSchedulerManager; } public ApiResponse> GetJDInStoreOrderDetailList(string sourceShopName, IList poOrderNos) @@ -50,5 +58,143 @@ namespace BBWYB.Server.Business.JD return new ApiResponse>() { Code = 0, Msg = ex.Message }; } } + + public void CheckInStoreOrder() + { + List orderIds = null; + + try + { + var checkTaskList = fsql.Select().Where(x => x.IsChecked == false).ToList(); + if (checkTaskList.Count() == 0) + return; + orderIds = checkTaskList.Select(x => x.OrderId).ToList(); + var orderPurchaseInfoList = fsql.Select().Where(opi => orderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList(); + + var waitCheckInStoreOrderList = fsql.Select() + .InnerJoin((io, o) => io.OrderId == o.Id) + .Where((io, o) => orderIds.Contains(io.OrderId) && !string.IsNullOrEmpty(o.SourceShopName)) + .ToList((io, o) => new + { + io.Id, + io.PurchaseOrderId, + io.CreateTime, + io.InStorePurchaseOrderId, + io.OrderId, + io.ShopId, + io.WaybillNo, + o.SourceShopName + }); + var shopIds = checkTaskList.Select(x => x.ShopId.ToString()).ToList(); + var shopList = venderBusiness.GetShopList(shopIds); + + foreach (var checkTask in checkTaskList) + { + var dingdingMsg = new StringBuilder(); + var inStoreOrderRelationList = waitCheckInStoreOrderList.Where(x => x.OrderId == checkTask.OrderId).ToList(); + var currentPurchaseOrderList = orderPurchaseInfoList.Where(opi => opi.OrderId == checkTask.OrderId).ToList(); + var shop = shopList.FirstOrDefault(s => s.ShopId == checkTask.ShopId.ToString()); + if (inStoreOrderRelationList == null || inStoreOrderRelationList.Count() == 0) + { + if (currentPurchaseOrderList.Count() > 0) + { + foreach (var opi in currentPurchaseOrderList) + { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine("缺少入仓采购单号"); + dingdingMsg.AppendLine(); + } + } + } + else + { + var poOrderNos = inStoreOrderRelationList.Select(i => i.InStorePurchaseOrderId).Distinct().ToList(); + //查询京东 + var inStoreResponse = GetJDInStoreOrderDetailList(inStoreOrderRelationList.FirstOrDefault().SourceShopName, poOrderNos); + if (!inStoreResponse.Success) + { + if (currentPurchaseOrderList.Count() > 0) + { + foreach (var opi in currentPurchaseOrderList) + { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); + dingdingMsg.AppendLine(); + } + } + } + else + { + foreach (var inStoreOrderRelation in 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($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单状态:{jdInStore.storageStatus} {stateText}"); + dingdingMsg.AppendLine(); + } + } + } + + if (dingdingMsg.Length > 0) + { + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + } + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, "CheckInStoreOrder"); + } + finally + { + try + { + if (orderIds != null && orderIds.Count() > 0) + fsql.Update().Set(x => x.IsChecked, true).Where(x => orderIds.Contains(x.OrderId)).ExecuteAffrows(); + } + catch { } + } + } + + private void SendDingDing(string content) + { + try + { + dingDingBusiness.SendDingDingBotMessage("SEC5f08a3dd6813e50bf9a3b81350ec12a8086c64b9e29ef858a17f5cc7887906d7", + "https://oapi.dingtalk.com/robot/send?access_token=7ce472411bb8dde0c3ff503fcca9ead84d39950ee3c4c65c808dbc58981eb929", + content); + } + catch { } + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index f3a3ff8..dab1f9a 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -726,7 +726,7 @@ namespace BBWYB.Server.Business updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.IsCheck, true); var oldOrderState = dbOrder.OrderState; - dbOrder.CalculationOrderState(fsql, out _, orderSkuList, null); + dbOrder.CalculationOrderState(fsql, orderSkuList); 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 8068d69..ee612b7 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -541,7 +541,7 @@ namespace BBWYB.Server.Business #endregion #region 订单状态 - dbOrder.CalculationOrderState(fsql, out _, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); + dbOrder.CalculationOrderState(fsql, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); #endregion #region 通知C端状态 @@ -1041,7 +1041,7 @@ namespace BBWYB.Server.Business #endregion #region 订单状态 - dbOrder.CalculationOrderState(fsql, out _, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); + dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); #endregion #region 通知C端状态 @@ -1296,7 +1296,7 @@ namespace BBWYB.Server.Business #endregion orderPurchaseInfoList.Remove(historyPurchaseOrder); - dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList); fsql.Transaction(() => { @@ -1339,7 +1339,6 @@ namespace BBWYB.Server.Business }); } - /// /// 修改采购快递单 /// @@ -1489,7 +1488,7 @@ namespace BBWYB.Server.Business #region 计算订单状态 var oldOrderState = dbOrder.OrderState; - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); if (oldOrderState != dbOrder.OrderState) { updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); @@ -1704,7 +1703,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -1913,7 +1912,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -1965,7 +1964,6 @@ namespace BBWYB.Server.Business taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } - ///// ///// 手动收货 ///// @@ -2371,7 +2369,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -2481,6 +2479,7 @@ namespace BBWYB.Server.Business List> updateOrderPurchaseList = new List>(); List> updateOrderList = new List>(); List insertTimeLimitTaskList = new List(); + List insertInStoreOrderCheckTaskList = new List(); #region 查询该笔快递单 var tpeo = fsql.Select(wayBillNo).ToOne(); @@ -2566,9 +2565,9 @@ namespace BBWYB.Server.Business #endregion #region 查询入库单信息 - IList inStoreOrderRelationList = null; + IList inStoreOrderCheckTaskList = null; if (orderList.Any(o => o.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) && state == "QianShou") - inStoreOrderRelationList = fsql.Select().Where(i => orderIds.Contains(i.OrderId)).ToList(); + inStoreOrderCheckTaskList = fsql.Select().Where(i => orderIds.Contains(i.OrderId)).ToList(); #endregion #region 计算订单状态和采购单状态 @@ -2607,93 +2606,22 @@ namespace BBWYB.Server.Business } var oldOrderState = order.OrderState; + order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList); - if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && state == "QianShou") + if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && + state == "QianShou" && + order.OrderState == Enums.OrderState.待验收 && + !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) { - #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) + insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() { - #region 入库单查询有误,通知钉钉 - var shop = venderBusiness.GetShopList(order.ShopId).FirstOrDefault(); - var dingdingMsg = new StringBuilder(); - if (!inStoreResponse.Success) - { - foreach (var opi in currentPurchaseOrderList) - { - dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); - dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); - dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); - dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); - dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); - dingdingMsg.AppendLine(); - } - } - else 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}"); - 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($"店铺名称:{shop?.ShopName}"); - 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); + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + IsChecked = false, + OrderId = order.Id, + ShopId = order.ShopId, + OrderSn = order.OrderSn + }); } if (order.OrderState != oldOrderState) @@ -2747,6 +2675,8 @@ namespace BBWYB.Server.Business } if (insertTimeLimitTaskList.Count() > 0) fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); + if (insertInStoreOrderCheckTaskList.Count() > 0) + fsql.Insert(insertInStoreOrderCheckTaskList).ExecuteAffrows(); }); #endregion } diff --git a/BBWYB.Server.Business/Vender/VenderBusiness.cs b/BBWYB.Server.Business/Vender/VenderBusiness.cs index 1f55d66..a07ca3e 100644 --- a/BBWYB.Server.Business/Vender/VenderBusiness.cs +++ b/BBWYB.Server.Business/Vender/VenderBusiness.cs @@ -32,6 +32,13 @@ namespace BBWYB.Server.Business .ToList(); } + public IList GetShopList(List shopIds) + { + return fsqlManager.MDSfsql.Select().Where(s => !string.IsNullOrEmpty(s.ShopId) && + shopIds.Contains(s.ShopId)) + .ToList(); + } + public long SaveShopSetting(ShopSettingRequest shopSettingRequest) { diff --git a/BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs b/BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs new file mode 100644 index 0000000..8bde073 --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs @@ -0,0 +1,29 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + [Table(Name = "instoreorderchecktask", DisableSyncStructure = true)] + public partial class InStoreOrderCheckTask + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + + public bool? IsChecked { get; set; } = false; + + [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/Db/Order/InStorePurchaseOrdeRrelationInfo.cs b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs index 1a67e40..ecf27e7 100644 --- a/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs +++ b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs @@ -7,29 +7,29 @@ namespace BBWYB.Server.Model.Db /// 入库采购单关系表 /// [Table(Name = "instorepurchaseorderrelationinfo", DisableSyncStructure = true)] - public partial class InStorePurchaseOrdeRrelationInfo + public partial class InStorePurchaseOrdeRrelationInfo { - [Column(IsPrimary = true)] - public long Id { get; set; } + [Column(IsPrimary = true)] + public long Id { get; set; } - [Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } - [Column(StringLength = 100)] - public string InStorePurchaseOrderId { get; set; } + [Column(StringLength = 100)] + public string InStorePurchaseOrderId { get; set; } - [Column(StringLength = 100)] - public string OrderId { get; set; } + [Column(StringLength = 100)] + public string OrderId { get; set; } - [Column(StringLength = 100)] - public string PurchaseOrderId { get; set; } + [Column(StringLength = 100)] + public string PurchaseOrderId { get; set; } - public long? ShopId { get; set; } + public long? ShopId { get; set; } - [Column(StringLength = 100)] - public string WaybillNo { get; set; } + [Column(StringLength = 100)] + public string WaybillNo { get; set; } - } + } } From fcdb0418673a0dc1d57374b9e27aae3962b48efa Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 8 Aug 2023 12:01:25 +0800 Subject: [PATCH 12/89] 1 --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ee612b7..d91f624 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2611,7 +2611,8 @@ namespace BBWYB.Server.Business if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && state == "QianShou" && order.OrderState == Enums.OrderState.待验收 && - !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) + inStoreOrderCheckTaskList != null && + !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) { insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() { From 4cd538a36c2335fac23de8d1c0995825eefc2ced Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 8 Aug 2023 12:19:53 +0800 Subject: [PATCH 13/89] =?UTF-8?q?=E5=85=A5=E4=BB=93=E5=8D=95=E6=A3=80?= =?UTF-8?q?=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/JD/JDBusiness.cs | 46 ++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs index 5b2f1ba..2bfe570 100644 --- a/BBWYB.Server.Business/JD/JDBusiness.cs +++ b/BBWYB.Server.Business/JD/JDBusiness.cs @@ -1,7 +1,9 @@ using BBWYB.Common.Http; using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model; using BBWYB.Server.Model.Db; +using FreeSql; using JD.Dto; using Newtonsoft.Json; using System.Text; @@ -62,7 +64,7 @@ namespace BBWYB.Server.Business.JD public void CheckInStoreOrder() { List orderIds = null; - + List> updateOrderList = new List>(); try { var checkTaskList = fsql.Select().Where(x => x.IsChecked == false).ToList(); @@ -131,14 +133,28 @@ namespace BBWYB.Server.Business.JD } else { + bool validateResult = true; foreach (var inStoreOrderRelation in inStoreOrderRelationList) { var jdInStore = inStoreResponse.Data.FirstOrDefault(x => x.poOrderNo == inStoreOrderRelation.InStorePurchaseOrderId); - if (jdInStore == null || jdInStore.storageStatus == "2") + if (jdInStore != null && jdInStore.storageStatus == "2") continue; + + validateResult = false; + var opi = currentPurchaseOrderList.FirstOrDefault(opi => opi.PurchaseOrderId == inStoreOrderRelation.PurchaseOrderId); - if (opi == null) + + if (jdInStore == null) + { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi?.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi?.PurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}"); + dingdingMsg.AppendLine($"未找到该入仓采购单号"); + dingdingMsg.AppendLine(); continue; + } var stateText = ""; switch (jdInStore.storageStatus) @@ -156,12 +172,19 @@ namespace BBWYB.Server.Business.JD dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); - dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); - dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"采购平台:{opi?.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi?.PurchaseOrderId}"); dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}"); dingdingMsg.AppendLine($"入仓采购单状态:{jdInStore.storageStatus} {stateText}"); dingdingMsg.AppendLine(); } + + if (validateResult) + { + var update = fsql.Update().Set(o => o.OrderState, Enums.OrderState.待核算) + .Where(o => o.Id == checkTask.OrderId && o.OrderState == Enums.OrderState.待验收); + updateOrderList.Add(update); + } } } @@ -179,8 +202,17 @@ namespace BBWYB.Server.Business.JD { try { - if (orderIds != null && orderIds.Count() > 0) - fsql.Update().Set(x => x.IsChecked, true).Where(x => orderIds.Contains(x.OrderId)).ExecuteAffrows(); + fsql.Transaction(() => + { + if (updateOrderList.Count() > 0) + { + foreach (var update in updateOrderList) + update.ExecuteAffrows(); + } + + if (orderIds != null && orderIds.Count() > 0) + fsql.Update().Set(x => x.IsChecked, true).Where(x => orderIds.Contains(x.OrderId)).ExecuteAffrows(); + }); } catch { } } From 5a9a28a2b84b95c479740f07620db1d7971a5d68 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 9 Aug 2023 13:24:48 +0800 Subject: [PATCH 14/89] 1 --- WebTest/GlobalContext.cs | 21 ++++++++++++++++++++ WebTest/MainWindow.xaml.cs | 10 +++++++++- WebTest/ShellExecuteHelper.cs | 36 +++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 WebTest/ShellExecuteHelper.cs diff --git a/WebTest/GlobalContext.cs b/WebTest/GlobalContext.cs index dc18748..aa4c2e7 100644 --- a/WebTest/GlobalContext.cs +++ b/WebTest/GlobalContext.cs @@ -1,5 +1,7 @@ using Newtonsoft.Json; +using System; using System.Runtime.InteropServices; +using System.Windows; namespace WebTest { @@ -27,5 +29,24 @@ namespace WebTest { return "10123"; } + + 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唤醒旺旺失败,唤醒链接已复制到剪切板,请手动打开浏览器唤醒", "提示"); + } + } } } \ No newline at end of file diff --git a/WebTest/MainWindow.xaml.cs b/WebTest/MainWindow.xaml.cs index 05a29e6..1653a5c 100644 --- a/WebTest/MainWindow.xaml.cs +++ b/WebTest/MainWindow.xaml.cs @@ -26,6 +26,14 @@ namespace WebTest private MdsApiService mdsApiService; private ShopService shopService; +#if DEBUG +private string registerName = "webTestContext"; +#else +private string registerName = "webContext"; +#endif + + + public MainWindow() { InitializeComponent(); @@ -87,7 +95,7 @@ namespace WebTest if (args.PermissionKind == CoreWebView2PermissionKind.ClipboardRead) args.State = CoreWebView2PermissionState.Allow; }; - w2m.wb2.CoreWebView2.AddHostObjectToScript("webTestContext", this.globalContext); + w2m.wb2.CoreWebView2.AddHostObjectToScript(registerName, this.globalContext); }; w2m.Init(); diff --git a/WebTest/ShellExecuteHelper.cs b/WebTest/ShellExecuteHelper.cs new file mode 100644 index 0000000..5562daa --- /dev/null +++ b/WebTest/ShellExecuteHelper.cs @@ -0,0 +1,36 @@ +using System; +using System.Runtime.InteropServices; + +namespace WebTest +{ + public class ShellExecuteHelper + { + public enum ShowCommands : int + { + SW_HIDE = 0, + SW_SHOWNORMAL = 1, + SW_NORMAL = 1, + SW_SHOWMINIMIZED = 2, + SW_SHOWMAXIMIZED = 3, + SW_MAXIMIZE = 3, + SW_SHOWNOACTIVATE = 4, + SW_SHOW = 5, + SW_MINIMIZE = 6, + SW_SHOWMINNOACTIVE = 7, + SW_SHOWNA = 8, + SW_RESTORE = 9, + SW_SHOWDEFAULT = 10, + SW_FORCEMINIMIZE = 11, + SW_MAX = 11 + } + + [DllImport("shell32.dll")] + public static extern IntPtr ShellExecute( + IntPtr hwnd, + string lpOperation, + string lpFile, + string lpParameters, + string lpDirectory, + ShowCommands nShowCmd); + } +} From d2b90f1c69b83216e683b510288952cd477b92b4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 9 Aug 2023 23:22:57 +0800 Subject: [PATCH 15/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=95=86=E5=93=81=E8=A1=A8=E5=A2=9E=E5=8A=A0PurchaserId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Db/PurchaseScheme/Purchaseschemeproduct.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs index d0733e3..1810917 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs @@ -44,6 +44,12 @@ namespace BBWYB.Server.Model.Db /// public long SkuPurchaseSchemeId { get; set; } + /// + /// 采购商Id + /// + [Column(StringLength = 20)] + public string PurchaserId { get; set; } + [Column(IsIgnore = true)] public List PurchaseSchemeProductSkuList { get; set; } From 628e502ecc35239697885df6ddf21057a45d1ff3 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 11 Aug 2023 01:08:31 +0800 Subject: [PATCH 16/89] =?UTF-8?q?1.=E7=BC=96=E8=BE=91/=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E6=8E=A5=E5=8F=A3=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E5=95=86=E5=AE=B6=202.=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E5=95=86=E5=AE=B6=EF=BC=8C=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=B1=82=E5=A2=9E=E5=8A=A0=E5=95=86=E5=AE=B6?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=B1=82=E5=A2=9E=E5=8A=A0=E5=95=86=E5=AE=B6=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=203.=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E5=95=86=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 2 +- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 196 ++++++++++-------- BBWYB.Server.Model/BBWYB.Server.Model.csproj | 4 + .../Db/PurchaseScheme/PurchaseScheme.cs | 14 +- .../InputPurchaseSchemeProductRequest.cs | 30 ++- .../InputPurchaseSchemeRequest.cs | 32 +-- .../PurchaseScheme/QuerySchemeRequest.cs | 16 +- .../PurchaseSchemeProductResponse.cs | 8 + .../PurchaseScheme/PurchaseSchemeResponse.cs | 9 +- 9 files changed, 187 insertions(+), 124 deletions(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 8e519e6..673114c 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -28,7 +28,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 查询采购方案列表 + /// 获取采购方案列表 (不含采购配配件基本信息) /// /// /// diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 2347173..c0a5923 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -20,35 +20,45 @@ namespace BBWYB.Server.Business private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest { - var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList(); + List reqeustPurchaserIdList = new List(); + foreach (var scheme in purchaserSchemeList) + reqeustPurchaserIdList.AddRange(scheme.PurchaseSchemeProductList.Select(p => p.PurchaserId)); + reqeustPurchaserIdList = reqeustPurchaserIdList.Distinct().ToList(); + + //var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList(); var existPurchaserIdList = fsql.Select().Where(p => reqeustPurchaserIdList.Contains(p.Id)).ToList(p => p.Id); var newPurchaserIdList = reqeustPurchaserIdList.Except(existPurchaserIdList); foreach (var scheme in purchaserSchemeList) { - if (newPurchaserIdList.Any(p => p == scheme.PurchaserId) && !addPurchaserList.Any(p => p.Id == scheme.PurchaserId)) + foreach (var ps in scheme.PurchaseSchemeProductList) { - addPurchaserList.Add(new Purchaser() + if (newPurchaserIdList.Any(p => p == ps.PurchaserId) && !addPurchaserList.Any(p => p.Id == ps.PurchaserId)) { - Id = scheme.PurchaserId, - Id2 = scheme.PurchaserId2, - Name = scheme.PurchaserName, - Location = scheme.PurchaserLocation, - Platform = scheme.PurchasePlatform - }); + addPurchaserList.Add(new Purchaser() + { + Id = ps.PurchaserId, + Id2 = ps.PurchaserId2, + Name = ps.PurchaserName, + Location = ps.PurchaserLocation, + Platform = scheme.PurchasePlatform + }); + } } + } } public void EditPurchaseScheme(BatchCURDSchemeRequest batchCURDSchemeRequest) { - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && + batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) throw new BusinessException("非法参数"); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || - string.IsNullOrEmpty(p.PurchaserName))) + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || - string.IsNullOrEmpty(p.PurchaserName))) + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); List addPurchaseSchemeList = null; @@ -138,48 +148,49 @@ namespace BBWYB.Server.Business } /// - /// 获取采购方案 + /// 获取采购方案(不含采购配配件基本信息) /// /// /// public IList GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) { - var select = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id); + var select = fsql.Select(); if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) - select = select.Where((ps, p) => ps.Id == querySchemeRequest.SchemeId); + select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId); else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) - select = select.Where((ps, p) => querySchemeRequest.SchemeIdList.Contains(ps.Id)); + select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id)); else { - select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, (ps, p) => ps.ShopId == querySchemeRequest.ShopId) - .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, (ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) - .WhereIf(!string.IsNullOrEmpty(querySchemeRequest.PurchaserId), (ps, p) => ps.PurchaserId == querySchemeRequest.PurchaserId) - .WhereIf(querySchemeRequest.PurchasePlatform != null, (ps, p) => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); + select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId) + .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId)); + //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); } - var purchaseSchemeList = select.ToList((ps, p) => new PurchaseSchemeResponse - { - Id = ps.Id, - ProductId = ps.ProductId, - SkuId = ps.SkuId, - ShopId = ps.ShopId, - PurchaserId = p.Id, - PurchaserId2 = p.Id2, - PurchaserName = p.Name, - PurchaserLocation = p.Location, - DefaultCost = ps.DefaultCost, - RealCost = ps.RealCost, - CreateTime = ps.CreateTime, - PurchasePlatform = ps.PurchasePlatform, - LastPurchaseTime = ps.LastPurchaseTime - }); + var purchaseSchemeList = select.ToList(); + if (purchaseSchemeList.Count > 0) { var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); - var purchaseSchemeProductList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) - .ToList().Map>(); + var purchaseSchemeProductList = fsql.Select() + .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + .Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) + .ToList((psp, p) => new PurchaseSchemeProductResponse + { + CreateTime = psp.CreateTime, + Id = psp.Id, + ProductId = psp.ProductId, + PurchaseProductId = psp.PurchaseProductId, + PurchaseUrl = psp.PurchaseUrl, + SkuId = psp.SkuId, + SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId, + PurchaserId = p.Id, + PurchaserId2 = p.Id2, + PurchaserLocation = p.Location, + PurchaserName = p.Name, + PurchasePlatform = p.Platform, + }); var purchaseSchemeProductSkuList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) .ToList().Map>(); @@ -198,6 +209,23 @@ namespace BBWYB.Server.Business schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList); } } + + #region 封装采购商 + foreach (var schemeProduct in schemeProductList) + { + if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId)) + { + scheme.PurchaserList.Add(new Purchaser() + { + Id = schemeProduct.PurchaserId, + Id2 = schemeProduct.PurchaserId2, + Location = schemeProduct.PurchaserLocation, + Name = schemeProduct.PurchaserName, + Platform = schemeProduct.PurchasePlatform + }); + } + } + #endregion } } return purchaseSchemeList; @@ -212,29 +240,33 @@ namespace BBWYB.Server.Business List> updatePurchaseSchemeList = new List>(); foreach (var purchaseScheme in purchaseSchemeList) { - var purchaseProductIds = purchaseScheme.PurchaseSchemeProductList.Select(p => p.PurchaseProductId).ToArray(); - var purchaseSkuIds = new List(); - foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) + var amount = 0M; + var purchasePlatformGroups = purchaseScheme.PurchaseSchemeProductList.GroupBy(p => p.PurchasePlatform); + foreach (var purchasePlatformGroup in purchasePlatformGroups) { - purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); - } - - var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() - { - FirstApiMode = Enums.PurchaseProductAPIMode.Spider, - PriceMode = Enums.PurchaseOrderMode.批发, - Params = new List() + var purchaseProductIds = purchasePlatformGroup.Select(p => p.PurchaseProductId).ToArray(); + var purchaseSkuIds = new List(); + foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) + { + purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); + } + var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() + { + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + PriceMode = Enums.PurchaseOrderMode.批发, + Params = new List() { new BatchPurchaseSkuBasicInfoParamRequest() { - Platform = purchaseScheme.PurchasePlatform, + Platform = purchasePlatformGroup.Key.Value, PurchaseProductIds = purchaseProductIds, PurchaseSkuIds = purchaseSkuIds } } - }); + }); + amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); + } - var amount = purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); if (purchaseScheme.DefaultCost != amount) { purchaseScheme.DefaultCost = amount; @@ -255,34 +287,34 @@ namespace BBWYB.Server.Business return purchaseSchemeList; } - /// - /// 获取共同拥有的采购商 - /// - /// - /// - public IList GetSharePurchaser(QuerySchemeRequest querySchemeRequest) - { - var skuCount = querySchemeRequest.SkuIdList.Count(); - - var purchaseSchemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id) - .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId) - .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) - .ToList(); - if (purchaseSchemeList.Count() == 0) - return null; - - var group = purchaseSchemeList.GroupBy(p => p.PurchaserId); - var sharePurchaserIdList = new List(); - foreach (var g in group) - { - if (g.Count() == skuCount) - sharePurchaserIdList.Add(g.Key); - } - if (sharePurchaserIdList.Count == 0) - return null; - - return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList(); - } + ///// + ///// 获取共同拥有的采购商 + ///// + ///// + ///// + //public IList GetSharePurchaser(QuerySchemeRequest querySchemeRequest) + //{ + // var skuCount = querySchemeRequest.SkuIdList.Count(); + + // var purchaseSchemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id) + // .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId) + // .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) + // .ToList(); + // if (purchaseSchemeList.Count() == 0) + // return null; + + // var group = purchaseSchemeList.GroupBy(p => p.PurchaserId); + // var sharePurchaserIdList = new List(); + // foreach (var g in group) + // { + // if (g.Count() == skuCount) + // sharePurchaserIdList.Add(g.Key); + // } + // if (sharePurchaserIdList.Count == 0) + // return null; + + // return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList(); + //} public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) { diff --git a/BBWYB.Server.Model/BBWYB.Server.Model.csproj b/BBWYB.Server.Model/BBWYB.Server.Model.csproj index a408f32..54ecedd 100644 --- a/BBWYB.Server.Model/BBWYB.Server.Model.csproj +++ b/BBWYB.Server.Model/BBWYB.Server.Model.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index be1d49c..356d97b 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -29,11 +29,11 @@ namespace BBWYB.Server.Model [Column(StringLength = 50, IsNullable = false)] public string ProductId { get; set; } - /// - /// 采购商Id - /// - [Column(StringLength = 20)] - public string PurchaserId { get; set; } + ///// + ///// 采购商Id + ///// + //[Column(StringLength = 20)] + //public string PurchaserId { get; set; } /// /// 采购实际成本 @@ -51,8 +51,8 @@ namespace BBWYB.Server.Model /// public DateTime? LastPurchaseTime { get; set; } - [Column(MapType = typeof(int), DbType = "int(1)")] - public Enums.Platform PurchasePlatform { get; set; } + //[Column(MapType = typeof(int), DbType = "int(1)")] + //public Enums.Platform PurchasePlatform { get; set; } [Column(IsIgnore = true)] public List PurchaseSchemeProductList { get; set; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index 3ffb384..b97b8da 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BBWYB.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class InputPurchaseSchemeProductRequest { @@ -11,17 +7,37 @@ namespace BBWYB.Server.Model.Dto /// public string ProductId { get; set; } /// - /// 店铺商品Skull + /// 店铺商品SkuId /// public string SkuId { get; set; } /// - /// 采购商品id + /// 采购商品Id /// public string PurchaseProductId { get; set; } /// /// 采购链接 /// public string PurchaseUrl { get; set; } + + /// + /// 采购商Id + /// + public string PurchaserId { get; set; } + + /// + /// 采购商Id + /// + public string PurchaserId2 { get; set; } + + /// + /// 采购商名称 + /// + public string PurchaserName { get; set; } + /// + /// 采购商发货地 + /// + public string PurchaserLocation { get; set; } + public IList PurchaseSchemeProductSkuList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index fda1121..b89d7e4 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -15,24 +15,24 @@ namespace BBWYB.Server.Model.Dto /// 采购实际成本 /// public decimal? RealCost { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId2 { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId2 { get; set; } - /// - /// 采购商名称 - /// - public string PurchaserName { get; set; } - /// - /// 采购商发货地 - /// - public string PurchaserLocation { get; set; } + ///// + ///// 采购商名称 + ///// + //public string PurchaserName { get; set; } + ///// + ///// 采购商发货地 + ///// + //public string PurchaserLocation { get; set; } /// /// 采购平台 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 59e2088..8924508 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -18,14 +18,14 @@ namespace BBWYB.Server.Model.Dto public IList SkuIdList { get; set; } - /// - /// 采购商Id, 可空 - /// - public string PurchaserId { get; set; } + ///// + ///// 采购商Id, 可空 + ///// + //public string PurchaserId { get; set; } - /// - /// 采购平台 - /// - public Enums.Platform? PurchasePlatform { get; set; } + ///// + ///// 采购平台 + ///// + //public Enums.Platform? PurchasePlatform { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs index 0123956..288e9f2 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs @@ -6,6 +6,14 @@ namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct { + public string PurchaserName { get; set; } + + public string PurchaserId2 { get; set; } + + public string PurchaserLocation { get; set; } + + public Enums.Platform? PurchasePlatform { get; set; } + public new List PurchaseSchemeProductSkuList { get; set; } public PurchaseSchemeProductResponse() diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs index f322e0a..e1c617b 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs @@ -6,17 +6,20 @@ namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeResponse : PurchaseScheme { - public string PurchaserName { get; set; } + //public string PurchaserName { get; set; } - public string PurchaserId2 { get; set; } + //public string PurchaserId2 { get; set; } - public string PurchaserLocation { get; set; } + //public string PurchaserLocation { get; set; } public new List PurchaseSchemeProductList { get; set; } + public List PurchaserList { get; set; } + public PurchaseSchemeResponse() { PurchaseSchemeProductList = new List(); + PurchaserList = new List(); } } } From 5e5e6e0db44bcf68f3eb71b7134e25296adfb305 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 11 Aug 2023 10:37:52 +0800 Subject: [PATCH 17/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/JD/JDBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs index 2bfe570..a6389aa 100644 --- a/BBWYB.Server.Business/JD/JDBusiness.cs +++ b/BBWYB.Server.Business/JD/JDBusiness.cs @@ -71,7 +71,7 @@ namespace BBWYB.Server.Business.JD if (checkTaskList.Count() == 0) return; orderIds = checkTaskList.Select(x => x.OrderId).ToList(); - var orderPurchaseInfoList = fsql.Select().Where(opi => orderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList(); + var orderPurchaseInfoList = fsql.Select().Where(opi => orderIds.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); var waitCheckInStoreOrderList = fsql.Select() .InnerJoin((io, o) => io.OrderId == o.Id) From e8a83a3b9102cc58e898a00e7c4fd97182849947 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 11 Aug 2023 10:48:55 +0800 Subject: [PATCH 18/89] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E9=85=8D=E4=BB=B6=E6=AF=94=E4=BE=8B=E8=AF=B7=E6=B1=82=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Db/PurchaseScheme/Purchaseschemeproductsku.cs | 6 ++++++ .../PurchaseScheme/EditPurchaseRatioRequest.cs | 11 +++++++++++ 2 files changed, 17 insertions(+) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs index 4a9e837..af819ee 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs @@ -46,6 +46,12 @@ namespace BBWYB.Server.Model.Db /// public long SkuPurchaseSchemeId { get; set; } + /// + /// 采购比例 + /// + [Column(DbType = "int(1)", IsNullable = true)] + public int? PurchaseRatio { get; set; } + } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs new file mode 100644 index 0000000..2e09843 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class EditPurchaseRatioRequest + { + public long SchemeId { get; set; } + + public string SkuId { get; set; } + + public string PurchaseSkuId { get; set; } + } +} From 1f2f43b981c5d48e52371d56dd3206f8e0b23364 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 12 Aug 2023 01:32:50 +0800 Subject: [PATCH 19/89] 1 --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index d91f624..3bee9f6 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -36,6 +36,7 @@ namespace BBWYB.Server.Business private Lazy jdBusinessLazy; private Lazy opPlatformClientFactoryLazy; private Lazy venderBusinessLazy; + private Lazy purchaseSchemeBusinessLazy; private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; @@ -50,6 +51,8 @@ namespace BBWYB.Server.Business private JDBusiness jdBusiness => jdBusinessLazy.Value; + private PurchaseSchemeBusiness purchaseSchemeBusiness => purchaseSchemeBusinessLazy.Value; + private IList cantPurchaseOrderStateList; public PurchaseOrderBusiness(IFreeSql fsql, @@ -68,6 +71,7 @@ namespace BBWYB.Server.Business jdBusinessLazy = new Lazy(() => serviceProvider.GetService()); opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService()); venderBusinessLazy = new Lazy(() => serviceProvider.GetService()); + purchaseSchemeBusinessLazy = new Lazy(() => serviceProvider.GetService()); cantPurchaseOrderStateList = new List() { Enums.OrderState.已取消, @@ -1113,6 +1117,10 @@ namespace BBWYB.Server.Business if (request.PurchasePlatform != Enums.Platform.阿里巴巴) return null; + var order = fsql.Select(request.OrderId).ToOne(); + if (order == null) + throw new BusinessException("订单不存在"); + var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform); var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -1143,24 +1151,34 @@ namespace BBWYB.Server.Business #region 查询订单sku所有采购方案 var skuIds = dbOrderSkuList.Select(osku => osku.SkuId).ToList(); - var purchaseSchemeSkuList = fsql.Select() - .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) - .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) - .Where((p, ps, pss) => p.Id == purchaserId) - .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴) - .Where((p, ps, pss) => skuIds.Contains(pss.SkuId)) - .ToList((p, ps, pss) => new - { - pss.Id, - pss.SkuId, - pss.ProductId, - pss.PurchaseProductId, - pss.PurchaseSkuId, - pss.PurchaseSkuSpecId, - pss.SkuPurchaseSchemeId - }); - if (purchaseSchemeSkuList.Count() == 0) - throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); + + + //var purchaseSchemeSkuList = fsql.Select() + // .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) + // .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) + // .Where((p, ps, pss) => p.Id == purchaserId) + // .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴) + // .Where((p, ps, pss) => skuIds.Contains(pss.SkuId)) + // .ToList((p, ps, pss) => new + // { + // pss.Id, + // pss.SkuId, + // pss.ProductId, + // pss.PurchaseProductId, + // pss.PurchaseSkuId, + // pss.PurchaseSkuSpecId, + // pss.SkuPurchaseSchemeId + // }); + //if (purchaseSchemeSkuList.Count() == 0) + // throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); + + var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() + { + ShopId = order.ShopId, + SkuIdList = skuIds + }); + if (purchaseSchemeList.Count() == 0) + throw new BusinessException("未匹配到采购方案"); #endregion #region 匹配采购单所使用到的采购方案 @@ -1199,8 +1217,6 @@ namespace BBWYB.Server.Business { 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); @@ -2611,7 +2627,7 @@ namespace BBWYB.Server.Business if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && state == "QianShou" && order.OrderState == Enums.OrderState.待验收 && - inStoreOrderCheckTaskList != null && + inStoreOrderCheckTaskList != null && !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) { insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() From ba1c2d978ccf7086308c33a65b0c691240368f3a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 12 Aug 2023 02:15:11 +0800 Subject: [PATCH 20/89] =?UTF-8?q?=E5=8C=B9=E9=85=8D=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=9C=AA=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3bee9f6..a4eed99 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1182,25 +1182,42 @@ namespace BBWYB.Server.Business #endregion #region 匹配采购单所使用到的采购方案 - var assocationOrderCostDetailList = new List(); - var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); var cargoParamList = new List(); - foreach (var schemeGroup in purchaseSchemeGroups) + foreach (var scheme in purchaseSchemeList) { - var schemePurchaseSkuList = schemeGroup.ToList(); - if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0)) + var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList(); + if (samePurchaserProductList.Count() == 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 - })); + foreach (var schemeProduct in samePurchaserProductList) + { + + } } + if (cargoParamList.Count() == 0) + throw new BusinessException("未匹配到采购方案"); + + + var assocationOrderCostDetailList = new List(); + + //var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); + + //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 belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId); var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity); foreach (var belongSkuGroup in belongSkuGroups) From 85f762c8efc264e5629642b78919c8d25599e277 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 12 Aug 2023 16:30:11 +0800 Subject: [PATCH 21/89] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=A2=84=E8=A7=88?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E8=81=94=E9=87=87=E8=B4=AD=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=A4=9A=E9=87=87=E8=B4=AD=E5=95=86=E7=9A=84?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 9 - .../Controllers/PurchaseSchemeController.cs | 38 ++-- .../DataRepair/DataRepairBusiness.cs | 67 ------ .../PurchaseOrder/PurchaseOrderBusiness.cs | 198 +++++++++--------- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 22 +- 5 files changed, 131 insertions(+), 203 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index c741111..9c2bdbe 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -25,15 +25,6 @@ namespace BBWYB.Server.API.Controllers dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); } - /// - /// 修复采购商信息 - /// - [HttpPost] - public void SupplementPurchaserInfo() - { - dataRepairBusiness.SupplementPurchaserInfo(); - } - /// /// 修复订单Sku成本 /// diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 673114c..1244ca6 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -38,15 +38,15 @@ namespace BBWYB.Server.API.Controllers return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest); } - /// - /// 删除采购商 - /// - /// - [HttpDelete] - public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) - { - purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest); - } + ///// + ///// 删除采购商 + ///// + ///// + //[HttpDelete] + //public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) + //{ + // purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest); + //} /// /// 删除采购方案 @@ -58,16 +58,16 @@ namespace BBWYB.Server.API.Controllers purchaseSchemeBusiness.DeletePurchaseScheme(schemeId); } - /// - /// 查询共有采购商 - /// - /// - /// - [HttpPost] - public IList GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest) - { - return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest); - } + ///// + ///// 查询共有采购商 + ///// + ///// + ///// + //[HttpPost] + //public IList GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest) + //{ + // return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest); + //} /// /// 查询采购方案中采购Sku的基本信息 diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index f70c444..dcf2821 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -38,73 +38,6 @@ namespace BBWYB.Server.Business purchaseOrderBusiness.OnSomeOnePurchaseOrderChanged(pid, false); } - 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(); - }); - } - } public void SupplementOrderSkuCost() { diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index a4eed99..a83adf7 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -749,12 +749,13 @@ namespace BBWYB.Server.Business { if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) { - #region 补齐采购SKU + #region 补齐采购SKU和采购关系 var purchaseAccount = dbPurchaseAccountList.FirstOrDefault(pa => pa.Id == purchaseOrder.PurchaseAccountId || pa.AccountName == purchaseOrder.PurchaseAccountName); if (purchaseAccount == null) throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效的采购账号"); + #region 查询1688采购单 var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)purchaseOrder.PurchasePlatform); var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -763,6 +764,7 @@ namespace BBWYB.Server.Business AppToken = purchaseAccount.AppToken, OrderId = purchaseOrder.PurchaseOrderId }); + #endregion #region 处理采购商Id var purchaserId = purchaseOrderSimpleInfo.PurchaserId; @@ -782,58 +784,29 @@ namespace BBWYB.Server.Business #region 匹配采购方案 var skuIds = purchaseOrder.AssocationOrderCostDetailList.Select(ocd => ocd.SkuId).ToList(); - var purchaseSchemeSkuList = fsql.Select() - .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) - .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) - .Where((p, ps, pss) => p.Id == purchaserId) - .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴) - .Where((p, ps, pss) => skuIds.Contains(pss.SkuId)) - .ToList((p, ps, pss) => new - { - pss.Id, - pss.SkuId, - pss.ProductId, - pss.PurchaseProductId, - pss.PurchaseSkuId, - pss.PurchaseSkuSpecId, - pss.SkuPurchaseSchemeId - }); - if (purchaseSchemeSkuList.Count() == 0) - throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); - #endregion - - - foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList) + var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() { - var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo() - { - Id = purchaseOrderSku.OrderSkuId, - CreateTime = DateTime.Now, - OrderId = request.OrderId, - PurchaseOrderId = purchaseOrder.PurchaseOrderId, - PurchaseProductId = purchaseOrderSku.ProductId, - PurchaseSkuId = purchaseOrderSku.SkuId, - ShopId = request.ShopId - }; - insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo); - } + ShopId = dbOrder.ShopId, + SkuIdList = skuIds + }); + if (purchaseSchemeList.Count() == 0) + throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); #endregion #region 补齐采购关系 foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) { - var currentPurchaseSchemeSkuList = purchaseSchemeSkuList.Where(x => x.SkuId == assOrderCostDetail.SkuId).ToList(); - if (currentPurchaseSchemeSkuList == null || currentPurchaseSchemeSkuList.Count() == 0) + var matchResultList = MatchPurchaseScheme(assOrderCostDetail.SkuId, + assOrderCostDetail.PurchaseQuantity, + purchaserId, + purchaseSchemeList, + purchaseOrderSimpleInfo); + if (matchResultList.Count() == 0) throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id {purchaserId} Sku{assOrderCostDetail.SkuId}缺少采购方案"); - var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); - foreach (var currentPurchaseSchemeSku in currentPurchaseSchemeSkuList) + foreach (var cargoParam in matchResultList) { - var purchaseSkuFromApi = purchaseOrderSimpleInfo.ItemList.FirstOrDefault(x => x.SkuId == currentPurchaseSchemeSku.PurchaseSkuId); - if (purchaseSkuFromApi == null) - { - throw new BusinessException($"Sku{assOrderCostDetail.SkuId}使用了采购方案{currentPurchaseSchemeSku.SkuPurchaseSchemeId}下的采购Sku{currentPurchaseSchemeSku.PurchaseSkuId},而且在采购单{purchaseOrder.PurchaseOrderId}的商品明细中没有找到该采购sku"); - } + var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); var orderPurchaseRelationInfo = new OrderPurchaseRelationInfo() { Id = idGenerator.NewLong(), @@ -841,16 +814,37 @@ namespace BBWYB.Server.Business CreateTime = DateTime.Now, OrderId = assOrderCostDetail.OrderId, PurchaseOrderId = purchaseOrder.PurchaseOrderId, - PurchaseSkuId = currentPurchaseSchemeSku.PurchaseSkuId, - PurchaseProductId = currentPurchaseSchemeSku.PurchaseProductId, - PurchaseSpecId = currentPurchaseSchemeSku.PurchaseSkuSpecId, - SchemeId = currentPurchaseSchemeSku.SkuPurchaseSchemeId, + PurchaseSkuId = cargoParam.SkuId, + PurchaseProductId = cargoParam.ProductId, + PurchaseSpecId = cargoParam.SpecId, + SchemeId = cargoParam.SchemeId, Quantity = assOrderCostDetail.PurchaseQuantity, SourceSkuId = dbOrderSku.BelongSkuId }; insertOrderPurchaseRelationInfoList.Add(orderPurchaseRelationInfo); + } } + + #region 补齐采购SKU + foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList) + { + var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo() + { + Id = purchaseOrderSku.OrderSkuId, + CreateTime = DateTime.Now, + OrderId = request.OrderId, + PurchaseOrderId = purchaseOrder.PurchaseOrderId, + PurchaseProductId = purchaseOrderSku.ProductId, + PurchaseSkuId = purchaseOrderSku.SkuId, + ShopId = request.ShopId + }; + insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo); + } + #endregion + + #endregion + #endregion } @@ -1151,27 +1145,6 @@ namespace BBWYB.Server.Business #region 查询订单sku所有采购方案 var skuIds = dbOrderSkuList.Select(osku => osku.SkuId).ToList(); - - - //var purchaseSchemeSkuList = fsql.Select() - // .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) - // .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) - // .Where((p, ps, pss) => p.Id == purchaserId) - // .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴) - // .Where((p, ps, pss) => skuIds.Contains(pss.SkuId)) - // .ToList((p, ps, pss) => new - // { - // pss.Id, - // pss.SkuId, - // pss.ProductId, - // pss.PurchaseProductId, - // pss.PurchaseSkuId, - // pss.PurchaseSkuSpecId, - // pss.SkuPurchaseSchemeId - // }); - //if (purchaseSchemeSkuList.Count() == 0) - // throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); - var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() { ShopId = order.ShopId, @@ -1183,41 +1156,17 @@ namespace BBWYB.Server.Business #region 匹配采购单所使用到的采购方案 var cargoParamList = new List(); - foreach (var scheme in purchaseSchemeList) + foreach (var orderSku in dbOrderSkuList) { - var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList(); - if (samePurchaserProductList.Count() == 0) - continue; - foreach (var schemeProduct in samePurchaserProductList) - { - - } + var matchResultList = MatchPurchaseScheme(orderSku.SkuId, orderSku.ItemTotal ?? 1, purchaserId, purchaseSchemeList, purchaseOrderSimpleInfo); + if (matchResultList.Count() > 0) + cargoParamList.AddRange(matchResultList); } if (cargoParamList.Count() == 0) throw new BusinessException("未匹配到采购方案"); - var assocationOrderCostDetailList = new List(); - - //var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); - - //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 belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId); var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity); foreach (var belongSkuGroup in belongSkuGroups) @@ -3011,5 +2960,60 @@ namespace BBWYB.Server.Business } } + /// + /// 匹配采购方案 + /// + /// + /// + /// + /// + /// + /// + private IList MatchPurchaseScheme(string skuId, + int itemTotal, + string purchaserId, + IList purchaseSchemeList, + PP_QueryOrderDetailResponse purchaseOrderSimpleInfo) + { + List cargoParamList = new List(); + var currentSkuSchemeList = purchaseSchemeList.Where(ps => ps.SkuId == skuId).ToList(); + if (currentSkuSchemeList.Count() > 0) + { + foreach (var scheme in currentSkuSchemeList) + { + var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList(); + if (samePurchaserProductList.Count() == 0) + continue; + + bool isMatch = true; + foreach (var schemeProduct in samePurchaserProductList) + { + if (schemeProduct.PurchaseSchemeProductSkuList.Any(pss => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == pss.PurchaseSkuId) == 0)) + { + isMatch = false; + break; + } + } + + if (isMatch) + { + foreach (var schemeProduct in samePurchaserProductList) + { + cargoParamList.AddRange(schemeProduct.PurchaseSchemeProductSkuList.Select(pss => new CargoParamRequest() + { + BelongSkuId = pss.SkuId, + ProductId = pss.PurchaseProductId, + SkuId = pss.PurchaseSkuId, + SchemeId = pss.SkuPurchaseSchemeId, + SpecId = pss.PurchaseSkuSpecId, + Quantity = (itemTotal * pss.PurchaseRatio) ?? 1 + })); + } + break; + } + } + } + return cargoParamList; + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index c0a5923..7a59a5b 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -316,18 +316,18 @@ namespace BBWYB.Server.Business // return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList(); //} - public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) - { - var purchaseSchemeIdList = fsql.Select().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId && - ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id); + //public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) + //{ + // var purchaseSchemeIdList = fsql.Select().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId && + // ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id); - fsql.Transaction(() => - { - fsql.Delete(purchaseSchemeIdList).ExecuteAffrows(); - fsql.Delete().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows(); - fsql.Delete().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows(); - }); - } + // fsql.Transaction(() => + // { + // fsql.Delete(purchaseSchemeIdList).ExecuteAffrows(); + // fsql.Delete().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows(); + // fsql.Delete().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows(); + // }); + //} public void DeletePurchaseScheme(long schemeId) { From 39d1bc2703cb1af73d8693bcf4bf97fc3e3a5e2c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 13 Aug 2023 12:46:49 +0800 Subject: [PATCH 22/89] =?UTF-8?q?=E5=A4=9A=E5=95=86=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/App.xaml.cs | 1 + BBWYB.Client/GlobalContext.cs | 2 +- .../Response/PurchaseSchemeProductResponse.cs | 10 + .../Response/PurchaseSchemeResponse.cs | 36 +-- .../Models/PurchaseScheme/PurchaseScheme.cs | 28 ++- .../PurchaseScheme/PurchaseSchemeProduct.cs | 13 +- BBWYB.Client/ViewModels/MainViewModel.cs | 16 +- .../Order/ChoosePurchaseSchemeViewModel.cs | 18 +- .../Purchase/OnlinePurchaseViewModel.cs | 4 +- .../Ware/BindingPurchaseProductViewModel.cs | 229 ++++++++++++------ .../ViewModels/Ware/WareManagerViewModel.cs | 228 ++++++++++------- .../Views/Ware/BindingPurchaseProduct.xaml | 2 +- .../Views/Ware/BindingPurchaseProduct.xaml.cs | 19 +- BBWYB.Client/Views/Ware/WareManager.xaml | 57 ++++- BBWYB.Client/appsettings.json | 4 +- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 37 ++- .../InputPurchaseSchemeProductSkuRequest.cs | 5 + .../PurchaseScheme/QuerySchemeRequest.cs | 16 +- .../PurchaseSchemeProductResponse.cs | 6 +- 19 files changed, 473 insertions(+), 258 deletions(-) diff --git a/BBWYB.Client/App.xaml.cs b/BBWYB.Client/App.xaml.cs index 9f2d3f5..9b29706 100644 --- a/BBWYB.Client/App.xaml.cs +++ b/BBWYB.Client/App.xaml.cs @@ -79,6 +79,7 @@ namespace BBWYB.Client serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); + serviceCollection.AddTransient(); serviceCollection.AddMapper(new MappingProfile()); ServiceProvider = serviceCollection.BuildServiceProvider(); base.OnStartup(e); diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index dcc7452..373eabc 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10030"; + BBWYBApiVersion = "10031"; } private User user; diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs index 712aaaf..995aa88 100644 --- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs @@ -13,6 +13,16 @@ namespace BBWYB.Client.Models public string SkuId { get; set; } public long SkuPurchaseSchemeId { get; set; } public long UserId { get; set; } + + public string PurchaserName { get; set; } + + public string PurchaserId { get; set; } + public string PurchaserId2 { get; set; } + + public string PurchaserLocation { get; set; } + + public Platform? PurchasePlatform { get; set; } + public List PurchaseSchemeProductSkuList { get; set; } } diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs index b010fef..01dc224 100644 --- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs @@ -11,20 +11,20 @@ namespace BBWYB.Client.Models /// public decimal? DefaultCost { get; set; } public string ProductId { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId2 { get; set; } - public string PurchaserName { get; set; } - /// - /// 发货地 - /// - public string PurchaserLocation { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId2 { get; set; } + //public string PurchaserName { get; set; } + ///// + ///// 发货地 + ///// + //public string PurchaserLocation { get; set; } /// /// 采购实际成本 /// @@ -32,10 +32,10 @@ namespace BBWYB.Client.Models public string SkuId { get; set; } public long ShopId { get; set; } - /// - /// 采购平台 - /// - public Platform PurchasePlatform { get; set; } + ///// + ///// 采购平台 + ///// + //public Platform PurchasePlatform { get; set; } /// /// 最后采购时间 @@ -43,6 +43,8 @@ namespace BBWYB.Client.Models public DateTime? LastPurchaseTime { get; set; } public List PurchaseSchemeProductList { get; set; } + + public List PurchaserList { get; set; } } } diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs index 3d5ad1c..45c82e3 100644 --- a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; namespace BBWYB.Client.Models { @@ -21,10 +22,10 @@ namespace BBWYB.Client.Models public decimal DefaultCost { get => defaultCost; set { SetProperty(ref defaultCost, value); } } public decimal RealCost { get => realCost; set { SetProperty(ref realCost, value); } } - public string PurchaserId { get; set; } - public string PurchaserId2 { get; set; } + //public string PurchaserId { get; set; } + //public string PurchaserId2 { get; set; } public string PurchaserName { get; set; } - public string PurchaserLocation { get; set; } + //public string PurchaserLocation { get; set; } public string PurchaseProductId1 { get; set; } public int PurchaseProductSkuCount1 { get; set; } public string PurchaseProductId2 { get; set; } @@ -37,7 +38,7 @@ namespace BBWYB.Client.Models /// /// 采购平台 /// - public Platform PurchasePlatform { get; set; } + //public Platform PurchasePlatform { get; set; } /// /// 最后采购时间 @@ -49,9 +50,12 @@ namespace BBWYB.Client.Models /// public IList PurchaseSchemeProductList { get; set; } + public List PurchaserList { get; set; } + public PurchaseScheme() { PurchaseSchemeProductList = new ObservableCollection(); + PurchaserList = new List(); } /// @@ -68,13 +72,17 @@ namespace BBWYB.Client.Models ProductId = apiModel.ProductId, SkuId = apiModel.SkuId, DefaultCost = apiModel.DefaultCost ?? 0, - RealCost = apiModel.RealCost ?? 0, - PurchaserId = apiModel.PurchaserId, - PurchaserName = apiModel.PurchaserName, - PurchaserLocation = apiModel.PurchaserLocation, - PurchasePlatform = apiModel.PurchasePlatform + RealCost = apiModel.RealCost ?? 0 + //PurchaserId = apiModel.PurchaserId, + //PurchaserName = apiModel.PurchaserName, + //PurchaserLocation = apiModel.PurchaserLocation, + //PurchasePlatform = apiModel.PurchasePlatform }; - + foreach (var p in apiModel.PurchaserList) + { + model.PurchaserList.Add(p); + } + model.PurchaserName = model.PurchaserList.Count() == 1 ? model.PurchaserList[0].Name : $"{model.PurchaserList[0].Name}等{model.PurchaserList.Count()}个采购商"; foreach (var apiProduct in apiModel.PurchaseSchemeProductList) { model.PurchaseSchemeProductList.Add(PurchaseSchemeProduct.Convert(apiProduct)); diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs index 16bc54e..052bbca 100644 --- a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs @@ -28,6 +28,12 @@ namespace BBWYB.Client.Models public string PurchaseUrl { get => purchaseUrl; set { SetProperty(ref purchaseUrl, value); } } public string PurchaseProductId { get => purchaseProductId; set => purchaseProductId = value; } + public string PurchaserId { get; set; } + public string PurchaserId2 { get; set; } + public string PurchaserLocation { get; set; } + public string PurchaserName { get; set; } + public Platform PurchasePlatform { get; set; } + public bool IsEditing { get => isEditing; @@ -79,7 +85,12 @@ namespace BBWYB.Client.Models ProductId = apiModel.ProductId, SkuId = apiModel.SkuId, PurchaseProductId = apiModel.PurchaseProductId, - PurchaseUrl = apiModel.PurchaseUrl + PurchaseUrl = apiModel.PurchaseUrl, + PurchaserId = apiModel.PurchaserId, + PurchaserId2 = apiModel.PurchaserId2, + PurchaserName = apiModel.PurchaserName, + PurchasePlatform = apiModel.PurchasePlatform.Value, + PurchaserLocation = apiModel.PurchaserLocation }; model.SelectedSkuIdList.AddRange(apiModel.PurchaseSchemeProductSkuList.Select(s => s.PurchaseSkuId)); return model; diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 233aafa..766958f 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -87,14 +87,14 @@ namespace BBWYB.Client.ViewModels { App.Current.Dispatcher.Invoke(() => { - MenuList.Add(new MenuModel() - { - Name = "订单管理", - ChildList = new List() - { - new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" } - } - }); + //MenuList.Add(new MenuModel() + //{ + // Name = "订单管理", + // ChildList = new List() + // { + // new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" } + // } + //}); MenuList.Add(new MenuModel() { Name = "商品管理", diff --git a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs index b445e3c..b5c3b97 100644 --- a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs +++ b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs @@ -117,17 +117,17 @@ namespace BBWYB.Client.ViewModels if (!isResponse) return; isResponse = false; - var purchaserId = skuGroup.SelectedScheme.PurchaserId; + //var purchaserId = skuGroup.SelectedScheme.PurchaserId; - foreach (var otherSkuGroup in SkuGroup) - { - if (otherSkuGroup.SkuId == skuGroup.SkuId) - continue; + //foreach (var otherSkuGroup in SkuGroup) + //{ + // if (otherSkuGroup.SkuId == skuGroup.SkuId) + // continue; - var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId); - if (samePurchaseScheme != null) - otherSkuGroup.SelectedScheme = samePurchaseScheme; - } + // var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId); + // if (samePurchaseScheme != null) + // otherSkuGroup.SelectedScheme = samePurchaseScheme; + //} isResponse = true; } diff --git a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs index 5358607..ed49682 100644 --- a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs +++ b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs @@ -135,8 +135,8 @@ namespace BBWYB.Client.ViewModels Logo = orderSku.Logo, Price = orderSku.Price.Value, ProductId = scheme.ProductId, - PurchasePlatform = scheme.PurchasePlatform, - PurchaserId = scheme.PurchaserId, + //PurchasePlatform = scheme.PurchasePlatform, + //PurchaserId = scheme.PurchaserId, PurchaserName = scheme.PurchaserName, PurchaseSchemeId = scheme.Id, Quantity = orderSku.ItemTotal, diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index 85775b6..26cb3c9 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -4,9 +4,11 @@ using BBWYB.Client.Views.Ware; using BBWYB.Common.Models; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; +using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text.RegularExpressions; using System.Threading; @@ -16,17 +18,17 @@ using System.Windows.Input; namespace BBWYB.Client.ViewModels { - public class BindingPurchaseProductViewModel : BaseVM, IDenpendency + public class BindingPurchaseProductViewModel : BaseVM { #region Properties private GlobalContext globalContext; private PurchaseService purchaseService; private PurchaseProductAPIService purchaseProductAPIService; - private string purchaserName; + //private string purchaserName; private bool isLoading; - - private Platform purchasePlatform; + private long? schemeId; + //private Platform purchasePlatform; private IDictionary urlPatternDictionary; @@ -34,15 +36,18 @@ namespace BBWYB.Client.ViewModels public IList ProductSkuList { get; set; } - public string PurchaserId { get; set; } + //public string PurchaserId { get; set; } + + //public string PurchaserId2 { get; set; } - public string PurchaserId2 { get; set; } + //public string PurchaserName { get => purchaserName; set { SetProperty(ref purchaserName, value); } } + //public string PurchaserLocation { 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); } } - public Platform PurchasePlatform { get => purchasePlatform; set { SetProperty(ref purchasePlatform, value); } } + public long? SchemeId { get => schemeId; set { SetProperty(ref schemeId, value); } } + + //public Platform PurchasePlatform { get => purchasePlatform; set { SetProperty(ref purchasePlatform, value); } } #endregion @@ -86,68 +91,130 @@ namespace BBWYB.Client.ViewModels { Platform.阿里巴巴,@"^(https://detail.1688.com/offer/(\d+).html)[^\s]*" }, //{ Platform.拳探, @"^(https://qt.qiyue666.com/goods_detail/(\d+))(\?\w*)?$" } }; + ProductSkuList = new ObservableCollection(); } - public void SetData(IList productSkuList, string purchaserId, string purchaserId2, 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; + //} + + public void SetData(IList productSkuList, long? schemeId) { - this.ProductSkuList = productSkuList; + foreach (var productSku in productSkuList) + ProductSkuList.Add(productSku); + this.SchemeId = schemeId; //this.Product = product; - this.PurchaserId = purchaserId; - this.PurchaserId2 = purchaserId2; - this.PurchaserName = purchaserName; - this.PurchasePlatform = purchasePlatform; + //this.PurchaserId = purchaserId; + //this.PurchaserId2 = purchaserId2; + //this.PurchaserName = purchaserName; + //this.PurchasePlatform = purchasePlatform; } protected override void Load() { - if (!string.IsNullOrEmpty(PurchaserId)) + if (this.SchemeId != null) { IsLoading = true; - Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r => - { - var apiResponse = r.Result; - if (!apiResponse.Success) - { - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - MessageBox.Show(apiResponse.Msg, "查询采购方案"); - }); - IsLoading = false; - return; - } - - var purchaseSchemeList = apiResponse.Data; - - var waitList = new List(); - foreach (var sku in ProductSkuList) - { - //当前SKU下当前采购商的采购方案 - var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId); - - if (apiScheme == null) - continue; - - sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); - var ewh = new ManualResetEvent(false); - waitList.Add(ewh); - - Task.Factory.StartNew(() => - { - foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) - { - purchaseSchemeProduct.IsEditing = false; - LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); - } - ewh.Set(); - ewh.Dispose(); - }); - } - WaitHandle.WaitAll(waitList.ToArray()); - IsLoading = false; - }); + var skuIdList = ProductSkuList.Select(s => s.Id).ToList(); + var sku = ProductSkuList.FirstOrDefault(); + Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(skuIdList, shopId: globalContext.User.Shop.ShopId, schemeId: SchemeId)).ContinueWith(r => + { + var apiResponse = r.Result; + if (!apiResponse.Success) + { + App.Current.Dispatcher.BeginInvoke((Action)delegate + { + MessageBox.Show(apiResponse.Msg, "查询采购方案"); + }); + IsLoading = false; + return; + } + + var purchaseSchemeList = apiResponse.Data; + var apiScheme = purchaseSchemeList.FirstOrDefault(); + if (apiScheme == null) + { + IsLoading = false; + return; + } + sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); + var ewh = new ManualResetEvent(false); + + var waitList = new List(); + waitList.Add(ewh); + + Task.Factory.StartNew(() => + { + foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) + { + purchaseSchemeProduct.IsEditing = false; + LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); + } + ewh.Set(); + ewh.Dispose(); + }); + WaitHandle.WaitAll(waitList.ToArray()); + IsLoading = false; + }); } } + //protected override void Load() + //{ + // if (!string.IsNullOrEmpty(PurchaserId)) + // { + // IsLoading = true; + // Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r => + // { + // var apiResponse = r.Result; + // if (!apiResponse.Success) + // { + // App.Current.Dispatcher.BeginInvoke((Action)delegate + // { + // MessageBox.Show(apiResponse.Msg, "查询采购方案"); + // }); + // IsLoading = false; + // return; + // } + + // var purchaseSchemeList = apiResponse.Data; + + // var waitList = new List(); + // foreach (var sku in ProductSkuList) + // { + // //当前SKU下当前采购商的采购方案 + // var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId); + + // if (apiScheme == null) + // continue; + + // sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); + // var ewh = new ManualResetEvent(false); + // waitList.Add(ewh); + + // Task.Factory.StartNew(() => + // { + // foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) + // { + // purchaseSchemeProduct.IsEditing = false; + // LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); + // } + // ewh.Set(); + // ewh.Dispose(); + // }); + // } + // WaitHandle.WaitAll(waitList.ToArray()); + // IsLoading = false; + // }); + // } + //} + public void LoadPurchaseProduct(Platform platform, PurchaseSchemeProduct purchaseSchemeProduct, string purchaseProductId, Func checkPurchaserFunc, out string errorMsg) { errorMsg = string.Empty; @@ -180,10 +247,15 @@ namespace BBWYB.Client.ViewModels return; } - PurchaserId = data.Value.purchaser.Id; - PurchaserId2 = data.Value.purchaser.Id2; - PurchaserName = data.Value.purchaser.Name; - PurchaserLocation = data.Value.purchaser.Location; + purchaseSchemeProduct.PurchaserId = data.Value.purchaser.Id; + purchaseSchemeProduct.PurchaserId2 = data.Value.purchaser.Id2; + purchaseSchemeProduct.PurchaserName = data.Value.purchaser.Name; + purchaseSchemeProduct.PurchaserLocation = data.Value.purchaser.Location; + + //PurchaserId = data.Value.purchaser.Id; + //PurchaserId2 = data.Value.purchaser.Id2; + //PurchaserName = data.Value.purchaser.Name; + //PurchaserLocation = data.Value.purchaser.Location; App.Current.Dispatcher.BeginInvoke((Action)delegate { @@ -214,8 +286,7 @@ namespace BBWYB.Client.ViewModels productSku.SelectedPurchaseScheme = new PurchaseScheme() { ProductId = productSku.ProductId, - SkuId = productSku.Id, - PurchasePlatform = PurchasePlatform + SkuId = productSku.Id }; } else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4) @@ -229,7 +300,8 @@ namespace BBWYB.Client.ViewModels Id = DateTime.Now.ToFileTime(), IsEditing = true, ProductId = productSku.ProductId, - SkuId = productSku.Id + SkuId = productSku.Id, + PurchasePlatform = Platform.阿里巴巴 //B端写死只能1688 }); } @@ -237,8 +309,8 @@ namespace BBWYB.Client.ViewModels { var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId); productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Remove(purchaseSchemeProduct); - if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0)) - PurchaserId = string.Empty; + //if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0)) + // PurchaserId = string.Empty; } /// @@ -254,7 +326,7 @@ namespace BBWYB.Client.ViewModels return; } - urlPatternDictionary.TryGetValue(PurchasePlatform, out string pattern); + urlPatternDictionary.TryGetValue(purchaseSchemeProduct.PurchasePlatform, out string pattern); var match = Regex.Match(purchaseSchemeProduct.PurchaseUrl, pattern); if (!match.Success) @@ -276,13 +348,13 @@ namespace BBWYB.Client.ViewModels Task.Factory.StartNew(() => { - LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseProductId, (p) => + LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseProductId, (p) => { - if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p)) - return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商 + //if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p)) + // return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商 - if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId) //同一批操作的sku必须为相同的采购商 - return "采购商必须相同"; + //if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId) //同一批操作的sku必须为相同的采购商 + // return "采购商必须相同"; return string.Empty; }, out string errorMsg); @@ -319,10 +391,10 @@ namespace BBWYB.Client.ViewModels purchaseSchemeProduct.IsEditing = false; 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.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)); } @@ -385,12 +457,13 @@ namespace BBWYB.Client.ViewModels private void Closing(System.ComponentModel.CancelEventArgs e) { - PurchaserId = PurchaserName = string.Empty; + this.SchemeId = null; //clear data foreach (var sku in ProductSkuList) { sku.SelectedPurchaseScheme = null; } + this.ProductSkuList.Clear(); //Product = null; e.Cancel = false; } diff --git a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs index 5661f0a..52b0f7c 100644 --- a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client.ViewModels #region Properties private PurchaseService purchaseService; private ProductService productService; - private BindingPurchaseProductViewModel bindingPurchaseProduct; + //private BindingPurchaseProductViewModel bindingPurchaseProduct; private GlobalContext globalContext; private bool isLoading; private int pageIndex = 1; @@ -45,22 +45,32 @@ namespace BBWYB.Client.ViewModels #endregion #region Commands - public ICommand AddPurchaserCommand { get; set; } - public ICommand EditPurchaserCommand { get; set; } - public ICommand DeletePurchaserCommand { get; set; } + //public ICommand AddPurchaserCommand { get; set; } + //public ICommand EditPurchaserCommand { get; set; } + //public ICommand DeletePurchaserCommand { get; set; } public ICommand SearchCommand { get; set; } public ICommand ProductPageIndexChangedCommand { get; set; } public ICommand SwitchPurchasePlatformCommand { get; set; } + + public ICommand AddSchemeCommand { get; set; } + + public ICommand EditSchemeCommand { get; set; } + + public ICommand DeleteSchemeCommand { get; set; } #endregion #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); + //AddPurchaserCommand = new RelayCommand(AddPurchaser); + //EditPurchaserCommand = new RelayCommand(EditPurchaser); + //DeletePurchaserCommand = new RelayCommand(DeletePurchaser); + AddSchemeCommand = new RelayCommand(AddScheme); + EditSchemeCommand = new RelayCommand(EditScheme); + DeleteSchemeCommand = new RelayCommand(DeleteScheme); + SwitchPurchasePlatformCommand = new RelayCommand(SwitchPurchasePlatform); SearchCommand = new RelayCommand(() => { @@ -71,7 +81,7 @@ namespace BBWYB.Client.ViewModels this.purchaseService = purchaseService; this.productService = productService; this.globalContext = globalContext; - this.bindingPurchaseProduct = bindingPurchaseProduct; + //this.bindingPurchaseProduct = bindingPurchaseProduct; ProductList = new ObservableCollection(); Task.Factory.StartNew(() => LoadWare(1)); } @@ -164,7 +174,7 @@ namespace BBWYB.Client.ViewModels { foreach (var p in productList) ProductList.Add(p); - ExtractPurchaser(); + //ExtractPurchaser(); //使滚动条保持顶部 //Messenger.Default.Send(string.Empty, "WareManager_ProductListScrollToTop"); WeakReferenceMessenger.Default.Send(new Message_WareManager_ProductListScrollToTop(null)); @@ -227,96 +237,142 @@ namespace BBWYB.Client.ViewModels /// /// 提取SKU中的采购商到商品的采购商列表中 /// - private void ExtractPurchaser(string productId = "") + //private void ExtractPurchaser(string productId = "") + //{ + // var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId); + // foreach (var product in productList) + // { + // product.PurchaserList.Clear(); + // foreach (var sku in product.SkuList) + // { + // if (sku.PurchaseSchemeList.Count() > 0) + // { + // foreach (var pscheme in sku.PurchaseSchemeList) + // { + // var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId); + // if (purchaser == null) + // { + // purchaser = new Purchaser() + // { + // Id = pscheme.PurchaserId, + // Id2 = pscheme.PurchaserId2, + // Name = pscheme.PurchaserName, + // ProductId = product.Id + // }; + // product.PurchaserList.Add(purchaser); + // } + // purchaser.SkuUseCount++; + // } + // } + // } + // } + //} + + //private void AddPurchaser(Product product) + //{ + // if (product.PurchaserList.Count >= 5) + // { + // MessageBox.Show("一个SPU内最多允许5个采购商"); + // return; + // } + + // 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.Id2, purchaser.Name); + //} + + //private void DeletePurchaser(Purchaser purchaser) + //{ + // if (MessageBox.Show("确认删除该采购商吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK) + // return; + // IsLoading = true; + // Task.Factory.StartNew(() => + // { + // var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id); + // IsLoading = false; + // if (response.Success) + // { + // App.Current.Dispatcher.BeginInvoke((Action)delegate + // { + // var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); + // if (product != null) + // { + // foreach (var sku in product.SkuList) + // { + // var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id); + // if (deleteScheme != null) + // sku.PurchaseSchemeList.Remove(deleteScheme); + // } + // product.PurchaserList.Remove(purchaser); + // } + // MessageBox.Show("采购商删除成功", "提示"); + // }); + // } + // else + // { + // App.Current.Dispatcher.BeginInvoke((Action)delegate + // { + // MessageBox.Show(response.Msg, "采购商删除"); + // }); + // } + // }); + //} + + private void AddScheme(Product product) { - var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId); - foreach (var product in productList) - { - product.PurchaserList.Clear(); - foreach (var sku in product.SkuList) - { - if (sku.PurchaseSchemeList.Count() > 0) - { - foreach (var pscheme in sku.PurchaseSchemeList) - { - var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId); - if (purchaser == null) - { - purchaser = new Purchaser() - { - Id = pscheme.PurchaserId, - Id2 = pscheme.PurchaserId2, - Name = pscheme.PurchaserName, - ProductId = product.Id - }; - product.PurchaserList.Add(purchaser); - } - purchaser.SkuUseCount++; - } - } - } - } - } - - private void AddPurchaser(Product product) - { - if (product.PurchaserList.Count >= 5) - { - MessageBox.Show("一个SPU内最多允许5个采购商"); - return; - } - - OpenBindingView(product, string.Empty, string.Empty, string.Empty); + OpenBindingView(product, string.Empty, null); } - private void EditPurchaser(Purchaser purchaser) + private void EditScheme(PurchaseScheme purchaseScheme) { - var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); - OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name); + var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId); + OpenBindingView(product, purchaseScheme.SkuId, purchaseScheme.Id); } - private void DeletePurchaser(Purchaser purchaser) + private void DeleteScheme(PurchaseScheme purchaseScheme) { - if (MessageBox.Show("确认删除该采购商吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK) + if (MessageBox.Show("确定删除该采购方案吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK) return; IsLoading = true; - Task.Factory.StartNew(() => - { - var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id); - IsLoading = false; - if (response.Success) - { - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); - if (product != null) + Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id)) + .ContinueWith(t => { - foreach (var sku in product.SkuList) + IsLoading = false; + var response = t.Result; + if (!response.Success) { - var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id); - if (deleteScheme != null) - sku.PurchaseSchemeList.Remove(deleteScheme); + App.Current.Dispatcher.BeginInvoke((Action)delegate + { + MessageBox.Show(response.Msg, "删除采购方案"); + }); + return; } - product.PurchaserList.Remove(purchaser); - } - MessageBox.Show("采购商删除成功", "提示"); - }); - } - else - { - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - MessageBox.Show(response.Msg, "采购商删除"); - }); - } - }); + App.Current.Dispatcher.Invoke(() => + { + var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId); + if (product != null) + { + var sku = product.SkuList.FirstOrDefault(s => s.Id == purchaseScheme.SkuId); + if (sku != null) + { + sku.PurchaseSchemeList.Remove(purchaseScheme); + } + } + MessageBox.Show("采购方案删除成功", "提示"); + }); + }); } - private void OpenBindingView(Product product, string purchaserId, string purchaserId2, string purchaserName) + private void OpenBindingView(Product product, string skuId, long? schemeId) { - var skuList = product.SkuList; - bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel); - var bindingView = new BindingPurchaseProduct(); + var skuList = string.IsNullOrEmpty(skuId) ? product.SkuList : product.SkuList.Where(s => s.Id == skuId).ToList(); + //bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel); + //bindingPurchaseProduct.SetData(); + var bindingView = new BindingPurchaseProduct(skuList, schemeId); var r = bindingView.ShowDialog(); if (r == true) { @@ -328,7 +384,7 @@ namespace BBWYB.Client.ViewModels IsLoading = false; App.Current.Dispatcher.BeginInvoke((Action)delegate { - ExtractPurchaser(product.Id); + //ExtractPurchaser(product.Id); }); }); } @@ -345,7 +401,7 @@ namespace BBWYB.Client.ViewModels Task.Factory.StartNew(() => LoadPurchaseScheme(product.SkuList, platform)) .ContinueWith(t => { - App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId)); + //App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId)); IsLoading = false; }); } diff --git a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml index b1ab4a4..31fdd4a 100644 --- a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml +++ b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml @@ -25,7 +25,7 @@ - + public partial class BindingPurchaseProduct : BWindow { - public BindingPurchaseProduct() + private BindingPurchaseProductViewModel bindingVM; + public BindingPurchaseProduct(IList productSkuList, long? schemeId) { InitializeComponent(); - //Messenger.Default.Register(this, "BindingPurchaseProduct_Close", (x) => - // { - // this.Dispatcher.Invoke(() => - // { - // this.DialogResult = x; - // this.Close(); - // }); - // }); - + bindingVM = this.DataContext as BindingPurchaseProductViewModel; + bindingVM.SetData(productSkuList, schemeId); WeakReferenceMessenger.Default.Register(this, (o, x) => { this.Dispatcher.Invoke(() => diff --git a/BBWYB.Client/Views/Ware/WareManager.xaml b/BBWYB.Client/Views/Ware/WareManager.xaml index 505200b..c19224b 100644 --- a/BBWYB.Client/Views/Ware/WareManager.xaml +++ b/BBWYB.Client/Views/Ware/WareManager.xaml @@ -42,7 +42,7 @@ - + @@ -79,7 +79,7 @@ - + - + @@ -110,8 +110,11 @@ - + + + - + @@ -177,6 +180,8 @@ + + + + + + + + + + + + + + + + + + + + + @@ -216,7 +249,9 @@ - + + + @@ -269,7 +304,7 @@ - - + --> - + { if (newPurchaserList.Count > 0) @@ -152,20 +158,35 @@ namespace BBWYB.Server.Business /// /// /// - public IList GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) + public IList GetPurchaseSchemeList(QuerySchemeRequest request) { var select = fsql.Select(); - if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) - select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId); - else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) - select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id)); + if (request.SchemeId != null && request.SchemeId != 0) + select = select.Where(ps => ps.Id == request.SchemeId); + else if (request.SchemeIdList != null && request.SchemeIdList.Count() > 0) + select = select.Where(ps => request.SchemeIdList.Contains(ps.Id)); else { - select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId) - .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId)); + select = select.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId) + .WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId)); + + if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId)) + { + //var childSelect = fsql.Select() + // .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + // .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) + // .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId); + //select = select.Where(ps => childSelect.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); + + select = select.Where(ps => fsql.Select() + .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) + .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) + .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); + } //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); } - + var sql = select.ToSql(); var purchaseSchemeList = select.ToList(); diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs index 9bdfd77..14b9bb5 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs @@ -21,5 +21,10 @@ /// 采购Ske SpecId (1688独有) /// public string PurchaseSkuSpecId { get; set; } + + /// + /// 采购配比 + /// + public int? PurchaseRatio { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 8924508..59e2088 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -18,14 +18,14 @@ namespace BBWYB.Server.Model.Dto public IList SkuIdList { get; set; } - ///// - ///// 采购商Id, 可空 - ///// - //public string PurchaserId { get; set; } + /// + /// 采购商Id, 可空 + /// + public string PurchaserId { get; set; } - ///// - ///// 采购平台 - ///// - //public Enums.Platform? PurchasePlatform { get; set; } + /// + /// 采购平台 + /// + public Enums.Platform? PurchasePlatform { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs index 288e9f2..15c33cf 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BBWYB.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct { From 9f7373c97eb39fc4fc8730c6bee8d520ff057db0 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 14 Aug 2023 01:46:20 +0800 Subject: [PATCH 23/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=87=87=E8=B4=AD=E9=85=8D=E4=BB=B6=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 29 ++++++++++++++----- .../PurchaseScheme/QuerySchemeRequest.cs | 9 ++++-- .../PurchaseSchemeProductSkuResponse.cs | 21 ++++++++++---- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 931a9b2..8e15c73 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -154,7 +154,7 @@ namespace BBWYB.Server.Business } /// - /// 获取采购方案(不含采购配配件基本信息) + /// 获取采购方案 /// /// /// @@ -172,19 +172,12 @@ namespace BBWYB.Server.Business if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId)) { - //var childSelect = fsql.Select() - // .InnerJoin((psp, p) => psp.PurchaserId == p.Id) - // .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) - // .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId); - //select = select.Where(ps => childSelect.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); - select = select.Where(ps => fsql.Select() .InnerJoin((psp, p) => psp.PurchaserId == p.Id) .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); } - //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); } var sql = select.ToSql(); var purchaseSchemeList = select.ToList(); @@ -247,6 +240,26 @@ namespace BBWYB.Server.Business } } #endregion + + #region 获取采购方案基本信息 + if (request.IncludePurchaseSkuBasicInfo == 1) + { + foreach (var schemeProduct in schemeProductList) + { + try + { + var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() + { + + }); + } + catch + { + + } + } + } + #endregion } } return purchaseSchemeList; diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 59e2088..0c2c4f1 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -19,13 +19,18 @@ namespace BBWYB.Server.Model.Dto public IList SkuIdList { get; set; } /// - /// 采购商Id, 可空 + /// 采购商Id, 只要其中一个采购商品满足采购商条件则命中查询 /// public string PurchaserId { get; set; } /// - /// 采购平台 + /// 采购平台, 只要其中一个采购商品满足平台条件则命中查询 /// public Enums.Platform? PurchasePlatform { get; set; } + + /// + /// 是否包含采购配件的基本信息(单价,Logo,标题等) 是=1 否=0或null + /// + public int? IncludePurchaseSkuBasicInfo { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs index 7374eaa..30942ea 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs @@ -1,10 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BBWYB.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeProductSkuResponse : Model.Db.PurchaseSchemeProductSku { + + /// + /// 采购SKU标题 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public string PurchaseSkuTitle { get; set; } + + /// + /// 采购SKULogo 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public string PurchaseSkuLogo { get; set; } + + /// + /// 采购SKU单价 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public decimal? PurchaseSkuPrice { get; set; } } } From f96dbdacb409e08c9df21cebde1e369f6d826b25 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 14 Aug 2023 09:45:50 +0800 Subject: [PATCH 24/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=87=87=E8=B4=AD=E9=85=8D=E4=BB=B6=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 8e15c73..633cfb4 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -250,8 +250,24 @@ namespace BBWYB.Server.Business { var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() { - + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + PriceMode = Enums.PurchaseOrderMode.批发, + Platform = schemeProduct.PurchasePlatform ?? Enums.Platform.阿里巴巴, + PurchaseProductId = schemeProduct.PurchaseProductId }); + if (basicInfo != null) + { + foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) + { + var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId); + if (basicSku != null) + { + schemeProductSku.PurchaseSkuTitle = basicSku.Title; + schemeProductSku.PurchaseSkuPrice = basicSku.Price; + schemeProductSku.PurchaseSkuLogo = basicSku.Logo; + } + } + } } catch { From e8d95171183156980fe9d30f2d9d5e6b5fbc3318 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 14 Aug 2023 11:20:27 +0800 Subject: [PATCH 25/89] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E9=85=8D=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 10 ++++++++++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 11 ++++++++++- .../PurchaseScheme/EditPurchaseRatioRequest.cs | 4 +++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 673114c..1444c88 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -101,5 +101,15 @@ namespace BBWYB.Server.API.Controllers { return purchaseSchemeBusiness.RefreshPurchaseScheme(request); } + + /// + /// 修改采购配件比例 + /// + /// + [HttpPost] + public void EditPurchaseRatio([FromBody]EditPurchaseRatioRequest request) + { + purchaseSchemeBusiness.EditPurchaseRatio(request); + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index c0a5923..68ec95e 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -384,6 +384,15 @@ namespace BBWYB.Server.Business return list; } - + public void EditPurchaseRatio(EditPurchaseRatioRequest request) + { + if (request.Ratio < 1) + request.Ratio = 1; + fsql.Update().Set(pss => pss.PurchaseRatio, request.Ratio) + .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId && + pss.SkuId == request.SkuId && + pss.PurchaseSkuId == request.PurchaseSkuId) + .ExecuteAffrows(); + } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs index 2e09843..0eebc71 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs @@ -4,8 +4,10 @@ { public long SchemeId { get; set; } - public string SkuId { get; set; } + public string SkuId { get; set; } public string PurchaseSkuId { get; set; } + + public int Ratio { get; set; } } } From 56cef350190c7ccfe6c41745e10c58bf44f58bc4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 15 Aug 2023 14:39:07 +0800 Subject: [PATCH 26/89] =?UTF-8?q?=E6=8A=A5=E4=BB=B7=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E8=BF=94=E5=9B=9E=E5=BA=93=E5=AD=98=E4=B8=8D=E8=B6=B3?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=8C=B9=E9=85=8D=E8=AE=A2=E5=8D=95sku?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index a83adf7..c353ffc 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -19,6 +19,7 @@ using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; using System.Text; +using System.Text.RegularExpressions; using Yitter.IdGenerator; namespace BBWYB.Server.Business @@ -144,7 +145,6 @@ namespace BBWYB.Server.Business #endregion var extJArray = new List(); - var errorBuilder = new StringBuilder(); var freightAmount = 0M; var productAmount = 0M; var totalAmount = 0M; @@ -201,8 +201,33 @@ namespace BBWYB.Server.Business } catch (Exception ex) { + var errorBuilder = new StringBuilder(); errorBuilder.AppendLine($"采购商:{cargoParamGroup.PurchaserName}"); - errorBuilder.AppendLine(ex.Message); + #region 匹配订单sku + if (ex.Message.Contains("库存不足")) + { + var match = Regex.Match(ex.Message, @"商品\[(\d+)_(\w+)\]"); + if (match.Success) + { + var purchaseProductId = match.Groups[1].Value; + var purchaseSkuSpecId = match.Groups[2].Value; + + var errorCargoParam = cargoParamGroup.CargoParamList.FirstOrDefault(c => c.SpecId == purchaseSkuSpecId && c.ProductId == purchaseProductId); + if (errorCargoParam != null) + { + errorBuilder.AppendLine($"订单sku[{errorCargoParam.BelongSkuId}]所使用的配件[${errorCargoParam.SkuId}]库存不足"); + } + } + else + { + errorBuilder.AppendLine(ex.Message); + } + } + else + { + errorBuilder.AppendLine(ex.Message); + } + #endregion throw new BusinessException(errorBuilder.ToString()); } } @@ -796,10 +821,10 @@ namespace BBWYB.Server.Business #region 补齐采购关系 foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) { - var matchResultList = MatchPurchaseScheme(assOrderCostDetail.SkuId, - assOrderCostDetail.PurchaseQuantity, + var matchResultList = MatchPurchaseScheme(assOrderCostDetail.SkuId, + assOrderCostDetail.PurchaseQuantity, purchaserId, - purchaseSchemeList, + purchaseSchemeList, purchaseOrderSimpleInfo); if (matchResultList.Count() == 0) throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id {purchaserId} Sku{assOrderCostDetail.SkuId}缺少采购方案"); From 665fddb885a12e673168f8d88f1e0ce3f9a2e926 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 15 Aug 2023 16:23:46 +0800 Subject: [PATCH 27/89] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AB=AF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0MemberId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseProductAPIService.cs | 1 + .../PurchaseScheme/PurchaseSchemeBusiness.cs | 7 +++++-- BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs | 4 ++++ .../PurchaseScheme/InputPurchaseSchemeProductRequest.cs | 5 +++++ .../PurchaseScheme/PurchaseSchemeProductResponse.cs | 2 ++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index 2a76e38..5549279 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -221,6 +221,7 @@ namespace BBWYB.Server.Business Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), + MemberId = jobject["globalData"]?["tempModel"]?["sellerMemberId"]?.ToString(), Location = location, Platform = Enums.Platform.阿里巴巴 }; diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index fd83cdb..1aaa0d6 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -40,7 +40,8 @@ namespace BBWYB.Server.Business Id2 = ps.PurchaserId2, Name = ps.PurchaserName, Location = ps.PurchaserLocation, - Platform = scheme.PurchasePlatform + Platform = ps.PurchasePlatform ?? Enums.Platform.阿里巴巴, + MemberId = ps.PurchaserMemberId }); } } @@ -204,6 +205,7 @@ namespace BBWYB.Server.Business PurchaserLocation = p.Location, PurchaserName = p.Name, PurchasePlatform = p.Platform, + PurchaserMemberId = p.MemberId }); var purchaseSchemeProductSkuList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) @@ -235,7 +237,8 @@ namespace BBWYB.Server.Business Id2 = schemeProduct.PurchaserId2, Location = schemeProduct.PurchaserLocation, Name = schemeProduct.PurchaserName, - Platform = schemeProduct.PurchasePlatform + Platform = schemeProduct.PurchasePlatform, + MemberId = schemeProduct.PurchaserMemberId }); } } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs index d8e6d38..2dd256f 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs @@ -40,6 +40,10 @@ namespace BBWYB.Server.Model.Db [Column(MapType = typeof(int?))] public Enums.Platform? Platform { get; set; } + + [Column(StringLength = 50, IsNullable = true)] + public string MemberId { get; set; } + } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index b97b8da..e9bf736 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -38,6 +38,11 @@ /// public string PurchaserLocation { get; set; } + public string PurchaserMemberId { get; set; } + + + public Enums.Platform? PurchasePlatform { get; set; } + public IList PurchaseSchemeProductSkuList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs index 15c33cf..affd828 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs @@ -10,6 +10,8 @@ public Enums.Platform? PurchasePlatform { get; set; } + public string PurchaserMemberId { get; set; } + public new List PurchaseSchemeProductSkuList { get; set; } public PurchaseSchemeProductResponse() From 5cc0249a20591a05ab8ab82381cbef717e1047f6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 15 Aug 2023 16:29:58 +0800 Subject: [PATCH 28/89] 1 --- .../Request/PurchaseScheme/InputPurchaseSchemeRequest.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index b89d7e4..bfce735 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -33,10 +33,10 @@ namespace BBWYB.Server.Model.Dto ///// 采购商发货地 ///// //public string PurchaserLocation { get; set; } - /// - /// 采购平台 - /// - public Enums.Platform PurchasePlatform { get; set; } = Enums.Platform.阿里巴巴; + ///// + ///// 采购平台 + ///// + //public Enums.Platform PurchasePlatform { get; set; } = Enums.Platform.阿里巴巴; public IList PurchaseSchemeProductList { get; set; } } From 675facb4edcd0df31c34680eb6d99b4be529eb4e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 15 Aug 2023 16:58:08 +0800 Subject: [PATCH 29/89] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=94=AF?= =?UTF-8?q?=E6=8C=81memberId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/APIServices/PurchaseProductAPIService.cs | 1 + BBWYB.Client/GlobalContext.cs | 2 +- .../APIModel/Response/PurchaseSchemeProductResponse.cs | 2 ++ BBWYB.Client/Models/Product/Purchaser.cs | 2 ++ BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs | 5 ++++- .../ViewModels/Ware/BindingPurchaseProductViewModel.cs | 1 + BBWYB.Client/appsettings.json | 4 ++-- BBWYB.Server.API/Controllers/PurchaseSchemeController.cs | 2 +- 8 files changed, 14 insertions(+), 5 deletions(-) diff --git a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs index 17b0308..6a75477 100644 --- a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs +++ b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs @@ -210,6 +210,7 @@ namespace BBWYB.Client.APIServices Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), + MemberId = jobject["globalData"]?["tempModel"]?["sellerMemberId"]?.ToString(), Location = location, Platform = platform }; diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 373eabc..cbf3c6a 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10031"; + BBWYBApiVersion = "10032"; } private User user; diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs index 995aa88..fb5ed5b 100644 --- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs @@ -23,6 +23,8 @@ namespace BBWYB.Client.Models public Platform? PurchasePlatform { get; set; } + public string PurchaserMemberId { get; set; } + public List PurchaseSchemeProductSkuList { get; set; } } diff --git a/BBWYB.Client/Models/Product/Purchaser.cs b/BBWYB.Client/Models/Product/Purchaser.cs index 0b021fb..46be3e5 100644 --- a/BBWYB.Client/Models/Product/Purchaser.cs +++ b/BBWYB.Client/Models/Product/Purchaser.cs @@ -25,5 +25,7 @@ namespace BBWYB.Client.Models public string Location { get; set; } public Platform Platform { get; set; } + + public string MemberId { get; set; } } } diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs index 052bbca..6f8d9c7 100644 --- a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs @@ -34,6 +34,8 @@ namespace BBWYB.Client.Models public string PurchaserName { get; set; } public Platform PurchasePlatform { get; set; } + + public string PurchaserMemberId { get; set; } public bool IsEditing { get => isEditing; @@ -90,7 +92,8 @@ namespace BBWYB.Client.Models PurchaserId2 = apiModel.PurchaserId2, PurchaserName = apiModel.PurchaserName, PurchasePlatform = apiModel.PurchasePlatform.Value, - PurchaserLocation = apiModel.PurchaserLocation + PurchaserLocation = apiModel.PurchaserLocation, + PurchaserMemberId = apiModel.PurchaserMemberId }; model.SelectedSkuIdList.AddRange(apiModel.PurchaseSchemeProductSkuList.Select(s => s.PurchaseSkuId)); return model; diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index 26cb3c9..8bf6aa2 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -251,6 +251,7 @@ namespace BBWYB.Client.ViewModels purchaseSchemeProduct.PurchaserId2 = data.Value.purchaser.Id2; purchaseSchemeProduct.PurchaserName = data.Value.purchaser.Name; purchaseSchemeProduct.PurchaserLocation = data.Value.purchaser.Location; + purchaseSchemeProduct.PurchaserMemberId = data.Value.purchaser.MemberId; //PurchaserId = data.Value.purchaser.Id; //PurchaserId2 = data.Value.purchaser.Id2; diff --git a/BBWYB.Client/appsettings.json b/BBWYB.Client/appsettings.json index 67f255d..cce26a2 100644 --- a/BBWYB.Client/appsettings.json +++ b/BBWYB.Client/appsettings.json @@ -1,6 +1,6 @@ { - "BBWYApiHost": "http://localhost:5000", - //"BBWYApiHost": "http://bbwyb.qiyue666.com", + //"BBWYApiHost": "http://localhost:5000", + "BBWYApiHost": "http://bbwyb.qiyue666.com", "MDSApiHost": "http://mdsapi.qiyue666.com", "BBWYCApiHost": "http://bbwytest.qiyue666.com", "QKApiHost": "http://localhost:8080" diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 1b87505..840a9c4 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -28,7 +28,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 获取采购方案列表 (不含采购配配件基本信息) + /// 获取采购方案列表 /// /// /// From 75c63434e370839ebaed85fd8e436874de34c0d7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 16 Aug 2023 01:42:58 +0800 Subject: [PATCH 30/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8DmemberId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 6 ++ .../DataRepair/DataRepairBusiness.cs | 67 +++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 9c2bdbe..7588b57 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -39,5 +39,11 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.PingJia(); } + + [HttpPost] + public void SupplementPurchaserInfo() + { + dataRepairBusiness.SupplementPurchaserInfo(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index dcf2821..ec73edd 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -81,5 +81,72 @@ namespace BBWYB.Server.Business fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); }); } + + public void SupplementPurchaserInfo() + { + var purlList = fsql.Select() + .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + .Where((psp, p) => p.Platform == Enums.Platform.阿里巴巴 && string.IsNullOrEmpty(p.MemberId)) + .ToList((psp, 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?.MemberId)) + { + if (response.Purchaser.MemberId.Length > 5) + Console.WriteLine(response.Purchaser.MemberId); + var update = fsql.Update(purchaseId).Set(p => p.MemberId, response.Purchaser.MemberId); + 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(); + }); + } + } } } From 8516067967341a505989569474a4d1f92729a6a2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 17 Aug 2023 11:26:17 +0800 Subject: [PATCH 31/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index 8bf6aa2..0735a59 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -292,7 +292,7 @@ namespace BBWYB.Client.ViewModels } else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4) { - MessageBox.Show("该采购方案的商品数量已达上限(5)"); + MessageBox.Show("该采购方案的商品数量已达上限(4)"); return; } From 3c2e1fdebe8a1ccf07d50352a458acaa69ce9b27 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 17 Aug 2023 11:26:34 +0800 Subject: [PATCH 32/89] 10033 --- BBWYB.Client/GlobalContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index cbf3c6a..378bbe5 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10032"; + BBWYBApiVersion = "10033"; } private User user; From 416ce28a31e1736cf9364cfbe639f2d8b79ca0af Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 17 Aug 2023 14:34:05 +0800 Subject: [PATCH 33/89] =?UTF-8?q?=E4=BB=8E=E5=A4=9A=E4=B8=AA=E7=8E=AF?= =?UTF-8?q?=E8=8A=82=E6=95=B4=E5=90=88=E7=AD=89=E6=AF=94=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC=E7=AE=97=E6=B3=95=20(?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E9=87=87=E8=B4=AD=EF=BC=8C=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=A2=84=E8=A7=88=EF=BC=8C=E6=94=B9=E4=BB=B7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 334 ++++++++++++------ .../Sync/OrderSyncBusiness.cs | 1 - .../Core/ProportionalCalculationCostResult.cs | 11 + 3 files changed, 246 insertions(+), 100 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Core/ProportionalCalculationCostResult.cs diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index c353ffc..bd6ca55 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -4,12 +4,12 @@ using BBWYB.Common.Models; using BBWYB.Server.Business.Extensions; using BBWYB.Server.Business.JD; using BBWYB.Server.Model; +using BBWYB.Server.Model.Core; 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; @@ -398,33 +398,59 @@ namespace BBWYB.Server.Business #endregion } - //采购单总件数,由于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) + ////采购单总件数,由于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; + // //var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId + // var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); + // 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); + + // currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); + // //currentPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity); + // } + + // #region 成本明细 + // var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); + // var orderCostDetail = new OrderCostDetail() + // { + // Id = idGenerator.NewLong(), + // CreateTime = DateTime.Now, + // DeductionQuantity = orderSku.ItemTotal.Value, + // OrderId = request.OrderId, + // ProductId = orderSku.ProductId, + // PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, + // SkuId = belongSkuId, + // IsEnabled = true + // }; + // orderCostDetail.CalculationOrderCostDetailCostAndProfit(currentSkuAmount, + // currentPurchaseFreight, + // 0M, + // 0M); + // insertOrderCostDetails.Add(orderCostDetail); + // #endregion + //} + #region 等比计算采购成本 + var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo); + foreach (var proportionalCalculationResult in proportionalCalculationResultList) { - var belongSkuId = belongSkuGroup.Key; - var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前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 skuId = proportionalCalculationResult.SkuId; - currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); - //currentPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity); - } - #region 成本明细 - var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); + var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == skuId); var orderCostDetail = new OrderCostDetail() { Id = idGenerator.NewLong(), @@ -433,18 +459,19 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = orderSku.ProductId, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, - SkuId = belongSkuId, + SkuId = skuId, IsEnabled = true }; - orderCostDetail.CalculationOrderCostDetailCostAndProfit(currentSkuAmount, - currentPurchaseFreight, + orderCostDetail.CalculationOrderCostDetailCostAndProfit(proportionalCalculationResult.ProductAmount, + proportionalCalculationResult.FreightAmount, 0M, 0M); insertOrderCostDetails.Add(orderCostDetail); - #endregion } + #endregion #region 采购订单信息 + var belongSkuIdList = cargoParamGroup.CargoParamList.Select(c => c.BelongSkuId).Distinct().ToList(); var orderPurchaserInfo = new OrderPurchaseInfo() { Id = idGenerator.NewLong(), @@ -1190,32 +1217,54 @@ namespace BBWYB.Server.Business if (cargoParamList.Count() == 0) throw new BusinessException("未匹配到采购方案"); + #endregion + #region 等比计算采购成本 var assocationOrderCostDetailList = new List(); - var belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId); - var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity); - foreach (var belongSkuGroup in belongSkuGroups) + //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 currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前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 = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + // .Sum(p => p.Quantity); + + // currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); + + // } + + // var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); + // var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() + // { + // Logo = orderSku.Logo, + // Title = orderSku.Title, + // SkuId = skuId, + // OrderId = orderSku.OrderId, + // SkuAmount = currentSkuAmount, + // PurchaseQuantity = orderSku.ItemTotal.Value, + // PurchaseFreight = currentPurchaseFreight + // }; + // assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; + // assocationOrderCostDetailList.Add(assocationOrderCostDetail); + //} + + var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamList, purchaseOrderSimpleInfo); + foreach (var proportionalCalculationResult in proportionalCalculationResultList) { - 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 = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) - .Sum(p => p.Quantity); - - currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); - - } - + var skuId = proportionalCalculationResult.SkuId; var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() { @@ -1223,17 +1272,17 @@ namespace BBWYB.Server.Business Title = orderSku.Title, SkuId = skuId, OrderId = orderSku.OrderId, - SkuAmount = currentSkuAmount, + SkuAmount = proportionalCalculationResult.ProductAmount, PurchaseQuantity = orderSku.ItemTotal.Value, - PurchaseFreight = currentPurchaseFreight + PurchaseFreight = proportionalCalculationResult.FreightAmount }; assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; assocationOrderCostDetailList.Add(assocationOrderCostDetail); } - #endregion if (assocationOrderCostDetailList.Count() == 0) throw new BusinessException("没有匹配到合适的采购方案"); + #endregion return new AssociationPurchaseOrderResponse(assocationOrderCostDetailList) { @@ -2779,34 +2828,27 @@ namespace BBWYB.Server.Business 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 cargoParamList = currentPurchaseOrderRelationInfos.Select(x => new CargoParamRequest() { - 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); - } + SkuId = x.PurchaseSkuId, + BelongSkuId = x.BelongSkuId, + ProductId = x.PurchaseProductId, + Quantity = x.Quantity ?? 1, + SpecId = x.PurchaseSpecId, + SchemeId = x.SchemeId.Value + }).ToList(); + + #region 等比计算采购成本 + var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamList, purchaseOrderSimpleInfo); + foreach (var proportionalCalculationResult in proportionalCalculationResultList) + { + var skuId = proportionalCalculationResult.SkuId; #region 订单sku平价 - var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); if (isEditOrderPrice) { + var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == skuId); if (!oskuPriceEditParamDictionary.TryGetValue(orderSku.SkuId, out OP_EditPriceSkuRequest editSkuPrice)) { editSkuPrice = new OP_EditPriceSkuRequest() @@ -2817,35 +2859,87 @@ namespace BBWYB.Server.Business }; oskuPriceEditParamDictionary.Add(orderSku.SkuId, editSkuPrice); } - editSkuPrice.Price += currentOrderSkuProductAmount / (orderSku.ItemTotal ?? 1M); - editSkuPrice.Freight += currentPurchaseFreight ?? 0M; - - //orderSku.Price = - //orderSku.BuyerPayFreight = currentPurchaseFreight; - //if (!op_EditPriceSkuRequests.Any(x => x.SkuId == orderSku.SkuId)) - //{ - // 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)); - //} - + editSkuPrice.Price += proportionalCalculationResult.ProductAmount / (orderSku.ItemTotal ?? 1M); + editSkuPrice.Freight += proportionalCalculationResult.FreightAmount; } #endregion - var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); - dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(currentOrderSkuProductAmount, - currentPurchaseFreight ?? 0M, + #region 更新sku成本明细 + var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == skuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); + dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(proportionalCalculationResult.ProductAmount, + proportionalCalculationResult.FreightAmount, dbOrderSkuDetail.OutPackAmount ?? 0M, dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); + #endregion + } + #endregion + + //var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); + //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) + // { + // if (!oskuPriceEditParamDictionary.TryGetValue(orderSku.SkuId, out OP_EditPriceSkuRequest editSkuPrice)) + // { + // editSkuPrice = new OP_EditPriceSkuRequest() + // { + // SkuId = orderSku.SkuId, + // OrderSkuId = orderSku.Id.ToString(), + // InPackAmountPrice = orderSku.InPackAmount ?? 0M + // }; + // oskuPriceEditParamDictionary.Add(orderSku.SkuId, editSkuPrice); + // } + // editSkuPrice.Price += currentOrderSkuProductAmount / (orderSku.ItemTotal ?? 1M); + // editSkuPrice.Freight += currentPurchaseFreight ?? 0M; + + // //orderSku.Price = + // //orderSku.BuyerPayFreight = currentPurchaseFreight; + // //if (!op_EditPriceSkuRequests.Any(x => x.SkuId == orderSku.SkuId)) + // //{ + // // 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(currentOrderSkuProductAmount, + // currentPurchaseFreight ?? 0M, + // dbOrderSkuDetail.OutPackAmount ?? 0M, + // dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); + // updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); + //} } if (isEditOrderPrice) @@ -3040,5 +3134,47 @@ namespace BBWYB.Server.Business } return cargoParamList; } + /// + /// 等比计算sku采购成本 + /// + /// + /// + /// + private IList ProportionalCalculationCost(IList cargoParamList, + PP_QueryOrderDetailResponse purchaseOrderSimpleInfo) + { + var list = new List(); + 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 currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前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 = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + .Sum(p => p.Quantity); + + currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); + } + list.Add(new ProportionalCalculationCostResult() + { + SkuId = skuId, + FreightAmount = currentPurchaseFreight, + ProductAmount = currentSkuAmount + }); + } + return list; + } } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 2ddcfe4..711c33e 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -5,7 +5,6 @@ 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; diff --git a/BBWYB.Server.Model/Dto/Core/ProportionalCalculationCostResult.cs b/BBWYB.Server.Model/Dto/Core/ProportionalCalculationCostResult.cs new file mode 100644 index 0000000..15c0510 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Core/ProportionalCalculationCostResult.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Core +{ + public class ProportionalCalculationCostResult + { + public string SkuId { get; set; } + + public decimal ProductAmount { get; set; } + + public decimal FreightAmount { get; set; } + } +} From 18c9ce39bd38d269ff941b98d4176679f5bd9ffd Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 17 Aug 2023 14:46:02 +0800 Subject: [PATCH 34/89] =?UTF-8?q?10034=20=E5=8F=96=E6=B6=88=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E6=96=B9=E6=A1=88=E5=95=86=E5=93=81=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/GlobalContext.cs | 2 +- .../ViewModels/Ware/BindingPurchaseProductViewModel.cs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 378bbe5..d0f3150 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10033"; + BBWYBApiVersion = "10034"; } private User user; diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index 0735a59..ea137ac 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -290,11 +290,11 @@ namespace BBWYB.Client.ViewModels SkuId = productSku.Id }; } - else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4) - { - MessageBox.Show("该采购方案的商品数量已达上限(4)"); - return; - } + //else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4) + //{ + // MessageBox.Show("该采购方案的商品数量已达上限(4)"); + // return; + //} productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Add(new PurchaseSchemeProduct() { From c9315ac0f3566bcfc4c0e8b95c1399e9ca041589 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 19 Aug 2023 00:35:10 +0800 Subject: [PATCH 35/89] =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/GlobalContext.cs | 2 +- .../ViewModels/Ware/BindingPurchaseProductViewModel.cs | 10 +++++----- BBWYB.Client/Views/Ware/WareManager.xaml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index d0f3150..e3b24d0 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10034"; + BBWYBApiVersion = "10035"; } private User user; diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index ea137ac..5a678d6 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -276,11 +276,11 @@ namespace BBWYB.Client.ViewModels private void AddPurchaseProduct(ProductSku productSku) { - if (productSku.PurchaseSchemeList.Count > 4) - { - MessageBox.Show("该sku的采购方案已达上限(5)"); - return; - } + //if (productSku.PurchaseSchemeList.Count > 4) + //{ + // MessageBox.Show("该sku的采购方案已达上限(5)"); + // return; + //} if (productSku.SelectedPurchaseScheme == null) { diff --git a/BBWYB.Client/Views/Ware/WareManager.xaml b/BBWYB.Client/Views/Ware/WareManager.xaml index c19224b..fb7aa82 100644 --- a/BBWYB.Client/Views/Ware/WareManager.xaml +++ b/BBWYB.Client/Views/Ware/WareManager.xaml @@ -127,7 +127,7 @@ - + From 75622d674f880239cebe0f92ea48cd31f9a26b20 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 19 Aug 2023 01:20:40 +0800 Subject: [PATCH 36/89] 1 --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 7 +++++-- .../Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 1aaa0d6..f19868c 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -320,10 +320,13 @@ namespace BBWYB.Server.Business amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); } - if (purchaseScheme.DefaultCost != amount) + if (purchaseScheme.RealCost != amount || + purchaseScheme.DefaultCost != amount) { + purchaseScheme.RealCost = amount; purchaseScheme.DefaultCost = amount; - var update = fsql.Update(purchaseScheme.Id).Set(p => p.DefaultCost, amount); + var update = fsql.Update(purchaseScheme.Id).Set(p => p.RealCost, amount) + .Set(p => p.DefaultCost, amount); updatePurchaseSchemeList.Add(update); } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs index e1c617b..2b62f1a 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs @@ -12,6 +12,8 @@ namespace BBWYB.Server.Model.Dto //public string PurchaserLocation { get; set; } + public decimal LastPurchasePriceCost { get => RealCost; } + public new List PurchaseSchemeProductList { get; set; } public List PurchaserList { get; set; } From dec97cd819d237b9b5da8437ddf4b2f37355b3de Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 20 Aug 2023 21:41:10 +0800 Subject: [PATCH 37/89] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B4=A7=E6=BA=90=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index bd6ca55..5c2a6c5 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -635,8 +635,8 @@ namespace BBWYB.Server.Business fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); - if (updatePurchaseTimeSchemeIdList.Count() > 0) - fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); + //if (updatePurchaseTimeSchemeIdList.Count() > 0) + // fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); 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) @@ -649,6 +649,21 @@ namespace BBWYB.Server.Business update.ExecuteAffrows(); } }); + + #region 更新采购方案最新价格 + Task.Factory.StartNew(() => + { + try + { + purchaseSchemeBusiness.RefreshPurchaseScheme(new RefreshSchemeRequest() + { + SchemeIdList = updatePurchaseTimeSchemeIdList + }); + } + catch { } + + }, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion } /// From cf380fd6a0240a789db7c641ffae40114eaa638a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 21 Aug 2023 09:10:32 +0800 Subject: [PATCH 38/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=95=B0=E9=87=8F=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E5=A2=9E=E5=8A=A0=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E9=85=8D=E4=BB=B6=E5=AE=9E=E9=99=85=E5=8D=95=E4=BB=B7?= =?UTF-8?q?=20=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E7=9A=84=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E6=88=90=E6=9C=AC=E7=94=B1=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 29 ++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 32 +-- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 184 +++++++++++------- .../Db/PurchaseScheme/PurchaseScheme.cs | 11 +- .../Purchaseschemeproductsku.cs | 7 +- ...EditPurchaseRatioAndActualPriceRequest.cs} | 4 +- .../EditPurchaseSchemeRequest.cs | 3 + .../InputPurchaseSchemeProductRequest.cs | 7 +- .../InputPurchaseSchemeProductSkuRequest.cs | 21 +- .../InputPurchaseSchemeRequest.cs | 34 +--- .../PurchaseScheme/QuerySchemeCountRequest.cs | 8 + .../PurchaseSchemeCountResponse.cs | 9 + .../PurchaseScheme/PurchaseSchemeResponse.cs | 2 - 13 files changed, 196 insertions(+), 155 deletions(-) rename BBWYB.Server.Model/Dto/Request/PurchaseScheme/{EditPurchaseRatioRequest.cs => EditPurchaseRatioAndActualPriceRequest.cs} (68%) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeCountResponse.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 840a9c4..debd730 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -38,6 +38,17 @@ namespace BBWYB.Server.API.Controllers return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest); } + /// + /// 获取Sku采购方案数量 + /// + /// + /// + [HttpPost] + public IList GetPurchaseSchemeCountList([FromBody] QuerySchemeCountRequest request) + { + return purchaseSchemeBusiness.GetPurchaseSchemeCountList(request); + } + ///// ///// 删除采购商 ///// @@ -102,14 +113,14 @@ namespace BBWYB.Server.API.Controllers return purchaseSchemeBusiness.RefreshPurchaseScheme(request); } - /// - /// 修改采购配件比例 - /// - /// - [HttpPost] - public void EditPurchaseRatio([FromBody]EditPurchaseRatioRequest request) - { - purchaseSchemeBusiness.EditPurchaseRatio(request); - } + ///// + ///// 修改采购配件比例 + ///// + ///// + //[HttpPost] + //public void EditPurchaseRatio([FromBody]EditPurchaseRatioAndActualPriceRequest request) + //{ + // purchaseSchemeBusiness.EditPurchaseRatio(request); + //} } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5c2a6c5..5bce4dd 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -635,8 +635,8 @@ namespace BBWYB.Server.Business fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); - //if (updatePurchaseTimeSchemeIdList.Count() > 0) - // fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); + if (updatePurchaseTimeSchemeIdList.Count() > 0) + fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); 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) @@ -650,20 +650,20 @@ namespace BBWYB.Server.Business } }); - #region 更新采购方案最新价格 - Task.Factory.StartNew(() => - { - try - { - purchaseSchemeBusiness.RefreshPurchaseScheme(new RefreshSchemeRequest() - { - SchemeIdList = updatePurchaseTimeSchemeIdList - }); - } - catch { } + //#region 更新采购方案最新价格 + //Task.Factory.StartNew(() => + //{ + // try + // { + // purchaseSchemeBusiness.RefreshPurchaseScheme(new RefreshSchemeRequest() + // { + // SchemeIdList = updatePurchaseTimeSchemeIdList + // }); + // } + // catch { } - }, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - #endregion + //}, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + //#endregion } /// @@ -3140,7 +3140,7 @@ namespace BBWYB.Server.Business SkuId = pss.PurchaseSkuId, SchemeId = pss.SkuPurchaseSchemeId, SpecId = pss.PurchaseSkuSpecId, - Quantity = (itemTotal * pss.PurchaseRatio) ?? 1 + Quantity = itemTotal * (pss.PurchaseRatio ?? 1) })); } break; diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index f19868c..9477a0c 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -61,67 +61,101 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0 && batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) + throw new BusinessException("编辑方案中采购方案缺少Id"); - List addPurchaseSchemeList = null; + List addPurchaseSchemeList = new List(); List addPurchaseSchemeProductList = new List(); List addPurchaseSchemeProductSkuList = new List(); List newPurchaserList = new List(); List deletePurchaseSchemeIdList = new List(); + List> updatePurchaseSchemeList = new List>(); - #region 新增采购方案 if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); - addPurchaseSchemeList = batchCURDSchemeRequest.AddPurchaseSchemeList.Map>(); - - foreach (var scheme in addPurchaseSchemeList) + foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) { - scheme.Id = idGenerator.NewLong(); - scheme.CreateTime = DateTime.Now; - - foreach (var purchaseProduct in scheme.PurchaseSchemeProductList) + var ps = new PurchaseScheme() { - purchaseProduct.Id = idGenerator.NewLong(); - purchaseProduct.CreateTime = DateTime.Now; - purchaseProduct.SkuPurchaseSchemeId = scheme.Id; - foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList) + CreateTime = DateTime.Now, + Id = idGenerator.NewLong(), + ProductId = psReq.ProductId, + SkuId = psReq.SkuId, + ShopId = psReq.ShopId + }; + addPurchaseSchemeList.Add(ps); + foreach (var pspReq in psReq.PurchaseSchemeProductList) + { + var psp = pspReq.Map(); + psp.Id = idGenerator.NewLong(); + psp.CreateTime = DateTime.Now; + psp.SkuPurchaseSchemeId = ps.Id; + addPurchaseSchemeProductList.Add(psp); + + foreach (var pssReq in pspReq.PurchaseSchemeProductSkuList) { - purchaseProductSku.Id = idGenerator.NewLong(); - purchaseProductSku.CreateTime = DateTime.Now; - purchaseProductSku.SkuPurchaseSchemeId = scheme.Id; + var pss = pssReq.Map(); + pss.Id = idGenerator.NewLong(); + pss.CreateTime = DateTime.Now; + pss.SkuPurchaseSchemeId = ps.Id; + addPurchaseSchemeProductSkuList.Add(pss); + ps.DefaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); } - addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList); } - addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList); } } - #endregion #region 更新采购方案 if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) { - //ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList); deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); - - var editPurchaseSchemeList = batchCURDSchemeRequest.EditPurchaseSchemeList.Map>(); - foreach (var scheme in editPurchaseSchemeList) + foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) { - foreach (var purchaseProduct in scheme.PurchaseSchemeProductList) + var schemeId = psReq.Id; + var defaultCost = 0M; + foreach (var pspReq in psReq.PurchaseSchemeProductList) { - purchaseProduct.Id = idGenerator.NewLong(); - purchaseProduct.CreateTime = DateTime.Now; - purchaseProduct.SkuPurchaseSchemeId = scheme.Id; - foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList) + var psp = pspReq.Map(); + psp.Id = idGenerator.NewLong(); + psp.CreateTime = DateTime.Now; + psp.SkuPurchaseSchemeId = schemeId; + addPurchaseSchemeProductList.Add(psp); + + foreach (var pssReq in pspReq.PurchaseSchemeProductSkuList) { - purchaseProductSku.Id = idGenerator.NewLong(); - purchaseProductSku.CreateTime = DateTime.Now; - purchaseProductSku.SkuPurchaseSchemeId = scheme.Id; + var pss = pssReq.Map(); + pss.Id = idGenerator.NewLong(); + pss.CreateTime = DateTime.Now; + pss.SkuPurchaseSchemeId = schemeId; + addPurchaseSchemeProductSkuList.Add(pss); + defaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); } - addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList); } - addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList); + var psupdate = fsql.Update(schemeId) + .Set(ps => ps.DefaultCost, defaultCost); + updatePurchaseSchemeList.Add(psupdate); } + + //var editPurchaseSchemeList = batchCURDSchemeRequest.EditPurchaseSchemeList.Map>(); + //foreach (var scheme in editPurchaseSchemeList) + //{ + // foreach (var purchaseProduct in scheme.PurchaseSchemeProductList) + // { + // purchaseProduct.Id = idGenerator.NewLong(); + // purchaseProduct.CreateTime = DateTime.Now; + // purchaseProduct.SkuPurchaseSchemeId = scheme.Id; + // foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList) + // { + // purchaseProductSku.Id = idGenerator.NewLong(); + // purchaseProductSku.CreateTime = DateTime.Now; + // purchaseProductSku.SkuPurchaseSchemeId = scheme.Id; + // } + // addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList); + // } + // addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList); + //} } #endregion @@ -150,7 +184,11 @@ namespace BBWYB.Server.Business fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); if (addPurchaseSchemeProductSkuList.Count > 0) fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); - + if (updatePurchaseSchemeList.Count() > 0) + { + foreach (var update in updatePurchaseSchemeList) + update.ExecuteAffrows(); + } }); } @@ -284,49 +322,40 @@ namespace BBWYB.Server.Business return purchaseSchemeList; } + public IList GetPurchaseSchemeCountList(QuerySchemeCountRequest request) + { + var list = fsql.Select().Where(ps => ps.ShopId == request.ShopId && + request.SkuIdList.Contains(ps.SkuId)) + .GroupBy(ps => ps.SkuId) + .ToList(g => new PurchaseSchemeCountResponse() + { + SkuId = g.Key, + SchemeCount = g.Count() + }); + return list; + } + public IList RefreshPurchaseScheme(RefreshSchemeRequest request) { var purchaseSchemeList = GetPurchaseSchemeList(new QuerySchemeRequest() { - SchemeIdList = request.SchemeIdList + SchemeIdList = request.SchemeIdList, + IncludePurchaseSkuBasicInfo = 1 }); List> updatePurchaseSchemeList = new List>(); - foreach (var purchaseScheme in purchaseSchemeList) + foreach (var ps in purchaseSchemeList) { - var amount = 0M; - var purchasePlatformGroups = purchaseScheme.PurchaseSchemeProductList.GroupBy(p => p.PurchasePlatform); - foreach (var purchasePlatformGroup in purchasePlatformGroups) + var defaultCost = 0M; + foreach (var psp in ps.PurchaseSchemeProductList) { - var purchaseProductIds = purchasePlatformGroup.Select(p => p.PurchaseProductId).ToArray(); - var purchaseSkuIds = new List(); - foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) - { - purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); - } - var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() - { - FirstApiMode = Enums.PurchaseProductAPIMode.Spider, - PriceMode = Enums.PurchaseOrderMode.批发, - Params = new List() + foreach (var pss in psp.PurchaseSchemeProductSkuList) { - new BatchPurchaseSkuBasicInfoParamRequest() - { - Platform = purchasePlatformGroup.Key.Value, - PurchaseProductIds = purchaseProductIds, - PurchaseSkuIds = purchaseSkuIds - } + defaultCost += ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1); } - }); - amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); } - - if (purchaseScheme.RealCost != amount || - purchaseScheme.DefaultCost != amount) + if (ps.DefaultCost != defaultCost) { - purchaseScheme.RealCost = amount; - purchaseScheme.DefaultCost = amount; - var update = fsql.Update(purchaseScheme.Id).Set(p => p.RealCost, amount) - .Set(p => p.DefaultCost, amount); + var update = fsql.Update(ps.Id).Set(p => p.DefaultCost, defaultCost); updatePurchaseSchemeList.Add(update); } } @@ -440,15 +469,20 @@ namespace BBWYB.Server.Business return list; } - public void EditPurchaseRatio(EditPurchaseRatioRequest request) - { - if (request.Ratio < 1) - request.Ratio = 1; - fsql.Update().Set(pss => pss.PurchaseRatio, request.Ratio) - .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId && - pss.SkuId == request.SkuId && - pss.PurchaseSkuId == request.PurchaseSkuId) - .ExecuteAffrows(); - } + //public void EditPurchaseRatio(EditPurchaseRatioAndActualPriceRequest request) + //{ + // if (request.Ratio < 1) + // request.Ratio = 1; + + + // fsql.Update().Set(pss => pss.PurchaseRatio, request.Ratio) + // .Set(pss => pss.ActualPrice, request.ActualPrice) + // .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId && + // pss.SkuId == request.SkuId && + // pss.PurchaseSkuId == request.PurchaseSkuId) + // .ExecuteAffrows(); + + + //} } } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index 356d97b..7fd4b57 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -26,6 +26,11 @@ namespace BBWYB.Server.Model public decimal DefaultCost { get; set; } = 0.0M; + /// + /// 上次采购成本 + /// + public decimal LastPurchasePriceCost { get; set; } = 0.0M; + [Column(StringLength = 50, IsNullable = false)] public string ProductId { get; set; } @@ -35,12 +40,6 @@ namespace BBWYB.Server.Model //[Column(StringLength = 20)] //public string PurchaserId { get; set; } - /// - /// 采购实际成本 - /// - - public decimal RealCost { get; set; } = 0.0M; - [Column(StringLength = 50, IsNullable = false)] public string SkuId { get; set; } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs index af819ee..8d4a605 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs @@ -50,7 +50,12 @@ namespace BBWYB.Server.Model.Db /// 采购比例 /// [Column(DbType = "int(1)", IsNullable = true)] - public int? PurchaseRatio { get; set; } + public int? PurchaseRatio { get; set; } = 1; + + /// + /// 实际单价 + /// + public decimal? ActualPrice { get; set; } = 0.00M; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioAndActualPriceRequest.cs similarity index 68% rename from BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs rename to BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioAndActualPriceRequest.cs index 0eebc71..a72e569 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioAndActualPriceRequest.cs @@ -1,6 +1,6 @@ namespace BBWYB.Server.Model.Dto { - public class EditPurchaseRatioRequest + public class EditPurchaseRatioAndActualPriceRequest { public long SchemeId { get; set; } @@ -9,5 +9,7 @@ public string PurchaseSkuId { get; set; } public int Ratio { get; set; } + + public decimal ActualPrice { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs index f82c2fb..a5c8f9b 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs @@ -2,6 +2,9 @@ { public class EditPurchaseSchemeRequest: InputPurchaseSchemeRequest { + /// + /// 采购方案Id + /// public long Id { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index e9bf736..e8ea75e 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -2,13 +2,8 @@ { public class InputPurchaseSchemeProductRequest { - /// - /// 店铺商品Id - /// public string ProductId { get; set; } - /// - /// 店铺商品SkuId - /// + public string SkuId { get; set; } /// /// 采购商品Id diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs index 14b9bb5..1a6050a 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs @@ -1,13 +1,10 @@ namespace BBWYB.Server.Model.Dto { public class InputPurchaseSchemeProductSkuRequest - {/// - /// 店铺商品Id - /// + { + public string ProductId { get; set; } - /// - /// 店铺商品Sku - /// + public string SkuId { get; set; } /// /// 采购商品Id @@ -18,7 +15,7 @@ /// public string PurchaseSkuId { get; set; } /// - /// 采购Ske SpecId (1688独有) + /// 采购SpecId (1688独有) /// public string PurchaseSkuSpecId { get; set; } @@ -26,5 +23,15 @@ /// 采购配比 /// public int? PurchaseRatio { get; set; } + + /// + /// 实际单价(人工填写的单价,未填写传0或null) + /// + public decimal? ActualPrice { get; set; } + + /// + /// 默认单价(采购配件基本信息接口里的单价) + /// + public decimal? DefaultPrice { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index bfce735..6a11c88 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -4,40 +4,10 @@ namespace BBWYB.Server.Model.Dto { public class InputPurchaseSchemeRequest { - public string ShopId { get; set; } + public long ShopId { get; set; } public string ProductId { get; set; } public string SkuId { get; set; } - /// - /// 采购默认成本 - /// - public decimal? DefaultCost { get; set; } - /// - /// 采购实际成本 - /// - public decimal? RealCost { get; set; } - ///// - ///// 采购商Id - ///// - //public string PurchaserId { get; set; } - - ///// - ///// 采购商Id - ///// - //public string PurchaserId2 { get; set; } - - ///// - ///// 采购商名称 - ///// - //public string PurchaserName { get; set; } - ///// - ///// 采购商发货地 - ///// - //public string PurchaserLocation { get; set; } - ///// - ///// 采购平台 - ///// - //public Enums.Platform PurchasePlatform { get; set; } = Enums.Platform.阿里巴巴; - + public IList PurchaseSchemeProductList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs new file mode 100644 index 0000000..063f392 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs @@ -0,0 +1,8 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QuerySchemeCountRequest + { + public long? ShopId { get; set; } + public IList SkuIdList { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeCountResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeCountResponse.cs new file mode 100644 index 0000000..746ad2b --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeCountResponse.cs @@ -0,0 +1,9 @@ +namespace BBWYB.Server.Model.Dto +{ + public class PurchaseSchemeCountResponse + { + public string SkuId { get; set; } + + public int SchemeCount { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs index 2b62f1a..e1c617b 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs @@ -12,8 +12,6 @@ namespace BBWYB.Server.Model.Dto //public string PurchaserLocation { get; set; } - public decimal LastPurchasePriceCost { get => RealCost; } - public new List PurchaseSchemeProductList { get; set; } public List PurchaserList { get; set; } From 7d04fba6f352acd51bcae49997ccb158b6901954 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Tue, 22 Aug 2023 12:39:49 +0800 Subject: [PATCH 39/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20spu=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2(=E5=8C=85=E5=90=ABsku)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProductController.cs | 11 +++ .../Product/ProductBusiness.cs | 74 +++++++++++++++++++ BBWYB.Server.Model/BBWYB.Server.Model.csproj | 4 + .../Request/Product/QueryBProductRequest.cs | 8 ++ .../Dto/Response/Product/BProductResponse.cs | 16 ++++ 5 files changed, 113 insertions(+) create mode 100644 BBWYB.Server.Model/Dto/Request/Product/QueryBProductRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs diff --git a/BBWYB.Server.API/Controllers/ProductController.cs b/BBWYB.Server.API/Controllers/ProductController.cs index 9aeec32..8435f26 100644 --- a/BBWYB.Server.API/Controllers/ProductController.cs +++ b/BBWYB.Server.API/Controllers/ProductController.cs @@ -35,6 +35,17 @@ namespace BBWYB.Server.API.Controllers return productBusiness.GetProductSkuList(request); } + /// + /// spu列表查询(包含sku) + /// + /// + /// + [HttpPost] + public BProductListResponse GetProductAndSkuList([FromBody]QueryBProductRequest request) + { + return productBusiness.GetProductAndSkuList(request); + } + /// /// 查询sku现有售价 /// diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs index d8b6326..f925b39 100644 --- a/BBWYB.Server.Business/Product/ProductBusiness.cs +++ b/BBWYB.Server.Business/Product/ProductBusiness.cs @@ -27,6 +27,80 @@ namespace BBWYB.Server.Business return opPlatformClientFactory.GetClient(request.Platform).GetProductSkuList(request); } + public BProductListResponse GetProductAndSkuList(QueryBProductRequest request) + { + if (string.IsNullOrEmpty(request.Spu) && !string.IsNullOrEmpty(request.Sku)) + { + var skuResponse = GetProductSkuList(new OP_QueryProductSkuRequest() + { + AppSecret = request.AppSecret, + AppKey = request.AppKey, + AppToken = request.AppToken, + PageIndex = 1, + PageSize = 50, + Platform = request.Platform, + Sku = request.Sku, + Spu = request.Spu + }); + if (skuResponse.Count > 0) + { + request.Spu = skuResponse.Items.FirstOrDefault().ProductId; + request.PageIndex = 1; + request.PageSize = 50; + } + } + + var list = new List(); + var spuResponse = GetProductList(new OP_QueryProductRequest() + { + AppSecret = request.AppSecret, + AppKey = request.AppKey, + AppToken = request.AppToken, + PageIndex = request.PageIndex, + PageSize = request.PageSize, + Platform = request.Platform, + Spu = request.Spu + }); + + if (spuResponse.Items.Count() > 0) + { + foreach (var op_product in spuResponse.Items) + { + var bproduct = new BProductResponse() + { + Id = op_product.Id, + BrandName = op_product.BrandName, + CreateTime = op_product.CreateTime, + Logo = op_product.Logo, + ProductItemNum = op_product.ProductItemNum, + State = op_product.State, + Title = op_product.Title + }; + list.Add(bproduct); + var skuResponse = GetProductSkuList(new OP_QueryProductSkuRequest + { + AppSecret = request.AppSecret, + AppKey = request.AppKey, + AppToken = request.AppToken, + PageIndex = 1, + PageSize = 50, + Platform = request.Platform, + Spu = op_product.Id + }); + if (skuResponse.Count > 0) + { + bproduct.SkuList = skuResponse.Items; + } + } + } + + return new BProductListResponse() + { + Count = spuResponse.Count, + Items = list + }; + } + public decimal? GetProductSkuPrice(QueryProductSkuPriceRequest request) { var response = GetProductSkuList(new OP_QueryProductSkuRequest() diff --git a/BBWYB.Server.Model/BBWYB.Server.Model.csproj b/BBWYB.Server.Model/BBWYB.Server.Model.csproj index 54ecedd..bcfb11f 100644 --- a/BBWYB.Server.Model/BBWYB.Server.Model.csproj +++ b/BBWYB.Server.Model/BBWYB.Server.Model.csproj @@ -16,4 +16,8 @@ + + + + diff --git a/BBWYB.Server.Model/Dto/Request/Product/QueryBProductRequest.cs b/BBWYB.Server.Model/Dto/Request/Product/QueryBProductRequest.cs new file mode 100644 index 0000000..a05a8ee --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Product/QueryBProductRequest.cs @@ -0,0 +1,8 @@ +using SDKAdapter.OperationPlatform.Models; + +namespace BBWYB.Server.Model.Dto +{ + public class QueryBProductRequest: OP_QueryProductSkuRequest + { + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs b/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs new file mode 100644 index 0000000..08342b4 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs @@ -0,0 +1,16 @@ +using SDKAdapter.OperationPlatform.Models; + +namespace BBWYB.Server.Model.Dto +{ + public class BProductResponse : OP_ProductResponse + { + public IList SkuList { get; set; } + } + + public class BProductListResponse + { + public int Count { get; set; } + + public IList Items { get; set; } + } +} From 7a95770d9a7c25e2d44163cbaf59f7cca7d9f695 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Tue, 22 Aug 2023 14:45:14 +0800 Subject: [PATCH 40/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=90=ABsku=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Product/ProductBusiness.cs | 29 +++++++++++++++++-- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 3 +- .../PurchaseScheme/QuerySchemeCountRequest.cs | 1 - .../Dto/Response/Product/BProductResponse.cs | 2 +- .../Response/Product/BProductSkuResponse.cs | 9 ++++++ 5 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs index f925b39..35954b7 100644 --- a/BBWYB.Server.Business/Product/ProductBusiness.cs +++ b/BBWYB.Server.Business/Product/ProductBusiness.cs @@ -2,6 +2,7 @@ using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Dto; +using Microsoft.Extensions.DependencyInjection; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; using Yitter.IdGenerator; @@ -11,10 +12,13 @@ namespace BBWYB.Server.Business public class ProductBusiness : BaseBusiness, IDenpendency { private OP_PlatformClientFactory opPlatformClientFactory; + private Lazy purchaseSchemeBusinessLazy; + private PurchaseSchemeBusiness purchaseSchemeBusiness => purchaseSchemeBusinessLazy.Value; - public ProductBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator) + public ProductBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) { this.opPlatformClientFactory = opPlatformClientFactory; + this.purchaseSchemeBusinessLazy = new Lazy(() => serviceProvider.GetService()); } public OP_ProductListResponse GetProductList(OP_QueryProductRequest request) @@ -62,6 +66,7 @@ namespace BBWYB.Server.Business Spu = request.Spu }); + var skuIdList = new List(); if (spuResponse.Items.Count() > 0) { foreach (var op_product in spuResponse.Items) @@ -89,11 +94,31 @@ namespace BBWYB.Server.Business }); if (skuResponse.Count > 0) { - bproduct.SkuList = skuResponse.Items; + bproduct.SkuList = skuResponse.Items.Select(x => new BProductSkuResponse() + { + CreateTime = x.CreateTime, + Id = x.Id, + Logo = x.Logo, + Price = x.Price, + ProductId = x.ProductId, + State = x.State, + Title = x.Title + }).ToList(); + skuIdList.AddRange(skuResponse.Items.Select(s => s.Id)); } } } + var schemeCountRes = purchaseSchemeBusiness.GetPurchaseSchemeCountList(new QuerySchemeCountRequest() + { + SkuIdList = skuIdList + }); + foreach (var bproduct in list) + { + foreach (var bsku in bproduct.SkuList) + bsku.SchemeCount = schemeCountRes.FirstOrDefault(ps => ps.SkuId == bsku.Id)?.SchemeCount ?? 0; + } + return new BProductListResponse() { Count = spuResponse.Count, diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 9477a0c..7acb9a7 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -324,8 +324,7 @@ namespace BBWYB.Server.Business public IList GetPurchaseSchemeCountList(QuerySchemeCountRequest request) { - var list = fsql.Select().Where(ps => ps.ShopId == request.ShopId && - request.SkuIdList.Contains(ps.SkuId)) + var list = fsql.Select().Where(ps => request.SkuIdList.Contains(ps.SkuId)) .GroupBy(ps => ps.SkuId) .ToList(g => new PurchaseSchemeCountResponse() { diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs index 063f392..abcd89c 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs @@ -2,7 +2,6 @@ { public class QuerySchemeCountRequest { - public long? ShopId { get; set; } public IList SkuIdList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs b/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs index 08342b4..c970007 100644 --- a/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs @@ -4,7 +4,7 @@ namespace BBWYB.Server.Model.Dto { public class BProductResponse : OP_ProductResponse { - public IList SkuList { get; set; } + public IList SkuList { get; set; } } public class BProductListResponse diff --git a/BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs new file mode 100644 index 0000000..756e817 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs @@ -0,0 +1,9 @@ +using SDKAdapter.OperationPlatform.Models; + +namespace BBWYB.Server.Model.Dto +{ + public class BProductSkuResponse: OP_ProductSkuResponse + { + public int SchemeCount { get; set; } + } +} From 201f6be79f1a2c257a6dbb901dd4d50f017e12b6 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 23 Aug 2023 15:23:27 +0800 Subject: [PATCH 41/89] =?UTF-8?q?=E5=85=B6=E4=BB=96=E4=BB=93=E4=B8=8D?= =?UTF-8?q?=E5=8C=85=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/OrderStateExtension.cs | 10 +++------- BBWYB.Server.Model/Enums.cs | 4 ++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 9b5c861..eef8e59 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -117,14 +117,10 @@ namespace BBWYB.Server.Business { if (order.OrderState != Enums.OrderState.待核算) order.OrderState = Enums.OrderState.待验收; - //if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2")) - //{ - // order.OrderState = Enums.OrderState.待验收; - // IsNotifyDingDingWhenInStoreOrderFail = true; - //} - //else - // order.OrderState = Enums.OrderState.待核算; + } + else if (order.IntoStoreType == Enums.IntoStoreType.其他仓不包装) + order.OrderState = Enums.OrderState.待核算; return; } #endregion diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index 0c1429f..104bf09 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -300,11 +300,11 @@ } /// - /// 入仓类型 (发回齐越 = 0, 厂商代发入仓 = 1) + /// 入仓类型 (发回齐越 = 0, 厂商代发入仓 = 1,其他仓不包装 = 2) /// public enum IntoStoreType { - 发回齐越 = 0, 厂商代发入仓 = 1 + 发回齐越 = 0, 厂商代发入仓 = 1, 其他仓不包装 = 2 } /// From 36ea8660f1854ec2d71c5905b593fb14ec096760 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 24 Aug 2023 23:10:29 +0800 Subject: [PATCH 42/89] =?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/OrderSyncController.cs | 14 +++++++++++++- BBWYB.Server.Business/Sync/OrderSyncBusiness.cs | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/OrderSyncController.cs b/BBWYB.Server.API/Controllers/OrderSyncController.cs index be68e77..c461613 100644 --- a/BBWYB.Server.API/Controllers/OrderSyncController.cs +++ b/BBWYB.Server.API/Controllers/OrderSyncController.cs @@ -31,5 +31,17 @@ namespace BBWYB.Server.API.Controllers { orderSyncBusiness.ManualOrderSync(shopId, orderId, null, null); } - } + + /// + /// 根据时间同步订单 + /// + /// + /// + /// + [HttpPost] + public void ManualOrderSyncByTime([FromQuery] long shopId, [FromQuery] DateTime startTime, [FromQuery] DateTime endTime) + { + orderSyncBusiness.ManualOrderSync(shopId, startTime, endTime); + } + } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 711c33e..9cf75d4 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -43,6 +43,22 @@ namespace BBWYB.Server.Business.Sync Task.Factory.StartNew(() => Sync(shop, orderId, startTime, endTime, AdapterEnums.SortTimeField.Modify, AdapterEnums.SortType.Desc), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler); } + public void ManualOrderSync(long shopId, DateTime startTime, DateTime endTime) + { + var shop = venderBusiness.GetShopList(shopId, platform: Enums.Platform.拳探).FirstOrDefault(); + if (shop == null) + throw new BusinessException($"未找到店铺Id {shopId}"); + while (true) + { + var s = startTime; + var e = s.AddHours(3); + Sync(shop, string.Empty, s, e, AdapterEnums.SortTimeField.Modify, AdapterEnums.SortType.Desc); + if (e >= endTime) + break; + startTime = startTime.AddHours(3); + } + } + private void Sync(ShopResponse shop, string orderId, DateTime? startTime, From e3fba1a56b2f647138e8d701d426a2cd79f912d3 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Fri, 25 Aug 2023 13:10:51 +0800 Subject: [PATCH 43/89] =?UTF-8?q?=E4=B8=B9=E9=B8=9F=E7=89=A9=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDKAdapter/ExpressCompanyNameConverter.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SDKAdapter/ExpressCompanyNameConverter.cs b/SDKAdapter/ExpressCompanyNameConverter.cs index 7ea24ce..9ae4333 100644 --- a/SDKAdapter/ExpressCompanyNameConverter.cs +++ b/SDKAdapter/ExpressCompanyNameConverter.cs @@ -127,7 +127,9 @@ namespace SDKAdapter new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"}, new LogisticsCompanyRelationship(){SourceName="速腾快递",TargetName="速腾快递",TargetCode="suteng"}, new LogisticsCompanyRelationship(){SourceName="运通快运",TargetName="运通快运",TargetCode="ytky168"}, - new LogisticsCompanyRelationship(){SourceName="汇森速运",TargetName="汇森速运",TargetCode="huisenky"} + new LogisticsCompanyRelationship(){SourceName="汇森速运",TargetName="汇森速运",TargetCode="huisenky"}, + new LogisticsCompanyRelationship(){SourceName="丹鸟物流",TargetName="丹鸟物流",TargetCode="danniao"}, + new LogisticsCompanyRelationship(){SourceName="丹鸟",TargetName="丹鸟物流",TargetCode="danniao"} }); } From 234786094e70146c89be8e28cc62c44525f8141d Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Fri, 25 Aug 2023 17:13:46 +0800 Subject: [PATCH 44/89] =?UTF-8?q?=E5=90=8C=E4=BD=8D=E8=A1=A5=E9=BD=90?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 12 ++- .../DataRepair/DataRepairBusiness.cs | 75 ++++++++++++++++--- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 2 +- .../Db/PurchaseScheme/PurchaseScheme.cs | 21 +++++- .../Db/PurchaseScheme/PurchaseSchemeGroup.cs | 45 +++++++++++ 5 files changed, 137 insertions(+), 18 deletions(-) create mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/PurchaseSchemeGroup.cs diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 7588b57..fa223f4 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -34,16 +34,20 @@ namespace BBWYB.Server.API.Controllers dataRepairBusiness.SupplementOrderSkuCost(); } + [HttpPost] - public void PingJia() + public void SupplementPurchaserInfo() { - dataRepairBusiness.PingJia(); + dataRepairBusiness.SupplementPurchaserInfo(); } + /// + /// 补采购方案分组 + /// [HttpPost] - public void SupplementPurchaserInfo() + public void SupplementPurchaseSchemeGroup() { - dataRepairBusiness.SupplementPurchaserInfo(); + dataRepairBusiness.SupplementPurchaseSchemeGroup(); } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index ec73edd..e744102 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -27,17 +27,6 @@ namespace BBWYB.Server.Business kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } - public void PingJia() - { - - var list = new List() - { - - }; - foreach (var pid in list) - purchaseOrderBusiness.OnSomeOnePurchaseOrderChanged(pid, false); - } - public void SupplementOrderSkuCost() { @@ -148,5 +137,69 @@ namespace BBWYB.Server.Business }); } } + + public void SupplementPurchaseSchemeGroup() + { + List insertSchemeGroups = new List(); + IList> updatePurchaseSchemeList = new List>(); + + var purchaseSchemeList = fsql.Select().ToList().OrderByDescending(ps => ps.CreateTime); + var purchaseSchemeSpuGroups = purchaseSchemeList.GroupBy(ps => ps.ProductId); + foreach (var purchaseSchemeSpuGroup in purchaseSchemeSpuGroups) + { + var purchaseSchemeSkuGroups = purchaseSchemeSpuGroup.GroupBy(ps => ps.SkuId); + var maxPsGroupCount = purchaseSchemeSkuGroups.Max(g => g.Count()); //该spu最大的采购分组数 + + for (var i = 0; i < maxPsGroupCount; i++) + { + IList currentIndexSchemeList = new List(); + //取每个sku的第i个方案 + foreach (var purchaseSchemeSkuGroup in purchaseSchemeSkuGroups) + { + var currentSkuPurchaseSchemeList = purchaseSchemeSkuGroup.ToList(); + + if (currentSkuPurchaseSchemeList.Count() >= (i + 1)) + { + var scheme = currentSkuPurchaseSchemeList[i]; + currentIndexSchemeList.Add(scheme); + } + } + var schemeGroupId = currentIndexSchemeList.FirstOrDefault(ps => ps.SchemeGroupId != null)?.SchemeGroupId; + if (schemeGroupId == null) + { + schemeGroupId = idGenerator.NewLong(); + //同位中没有分组 + var insertSchemeGroup = new PurchaseSchemeGroup() + { + Id = schemeGroupId.Value, + GroupName = schemeGroupId.Value.ToString(), + CreateTime = DateTime.Now, + ProductId = currentIndexSchemeList.First().ProductId, + ShopId = currentIndexSchemeList.First().ShopId + }; + insertSchemeGroups.Add(insertSchemeGroup); + } + foreach (var purchaseScheme in currentIndexSchemeList) + { + if (purchaseScheme.SchemeGroupId != schemeGroupId) + { + var update = fsql.Update(purchaseScheme.Id).Set(ps => ps.SchemeGroupId, schemeGroupId); + updatePurchaseSchemeList.Add(update); + } + } + } + } + + fsql.Transaction(() => + { + if (insertSchemeGroups.Count() > 0) + fsql.Insert(insertSchemeGroups).ExecuteAffrows(); + if (updatePurchaseSchemeList.Count() > 0) + { + foreach (var update in updatePurchaseSchemeList) + update.ExecuteAffrows(); + } + }); + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 7acb9a7..92d592f 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -219,7 +219,7 @@ namespace BBWYB.Server.Business } } var sql = select.ToSql(); - var purchaseSchemeList = select.ToList(); + var purchaseSchemeList = select.OrderByDescending(ps => ps.CreateTime).ToList(); if (purchaseSchemeList.Count > 0) diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index 7fd4b57..2da1ef0 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -1,6 +1,8 @@ using BBWYB.Server.Model.Db; using FreeSql.DataAnnotations; +using Newtonsoft.Json; + namespace BBWYB.Server.Model { @@ -50,8 +52,23 @@ namespace BBWYB.Server.Model /// public DateTime? LastPurchaseTime { get; set; } - //[Column(MapType = typeof(int), DbType = "int(1)")] - //public Enums.Platform PurchasePlatform { get; set; } + /// + /// 慧眼标的Id + /// + [Column(StringLength = 50)] + public string HYBDId { get; set; } + + /// + /// 慧眼方案Id + /// + [Column(StringLength = 50)] + public string HYSchemeId { get; set; } + + /// + /// 分组Id + /// + [Column(DbType = "bigint", IsNullable = true)] + public long? SchemeGroupId { get; set; } [Column(IsIgnore = true)] public List PurchaseSchemeProductList { get; set; } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseSchemeGroup.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseSchemeGroup.cs new file mode 100644 index 0000000..035efd9 --- /dev/null +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseSchemeGroup.cs @@ -0,0 +1,45 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 采购方案分组表 + /// + [Table(Name = "purchaseschemegroup", DisableSyncStructure = true)] + public partial class PurchaseSchemeGroup + { + + /// + /// 分组Id + /// + [Column(DbType = "bigint", IsPrimary = true)] + public long Id { get; set; } + + /// + /// 创建时间 + /// + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 组名 + /// + [Column(StringLength = 100)] + public string GroupName { get; set; } + + /// + /// 店铺spu,店铺商品Id + /// + [Column(StringLength = 50)] + public string ProductId { get; set; } + + /// + /// 店铺Id + /// + [Column(DbType = "bigint")] + public long? ShopId { get; set; } + + } + +} From 53cc41c4497fb8c5fcb1438a6a13b9f792110d2c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 26 Aug 2023 02:34:51 +0800 Subject: [PATCH 45/89] =?UTF-8?q?=E4=BB=A5=E5=88=86=E7=BB=84=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=E8=BF=94=E5=9B=9E=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 13 ++- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 88 ++++++++++++------- .../Db/PurchaseScheme/PurchaseScheme.cs | 4 +- .../QuerySchemeAndGroupRequest.cs | 20 +++++ .../PurchaseScheme/QuerySchemeRequest.cs | 22 ++++- .../PurchaseScheme/RefreshSchemeRequest.cs | 2 +- .../PurchaseSchemeGroupResponse.cs | 9 ++ 7 files changed, 119 insertions(+), 39 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeAndGroupRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeGroupResponse.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index debd730..7e71b1b 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -1,5 +1,4 @@ using BBWYB.Server.Business; -using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; @@ -38,6 +37,17 @@ namespace BBWYB.Server.API.Controllers return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest); } + /// + /// 获取采购分组和采购方案 + /// + /// + /// + [HttpPost] + public IList GetPurchaseSchemeAndGroupList(QuerySchemeAndGroupRequest request) + { + return purchaseSchemeBusiness.GetPurchaseSchemeAndGroupList(request); + } + /// /// 获取Sku采购方案数量 /// @@ -49,6 +59,7 @@ namespace BBWYB.Server.API.Controllers return purchaseSchemeBusiness.GetPurchaseSchemeCountList(request); } + ///// ///// 删除采购商 ///// diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 92d592f..2654983 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -199,24 +199,46 @@ namespace BBWYB.Server.Business /// public IList GetPurchaseSchemeList(QuerySchemeRequest request) { - var select = fsql.Select(); - if (request.SchemeId != null && request.SchemeId != 0) - select = select.Where(ps => ps.Id == request.SchemeId); + #region 处理条件优先级 + if (request.SchemeId != null) + { + request.SchemeIdList?.Clear(); + request.SchemeGroupIdList?.Clear(); + request.SkuIdList?.Clear(); + request.ProductIdList?.Clear(); + } else if (request.SchemeIdList != null && request.SchemeIdList.Count() > 0) - select = select.Where(ps => request.SchemeIdList.Contains(ps.Id)); - else { - select = select.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId) - .WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId)); + request.SchemeGroupIdList?.Clear(); + request.SkuIdList?.Clear(); + request.ProductIdList?.Clear(); + } + else if (request.SchemeGroupIdList != null && request.SchemeGroupIdList.Count() > 0) + { + request.SkuIdList?.Clear(); + request.ProductIdList?.Clear(); + } + else if (request.SkuIdList != null && request.SkuIdList.Count() > 0) + { + request.ProductIdList?.Clear(); + } + #endregion - if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId)) - { - select = select.Where(ps => fsql.Select() - .InnerJoin((psp, p) => psp.PurchaserId == p.Id) - .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) - .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) - .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); - } + var select = fsql.Select() + .WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId) + .WhereIf(request.SchemeId != null && request.SchemeId != 0, ps => ps.Id == request.SchemeId) + .WhereIf(request.SchemeIdList != null && request.SchemeIdList.Count() > 0, ps => request.SchemeIdList.Contains(ps.Id)) + .WhereIf(request.SchemeGroupIdList != null && request.SchemeGroupIdList.Count() > 0, ps => request.SchemeGroupIdList.Contains(ps.SchemeGroupId)) + .WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId)) + .WhereIf(request.ProductIdList != null && request.ProductIdList.Count() > 0, ps => request.ProductIdList.Contains(ps.ProductId)); + + if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId)) + { + select = select.Where(ps => fsql.Select() + .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) + .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) + .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); } var sql = select.ToSql(); var purchaseSchemeList = select.OrderByDescending(ps => ps.CreateTime).ToList(); @@ -322,6 +344,26 @@ namespace BBWYB.Server.Business return purchaseSchemeList; } + public IList GetPurchaseSchemeAndGroupList(QuerySchemeAndGroupRequest request) + { + var purchaseSchemeGroupsList = fsql.Select() + .Where(psg => psg.ShopId == request.ShopId && + request.ProductIdList.Contains(psg.ProductId)) + .ToList(); + if (purchaseSchemeGroupsList.Count() > 0) + { + var groupIds = purchaseSchemeGroupsList.Select(g => g.Id).ToList(); + var purchaseSchemeList = GetPurchaseSchemeList(new QuerySchemeRequest() + { + IncludePurchaseSkuBasicInfo = request.IncludePurchaseSkuBasicInfo, + SchemeGroupIdList = groupIds + }); + foreach (var psg in purchaseSchemeGroupsList) + psg.PurchaseSchemeList = purchaseSchemeList.Where(ps => ps.SchemeGroupId == psg.Id).ToList(); + } + return purchaseSchemeGroupsList; + } + public IList GetPurchaseSchemeCountList(QuerySchemeCountRequest request) { var list = fsql.Select().Where(ps => request.SkuIdList.Contains(ps.SkuId)) @@ -467,21 +509,5 @@ namespace BBWYB.Server.Business } return list; } - - //public void EditPurchaseRatio(EditPurchaseRatioAndActualPriceRequest request) - //{ - // if (request.Ratio < 1) - // request.Ratio = 1; - - - // fsql.Update().Set(pss => pss.PurchaseRatio, request.Ratio) - // .Set(pss => pss.ActualPrice, request.ActualPrice) - // .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId && - // pss.SkuId == request.SkuId && - // pss.PurchaseSkuId == request.PurchaseSkuId) - // .ExecuteAffrows(); - - - //} } } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index 2da1ef0..4b9e582 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -67,8 +67,8 @@ namespace BBWYB.Server.Model /// /// 分组Id /// - [Column(DbType = "bigint", IsNullable = true)] - public long? SchemeGroupId { get; set; } + [Column(DbType = "bigint")] + public long SchemeGroupId { get; set; } = 0; [Column(IsIgnore = true)] public List PurchaseSchemeProductList { get; set; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeAndGroupRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeAndGroupRequest.cs new file mode 100644 index 0000000..1f7cfa4 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeAndGroupRequest.cs @@ -0,0 +1,20 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QuerySchemeAndGroupRequest + { + /// + /// 店铺Id + /// + public long ShopId { get; set; } + + /// + /// 店铺商品Id列表 + /// + public IList ProductIdList { get; set; } + + /// + /// 是否包含采购配件的基本信息(单价,Logo,标题等) 是=1 否=0或null + /// + public int? IncludePurchaseSkuBasicInfo { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 0c2c4f1..04d8b45 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -5,18 +5,32 @@ namespace BBWYB.Server.Model.Dto public class QuerySchemeRequest { /// - /// 采购方案Id + /// 采购方案Id,有值则忽略SchemeIdList,SchemeGroupIdList,SkuIdList,ProductIdList /// public long? SchemeId { get; set; } /// - /// 采购方案Id集合 + /// 采购方案Id集合,有值则忽略SchemeGroupIdList,SkuIdList,ProductIdList /// - public IList SchemeIdList { get; set; } + public List SchemeIdList { get; set; } + + /// + /// 采购方案分组Id集合,有值则忽略SkuIdList,ProductIdList + /// + public List SchemeGroupIdList { get; set; } + + /// + /// skuId集合,有值则忽略ProductIdList + /// + public List SkuIdList { get; set; } + + /// + /// spuId集合,有值则忽略 + /// + public List ProductIdList { get; set; } public long? ShopId { get; set; } - public IList SkuIdList { get; set; } /// /// 采购商Id, 只要其中一个采购商品满足采购商条件则命中查询 diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/RefreshSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/RefreshSchemeRequest.cs index a4f0a20..d755cee 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/RefreshSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/RefreshSchemeRequest.cs @@ -2,6 +2,6 @@ { public class RefreshSchemeRequest { - public IList SchemeIdList { get; set; } + public List SchemeIdList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeGroupResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeGroupResponse.cs new file mode 100644 index 0000000..5229648 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeGroupResponse.cs @@ -0,0 +1,9 @@ +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto +{ + public class PurchaseSchemeGroupResponse : PurchaseSchemeGroup + { + public IList PurchaseSchemeList { get; set; } + } +} From 0288470b0a2148f3abd17197f0be57650f9e0e29 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 27 Aug 2023 01:02:33 +0800 Subject: [PATCH 46/89] =?UTF-8?q?=E4=BB=A5=E5=88=86=E7=BB=84=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=E8=BF=94=E5=9B=9E=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=88=97=E8=A1=A8,=20=E6=8C=89sku=E9=87=87=E8=B4=AD=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E5=90=8C=E4=BD=8D=E9=A1=BA=E5=BA=8F=E8=A1=A5=E9=BD=90?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataRepair/DataRepairBusiness.cs | 46 +++++-- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 124 ++++++++++++++++++ .../PurchaseScheme/BatchCURDSchemeRequest.cs | 2 + 3 files changed, 162 insertions(+), 10 deletions(-) diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index e744102..b86169e 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -141,17 +141,19 @@ namespace BBWYB.Server.Business public void SupplementPurchaseSchemeGroup() { List insertSchemeGroups = new List(); - IList> updatePurchaseSchemeList = new List>(); + Queue> updatePurchaseSchemeQueue = new Queue>(); - var purchaseSchemeList = fsql.Select().ToList().OrderByDescending(ps => ps.CreateTime); + var purchaseSchemeList = fsql.Select().OrderBy(ps => ps.Id).ToList(); var purchaseSchemeSpuGroups = purchaseSchemeList.GroupBy(ps => ps.ProductId); foreach (var purchaseSchemeSpuGroup in purchaseSchemeSpuGroups) { + Console.WriteLine($"正在处理spu {purchaseSchemeSpuGroup.Key}"); var purchaseSchemeSkuGroups = purchaseSchemeSpuGroup.GroupBy(ps => ps.SkuId); var maxPsGroupCount = purchaseSchemeSkuGroups.Max(g => g.Count()); //该spu最大的采购分组数 for (var i = 0; i < maxPsGroupCount; i++) { + Console.WriteLine($"正在处理第{i}组"); IList currentIndexSchemeList = new List(); //取每个sku的第i个方案 foreach (var purchaseSchemeSkuGroup in purchaseSchemeSkuGroups) @@ -165,14 +167,15 @@ namespace BBWYB.Server.Business } } var schemeGroupId = currentIndexSchemeList.FirstOrDefault(ps => ps.SchemeGroupId != null)?.SchemeGroupId; - if (schemeGroupId == null) + if (schemeGroupId == null || schemeGroupId == 0) { schemeGroupId = idGenerator.NewLong(); //同位中没有分组 var insertSchemeGroup = new PurchaseSchemeGroup() { Id = schemeGroupId.Value, - GroupName = schemeGroupId.Value.ToString(), + //GroupName = schemeGroupId.Value.ToString(), + GroupName = $"{purchaseSchemeSpuGroup.Key}_第{i + 1}组", CreateTime = DateTime.Now, ProductId = currentIndexSchemeList.First().ProductId, ShopId = currentIndexSchemeList.First().ShopId @@ -184,22 +187,45 @@ namespace BBWYB.Server.Business if (purchaseScheme.SchemeGroupId != schemeGroupId) { var update = fsql.Update(purchaseScheme.Id).Set(ps => ps.SchemeGroupId, schemeGroupId); - updatePurchaseSchemeList.Add(update); + updatePurchaseSchemeQueue.Enqueue(update); } } } } - + Console.WriteLine("数据库处理中"); fsql.Transaction(() => { if (insertSchemeGroups.Count() > 0) fsql.Insert(insertSchemeGroups).ExecuteAffrows(); - if (updatePurchaseSchemeList.Count() > 0) + }); + + var updatePurchaseSchemeList = new List>(); + while (true) + { + if (updatePurchaseSchemeQueue.TryDequeue(out var update)) + updatePurchaseSchemeList.Add(update); + else + break; + if (updatePurchaseSchemeList.Count() == 10) { - foreach (var update in updatePurchaseSchemeList) - update.ExecuteAffrows(); + Console.WriteLine($"执行数据库 {DateTime.Now}"); + fsql.Transaction(() => + { + foreach (var _update in updatePurchaseSchemeList) + _update.ExecuteAffrows(); + }); + updatePurchaseSchemeList.Clear(); } - }); + } + if (updatePurchaseSchemeList.Count() > 0) + { + Console.WriteLine($"最后执行数据库 {DateTime.Now}"); + fsql.Transaction(() => + { + foreach (var _update in updatePurchaseSchemeList) + _update.ExecuteAffrows(); + }); + } } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 2654983..d31a373 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -192,6 +192,130 @@ namespace BBWYB.Server.Business }); } + public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest) + { + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && + batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) + throw new BusinessException("非法参数"); + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) + throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) + throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0 && batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) + throw new BusinessException("编辑方案中采购方案缺少Id"); + + List addPurchaseSchemeList = new List(); + List addPurchaseSchemeProductList = new List(); + List addPurchaseSchemeProductSkuList = new List(); + List newPurchaserList = new List(); + List deletePurchaseSchemeIdList = new List(); + List> updatePurchaseSchemeList = new List>(); + + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) + { + ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); + + foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) + { + var ps = new PurchaseScheme() + { + CreateTime = DateTime.Now, + Id = idGenerator.NewLong(), + ProductId = psReq.ProductId, + SkuId = psReq.SkuId, + ShopId = psReq.ShopId + }; + addPurchaseSchemeList.Add(ps); + foreach (var pspReq in psReq.PurchaseSchemeProductList) + { + var psp = pspReq.Map(); + psp.Id = idGenerator.NewLong(); + psp.CreateTime = DateTime.Now; + psp.SkuPurchaseSchemeId = ps.Id; + addPurchaseSchemeProductList.Add(psp); + + foreach (var pssReq in pspReq.PurchaseSchemeProductSkuList) + { + var pss = pssReq.Map(); + pss.Id = idGenerator.NewLong(); + pss.CreateTime = DateTime.Now; + pss.SkuPurchaseSchemeId = ps.Id; + addPurchaseSchemeProductSkuList.Add(pss); + ps.DefaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); + } + } + } + } + + #region 更新采购方案 + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) + { + deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); + foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) + { + var schemeId = psReq.Id; + var defaultCost = 0M; + foreach (var pspReq in psReq.PurchaseSchemeProductList) + { + var psp = pspReq.Map(); + psp.Id = idGenerator.NewLong(); + psp.CreateTime = DateTime.Now; + psp.SkuPurchaseSchemeId = schemeId; + addPurchaseSchemeProductList.Add(psp); + + foreach (var pssReq in pspReq.PurchaseSchemeProductSkuList) + { + var pss = pssReq.Map(); + pss.Id = idGenerator.NewLong(); + pss.CreateTime = DateTime.Now; + pss.SkuPurchaseSchemeId = schemeId; + addPurchaseSchemeProductSkuList.Add(pss); + defaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); + } + } + var psupdate = fsql.Update(schemeId) + .Set(ps => ps.DefaultCost, defaultCost); + updatePurchaseSchemeList.Add(psupdate); + } + } + #endregion + + foreach (var purchaseProductSku in addPurchaseSchemeProductSkuList) + { + if (purchaseProductSku.PurchaseRatio == null) + purchaseProductSku.PurchaseRatio = 1; + } + + fsql.Transaction(() => + { + if (newPurchaserList.Count > 0) + fsql.Insert(newPurchaserList).ExecuteAffrows(); + + //更新,删除已存在的采购方案商品和Sku + if (deletePurchaseSchemeIdList.Count > 0) + { + fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); + fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); + } + + //新增 + if (addPurchaseSchemeList != null && addPurchaseSchemeList.Count > 0) + fsql.Insert(addPurchaseSchemeList).ExecuteAffrows(); + if (addPurchaseSchemeProductList.Count > 0) + fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); + if (addPurchaseSchemeProductSkuList.Count > 0) + fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); + if (updatePurchaseSchemeList.Count() > 0) + { + foreach (var update in updatePurchaseSchemeList) + update.ExecuteAffrows(); + } + }); + } + /// /// 获取采购方案 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs index 8176ee2..61fba78 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs @@ -13,5 +13,7 @@ namespace BBWYB.Server.Model.Dto /// 需要新增的采购方案 /// public IList AddPurchaseSchemeList { get; set; } + + } } From d702fed21578dde7630b6f41a287b7bd78cfb8e7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 27 Aug 2023 09:43:21 +0800 Subject: [PATCH 47/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B7=BB=E5=8A=A0/?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88(web)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 10 +++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 79 ++++++++++++++++--- .../InputPurchaseSchemeProductRequest.cs | 4 +- .../InputPurchaseSchemeRequest.cs | 17 +++- 4 files changed, 95 insertions(+), 15 deletions(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 7e71b1b..28285a9 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -26,6 +26,16 @@ namespace BBWYB.Server.API.Controllers purchaseSchemeBusiness.EditPurchaseScheme(batchCURDSchemeRequest); } + /// + /// 添加/编辑采购方案(web) + /// + /// + [HttpPost] + public void EditPurchaseSchemeV2([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest) + { + purchaseSchemeBusiness.EditPurchaseSchemeV2(batchCURDSchemeRequest); + } + /// /// 获取采购方案列表 /// diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index d31a373..e08c632 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -194,25 +194,60 @@ namespace BBWYB.Server.Business public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest) { - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && - batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) - throw new BusinessException("非法参数"); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || - string.IsNullOrEmpty(pp.PurchaserName)))) - throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); + List dbSchemeGroupList = null; + List dbPurchaseSchemeList = null; + + #region 数据验证 + if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && + (batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)) + throw new BusinessException("更新方案和新增方案参数不能同时为空"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0) + { + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) + throw new BusinessException("更新方案中有采购商Id/Name/Location为空"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) + throw new BusinessException("更新方案中采购方案缺少Id"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.SchemeGroupId == null || ps.SchemeGroupId == 0)) + throw new BusinessException("更新方案中采购方案缺少分组Id"); + } + + if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0) + { + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) + throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || - string.IsNullOrEmpty(pp.PurchaserName)))) - throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0 && batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) - throw new BusinessException("编辑方案中采购方案缺少Id"); + var productIds = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.ProductId).ToList(); + + dbSchemeGroupList = fsql.Select().Where(psg => productIds.Contains(psg.ProductId)).ToList(); + var dbSchemeGroupIds = dbSchemeGroupList.Select(psg => psg.Id).ToList(); + dbPurchaseSchemeList = fsql.Select().Where(ps => dbSchemeGroupIds.Contains(ps.SchemeGroupId)).ToList(); + foreach (var addPurchaseScheme in batchCURDSchemeRequest.AddPurchaseSchemeList) + { + if (addPurchaseScheme.SchemeGroupId == null || addPurchaseScheme.SchemeGroupId == 0) + continue; + var dbSchemeGroup = dbSchemeGroupList.FirstOrDefault(g => g.Id == addPurchaseScheme.SchemeGroupId); + if (dbSchemeGroup == null) + throw new BusinessException($"新增方案中指定了不存在的分组{addPurchaseScheme.SchemeGroupId}"); + var dbPurchaseSchemeList_sameGroup = dbPurchaseSchemeList.Where(ps => ps.SchemeGroupId == addPurchaseScheme.SchemeGroupId).ToList(); + if (dbPurchaseSchemeList_sameGroup.Any(ps => ps.SkuId == addPurchaseScheme.SkuId)) + throw new BusinessException($"采购方案分组中Sku不允许重复,{dbSchemeGroup.GroupName}已存在{addPurchaseScheme.SkuId}的采购方案"); + } + } + + #endregion List addPurchaseSchemeList = new List(); List addPurchaseSchemeProductList = new List(); List addPurchaseSchemeProductSkuList = new List(); List newPurchaserList = new List(); List deletePurchaseSchemeIdList = new List(); List> updatePurchaseSchemeList = new List>(); + List insertPurchaseSchemeGroupsList = new List(); if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { @@ -220,13 +255,31 @@ namespace BBWYB.Server.Business foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) { + if (psReq.SchemeGroupId == null || psReq.SchemeGroupId == 0) + { + //新增分组 + var saemSpuSchemeGroupList = dbSchemeGroupList.Where(psg => psg.ProductId == psReq.ProductId).ToList(); + var insertSchemeGroup = new PurchaseSchemeGroup() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + GroupName = $"{psReq.ProductId}_第{saemSpuSchemeGroupList.Count() + 1}组", + ProductId = psReq.ProductId, + ShopId = psReq.ShopId + }; + insertPurchaseSchemeGroupsList.Add(insertSchemeGroup); + } + var ps = new PurchaseScheme() { CreateTime = DateTime.Now, Id = idGenerator.NewLong(), ProductId = psReq.ProductId, SkuId = psReq.SkuId, - ShopId = psReq.ShopId + ShopId = psReq.ShopId, + HYBDId = psReq.HYBDId, + HYSchemeId = psReq.HYSchemeId, + SchemeGroupId = psReq.SchemeGroupId ?? 0 }; addPurchaseSchemeList.Add(ps); foreach (var pspReq in psReq.PurchaseSchemeProductList) @@ -308,6 +361,8 @@ namespace BBWYB.Server.Business fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); if (addPurchaseSchemeProductSkuList.Count > 0) fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); + if (insertPurchaseSchemeGroupsList.Count() > 0) + fsql.Insert(insertPurchaseSchemeGroupsList).ExecuteAffrows(); if (updatePurchaseSchemeList.Count() > 0) { foreach (var update in updatePurchaseSchemeList) diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index e8ea75e..141aa17 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -15,12 +15,12 @@ public string PurchaseUrl { get; set; } /// - /// 采购商Id + /// 采购商Id (1688 SellerUserId) /// public string PurchaserId { get; set; } /// - /// 采购商Id + /// 采购商Id2 (1688 SellerLoginId) /// public string PurchaserId2 { get; set; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index 6a11c88..955a6d0 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -4,10 +4,25 @@ namespace BBWYB.Server.Model.Dto { public class InputPurchaseSchemeRequest { + /// + /// 采购方案分组Id,为空将新增分组 + /// + public long? SchemeGroupId { get; set; } + + /// + /// 慧眼标的Id + /// + public string HYBDId { get; set; } + + /// + /// 慧眼方案Id + /// + public string HYSchemeId { get; set; } + public long ShopId { get; set; } public string ProductId { get; set; } public string SkuId { get; set; } - + public IList PurchaseSchemeProductList { get; set; } } } From 7ed0cfceffd5a85cb07c29de750823336aa202b4 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Sun, 27 Aug 2023 21:32:07 +0800 Subject: [PATCH 48/89] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=94=B9=E6=88=90=E4=B8=9A=E5=8A=A1=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OperationPlatform/Client/Impl/OP_QuanTanClient.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index 6e1cf4a..6cd3169 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -1,4 +1,5 @@ using BBWYB.Common.Http; +using BBWYB.Common.Models; using QuanTan.SDK.Client.Supplier; using QuanTan.SDK.Models.Supplier; using SDKAdapter.OperationPlatform.Models; @@ -203,7 +204,7 @@ namespace SDKAdapter.OperationPlatform.Client remark = request.Remark }, request.AppKey, request.AppSecret); if (qtResponse.Status != 200) - throw new Exception(qtResponse.Message); + throw new BusinessException(qtResponse.Message); } public override void EditPrice(OP_EditPriceRequest request) @@ -222,7 +223,7 @@ namespace SDKAdapter.OperationPlatform.Client }, request.AppKey, request.AppSecret); if (qtResponse.Status != 200) - throw new Exception(qtResponse.Message); + throw new BusinessException(qtResponse.Message); } public override void EditProductPrice(OP_EditProductPriceRequest request) @@ -238,7 +239,7 @@ namespace SDKAdapter.OperationPlatform.Client }).ToList() }, request.AppKey, request.AppSecret); if (qtResponse.Status != 200) - throw new Exception(qtResponse.Message); + throw new BusinessException(qtResponse.Message); } } } From 83109829ed3ae744c37fcdc083b830774f690341 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 28 Aug 2023 15:43:01 +0800 Subject: [PATCH 49/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=85=A7=E7=9C=BC?= =?UTF-8?q?=E6=A0=87=E7=9A=84=E6=96=B9=E6=A1=88=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 11 ++ .../PurchaseProductAPIService.cs | 4 +- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 153 +++++++++++++++++- .../Dto/Core/HY/HYPurchaseScheme.cs | 51 ++++++ .../PurchaseScheme/hy/QueryHYSchemeRequest.cs | 17 ++ .../HY/HYPurchaseSchemeResponse.cs | 10 ++ .../PurchaseProductBasicInfoResponse.cs | 4 + .../PurchaseSchemeProductResponse.cs | 10 ++ 8 files changed, 257 insertions(+), 3 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 28285a9..b31afcd 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -143,5 +143,16 @@ namespace BBWYB.Server.API.Controllers //{ // purchaseSchemeBusiness.EditPurchaseRatio(request); //} + + /// + /// 根据慧眼标的Id获取慧眼采购方案(含全部配件基本信息) + /// + /// + /// + [HttpPost] + public IList GetPurchaseSchemeByHYBDId([FromBody]QueryHYSchemeRequest request) + { + return purchaseSchemeBusiness.GetPurchaseSchemeByHYBDId(request); + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index 5549279..c447a9b 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -273,7 +273,9 @@ namespace BBWYB.Server.Business ItemList = list, Purchaser = purchaser, PurchaseProductId = request.PurchaseProductId, - PurchasePlatform = Enums.Platform.阿里巴巴 + PurchasePlatform = Enums.Platform.阿里巴巴, + ProductName = jobject["globalData"]["tempModel"]["offerTitle"]?.ToString(), + ProductLogo = list.FirstOrDefault()?.Logo }; } catch diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index e08c632..6a15dcb 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -1,10 +1,15 @@ using BBWYB.Common.Extensions; +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 MySqlX.XDevAPI; +using Newtonsoft.Json; +using Org.BouncyCastle.Asn1.X509.Qualified; +using System.Net.Http.Headers; using Yitter.IdGenerator; namespace BBWYB.Server.Business @@ -12,10 +17,16 @@ namespace BBWYB.Server.Business public class PurchaseSchemeBusiness : BaseBusiness, IDenpendency { private PurchaseProductAPIService purchaseProductAPIService; + private RestApiService restApiService; - public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, PurchaseProductAPIService purchaseProductAPIService) : base(fsql, nLogManager, idGenerator) + public PurchaseSchemeBusiness(IFreeSql fsql, + NLogManager nLogManager, + IIdGenerator idGenerator, + PurchaseProductAPIService purchaseProductAPIService, + RestApiService restApiService) : base(fsql, nLogManager, idGenerator) { this.purchaseProductAPIService = purchaseProductAPIService; + this.restApiService = restApiService; } private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest @@ -204,6 +215,16 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0) { + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) || + string.IsNullOrEmpty(ps.SkuId) || + ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) || + string.IsNullOrEmpty(psp.SkuId) || + psp.PurchaseSchemeProductSkuList.Any(pss => string.IsNullOrEmpty(pss.ProductId) || + string.IsNullOrEmpty(pss.SkuId))))) + { + throw new BusinessException("更新方案缺少ProductId/SkuId"); + } + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("更新方案中有采购商Id/Name/Location为空"); @@ -217,6 +238,16 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0) { + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) || + string.IsNullOrEmpty(ps.SkuId) || + ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) || + string.IsNullOrEmpty(psp.SkuId) || + psp.PurchaseSchemeProductSkuList.Any(pss => string.IsNullOrEmpty(pss.ProductId) || + string.IsNullOrEmpty(pss.SkuId))))) + { + throw new BusinessException("新增方案缺少ProductId/SkuId"); + } + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); @@ -237,6 +268,11 @@ namespace BBWYB.Server.Business var dbPurchaseSchemeList_sameGroup = dbPurchaseSchemeList.Where(ps => ps.SchemeGroupId == addPurchaseScheme.SchemeGroupId).ToList(); if (dbPurchaseSchemeList_sameGroup.Any(ps => ps.SkuId == addPurchaseScheme.SkuId)) throw new BusinessException($"采购方案分组中Sku不允许重复,{dbSchemeGroup.GroupName}已存在{addPurchaseScheme.SkuId}的采购方案"); + if (!string.IsNullOrEmpty(addPurchaseScheme.HYSchemeId)) + { + if (dbPurchaseSchemeList.Any(ps => ps.HYSchemeId == addPurchaseScheme.HYSchemeId)) + throw new BusinessException($"慧眼方案Id{addPurchaseScheme.HYSchemeId}已被其他采购方案使用"); + } } } @@ -419,7 +455,7 @@ namespace BBWYB.Server.Business .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); } - var sql = select.ToSql(); + //var sql = select.ToSql(); var purchaseSchemeList = select.OrderByDescending(ps => ps.CreateTime).ToList(); @@ -499,6 +535,9 @@ namespace BBWYB.Server.Business }); if (basicInfo != null) { + schemeProduct.PurchaseProductLogo = basicInfo.ProductLogo; + schemeProduct.PurchaseProductName = basicInfo.ProductName; + foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) { var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId); @@ -688,5 +727,115 @@ namespace BBWYB.Server.Business } return list; } + + /// + /// 根据慧眼标的Id获取采购方案(含全部配件基本信息) + /// + /// + /// + /// + public IList GetPurchaseSchemeByHYBDId(QueryHYSchemeRequest request) + { + if (request.ShopId == 0) + throw new BusinessException("缺少店铺Id"); + if (string.IsNullOrEmpty(request.ProductId)) + throw new BusinessException("缺少商品Id"); + if (string.IsNullOrEmpty(request.HYBDId)) + throw new BusinessException("缺少标的Id"); + + var hyHttpResult = restApiService.SendRequest("http://hyapi.qiyue666.com", "/HuiYan/ItemPlan/GetPlanByOrderId", $"orderId={request.HYBDId}", null, HttpMethod.Get); + if (hyHttpResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new BusinessException(hyHttpResult.Content); + var hyResponse = JsonConvert.DeserializeObject>>(hyHttpResult.Content); + if (!hyResponse.Success) + throw new BusinessException(hyResponse.Msg); + if (hyResponse.Data == null || hyResponse.Data.Count() == 0) + throw new BusinessException("该标的Id缺少采购方案"); + var hySchemeList = hyResponse.Data; + var hySchemeIdList = hySchemeList.Select(x => x.Id.ToString()).ToList(); + var dbSchemeList = fsql.Select().Where(ps => ps.ProductId == request.ProductId && + !string.IsNullOrEmpty(ps.HYSchemeId) && + hySchemeIdList.Contains(ps.HYSchemeId)).ToList(); + + var resultList = new List(); + foreach (var hyScheme in hySchemeList) + { + if (hyScheme.PlanItems == null || hyScheme.PlanItems.Count() == 0) + continue; + + var hySchemeResponse = new HYPurchaseSchemeResponse() + { + Id = 0, + CreateTime = DateTime.Now, + HYBDId = request.HYBDId, + IsAdded = dbSchemeList.Any(ps => ps.HYBDId == request.HYBDId && ps.HYSchemeId == hyScheme.Id.ToString()), + HYSchemeId = hyScheme.Id.ToString(), + ProductId = request.ProductId, + ShopId = request.ShopId + }; + resultList.Add(hySchemeResponse); + + foreach (var hySchemeProduct in hyScheme.PlanItems) + { + var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() + { + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + PriceMode = Enums.PurchaseOrderMode.批发, + Platform = Enums.Platform.阿里巴巴, + PurchaseProductId = hySchemeProduct.ItemId + }); + + var hySchemeProductResponse = new PurchaseSchemeProductResponse() + { + Id = 0, + ProductId = request.ProductId, + PurchasePlatform = Enums.Platform.阿里巴巴, + PurchaseProductId = hySchemeProduct.ItemId, + PurchaseProductLogo = basicInfo.ProductLogo, + PurchaseProductName = basicInfo.ProductName, + PurchaserId = basicInfo.Purchaser?.Id, + PurchaserId2 = basicInfo.Purchaser?.Id2, + PurchaserMemberId = basicInfo.Purchaser?.MemberId, + PurchaserLocation = basicInfo.Purchaser?.Location, + PurchaserName = basicInfo.Purchaser?.Name, + PurchaseUrl = $"https://detail.1688.com/offer/{hySchemeProduct.ItemId}.html" + }; + hySchemeResponse.PurchaseSchemeProductList.Add(hySchemeProductResponse); + + if (!hySchemeResponse.PurchaserList.Any(p => p.Id == hySchemeProductResponse.PurchaserId)) + { + hySchemeResponse.PurchaserList.Add(new Purchaser() + { + Id = hySchemeProductResponse.PurchaserId, + Id2 = hySchemeProductResponse.PurchaserId2, + Location = hySchemeProductResponse.PurchaserLocation, + Name = hySchemeProductResponse.PurchaserName, + Platform = hySchemeProductResponse.PurchasePlatform, + MemberId = hySchemeProductResponse.PurchaserMemberId + }); + } + + foreach (var skuBasicInfo in basicInfo.ItemList) + { + var hySchemeProductSkuResponse = new PurchaseSchemeProductSkuResponse() + { + Id = 0, + ActualPrice = skuBasicInfo.Price, + ProductId = request.ProductId, + PurchaseProductId = skuBasicInfo.PurchaseProductId, + PurchaseRatio = 1, + PurchaseSkuId = skuBasicInfo.PurchaseSkuId, + PurchaseSkuLogo = skuBasicInfo.Logo, + PurchaseSkuPrice = skuBasicInfo.Price, + PurchaseSkuSpecId = skuBasicInfo.PurchaseSkuSpecId, + PurchaseSkuTitle = skuBasicInfo.Title + }; + hySchemeProductResponse.PurchaseSchemeProductSkuList.Add(hySchemeProductSkuResponse); + hySchemeResponse.DefaultCost += skuBasicInfo.Price; + } + } + } + return resultList; + } } } diff --git a/BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs b/BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs new file mode 100644 index 0000000..ed39981 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Core/HY/HYPurchaseScheme.cs @@ -0,0 +1,51 @@ +namespace BBWYB.Server.Model.Dto +{ + public class HYPurchaseScheme + { + /// + /// HY方案Id + /// + public int Id { get; set; } + + public string TeamitemsId { get; set; } + + public string UserId { get; set; } + + /// + /// 配件数量 + /// + public int SkuCount { get; set; } + + public IList PlanItems { get; set; } + } + + public class HYPurchaseSchemeProduct + { + public string Id { get; set; } + + /// + /// 慧眼方案Id + /// + public int SupplierTaskPlanId { get; set; } + + /// + /// Taobao=0 Jd=1 ALBB=2 PDD=3 + /// + public int Platform { get; set; } + + /// + /// 采购商品Id + /// + public string ItemId { get; set; } + } + + public class HYPurchaseSchemeProductSku + { + + } + + public class HYSupplierInfo + { + + } +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs new file mode 100644 index 0000000..ab142fe --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/hy/QueryHYSchemeRequest.cs @@ -0,0 +1,17 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QueryHYSchemeRequest + { + public long ShopId { get; set; } + + /// + /// 店铺商品Id + /// + public string ProductId { get; set; } + + /// + /// 慧眼标的Id + /// + public string HYBDId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs new file mode 100644 index 0000000..8e60df2 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/HY/HYPurchaseSchemeResponse.cs @@ -0,0 +1,10 @@ +namespace BBWYB.Server.Model.Dto +{ + public class HYPurchaseSchemeResponse : PurchaseSchemeResponse + { + /// + /// 是否已经添加到SPU之中 + /// + public bool IsAdded { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs index 336d112..d4bd3ff 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs @@ -11,6 +11,10 @@ namespace BBWYB.Server.Model.Dto public string PurchaseProductId { get; set; } + public string ProductName { get; set; } + + public string ProductLogo { get; set; } + /// /// 采购SKU基础信息列表 /// diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs index affd828..7010514 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs @@ -12,6 +12,16 @@ public string PurchaserMemberId { get; set; } + /// + /// 采购商品标题 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public string PurchaseProductName { get; set; } + + /// + /// 采购商品Logo 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public string PurchaseProductLogo { get; set; } + public new List PurchaseSchemeProductSkuList { get; set; } public PurchaseSchemeProductResponse() From f4157f8afcffd584c8b74fc3e55747f740a27c99 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 28 Aug 2023 16:29:57 +0800 Subject: [PATCH 50/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 6a15dcb..6231c81 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -82,7 +82,7 @@ namespace BBWYB.Server.Business List deletePurchaseSchemeIdList = new List(); List> updatePurchaseSchemeList = new List>(); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) + if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); @@ -119,7 +119,7 @@ namespace BBWYB.Server.Business } #region 更新采购方案 - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) + if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) { deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) @@ -225,9 +225,11 @@ namespace BBWYB.Server.Business throw new BusinessException("更新方案缺少ProductId/SkuId"); } + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserId2) || string.IsNullOrEmpty(pp.PurchaserName)))) - throw new BusinessException("更新方案中有采购商Id/Name/Location为空"); + throw new BusinessException("更新方案中有采购商Id/Id2/Name/Location为空"); if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) throw new BusinessException("更新方案中采购方案缺少Id"); @@ -249,8 +251,9 @@ namespace BBWYB.Server.Business } if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserId2) || string.IsNullOrEmpty(pp.PurchaserName)))) - throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); + throw new BusinessException("新增方案中有采购商Id/Id2/Name/Location为空"); var productIds = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.ProductId).ToList(); @@ -285,7 +288,7 @@ namespace BBWYB.Server.Business List> updatePurchaseSchemeList = new List>(); List insertPurchaseSchemeGroupsList = new List(); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) + if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); @@ -340,7 +343,7 @@ namespace BBWYB.Server.Business } #region 更新采购方案 - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) + if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) { deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) From 7f60ef0784e5b9cc2503747dba66c255b12c1e19 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 28 Aug 2023 17:51:00 +0800 Subject: [PATCH 51/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=85=8D=E4=BB=B6?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF=E5=A2=9E=E5=8A=A0=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseProductAPIService.cs | 6 ++++-- .../PurchaseScheme/PurchaseProductBasicInfoResponse.cs | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index c447a9b..edf34e2 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -141,7 +141,8 @@ namespace BBWYB.Server.Business }, ItemList = list, PurchasePlatform = request.Platform, - PurchaseProductId = request.PurchaseProductId + PurchaseProductId = request.PurchaseProductId, + APIMode = Enums.PurchaseProductAPIMode.OneBound }; } } @@ -275,7 +276,8 @@ namespace BBWYB.Server.Business PurchaseProductId = request.PurchaseProductId, PurchasePlatform = Enums.Platform.阿里巴巴, ProductName = jobject["globalData"]["tempModel"]["offerTitle"]?.ToString(), - ProductLogo = list.FirstOrDefault()?.Logo + ProductLogo = list.FirstOrDefault()?.Logo, + APIMode = Enums.PurchaseProductAPIMode.Spider }; } catch diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs index d4bd3ff..28d0738 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs @@ -24,6 +24,8 @@ namespace BBWYB.Server.Model.Dto /// 采购商 /// public Purchaser Purchaser { get; set; } + + public Enums.PurchaseProductAPIMode APIMode { get; set; } } /// From abc25da1cf0f9e36f04c8d13265f2cb2f933bba1 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 29 Aug 2023 01:50:00 +0800 Subject: [PATCH 52/89] =?UTF-8?q?=E6=8F=90=E4=BE=9B=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=87=E8=B4=AD=E6=AF=94=E4=BE=8B=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 13 ++++- .../DataRepair/DataRepairBusiness.cs | 2 +- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 54 ++++++++++++++++++- ...Request.cs => EditPurchaseRatioRequest.cs} | 4 +- 4 files changed, 66 insertions(+), 7 deletions(-) rename BBWYB.Server.Model/Dto/Request/PurchaseScheme/{EditPurchaseRatioAndActualPriceRequest.cs => EditPurchaseRatioRequest.cs} (68%) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index b31afcd..8f129aa 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -150,9 +150,20 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost] - public IList GetPurchaseSchemeByHYBDId([FromBody]QueryHYSchemeRequest request) + public IList GetPurchaseSchemeByHYBDId([FromBody] QueryHYSchemeRequest request) { return purchaseSchemeBusiness.GetPurchaseSchemeByHYBDId(request); } + + /// + /// 修改采购配件比例 + /// + /// 最新的采购方案成本 + /// + [HttpPost] + public decimal EditPurchaseRatio([FromBody] EditPurchaseRatioRequest request) + { + return purchaseSchemeBusiness.EditPurchaseRatio(request); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index b86169e..bc0e040 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -175,7 +175,7 @@ namespace BBWYB.Server.Business { Id = schemeGroupId.Value, //GroupName = schemeGroupId.Value.ToString(), - GroupName = $"{purchaseSchemeSpuGroup.Key}_第{i + 1}组", + GroupName = $"{purchaseSchemeSpuGroup.Key}-{schemeGroupId.Value}", CreateTime = DateTime.Now, ProductId = currentIndexSchemeList.First().ProductId, ShopId = currentIndexSchemeList.First().ShopId diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 6231c81..96a0729 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -297,12 +297,11 @@ namespace BBWYB.Server.Business if (psReq.SchemeGroupId == null || psReq.SchemeGroupId == 0) { //新增分组 - var saemSpuSchemeGroupList = dbSchemeGroupList.Where(psg => psg.ProductId == psReq.ProductId).ToList(); var insertSchemeGroup = new PurchaseSchemeGroup() { Id = idGenerator.NewLong(), CreateTime = DateTime.Now, - GroupName = $"{psReq.ProductId}_第{saemSpuSchemeGroupList.Count() + 1}组", + GroupName = $"{psReq.ProductId}-{DateTime.Now:yyyyMMddHHmmss}", ProductId = psReq.ProductId, ShopId = psReq.ShopId }; @@ -678,8 +677,20 @@ namespace BBWYB.Server.Business public void DeletePurchaseScheme(long schemeId) { + IDelete? deletePsg = null; + var purchaseScheme = fsql.Select(schemeId).ToOne(); + if (purchaseScheme == null) + throw new BusinessException("采购方案不存在"); + if (purchaseScheme.SchemeGroupId != 0) + { + var sameGroupSchemeCount = fsql.Select().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId && + ps.Id != purchaseScheme.Id).Count(); + if (sameGroupSchemeCount == 0) + deletePsg = fsql.Delete(purchaseScheme.SchemeGroupId); + } fsql.Transaction(() => { + deletePsg?.ExecuteAffrows(); fsql.Delete(schemeId).ExecuteAffrows(); fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); @@ -840,5 +851,44 @@ namespace BBWYB.Server.Business } return resultList; } + + public decimal EditPurchaseRatio(EditPurchaseRatioRequest request) + { + if (request.SchemeId == 0 || string.IsNullOrEmpty(request.SkuId) || string.IsNullOrEmpty(request.PurchaseSkuId)) + throw new BusinessException("参数不完整"); + if (request.Ratio < 1) + request.Ratio = 1; + var schemeList = GetPurchaseSchemeList(new QuerySchemeRequest() + { + IncludePurchaseSkuBasicInfo = 1, + SchemeId = request.SchemeId + }); + if (schemeList.Count() == 0) + throw new BusinessException("采购方案不存在"); + var scheme = schemeList[0]; + var defaultCost = 0M; + long? pssId = null; + foreach (var schemeProduct in scheme.PurchaseSchemeProductList) + { + foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) + { + if (schemeProductSku.SkuId == request.SkuId && + schemeProductSku.PurchaseSkuId == request.PurchaseSkuId) + { + schemeProductSku.PurchaseRatio = request.Ratio; + pssId = schemeProductSku.Id; + } + defaultCost += ((schemeProductSku.ActualPrice ?? schemeProductSku.PurchaseSkuPrice) ?? 0) * (schemeProductSku.PurchaseRatio ?? 1); + } + } + if (pssId == null) + throw new BusinessException("未找到需要更新的采购配件"); + fsql.Transaction(() => + { + fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost).ExecuteAffrows(); + fsql.Update(pssId.Value).Set(pss => pss.PurchaseRatio, request.Ratio).ExecuteAffrows(); + }); + return defaultCost; + } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioAndActualPriceRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs similarity index 68% rename from BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioAndActualPriceRequest.cs rename to BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs index a72e569..0eebc71 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioAndActualPriceRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs @@ -1,6 +1,6 @@ namespace BBWYB.Server.Model.Dto { - public class EditPurchaseRatioAndActualPriceRequest + public class EditPurchaseRatioRequest { public long SchemeId { get; set; } @@ -9,7 +9,5 @@ public string PurchaseSkuId { get; set; } public int Ratio { get; set; } - - public decimal ActualPrice { get; set; } } } From 1f3ff1e8864de18f97488a1cd117e5eea9df85fe Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 29 Aug 2023 09:21:37 +0800 Subject: [PATCH 53/89] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 11 +++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 83 +++++++++++++++++-- .../DeletePurchaseSchemeRequest.cs | 9 -- .../DeletePurchaseSkuRequest.cs | 11 +++ 4 files changed, 97 insertions(+), 17 deletions(-) delete mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 8f129aa..6e9c386 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -165,5 +165,16 @@ namespace BBWYB.Server.API.Controllers { return purchaseSchemeBusiness.EditPurchaseRatio(request); } + + /// + /// 删除采购Sku + /// + /// + /// 最新的采购方案成本 + [HttpDelete] + public decimal DeletePurchaseSku([FromBody]DeletePurchaseSkuRequest request) + { + return purchaseSchemeBusiness.DeletePurchaseSku(request); + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 96a0729..4de643b 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -225,6 +225,14 @@ namespace BBWYB.Server.Business throw new BusinessException("更新方案缺少ProductId/SkuId"); } + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null || + ps.PurchaseSchemeProductList.Count() == 0 || + ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null || + psp.PurchaseSchemeProductSkuList.Count() == 0))) + { + throw new BusinessException("更新方案缺少商品信息"); + } + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || string.IsNullOrEmpty(pp.PurchaserId2) || @@ -250,6 +258,15 @@ namespace BBWYB.Server.Business throw new BusinessException("新增方案缺少ProductId/SkuId"); } + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null || + ps.PurchaseSchemeProductList.Count() == 0 || + ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null || + psp.PurchaseSchemeProductSkuList.Count() == 0))) + { + throw new BusinessException("新增方案缺少商品信息"); + } + + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || string.IsNullOrEmpty(pp.PurchaserId2) || string.IsNullOrEmpty(pp.PurchaserName)))) @@ -870,16 +887,27 @@ namespace BBWYB.Server.Business long? pssId = null; foreach (var schemeProduct in scheme.PurchaseSchemeProductList) { - foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) + var tartegtPurchaseProductSku = schemeProduct.PurchaseSchemeProductSkuList.FirstOrDefault(pss => pss.SkuId == request.SkuId && + pss.PurchaseSkuId == request.PurchaseSkuId); + + if (tartegtPurchaseProductSku != null) { - if (schemeProductSku.SkuId == request.SkuId && - schemeProductSku.PurchaseSkuId == request.PurchaseSkuId) - { - schemeProductSku.PurchaseRatio = request.Ratio; - pssId = schemeProductSku.Id; - } - defaultCost += ((schemeProductSku.ActualPrice ?? schemeProductSku.PurchaseSkuPrice) ?? 0) * (schemeProductSku.PurchaseRatio ?? 1); + tartegtPurchaseProductSku.PurchaseRatio = request.Ratio; + pssId = tartegtPurchaseProductSku.Id; } + + defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1)); + + //foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) + //{ + // if (schemeProductSku.SkuId == request.SkuId && + // schemeProductSku.PurchaseSkuId == request.PurchaseSkuId) + // { + // schemeProductSku.PurchaseRatio = request.Ratio; + // pssId = schemeProductSku.Id; + // } + // defaultCost += ((schemeProductSku.ActualPrice ?? schemeProductSku.PurchaseSkuPrice) ?? 0) * (schemeProductSku.PurchaseRatio ?? 1); + //} } if (pssId == null) throw new BusinessException("未找到需要更新的采购配件"); @@ -890,5 +918,44 @@ namespace BBWYB.Server.Business }); return defaultCost; } + + public decimal DeletePurchaseSku(DeletePurchaseSkuRequest request) + { + if (request.SchemeId == 0 || string.IsNullOrEmpty(request.SkuId) || string.IsNullOrEmpty(request.PurchaseSkuId)) + throw new BusinessException("参数不完整"); + var schemeList = GetPurchaseSchemeList(new QuerySchemeRequest() + { + IncludePurchaseSkuBasicInfo = 1, + SchemeId = request.SchemeId + }); + if (schemeList.Count() == 0) + throw new BusinessException("采购方案不存在"); + var scheme = schemeList[0]; + var defaultCost = 0M; + long? pssId = null; + foreach (var schemeProduct in scheme.PurchaseSchemeProductList) + { + var tartegtPurchaseProductSku = schemeProduct.PurchaseSchemeProductSkuList.FirstOrDefault(pss => pss.SkuId == request.SkuId && + pss.PurchaseSkuId == request.PurchaseSkuId); + if (tartegtPurchaseProductSku != null) + { + if (schemeProduct.PurchaseSchemeProductSkuList.Count() == 1) + throw new BusinessException("最后一个采购sku不能被移除"); + pssId = tartegtPurchaseProductSku.Id; + } + + defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Where(pss => !(pss.SkuId == request.SkuId && pss.PurchaseSkuId == request.PurchaseSkuId)) + .Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1)); + } + + if (pssId == null) + throw new BusinessException("未找到需要移除的采购sku"); + fsql.Transaction(() => + { + fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost).ExecuteAffrows(); + fsql.Delete(pssId.Value).ExecuteAffrows(); + }); + return defaultCost; + } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs deleted file mode 100644 index 047cd7b..0000000 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace BBWYB.Server.Model.Dto -{ - public class DeletePurchaseSchemeRequest - { - public string ProductId { get; set; } - - public string PurchaserId { get; set; } - } -} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs new file mode 100644 index 0000000..47d4440 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class DeletePurchaseSkuRequest + { + public long SchemeId { get; set; } + + public string SkuId { get; set; } + + public string PurchaseSkuId { get; set; } + } +} From 0ed439532e1e1c64e22d1fa3dbbd12a02755f9ff Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 29 Aug 2023 09:22:58 +0800 Subject: [PATCH 54/89] 1 --- BBWYB.Server.API/Controllers/PurchaseSchemeController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 6e9c386..171612f 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -159,7 +159,7 @@ namespace BBWYB.Server.API.Controllers /// 修改采购配件比例 /// /// 最新的采购方案成本 - /// + /// 最新的采购方案成本 [HttpPost] public decimal EditPurchaseRatio([FromBody] EditPurchaseRatioRequest request) { From 4c213e215c4cdc30ebe698fa19818b4794ccc1e7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 29 Aug 2023 10:40:12 +0800 Subject: [PATCH 55/89] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 4de643b..1a6d0aa 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -205,6 +205,8 @@ namespace BBWYB.Server.Business public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest) { + nLogManager.Default().Info($"EditPurchaseSchemeV2 {JsonConvert.SerializeObject(batchCURDSchemeRequest)}"); + List dbSchemeGroupList = null; List dbPurchaseSchemeList = null; From 3053fb06e3dbfc9c368694569db09b2faef6fe6f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 29 Aug 2023 10:59:52 +0800 Subject: [PATCH 56/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E5=88=86=E7=BB=84Idbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 1a6d0aa..678b70a 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -325,6 +325,7 @@ namespace BBWYB.Server.Business ShopId = psReq.ShopId }; insertPurchaseSchemeGroupsList.Add(insertSchemeGroup); + psReq.SchemeGroupId = insertSchemeGroup.Id; } var ps = new PurchaseScheme() From 1c39aeb35ece7c56dec977053cb661e751f41384 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 29 Aug 2023 12:04:03 +0800 Subject: [PATCH 57/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E5=88=86=E7=BB=84=E4=B8=8D=E5=90=8C=E7=BB=84?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 678b70a..006ed26 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -311,22 +311,29 @@ namespace BBWYB.Server.Business { ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); + #region 新建分组 + long? newPurchaseGroupId = null; + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.SchemeGroupId == 0 || ps.SchemeGroupId == null)) + { + //新增分组 + var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First(); + var insertSchemeGroup = new PurchaseSchemeGroup() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + GroupName = $"{firstScheme.ProductId}-{DateTime.Now:yyyyMMddHHmmss}", + ProductId = firstScheme.ProductId, + ShopId = firstScheme.ShopId + }; + insertPurchaseSchemeGroupsList.Add(insertSchemeGroup); + newPurchaseGroupId = insertSchemeGroup.Id; + } + #endregion + foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) { if (psReq.SchemeGroupId == null || psReq.SchemeGroupId == 0) - { - //新增分组 - var insertSchemeGroup = new PurchaseSchemeGroup() - { - Id = idGenerator.NewLong(), - CreateTime = DateTime.Now, - GroupName = $"{psReq.ProductId}-{DateTime.Now:yyyyMMddHHmmss}", - ProductId = psReq.ProductId, - ShopId = psReq.ShopId - }; - insertPurchaseSchemeGroupsList.Add(insertSchemeGroup); - psReq.SchemeGroupId = insertSchemeGroup.Id; - } + psReq.SchemeGroupId = newPurchaseGroupId; var ps = new PurchaseScheme() { From 7988065bd55c993c77ce6c8a047846dddde001a2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 30 Aug 2023 10:20:12 +0800 Subject: [PATCH 58/89] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=85=8D=E4=BB=B6?= =?UTF-8?q?=E8=A7=84=E5=88=99=E4=BF=AE=E6=94=B9=EF=BC=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=94=AF=E6=8C=81hyid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 006ed26..374319d 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -395,7 +395,9 @@ namespace BBWYB.Server.Business } } var psupdate = fsql.Update(schemeId) - .Set(ps => ps.DefaultCost, defaultCost); + .Set(ps => ps.DefaultCost, defaultCost) + .Set(ps => ps.HYSchemeId, psReq.HYSchemeId) + .Set(ps => ps.HYBDId, psReq.HYBDId); updatePurchaseSchemeList.Add(psupdate); } } @@ -943,6 +945,12 @@ namespace BBWYB.Server.Business var scheme = schemeList[0]; var defaultCost = 0M; long? pssId = null; + + IDelete deletePss = null; + IDelete deletePsp = null; + IUpdate updatePs = null; + + foreach (var schemeProduct in scheme.PurchaseSchemeProductList) { var tartegtPurchaseProductSku = schemeProduct.PurchaseSchemeProductSkuList.FirstOrDefault(pss => pss.SkuId == request.SkuId && @@ -950,8 +958,13 @@ namespace BBWYB.Server.Business if (tartegtPurchaseProductSku != null) { if (schemeProduct.PurchaseSchemeProductSkuList.Count() == 1) - throw new BusinessException("最后一个采购sku不能被移除"); + { + if (scheme.PurchaseSchemeProductList.Count() == 1) + throw new BusinessException("最后一个采购sku不能被移除"); + deletePsp = fsql.Delete(schemeProduct.Id); + } pssId = tartegtPurchaseProductSku.Id; + deletePss = fsql.Delete(pssId); } defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Where(pss => !(pss.SkuId == request.SkuId && pss.PurchaseSkuId == request.PurchaseSkuId)) @@ -960,10 +973,12 @@ namespace BBWYB.Server.Business if (pssId == null) throw new BusinessException("未找到需要移除的采购sku"); + updatePs = fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost); fsql.Transaction(() => { - fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost).ExecuteAffrows(); - fsql.Delete(pssId.Value).ExecuteAffrows(); + updatePs?.ExecuteAffrows(); + deletePsp?.ExecuteAffrows(); + deletePss?.ExecuteAffrows(); }); return defaultCost; } From b9b37050cf64465148d42a6aa8dcf7206e5400db Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 30 Aug 2023 11:11:09 +0800 Subject: [PATCH 59/89] =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E5=A2=9E=E5=8A=A0=E9=87=87=E8=B4=AD=E5=95=86?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 374319d..8600d69 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -371,6 +371,8 @@ namespace BBWYB.Server.Business #region 更新采购方案 if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) { + ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList); + deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) { From 25ed48e5ebea0976fc4a79ab5ca6ebcf082cd1b6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 30 Aug 2023 12:03:09 +0800 Subject: [PATCH 60/89] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B4=A7=E6=BA=90?= =?UTF-8?q?=E7=AE=A1=E7=90=86web=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/BBWYB.Client.csproj | 13 +++ BBWYB.Client/GlobalContext.cs | 2 +- BBWYB.Client/ViewModels/MainViewModel.cs | 3 +- BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml | 14 +++ .../Views/WebB/WebB_GoodsSource.xaml.cs | 104 ++++++++++++++++++ 5 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml create mode 100644 BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs diff --git a/BBWYB.Client/BBWYB.Client.csproj b/BBWYB.Client/BBWYB.Client.csproj index 5fca9cb..91a07a9 100644 --- a/BBWYB.Client/BBWYB.Client.csproj +++ b/BBWYB.Client/BBWYB.Client.csproj @@ -53,4 +53,17 @@ + + + Code + + + + + + $(DefaultXamlRuntime) + Designer + + + diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index e3b24d0..4f7f7a9 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10035"; + BBWYBApiVersion = "10036"; } private User user; diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 766958f..4903cbf 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -109,7 +109,8 @@ namespace BBWYB.Client.ViewModels ChildList = new List() { new MenuModel(){ Name="订单列表Bata",Url="/Views/WebB/WebB.xaml" }, - new MenuModel(){ Name="绩效考核",Url="/Views/WebB/WebB_KPI.xaml" } + new MenuModel(){ Name="绩效考核",Url="/Views/WebB/WebB_KPI.xaml" }, + new MenuModel(){ Name="货源管理",Url="/Views/WebB/WebB_GoodsSource.xaml" } } }); MenuList.Add(new MenuModel() diff --git a/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml new file mode 100644 index 0000000..8df7144 --- /dev/null +++ b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs new file mode 100644 index 0000000..bd3e95e --- /dev/null +++ b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs @@ -0,0 +1,104 @@ +using CommunityToolkit.Mvvm.Messaging; +using CommunityToolkit.Mvvm.Messaging.Messages; +using Microsoft.Extensions.DependencyInjection; +using System.Windows; +using System.Windows.Controls; + +namespace BBWYB.Client.Views.WebB +{ + /// + /// WebB.xaml 的交互逻辑 + /// + public partial class WebB_GoodsSource : Page + { + private WebView2Manager w2m; + private bool isNavigated; + + private GlobalContext globalContext; + + public WebB_GoodsSource() + { + InitializeComponent(); + this.Loaded += WebB_Loaded; + this.Unloaded += WebB_Unloaded; + + //WeakReferenceMessenger.Default.Register(this, (o, x) => + //{ + // this.Dispatcher.Invoke(() => + // { + // _ = w2m.wb2.ExecuteScriptAsync("window.location.reload();"); + // }); + //}); + + //WeakReferenceMessenger.Default.Register(this, (o, x) => + //{ + // this.Dispatcher.Invoke(() => + // { + // _ = w2m.wb2.ExecuteScriptAsync("window.BBWY_B_WebContex('PACK_CONFIG_SUCCESS');"); + // }); + //}); + } + + private void WebB_Unloaded(object sender, RoutedEventArgs e) + { + grid.Children.Remove(w2m.wb2); + //w2m.wb2.Dispose(); + w2m.Close(); + WeakReferenceMessenger.Default.UnregisterAll(this); + } + + private void WebB_Loaded(object sender, System.Windows.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://192.168.1.2/#/goods-source"; + var registerName = "webTestContext"; + //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html"); +#else + var url = "http://qtbbwy.qiyue666.com/#/goods-source"; + 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_WebB_GoodsSource_Refresh : ValueChangedMessage + //{ + // public Message_WebB_GoodsSource_Refresh(object value) : base(value) + // { + // } + //} + + //public class Message_WebB_GoodsSource_RefreshPack : ValueChangedMessage + //{ + // public Message_WebB_GoodsSource_RefreshPack(object value) : base(value) + // { + // } + //} +} From d34c1c2bbefc202773b773d5ad4e12e8f2b87235 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 30 Aug 2023 16:03:14 +0800 Subject: [PATCH 61/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataRepair/DataRepairBusiness.cs | 49 +++++++++++++------ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 1 - .../PurchasesSchemeGroupIndex.cs | 21 ++++++++ 3 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/PurchasesSchemeGroupIndex.cs diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index bc0e040..1132c3b 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -140,7 +140,15 @@ namespace BBWYB.Server.Business public void SupplementPurchaseSchemeGroup() { + fsql.Transaction(() => + { + fsql.Delete().Where(psg => 1 == 1).ExecuteAffrows(); + fsql.Delete().Where(psgi => 1 == 1).ExecuteAffrows(); + fsql.Update().Set(ps => ps.SchemeGroupId == 0).Where(ps => 1 == 1).ExecuteAffrows(); + }); + List insertSchemeGroups = new List(); + List insertSchemeGroupIndexs = new List(); Queue> updatePurchaseSchemeQueue = new Queue>(); var purchaseSchemeList = fsql.Select().OrderBy(ps => ps.Id).ToList(); @@ -151,9 +159,18 @@ namespace BBWYB.Server.Business var purchaseSchemeSkuGroups = purchaseSchemeSpuGroup.GroupBy(ps => ps.SkuId); var maxPsGroupCount = purchaseSchemeSkuGroups.Max(g => g.Count()); //该spu最大的采购分组数 + var groupIndex = new PurchaseSchemeGroupIndex() + { + CreateTime = DateTime.Now, + Index = maxPsGroupCount, + ShopId = purchaseSchemeSpuGroup.First().ShopId, + ProductId = purchaseSchemeSpuGroup.First().ProductId + }; + insertSchemeGroupIndexs.Add(groupIndex); + for (var i = 0; i < maxPsGroupCount; i++) { - Console.WriteLine($"正在处理第{i}组"); + Console.WriteLine($"正在处理第{i + 1}组"); IList currentIndexSchemeList = new List(); //取每个sku的第i个方案 foreach (var purchaseSchemeSkuGroup in purchaseSchemeSkuGroups) @@ -166,22 +183,20 @@ namespace BBWYB.Server.Business currentIndexSchemeList.Add(scheme); } } - var schemeGroupId = currentIndexSchemeList.FirstOrDefault(ps => ps.SchemeGroupId != null)?.SchemeGroupId; - if (schemeGroupId == null || schemeGroupId == 0) + + var schemeGroupId = idGenerator.NewLong(); + var insertSchemeGroup = new PurchaseSchemeGroup() { - schemeGroupId = idGenerator.NewLong(); - //同位中没有分组 - var insertSchemeGroup = new PurchaseSchemeGroup() - { - Id = schemeGroupId.Value, - //GroupName = schemeGroupId.Value.ToString(), - GroupName = $"{purchaseSchemeSpuGroup.Key}-{schemeGroupId.Value}", - CreateTime = DateTime.Now, - ProductId = currentIndexSchemeList.First().ProductId, - ShopId = currentIndexSchemeList.First().ShopId - }; - insertSchemeGroups.Add(insertSchemeGroup); - } + Id = schemeGroupId, + //GroupName = schemeGroupId.Value.ToString(), + GroupName = $"{purchaseSchemeSpuGroup.Key}-{i + 1}", + CreateTime = DateTime.Now, + ProductId = currentIndexSchemeList.First().ProductId, + ShopId = currentIndexSchemeList.First().ShopId + }; + insertSchemeGroups.Add(insertSchemeGroup); + + foreach (var purchaseScheme in currentIndexSchemeList) { if (purchaseScheme.SchemeGroupId != schemeGroupId) @@ -197,6 +212,8 @@ namespace BBWYB.Server.Business { if (insertSchemeGroups.Count() > 0) fsql.Insert(insertSchemeGroups).ExecuteAffrows(); + if (insertSchemeGroupIndexs.Count() > 0) + fsql.Insert(insertSchemeGroupIndexs).ExecuteAffrows(); }); var updatePurchaseSchemeList = new List>(); diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 8600d69..63ac8a3 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -56,7 +56,6 @@ namespace BBWYB.Server.Business }); } } - } } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchasesSchemeGroupIndex.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchasesSchemeGroupIndex.cs new file mode 100644 index 0000000..3c5cd4c --- /dev/null +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchasesSchemeGroupIndex.cs @@ -0,0 +1,21 @@ +using FreeSql.DataAnnotations; +using Newtonsoft.Json; + +namespace BBWYB.Server.Model.Db +{ + + [Table(Name = "purchaseschemegroupindex", DisableSyncStructure = true)] + public partial class PurchaseSchemeGroupIndex + { + [Column(IsPrimary = true)] + public string ProductId { get; set; } + + public DateTime? CreateTime { get; set; } + + public int? Index { get; set; } + + public long? ShopId { get; set; } + + } + +} From 098e5bc8dbee3a99f12e6abf6ea445f26f1ef163 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 30 Aug 2023 16:16:02 +0800 Subject: [PATCH 62/89] =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=96=B0=E5=A2=9E=E5=88=86=E7=BB=84=E5=90=8D?= =?UTF-8?q?=E5=AD=97=E8=87=AA=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 63ac8a3..301ed96 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -305,22 +305,43 @@ namespace BBWYB.Server.Business List deletePurchaseSchemeIdList = new List(); List> updatePurchaseSchemeList = new List>(); List insertPurchaseSchemeGroupsList = new List(); + IInsert insertPurchaseSchemeGroupIndex = null; + IUpdate updatePurchaseSchemeGroupIndex = null; if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { + var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First(); + ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList); #region 新建分组 long? newPurchaseGroupId = null; if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.SchemeGroupId == 0 || ps.SchemeGroupId == null)) { - //新增分组 - var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First(); + var dbPurchaseSchemeGroupIndex = fsql.Select().Where(psgi => psgi.ProductId == firstScheme.ProductId).ToOne(); + if (dbPurchaseSchemeGroupIndex == null) + { + dbPurchaseSchemeGroupIndex = new PurchaseSchemeGroupIndex() + { + CreateTime = DateTime.Now, + Index = 1, + ProductId = firstScheme.ProductId, + ShopId = firstScheme.ShopId + }; + insertPurchaseSchemeGroupIndex = fsql.Insert(dbPurchaseSchemeGroupIndex); + } + else + { + dbPurchaseSchemeGroupIndex.Index++; + updatePurchaseSchemeGroupIndex = fsql.Update(dbPurchaseSchemeGroupIndex.ProductId) + .Set(x => x.Index, dbPurchaseSchemeGroupIndex.Index); + } + var insertSchemeGroup = new PurchaseSchemeGroup() { Id = idGenerator.NewLong(), CreateTime = DateTime.Now, - GroupName = $"{firstScheme.ProductId}-{DateTime.Now:yyyyMMddHHmmss}", + GroupName = $"{firstScheme.ProductId}-{dbPurchaseSchemeGroupIndex.Index}", ProductId = firstScheme.ProductId, ShopId = firstScheme.ShopId }; @@ -436,6 +457,8 @@ namespace BBWYB.Server.Business foreach (var update in updatePurchaseSchemeList) update.ExecuteAffrows(); } + insertPurchaseSchemeGroupIndex?.ExecuteAffrows(); + updatePurchaseSchemeGroupIndex?.ExecuteAffrows(); }); } From 0cec01c256ae63edc3a9b46a45e40893cd652ae5 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 30 Aug 2023 16:28:59 +0800 Subject: [PATCH 63/89] =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0spu=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 301ed96..7da1b18 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -216,6 +216,10 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0) { + var groupCount = batchCURDSchemeRequest.EditPurchaseSchemeList.GroupBy(ps => ps.ProductId).Count(); + if (groupCount > 1) + throw new BusinessException("只能对同一个spu的方案进行编辑"); + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) || string.IsNullOrEmpty(ps.SkuId) || ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) || @@ -249,6 +253,10 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0) { + var groupCount = batchCURDSchemeRequest.AddPurchaseSchemeList.GroupBy(ps => ps.ProductId).Count(); + if (groupCount > 1) + throw new BusinessException("只能对同一个spu的方案进行编辑"); + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) || string.IsNullOrEmpty(ps.SkuId) || ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) || @@ -298,6 +306,7 @@ namespace BBWYB.Server.Business } #endregion + List addPurchaseSchemeList = new List(); List addPurchaseSchemeProductList = new List(); List addPurchaseSchemeProductSkuList = new List(); @@ -305,8 +314,8 @@ namespace BBWYB.Server.Business List deletePurchaseSchemeIdList = new List(); List> updatePurchaseSchemeList = new List>(); List insertPurchaseSchemeGroupsList = new List(); - IInsert insertPurchaseSchemeGroupIndex = null; - IUpdate updatePurchaseSchemeGroupIndex = null; + IInsert? insertPurchaseSchemeGroupIndex = null; + IUpdate? updatePurchaseSchemeGroupIndex = null; if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { From fd0f88e29a69bb01634e258541238e5ad9da2ec6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 30 Aug 2023 22:18:22 +0800 Subject: [PATCH 64/89] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E9=85=8D?= =?UTF-8?q?=E4=BB=B6sku=E5=A4=B1=E6=95=88=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 2 ++ .../PurchaseScheme/PurchaseSchemeProductSkuResponse.cs | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 7da1b18..692f3c9 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -604,9 +604,11 @@ namespace BBWYB.Server.Business foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) { + schemeProductSku.IsInvalid = 1; var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId); if (basicSku != null) { + schemeProductSku.IsInvalid = 0; schemeProductSku.PurchaseSkuTitle = basicSku.Title; schemeProductSku.PurchaseSkuPrice = basicSku.Price; schemeProductSku.PurchaseSkuLogo = basicSku.Logo; diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs index 30942ea..95a7739 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs @@ -17,5 +17,10 @@ /// 采购SKU单价 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 /// public decimal? PurchaseSkuPrice { get; set; } + + /// + /// 是否失效 失效=1 其余情况默认为有效 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public int? IsInvalid { get; set; } } } From 684c16990eef0dcceea0cb8065b372697ea21a49 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 31 Aug 2023 14:59:23 +0800 Subject: [PATCH 65/89] =?UTF-8?q?1=EF=BC=89=E5=88=A0=E9=99=A4=E9=85=8D?= =?UTF-8?q?=E4=BB=B6=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=9C=80=E5=90=8E=E4=B8=80=E4=B8=AA=E9=85=8D=E4=BB=B6?= =?UTF-8?q?=E5=88=99=E5=88=A0=E9=99=A4=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=202=EF=BC=89=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=AE=8B=E7=BC=BA=E7=9A=84=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 144 ++++++++++++++---- .../PurchaseScheme/BatchCURDSchemeRequest.cs | 4 +- .../InputPurchaseSchemeProductRequest.cs | 2 +- .../InputPurchaseSchemeRequest.cs | 2 +- 4 files changed, 117 insertions(+), 35 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 692f3c9..286dd05 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -208,7 +208,7 @@ namespace BBWYB.Server.Business List dbSchemeGroupList = null; List dbPurchaseSchemeList = null; - + List deleteSchemeIdList = new List(); #region 数据验证 if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && (batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)) @@ -220,6 +220,9 @@ namespace BBWYB.Server.Business if (groupCount > 1) throw new BusinessException("只能对同一个spu的方案进行编辑"); + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) + throw new BusinessException("更新方案中采购方案缺少Id"); + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => string.IsNullOrEmpty(ps.ProductId) || string.IsNullOrEmpty(ps.SkuId) || ps.PurchaseSchemeProductList.Any(psp => string.IsNullOrEmpty(psp.ProductId) || @@ -230,22 +233,42 @@ namespace BBWYB.Server.Business throw new BusinessException("更新方案缺少ProductId/SkuId"); } - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null || - ps.PurchaseSchemeProductList.Count() == 0 || - ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null || - psp.PurchaseSchemeProductSkuList.Count() == 0))) + #region 验证是否存在数据残缺的采购方案 + for (var i = 0; i < batchCURDSchemeRequest.EditPurchaseSchemeList.Count(); i++) { - throw new BusinessException("更新方案缺少商品信息"); + var editScheme = batchCURDSchemeRequest.EditPurchaseSchemeList[i]; + if (editScheme.PurchaseSchemeProductList != null && editScheme.PurchaseSchemeProductList.Count() > 0) + { + for (var j = 0; j < editScheme.PurchaseSchemeProductList.Count(); j++) + { + var editSchemeProduct = editScheme.PurchaseSchemeProductList[j]; + if (editSchemeProduct.PurchaseSchemeProductSkuList == null || editSchemeProduct.PurchaseSchemeProductSkuList.Count() == 0) + { + //如果采购商品不具备配件,则移除该采购商品 + editScheme.PurchaseSchemeProductList.RemoveAt(j); + j--; + } + } + } + + if (editScheme.PurchaseSchemeProductList == null || editScheme.PurchaseSchemeProductList.Count() == 0) + { + //采购方案不再具备采购商品,则移除该采购方案 + batchCURDSchemeRequest.EditPurchaseSchemeList.RemoveAt(i); + i--; + deleteSchemeIdList.Add(editScheme.Id); + } } + #endregion + + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || string.IsNullOrEmpty(pp.PurchaserId2) || string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("更新方案中有采购商Id/Id2/Name/Location为空"); - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) - throw new BusinessException("更新方案中采购方案缺少Id"); if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.SchemeGroupId == null || ps.SchemeGroupId == 0)) throw new BusinessException("更新方案中采购方案缺少分组Id"); @@ -311,12 +334,14 @@ namespace BBWYB.Server.Business List addPurchaseSchemeProductList = new List(); List addPurchaseSchemeProductSkuList = new List(); List newPurchaserList = new List(); - List deletePurchaseSchemeIdList = new List(); + List deletePartsSchemeIdList = new List(); List> updatePurchaseSchemeList = new List>(); + List insertPurchaseSchemeGroupsList = new List(); IInsert? insertPurchaseSchemeGroupIndex = null; IUpdate? updatePurchaseSchemeGroupIndex = null; + if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { var firstScheme = batchCURDSchemeRequest.AddPurchaseSchemeList.First(); @@ -402,7 +427,7 @@ namespace BBWYB.Server.Business { ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList); - deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); + deletePartsSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) { var schemeId = psReq.Id; @@ -446,10 +471,10 @@ namespace BBWYB.Server.Business fsql.Insert(newPurchaserList).ExecuteAffrows(); //更新,删除已存在的采购方案商品和Sku - if (deletePurchaseSchemeIdList.Count > 0) + if (deletePartsSchemeIdList.Count > 0) { - fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); - fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); + fsql.Delete().Where(p => deletePartsSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); + fsql.Delete().Where(p => deletePartsSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); } //新增 @@ -469,6 +494,10 @@ namespace BBWYB.Server.Business insertPurchaseSchemeGroupIndex?.ExecuteAffrows(); updatePurchaseSchemeGroupIndex?.ExecuteAffrows(); }); + + //删除信息残缺的采购方案 + if (deleteSchemeIdList.Count() > 0) + DeletePurchaseScheme(deleteSchemeIdList); } /// @@ -741,23 +770,61 @@ namespace BBWYB.Server.Business public void DeletePurchaseScheme(long schemeId) { - IDelete? deletePsg = null; - var purchaseScheme = fsql.Select(schemeId).ToOne(); - if (purchaseScheme == null) - throw new BusinessException("采购方案不存在"); - if (purchaseScheme.SchemeGroupId != 0) + //IDelete? deletePsg = null; + //var purchaseScheme = fsql.Select(schemeId).ToOne(); + //if (purchaseScheme == null) + // throw new BusinessException("采购方案不存在"); + //if (purchaseScheme.SchemeGroupId != 0) + //{ + // var sameGroupSchemeCount = fsql.Select().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId && + // ps.Id != purchaseScheme.Id).Count(); + // if (sameGroupSchemeCount == 0) + // deletePsg = fsql.Delete(purchaseScheme.SchemeGroupId); + //} + //fsql.Transaction(() => + //{ + // deletePsg?.ExecuteAffrows(); + // fsql.Delete(schemeId).ExecuteAffrows(); + // fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); + // fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); + //}); + DeletePurchaseScheme(new List() { schemeId }); + } + + public void DeletePurchaseScheme(List schemeIdList) + { + IList deleteSchemeGroupIdList = new List(); + var purchaseSchemeList = fsql.Select(schemeIdList).ToList(); + if (purchaseSchemeList.Count() == 0) + return; + var schemeGroupIdList = purchaseSchemeList.Where(ps => ps.SchemeGroupId != 0).Select(ps => ps.SchemeGroupId).ToList(); + var sameSchemeGroupCountGroups = fsql.Select().Where(ps => ps.SchemeGroupId != 0 && + schemeGroupIdList.Contains(ps.SchemeGroupId) && + !schemeIdList.Contains(ps.Id)) + .GroupBy(ps => ps.SchemeGroupId) + .ToList(g => new + { + SchemeGroupId = g.Key, + SchemeCount = g.Count() + }); + + foreach (var purchaseScheme in purchaseSchemeList) { - var sameGroupSchemeCount = fsql.Select().Where(ps => ps.SchemeGroupId == purchaseScheme.SchemeGroupId && - ps.Id != purchaseScheme.Id).Count(); - if (sameGroupSchemeCount == 0) - deletePsg = fsql.Delete(purchaseScheme.SchemeGroupId); + if (purchaseScheme.SchemeGroupId != 0) + { + var sameSchemeGroupCount = sameSchemeGroupCountGroups.FirstOrDefault(g => g.SchemeGroupId == purchaseScheme.SchemeGroupId); + if (sameSchemeGroupCount != null && sameSchemeGroupCount.SchemeCount == 0) + deleteSchemeGroupIdList.Add(purchaseScheme.SchemeGroupId); + } } + fsql.Transaction(() => { - deletePsg?.ExecuteAffrows(); - fsql.Delete(schemeId).ExecuteAffrows(); - fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); - fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows(); + if (deleteSchemeGroupIdList.Count() > 0) + fsql.Delete(deleteSchemeGroupIdList).ExecuteAffrows(); + fsql.Delete(schemeIdList).ExecuteAffrows(); + fsql.Delete().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); + fsql.Delete().Where(p => schemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows(); }); } @@ -978,6 +1045,26 @@ namespace BBWYB.Server.Business if (schemeList.Count() == 0) throw new BusinessException("采购方案不存在"); var scheme = schemeList[0]; + + if (scheme.PurchaseSchemeProductList.Count() == 1) + { + var lastProduct = scheme.PurchaseSchemeProductList.FirstOrDefault(); + if (lastProduct.PurchaseSchemeProductSkuList.Count() == 1) + { + var lastSku = lastProduct.PurchaseSchemeProductSkuList.FirstOrDefault(); + if (lastSku.PurchaseSkuId == request.PurchaseSkuId && + lastSku.SkuId == request.SkuId) + { + DeletePurchaseScheme(request.SchemeId); + return 0M; + } + else + { + throw new BusinessException("未找到需要移除的采购sku"); + } + } + } + var defaultCost = 0M; long? pssId = null; @@ -993,11 +1080,7 @@ namespace BBWYB.Server.Business if (tartegtPurchaseProductSku != null) { if (schemeProduct.PurchaseSchemeProductSkuList.Count() == 1) - { - if (scheme.PurchaseSchemeProductList.Count() == 1) - throw new BusinessException("最后一个采购sku不能被移除"); deletePsp = fsql.Delete(schemeProduct.Id); - } pssId = tartegtPurchaseProductSku.Id; deletePss = fsql.Delete(pssId); } @@ -1005,7 +1088,6 @@ namespace BBWYB.Server.Business defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Where(pss => !(pss.SkuId == request.SkuId && pss.PurchaseSkuId == request.PurchaseSkuId)) .Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1)); } - if (pssId == null) throw new BusinessException("未找到需要移除的采购sku"); updatePs = fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost); diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs index 61fba78..a9670b2 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs @@ -7,12 +7,12 @@ namespace BBWYB.Server.Model.Dto /// /// 需要修改的采购方案 /// - public IList EditPurchaseSchemeList { get; set; } + public List EditPurchaseSchemeList { get; set; } /// /// 需要新增的采购方案 /// - public IList AddPurchaseSchemeList { get; set; } + public List AddPurchaseSchemeList { get; set; } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index 141aa17..cd9caec 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -38,6 +38,6 @@ public Enums.Platform? PurchasePlatform { get; set; } - public IList PurchaseSchemeProductSkuList { get; set; } + public List PurchaseSchemeProductSkuList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index 955a6d0..25595ba 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -23,6 +23,6 @@ namespace BBWYB.Server.Model.Dto public string ProductId { get; set; } public string SkuId { get; set; } - public IList PurchaseSchemeProductList { get; set; } + public List PurchaseSchemeProductList { get; set; } } } From b52f24a875f3ab4665c776f9b3b549da81edd7a5 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 31 Aug 2023 15:38:34 +0800 Subject: [PATCH 66/89] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A7=E6=BA=90?= =?UTF-8?q?=E7=AE=A1=E7=90=86web=E7=AB=AF=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/GlobalContext.cs | 2 +- BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 4f7f7a9..19f8137 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10036"; + BBWYBApiVersion = "10037"; } private User user; diff --git a/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs index bd3e95e..d4b329c 100644 --- a/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs +++ b/BBWYB.Client/Views/WebB/WebB_GoodsSource.xaml.cs @@ -57,7 +57,7 @@ namespace BBWYB.Client.Views.WebB } #if DEBUG - var url = "http://192.168.1.2/#/goods-source"; + var url = "http://192.168.1.2:8080/#/goods-source"; var registerName = "webTestContext"; //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html"); #else From c97986fe5e44d9733d6528843ad441f7322176fc Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 31 Aug 2023 17:24:59 +0800 Subject: [PATCH 67/89] =?UTF-8?q?web=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/App.xaml | 2 +- BBWYB.Client/GlobalContext.cs | 3 +- BBWYB.Client/ViewModels/ViewModelLocator.cs | 9 ++ BBWYB.Client/ViewModels/WebVM.cs | 96 +++++++++++++++++++++ BBWYB.Client/Views/Web.xaml | 25 ++++++ BBWYB.Client/Views/Web.xaml.cs | 83 ++++++++++++++++++ WebTest/MainWindow.xaml.cs | 96 +++++++-------------- 7 files changed, 245 insertions(+), 69 deletions(-) create mode 100644 BBWYB.Client/ViewModels/WebVM.cs create mode 100644 BBWYB.Client/Views/Web.xaml create mode 100644 BBWYB.Client/Views/Web.xaml.cs diff --git a/BBWYB.Client/App.xaml b/BBWYB.Client/App.xaml index 5939b16..2048417 100644 --- a/BBWYB.Client/App.xaml +++ b/BBWYB.Client/App.xaml @@ -4,7 +4,7 @@ xmlns:local="clr-namespace:BBWYB.Client" xmlns:vm="clr-namespace:BBWYB.Client.ViewModels" xmlns:ctr="clr-namespace:BBWYB.Client.Converters" - StartupUri="/Views/MainWindow.xaml" + StartupUri="/Views/Web.xaml" ShutdownMode="OnExplicitShutdown"> diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index 19f8137..1471516 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -1,7 +1,6 @@ using BBWYB.Client.APIServices; using BBWYB.Client.Helpers; using BBWYB.Client.Models; -using BBWYB.Client.ViewModels; using BBWYB.Client.Views.PackPurchaseTaska; using BBWYB.Client.Views.WebB; using CommunityToolkit.Mvvm.ComponentModel; @@ -22,7 +21,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10037"; + BBWYBApiVersion = "10038"; } private User user; diff --git a/BBWYB.Client/ViewModels/ViewModelLocator.cs b/BBWYB.Client/ViewModels/ViewModelLocator.cs index fe4ff35..cbddf8a 100644 --- a/BBWYB.Client/ViewModels/ViewModelLocator.cs +++ b/BBWYB.Client/ViewModels/ViewModelLocator.cs @@ -118,5 +118,14 @@ namespace BBWYB.Client.ViewModels return s.ServiceProvider.GetRequiredService(); } } + + public WebVM WebVM + { + get + { + using var s = sp.CreateScope(); + return s.ServiceProvider.GetRequiredService(); + } + } } } diff --git a/BBWYB.Client/ViewModels/WebVM.cs b/BBWYB.Client/ViewModels/WebVM.cs new file mode 100644 index 0000000..46cce31 --- /dev/null +++ b/BBWYB.Client/ViewModels/WebVM.cs @@ -0,0 +1,96 @@ +using BBWYB.Client.APIServices; +using BBWYB.Client.Models; +using BBWYB.Client.Views; +using BBWYB.Common.Extensions; +using BBWYB.Common.Models; +using CommunityToolkit.Mvvm.Messaging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace BBWYB.Client.ViewModels +{ + public class WebVM : BaseVM, IDenpendency + { + private MdsApiService mdsApiService; + private MenuModel selectedMenuModel; + private bool isLoading; + ShopService shopService; + public GlobalContext GlobalContext { get; set; } + public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } } + + public WebVM(GlobalContext globalContext, + MdsApiService mdsApiService, + ShopService shopService) + { + this.mdsApiService = mdsApiService; + this.GlobalContext = globalContext; + this.shopService = shopService; + Task.Factory.StartNew(Login); + } + + private void Login() + { + IsLoading = true; + try + { + var mdsUserResponse = mdsApiService.GetUserInfo(GlobalContext.UserToken); + if (!mdsUserResponse.Success) + throw new Exception($"获取磨刀石用户信息失败 {mdsUserResponse.Msg}"); + + + GlobalContext.User = mdsUserResponse.Data.Map(); + GlobalContext.User.Token = GlobalContext.UserToken; + GlobalContext.User.SonDepartmentNames = string.Empty; + if (mdsUserResponse.Data.SonDepartmentList != null && mdsUserResponse.Data.SonDepartmentList.Count > 0) + GlobalContext.User.SonDepartmentNames = string.Join(',', mdsUserResponse.Data.SonDepartmentList.Select(sd => sd.DepartmentName)); + + var res = shopService.GetDepartmentList(); + if (!res.Success) + throw new Exception(res.Msg); + var allDepartmentList = res.Data.Map>(); + + + var shopList = new List(); + foreach (var d in allDepartmentList) + shopList.AddRange(d.ShopList); + GlobalContext.User.ShopList = shopList; + + + IList departmentList = null; + + var response = mdsApiService.GetShopDetailList(); + if (!response.Success) + throw new Exception(response.Msg); + departmentList = response.Data?.Where(d => d.Name.Contains("供应链")).ToList(); + if (departmentList.Count == 0) + throw new Exception("缺少有效的部门数据"); + + var shopIds = new List(); + foreach (var d in departmentList) + { + if (d.ShopList != null && d.ShopList.Count > 0) + { + foreach (var s in d.ShopList) + shopIds.Add(s.ShopId.ToString()); + } + } + + GlobalContext.User.DepartmentList = departmentList; + WeakReferenceMessenger.Default.Send(new Message_WebB_LoginCompleted(null)); + IsLoading = false; + } + catch (Exception ex) + { + IsLoading = false; + App.Current.Dispatcher.Invoke(() => + { + MessageBox.Show(ex.Message, "登录失败"); + }); + Environment.Exit(Environment.ExitCode); + } + } + } +} diff --git a/BBWYB.Client/Views/Web.xaml b/BBWYB.Client/Views/Web.xaml new file mode 100644 index 0000000..626056f --- /dev/null +++ b/BBWYB.Client/Views/Web.xaml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/BBWYB.Client/Views/Web.xaml.cs b/BBWYB.Client/Views/Web.xaml.cs new file mode 100644 index 0000000..67462c0 --- /dev/null +++ b/BBWYB.Client/Views/Web.xaml.cs @@ -0,0 +1,83 @@ +using CommunityToolkit.Mvvm.Messaging; +using CommunityToolkit.Mvvm.Messaging.Messages; +using Microsoft.Extensions.DependencyInjection; +using SJ.Controls; +using System.Windows; +using System.Windows.Controls; + +namespace BBWYB.Client.Views +{ + /// + /// Web.xaml 的交互逻辑 + /// + public partial class Web : BWindow + { + private WebView2Manager w2m; + private bool isNavigated; + private GlobalContext globalContext; + + public Web() + { + InitializeComponent(); + this.Width = SystemParameters.WorkArea.Size.Width * 0.8; + this.Height = SystemParameters.WorkArea.Size.Height * 0.7; + var sp = (App.Current as App).ServiceProvider; + using (var s = sp.CreateScope()) + { + w2m = s.ServiceProvider.GetRequiredService(); + globalContext = s.ServiceProvider.GetRequiredService(); + } + + WeakReferenceMessenger.Default.Register(this, (o, x) => + { + this.Dispatcher.BeginInvoke(initWebView); + }); + } + + private void Web_Loaded(object sender, System.Windows.RoutedEventArgs e) + { + + + } + + private void initWebView() + { +#if DEBUG + var url = "http://qtbbwy.qiyue666.com";//"http://192.168.1.2: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(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_WebB_LoginCompleted : ValueChangedMessage + { + public Message_WebB_LoginCompleted(object value) : base(value) + { + } + } +} diff --git a/WebTest/MainWindow.xaml.cs b/WebTest/MainWindow.xaml.cs index 1653a5c..b096721 100644 --- a/WebTest/MainWindow.xaml.cs +++ b/WebTest/MainWindow.xaml.cs @@ -126,78 +126,42 @@ private string registerName = "webContext"; if (mdsUserResponse.Data.SonDepartmentList != null && mdsUserResponse.Data.SonDepartmentList.Count > 0) globalContext.User.SonDepartmentNames = string.Join(',', mdsUserResponse.Data.SonDepartmentList.Select(sd => sd.DepartmentName)); + + //if (GlobalContext.User.TeamName == "刷单组") + // return; + + var res = shopService.GetDepartmentList(); + if (!res.Success) + throw new Exception(res.Msg); + var allDepartmentList = res.Data.Map>(); + + //if (GlobalContext.User.TeamName == "刷单组") + //{ + //var shopList = new List(); + //foreach (var d in allDepartmentList) + // shopList.AddRange(d.ShopList); + //globalContext.User.ShopList = shopList; + + IList departmentList = null; - if (globalContext.User.TeamName == "刷单组" || - managerDepartment.Contains(globalContext.User.TeamName) || - managerDepartment.Any(m => globalContext.User.SonDepartmentNames.Contains(m))) - { - var response = shopService.GetDepartmentList(); - if (!response.Success) - throw new Exception(response.Msg); - departmentList = response.Data.Map>(); - } - else - { - var response = mdsApiService.GetShopDetailList(); - if (!response.Success) - throw new Exception(response.Msg); - departmentList = response.Data; - if (departmentList.Count == 0) - throw new Exception("缺少有效的部门数据"); - - var shopIds = new List(); - foreach (var d in departmentList) - { - if (d.ShopList != null && d.ShopList.Count > 0) - { - foreach (var s in d.ShopList) - shopIds.Add(s.ShopId.ToString()); - } - } - var shopList2Res = shopService.GetShopListByIds(shopIds); - if (shopList2Res.Success && shopList2Res.Data != null && shopList2Res.Data.Count() > 0) - { - foreach (var d in departmentList) - { - foreach (var shop in d.ShopList) - { - var s2 = shopList2Res.Data.FirstOrDefault(s => s.ShopId == shop.ShopId); - if (s2 != null) - { - shop.DingDingKey = s2.DingDingKey; - shop.DingDingWebHook = s2.DingDingWebHook; - shop.SkuSafeTurnoverDays = s2.SkuSafeTurnoverDays; - shop.SiNanPolicyLevel = s2.SiNanPolicyLevel; - shop.SiNanDingDingKey = s2.SiNanDingDingKey; - shop.SiNanDingDingWebHook = s2.SiNanDingDingWebHook; - shop.AppKey2 = s2.AppKey2; - shop.AppSecret2 = s2.AppSecret2; - shop.AppToken2 = s2.AppToken2; - } - } - } - } - } - for (var i = 0; i < departmentList.Count(); i++) + var response = mdsApiService.GetShopDetailList(); + if (!response.Success) + throw new Exception(response.Msg); + departmentList = response.Data?.Where(d => d.Name.Contains("供应链")).ToList(); + if (departmentList.Count == 0) + throw new Exception("缺少有效的部门数据"); + + var shopIds = new List(); + foreach (var d in departmentList) { - var d = departmentList[i]; - for (var j = 0; j < d.ShopList.Count(); j++) + if (d.ShopList != null && d.ShopList.Count > 0) { - var shop = d.ShopList[j]; - if (string.IsNullOrEmpty(shop.AppToken2)) - { - d.ShopList.RemoveAt(j); - j--; - } + foreach (var s in d.ShopList) + shopIds.Add(s.ShopId.ToString()); } - if (d.ShopList == null || d.ShopList.Count() == 0) - { - departmentList.RemoveAt(i); - i--; - } - } + globalContext.User.DepartmentList = departmentList; } From 60b49fe47116fa590ebc9c789523051f4945bbe9 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 31 Aug 2023 17:29:27 +0800 Subject: [PATCH 68/89] =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/Views/Web.xaml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Client/Views/Web.xaml.cs b/BBWYB.Client/Views/Web.xaml.cs index 67462c0..19ed019 100644 --- a/BBWYB.Client/Views/Web.xaml.cs +++ b/BBWYB.Client/Views/Web.xaml.cs @@ -43,7 +43,7 @@ namespace BBWYB.Client.Views private void initWebView() { #if DEBUG - var url = "http://qtbbwy.qiyue666.com";//"http://192.168.1.2:8080"; + var url = "http://192.168.1.2:8080"; var registerName = "webTestContext"; //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html"); #else From 1dd7d840dcb590b9bd70a45c2a254a53d128bbdc Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 1 Sep 2023 10:18:28 +0800 Subject: [PATCH 69/89] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=86=97=E4=BD=99?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/ViewModels/WebVM.cs | 8 ++++---- WebTest/MainWindow.xaml.cs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BBWYB.Client/ViewModels/WebVM.cs b/BBWYB.Client/ViewModels/WebVM.cs index 46cce31..9e5b38c 100644 --- a/BBWYB.Client/ViewModels/WebVM.cs +++ b/BBWYB.Client/ViewModels/WebVM.cs @@ -61,10 +61,10 @@ namespace BBWYB.Client.ViewModels IList departmentList = null; - var response = mdsApiService.GetShopDetailList(); - if (!response.Success) - throw new Exception(response.Msg); - departmentList = response.Data?.Where(d => d.Name.Contains("供应链")).ToList(); + //var response = mdsApiService.GetShopDetailList(); + //if (!response.Success) + // throw new Exception(response.Msg); + departmentList = allDepartmentList.Where(d => d.Name.Contains("供应链")).ToList(); if (departmentList.Count == 0) throw new Exception("缺少有效的部门数据"); diff --git a/WebTest/MainWindow.xaml.cs b/WebTest/MainWindow.xaml.cs index b096721..93a2694 100644 --- a/WebTest/MainWindow.xaml.cs +++ b/WebTest/MainWindow.xaml.cs @@ -145,10 +145,10 @@ private string registerName = "webContext"; IList departmentList = null; - var response = mdsApiService.GetShopDetailList(); - if (!response.Success) - throw new Exception(response.Msg); - departmentList = response.Data?.Where(d => d.Name.Contains("供应链")).ToList(); + //var response = mdsApiService.GetShopDetailList(); + //if (!response.Success) + // throw new Exception(response.Msg); + departmentList = allDepartmentList?.Where(d => d.Name.Contains("供应链")).ToList(); if (departmentList.Count == 0) throw new Exception("缺少有效的部门数据"); From 87cf64eebb615646c7a45e26bce1435a6bec795d Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Fri, 1 Sep 2023 15:55:07 +0800 Subject: [PATCH 70/89] =?UTF-8?q?=E5=9C=A8=E4=BA=AC=E4=B8=9C=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E5=85=A5=E4=BB=93=E5=8D=95=E4=B9=8B=E5=90=8E=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=BE=85=E6=A0=B8=E7=AE=97=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/JD/JDBusiness.cs | 23 +++++++++++++++++++ .../PurchaseOrder/PurchaseOrderBusiness.cs | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs index a6389aa..42fd4e6 100644 --- a/BBWYB.Server.Business/JD/JDBusiness.cs +++ b/BBWYB.Server.Business/JD/JDBusiness.cs @@ -65,12 +65,16 @@ namespace BBWYB.Server.Business.JD { List orderIds = null; List> updateOrderList = new List>(); + List insertTimeLimitTaskList = new List(); try { var checkTaskList = fsql.Select().Where(x => x.IsChecked == false).ToList(); if (checkTaskList.Count() == 0) return; + orderIds = checkTaskList.Select(x => x.OrderId).ToList(); + var timelimitTaskList = fsql.Select().Where(t => orderIds.Contains(t.OrderId) && t.TaskType == Enums.TimeLimitTaskType.待核算任务).ToList(); + var orderPurchaseInfoList = fsql.Select().Where(opi => orderIds.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); var waitCheckInStoreOrderList = fsql.Select() @@ -184,6 +188,22 @@ namespace BBWYB.Server.Business.JD var update = fsql.Update().Set(o => o.OrderState, Enums.OrderState.待核算) .Where(o => o.Id == checkTask.OrderId && o.OrderState == Enums.OrderState.待验收); updateOrderList.Add(update); + + if (!timelimitTaskList.Any(t => t.OrderId == checkTask.OrderId && t.TaskType == Enums.TimeLimitTaskType.待核算任务)) + { + //创建待核算任务 + var t = new TimeLimitTask() + { + CreateTme = DateTime.Now, + Id = idGenerator.NewLong(), + OrderId = checkTask.OrderId, + OrderSn = checkTask.OrderSn, + ShopId = checkTask.ShopId, + TaskType = Enums.TimeLimitTaskType.待核算任务, + ExpirationTime = DateTime.Now.AddDays(1) + }; + insertTimeLimitTaskList.Add(t); + } } } } @@ -212,6 +232,9 @@ namespace BBWYB.Server.Business.JD if (orderIds != null && orderIds.Count() > 0) fsql.Update().Set(x => x.IsChecked, true).Where(x => orderIds.Contains(x.OrderId)).ExecuteAffrows(); + + if (insertTimeLimitTaskList.Count() > 0) + fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); }); } catch { } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5bce4dd..4af2565 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2711,7 +2711,7 @@ namespace BBWYB.Server.Business var isExists = fsql.Select().Where(t => t.OrderId == order.Id && t.TaskType == Enums.TimeLimitTaskType.待核算任务).Any(); if (!isExists) { - //创建合格证拟定任务 + //创建待核算任务 var t = new TimeLimitTask() { CreateTme = DateTime.Now, From 320f4733949b0529e92d65d0439311fcdecb6e8a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 2 Sep 2023 12:20:38 +0800 Subject: [PATCH 71/89] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=BD=90=E5=BA=93?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E7=AE=97=E6=B3=95=EF=BC=8C=E4=B8=87=E9=82=A6?= =?UTF-8?q?=E6=94=AF=E6=8C=81id2=E5=92=8Cmemberid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 130 ++++++--------- .../PurchaseProductAPIService.cs | 22 ++- BBWYB.Server.Business/QiKuManager.cs | 151 ++++++++---------- 3 files changed, 134 insertions(+), 169 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 4af2565..109e792 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -398,51 +398,6 @@ namespace BBWYB.Server.Business #endregion } - ////采购单总件数,由于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; - // //var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId - // var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); - // 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); - - // currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); - // //currentPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity); - // } - - // #region 成本明细 - // var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); - // var orderCostDetail = new OrderCostDetail() - // { - // Id = idGenerator.NewLong(), - // CreateTime = DateTime.Now, - // DeductionQuantity = orderSku.ItemTotal.Value, - // OrderId = request.OrderId, - // ProductId = orderSku.ProductId, - // PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, - // SkuId = belongSkuId, - // IsEnabled = true - // }; - // orderCostDetail.CalculationOrderCostDetailCostAndProfit(currentSkuAmount, - // currentPurchaseFreight, - // 0M, - // 0M); - // insertOrderCostDetails.Add(orderCostDetail); - // #endregion - //} #region 等比计算采购成本 var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo); foreach (var proportionalCalculationResult in proportionalCalculationResultList) @@ -2646,56 +2601,43 @@ namespace BBWYB.Server.Business { var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); var currentPurchaseOrderList = purchaseOrderList.Where(po => po.OrderId == order.Id).ToList(); - foreach (var purchaseOrder in currentPurchaseOrderList) + + #region 计算采购单状态 + foreach (var po in currentPurchaseOrderList) { - var currentPurchaseOrderSkuList = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + var currentPoSkuList = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == po.PurchaseOrderId).ToList(); - var currentPurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); - var temp = currentPurchaseExpressOrderList.FirstOrDefault(p => p.WaybillNo == wayBillNo); - if (temp != null) - temp.ExpressState = state; + var currentPeoList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == po.PurchaseOrderId).ToList(); + var peo = currentPeoList.FirstOrDefault(p => p.WaybillNo == wayBillNo); + if (peo != null) + peo.ExpressState = state; - var oldPurchaseOrderState = purchaseOrder.OrderState; - purchaseOrder.CalculationOrderState(order.IntoStoreType.Value, fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList); - if (purchaseOrder.OrderState != oldPurchaseOrderState) + var oldPurchaseOrderState = po.OrderState; + po.CalculationOrderState(order.IntoStoreType.Value, fsql, currentPoSkuList, currentPeoList); + if (po.OrderState != oldPurchaseOrderState) { - var update = fsql.Update(purchaseOrder.Id).Set(po => po.OrderState, purchaseOrder.OrderState); + var update = fsql.Update(po.Id).Set(po => po.OrderState, po.OrderState); updateOrderPurchaseList.Add(update); - - #region 通知齐库打包落仓情况 - if (order.IntoStoreType == Enums.IntoStoreType.发回齐越 && state == "QianShou") - { - var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); - - Task.Factory.StartNew(() => qiKuManager.PublishQiKuReceiveInfo(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList), - CancellationToken.None, - TaskCreationOptions.LongRunning, - taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - } - #endregion } - } - var oldOrderState = order.OrderState; - order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList); + #endregion - if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && - state == "QianShou" && - order.OrderState == Enums.OrderState.待验收 && - inStoreOrderCheckTaskList != null && - !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) + #region 推送齐库到货情况 + if (order.IntoStoreType == Enums.IntoStoreType.发回齐越 && state == "QianShou") { - insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() - { - Id = idGenerator.NewLong(), - CreateTime = DateTime.Now, - IsChecked = false, - OrderId = order.Id, - ShopId = order.ShopId, - OrderSn = order.OrderSn - }); + Task.Factory.StartNew(() => qiKuManager.PublishQikuReceiveInfo(order.Id, + wayBillNo, + currentPurchaseOrderList, + currentOrderSkuList, + purchaseExpressOrderList, + orderPurchaseRelationList, + orderPurchaseSkuList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } + #endregion + #region 计算订单状态 + var oldOrderState = order.OrderState; + order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList); if (order.OrderState != oldOrderState) { var update = fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState); @@ -2728,6 +2670,26 @@ namespace BBWYB.Server.Business } #endregion } + #endregion + + #region 创建入仓单检查任务 + if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && + state == "QianShou" && + order.OrderState == Enums.OrderState.待验收 && + inStoreOrderCheckTaskList != null && + !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) + { + insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + IsChecked = false, + OrderId = order.Id, + ShopId = order.ShopId, + OrderSn = order.OrderSn + }); + } + #endregion } #endregion diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index edf34e2..1011e70 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -31,8 +31,11 @@ namespace BBWYB.Server.Business private List locationIdList; private List priceIdList; + private IList invalidPurchaserNameList; + public PurchaseProductAPIService(RestApiService restApiService, IMemoryCache memoryCache) { + invalidPurchaserNameList = new List() { "超级工厂", "实力工厂", "实力供应商" }; this.memoryCache = memoryCache; this.restApiService = restApiService; _1688ProductDetailRequestHeader = new Dictionary() @@ -129,15 +132,19 @@ namespace BBWYB.Server.Business if (string.IsNullOrEmpty(purchaserName)) purchaserName = jobject["item"]["seller_info"].Value("shop_name"); var purchaserLocation = jobject["item"].Value("location"); + var memberId = jobject["item"]["seller_info"].Value("sid"); + var purchaserId2 = jobject["item"]["seller_info"].Value("shop_name"); return new PurchaseSkuBasicInfoResponse() { - Purchaser = new Model.Db.Purchaser() + Purchaser = new Purchaser() { Id = purchaserId, Location = purchaserLocation, Name = purchaserName, - Platform = request.Platform + Platform = request.Platform, + Id2 = purchaserId2, + MemberId = memberId }, ItemList = list, PurchasePlatform = request.Platform, @@ -208,6 +215,14 @@ namespace BBWYB.Server.Business var jsonStr = match.Groups[2].Value; var jobject = JObject.Parse(jsonStr); + #region 验证purchaserName + var purchaserName = jobject["globalData"]["tempModel"]["companyName"].ToString(); + if (invalidPurchaserNameList.Contains(purchaserName)) + { + //取 + } + #endregion + var location = ""; for (var i = 0; i < locationIdList.Count(); i++) { @@ -217,11 +232,12 @@ namespace BBWYB.Server.Business break; } } + var purchaser = new Purchaser() { Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), - Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), + Name = purchaserName, MemberId = jobject["globalData"]?["tempModel"]?["sellerMemberId"]?.ToString(), Location = location, Platform = Enums.Platform.阿里巴巴 diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index 3788bdf..3382f4c 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -35,104 +35,91 @@ namespace BBWYB.Server.Business this.venderBusinessLazy = new Lazy(() => serviceProvider.GetService()); } - /// - /// 通知齐库到货情况 - /// 支持关联的采购平台以来源SKU为单位通知齐库 - /// 不支持关联的采购平台以采购单为单位通知齐库 - /// - /// - /// - /// - /// - public void PublishQiKuReceiveInfo(OrderPurchaseInfo orderPurchaseInfo, - IList orderPurchaseRelationInfoList, - IList orderPurchaseSkuInfoList, - IList purchaseExpressOrderList) - { - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) - PublishQiKuByRelation(orderPurchaseRelationInfoList, orderPurchaseSkuInfoList, purchaseExpressOrderList); - else - PublishQiKuPurchaseExpressOrder(orderPurchaseInfo, purchaseExpressOrderList); - } - - private void PublishQiKuByRelation(IList orderPurchaseRelationInfoList, - IList orderPurchaseSkuInfoList, - IList purchaseExpressOrderList) + public void PublishQikuReceiveInfo(string orderId, + string wayBillNo, + IList currentPurchaseOrderList, + IList currentOrderSkuList, + IList purchaseExpressOrderList_all, + IList orderPurchaseRelationList_all, + IList orderPurchaseSkuList_all) { try { - var relationGroups = orderPurchaseRelationInfoList.GroupBy(opri => opri.SourceSkuId); - foreach (var relationGroup in relationGroups) + //查询跟此快递单有关的当前订单的采购单 + var relationByWaybillNoPurchaseOrderIds = purchaseExpressOrderList_all.Where(peo => peo.OrderId == orderId && peo.WaybillNo == wayBillNo) + .Select(peo => peo.PurchaseOrderId) + .ToList(); + var relationByWaybillNoPurchaseOrderList = currentPurchaseOrderList.Where(po => relationByWaybillNoPurchaseOrderIds.Contains(po.PurchaseOrderId)).ToList(); + + //查询跟采购单有关联的订单sku + var relationOrderSkuList = currentOrderSkuList.Where(osku => relationByWaybillNoPurchaseOrderList.Any(po => po.BelongSkuIds.Contains(osku.SkuId))).ToList(); + foreach (var osku in relationOrderSkuList) { - bool isSignAll = true; - foreach (var relation in relationGroup) + //查询跟此订单sku有关的采购单 + var relationByOrderSkuPurchaseOrderList = currentPurchaseOrderList.Where(po => po.BelongSkuIds.Contains(osku.SkuId)).ToList(); + var isSignAll = true; + foreach (var po in relationByOrderSkuPurchaseOrderList) { - var purchaseSku = orderPurchaseSkuInfoList.FirstOrDefault(x => x.PurchaseSkuId == relation.PurchaseSkuId); - if (purchaseSku == null || string.IsNullOrEmpty(purchaseSku.WaybillNo)) + if (po.PurchasePlatform == Enums.Platform.阿里巴巴) { - isSignAll = false; - continue; + //查询跟此sku有关的关联信息 + var oriRelationList = orderPurchaseRelationList_all.Where(ori => ori.OrderId == osku.OrderId && + ori.PurchaseOrderId == po.PurchaseOrderId && + ori.BelongSkuId == osku.SkuId).ToList(); + if (oriRelationList.Count() == 0) + { + isSignAll = false; + break; + } + foreach (var relation in oriRelationList) + { + var pos = orderPurchaseSkuList_all.FirstOrDefault(pos => pos.OrderId == relation.OrderId && + pos.PurchaseOrderId == relation.PurchaseOrderId && + pos.PurchaseSkuId == relation.PurchaseSkuId); + if (pos == null || string.IsNullOrEmpty(pos.WaybillNo)) + { + isSignAll = false; + break; + } + var peo = purchaseExpressOrderList_all.FirstOrDefault(x => x.WaybillNo == pos.WaybillNo); + if (peo == null || peo.ExpressState != "QianShou") + { + isSignAll = false; + break; + } + } + if (!isSignAll) + break; } - var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == purchaseSku.WaybillNo); - if (purchaseExpressOrder == null || purchaseExpressOrder.ExpressState != "QianShou") + else { - isSignAll = false; - continue; + var peoList = purchaseExpressOrderList_all.Where(x => x.OrderId == osku.OrderId && x.PurchaseOrderId == po.PurchaseOrderId); + if (peoList.Count() == 0 || peoList.Any(peo => peo.ExpressState != "QianShou")) + { + isSignAll = false; + break; + } } } - - restApiService.SendRequest("http://qiku.qiyue666.com", - "/Api/PackPurchaseTask/UpdateAvailabilityState", - new - { - availability = isSignAll ? 0 : 1, - orderId = relationGroup.FirstOrDefault().OrderId, - skuId = relationGroup.Key - }, - null, - HttpMethod.Post); - - } - } - catch (Exception ex) - { - - } - } - - private void PublishQiKuPurchaseExpressOrder(OrderPurchaseInfo orderPurchaseInfo, IList purchaseExpressOrderList) - { - try - { - if (string.IsNullOrEmpty(orderPurchaseInfo.BelongSkuIds)) - return; - - var orderId = purchaseExpressOrderList.FirstOrDefault().OrderId; - var orderSkuList = fsql.Select().Where(osku => osku.OrderId == orderId).ToList(); - - var isSignAll = !purchaseExpressOrderList.Any(x => x.ExpressState != "QianShou"); - - var notifyList = orderSkuList.Where(osku => orderPurchaseInfo.BelongSkuIds.Contains(osku.SkuId)).ToList(); - if (notifyList.Count() == 0) - return; - foreach (var notifySku in notifyList) - { - restApiService.SendRequest("http://qiku.qiyue666.com", - "/Api/PackPurchaseTask/UpdateAvailabilityState", - new - { - availability = isSignAll ? 0 : 1, - orderId = notifySku.OrderId, - skuId = notifySku.BelongSkuId - }, - null, - HttpMethod.Post); + //推送齐库 + + var publishResult = restApiService.SendRequest("http://qiku.qiyue666.com", + "/Api/PackPurchaseTask/UpdateAvailabilityState", + new + { + availability = isSignAll ? 0 : 1, + orderId = osku.OrderId, + skuId = osku.BelongSkuId + }, null, HttpMethod.Post); + if (publishResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new Exception(publishResult.Content); } } catch { } + } From 9126926d84112900e688c96203ce847ddad410ba Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 2 Sep 2023 12:50:11 +0800 Subject: [PATCH 72/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D1688=E7=88=AC=E8=99=AB?= =?UTF-8?q?=E5=95=86=E5=AE=B6=E5=90=8D=E7=A7=B0=E6=8F=90=E5=8F=96=E8=A7=84?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseProductAPIService.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index 1011e70..fcff95a 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -218,8 +218,24 @@ namespace BBWYB.Server.Business #region 验证purchaserName var purchaserName = jobject["globalData"]["tempModel"]["companyName"].ToString(); if (invalidPurchaserNameList.Contains(purchaserName)) - { - //取 + { + var storeDataMatch = Regex.Match(_1688pageResult.Content, @"(window\.__STORE_DATA=)(.*)(\r*\n*\s*)"); + if (storeDataMatch.Success) + { + try + { + var jsonStr_storeData = storeDataMatch.Groups[2].Value; + var jobject_storeData = JObject.Parse(jsonStr_storeData); + var purchaserName_storeData = jobject_storeData["components"]?["38229149"]?["moduleData"]?["companyName"].ToString(); + if (string.IsNullOrEmpty(purchaserName_storeData)) + purchaserName_storeData = jobject_storeData["components"]?["38229148"]?["moduleData"]?["companyName"].ToString(); + if (string.IsNullOrEmpty(purchaserName_storeData)) + purchaserName_storeData = jobject_storeData["components"]?["38229150"]?["moduleData"]?["companyName"].ToString(); + if (!string.IsNullOrEmpty(purchaserName_storeData)) + purchaserName = purchaserName_storeData; + } + catch { } + } } #endregion From 845d5d011e6b394b1478565ec3a0b26e14a30055 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 3 Sep 2023 22:29:26 +0800 Subject: [PATCH 73/89] 1 --- .../Controllers/DataRepairController.cs | 10 ++++++ .../DataRepair/DataRepairBusiness.cs | 35 +++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index fa223f4..3cfa44f 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -49,5 +49,15 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SupplementPurchaseSchemeGroup(); } + + + /// + /// 手动处理待核算 + /// + [HttpPost] + public void RepairOrderStateToCheckComputation() + { + dataRepairBusiness.RepairOrderStateToCheckComputation(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 1132c3b..cb1c992 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -244,5 +244,40 @@ namespace BBWYB.Server.Business }); } } + + public void RepairOrderStateToCheckComputation() + { + List insertComputationTaskList = new List(); + var time = DateTime.Parse("2023-09-01"); + var orderList = fsql.Select().Where(o => o.StartTime <= time && o.OrderState == Enums.OrderState.待验收).ToList(); + var orderIdsList = orderList.Select(o => o.Id).ToList(); + var checmComputationTaskList = fsql.Select().Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务 && orderIdsList.Contains(t.OrderId)).ToList(); + foreach (var order in orderList) + { + if (!checmComputationTaskList.Any(x => x.OrderId == order.Id)) + { + insertComputationTaskList.Add(new TimeLimitTask() + { + Id = idGenerator.NewLong(), + OrderId = order.Id, + CreateTme = DateTime.Now, + ExpirationTime = DateTime.Now.AddDays(1), + OrderSn = order.OrderSn, + Remark = "手工处理待核算", + ShopId = order.ShopId, + TaskType = Enums.TimeLimitTaskType.待核算任务 + }); + } + } + + fsql.Transaction(() => + { + if (insertComputationTaskList.Count() > 0) + fsql.Insert(insertComputationTaskList).ExecuteAffrows(); + fsql.Update().Set(o => o.OrderState, Enums.OrderState.待核算) + .Where(o => o.StartTime <= time && o.OrderState == Enums.OrderState.待验收) + .ExecuteAffrows(); + }); + } } } From db58c1fa657af0478198da85bb826713f0b75856 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 4 Sep 2023 17:36:34 +0800 Subject: [PATCH 74/89] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=9C=80=E8=BF=91=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC=E6=98=AF?= =?UTF-8?q?=E4=BB=A5=E9=87=87=E8=B4=AD=E5=8D=95=E7=9A=84=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E5=8D=95=E4=BB=B7=E4=B8=BA=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 39 +++++++++++++++---- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 3 -- .../PurchaseOrder/CargoParamRequest.cs | 9 ++++- .../PurchaseOrder/PreviewOrderRequest.cs | 4 +- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 109e792..57fc92e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -317,7 +317,7 @@ namespace BBWYB.Server.Business List insertOrderCostDetails = new List(); List insertOrderPurchaseInfos = new List(); List insertOrderPurchaseSkuInfos = new List(); - List updatePurchaseTimeSchemeIdList = new List(); + List> updatePurchaseSchemeList = new List>(); List insertOrderPurchaseRelationInfoList = new List(); List updatePurchaseTimeLimitTaskOrderSkuList = new List(); List notifyQikuPackSchemeParamList = null; @@ -328,6 +328,7 @@ namespace BBWYB.Server.Business IUpdate updateOrderCost = null; List insertOrderSkuCostList = new List(); IList> updateOrderSkuCostList = new List>(); + List createdPurchaseOrderItemList = new List(); foreach (var cargoParamGroup in request.CargoParamGroupList) { @@ -338,8 +339,6 @@ namespace BBWYB.Server.Business var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform); var extJson = extJArray.FirstOrDefault(j => j.Value("PurchaserId") == cargoParamGroup.PurchaserId); - updatePurchaseTimeSchemeIdList.AddRange(cargoParamGroup.CargoParamList.Select(p => p.SchemeId).Distinct()); - var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList); var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest() @@ -372,15 +371,15 @@ namespace BBWYB.Server.Business AppToken = purchaseAccount.AppToken, OrderId = createOrderResponse.OrderId }); + createdPurchaseOrderItemList.AddRange(purchaseOrderSimpleInfo.ItemList); //totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; //totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; + #region 创建订单采购关系 foreach (var cargoParam in cargoParamGroup.CargoParamList) { var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId); - - #region 创建订单采购关系 insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo() { Id = idGenerator.NewLong(), @@ -395,8 +394,8 @@ namespace BBWYB.Server.Business SchemeId = cargoParam.SchemeId, SourceSkuId = orderSku?.BelongSkuId }); - #endregion } + #endregion #region 等比计算采购成本 var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo); @@ -497,6 +496,27 @@ namespace BBWYB.Server.Business #endregion } + #region 更新采购方案最近采购价格 + { + var allCargoParamList = new List(); + + request.CargoParamGroupList.ForEach(x => allCargoParamList.AddRange(x.CargoParamList)); + + var cargoParamGroupsBySchemeList = allCargoParamList.GroupBy(c => c.SchemeId); + foreach (var cargoParamGroupsByScheme in cargoParamGroupsBySchemeList) + { + var defalutCost = 0M; + var schemeId = cargoParamGroupsByScheme.Key; + + defalutCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId) + .Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)).DefaultIfEmpty(0M).First()); + var update = fsql.Update(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now) + .Set(ps => ps.LastPurchasePriceCost, defalutCost); + updatePurchaseSchemeList.Add(update); + } + } + #endregion + #region 订单Sku成本 var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList(); foreach (var orderSku in orderSkus) @@ -590,8 +610,11 @@ namespace BBWYB.Server.Business fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); - if (updatePurchaseTimeSchemeIdList.Count() > 0) - fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); + if (updatePurchaseSchemeList.Count() > 0) + { + foreach (var update in updatePurchaseSchemeList) + update.ExecuteAffrows(); + } 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) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 286dd05..7938a27 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -6,10 +6,7 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; -using MySqlX.XDevAPI; using Newtonsoft.Json; -using Org.BouncyCastle.Asn1.X509.Qualified; -using System.Net.Http.Headers; using Yitter.IdGenerator; namespace BBWYB.Server.Business diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs index f87cc75..22bbb7b 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs @@ -17,7 +17,7 @@ public string SpecId { get; set; } /// - /// 采购数量 + /// 采购配件数量 (订单sku数量 * 采购比例) /// public int Quantity { get; set; } @@ -30,6 +30,11 @@ /// 采购方案Id /// public long SchemeId { get; set; } + + /// + /// 配件的采购比例 不传值默认1 + /// + public int? PurchaseRatio { get; set; } } public class CargoParamGroupRequest { @@ -52,6 +57,6 @@ /// /// 采购商品列表 /// - public IList CargoParamList { get; set; } + public List CargoParamList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs index 600af08..a55aff4 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs @@ -7,7 +7,7 @@ namespace BBWYB.Server.Model.Dto /// /// 采购账号列表 /// - public IList PurchaseAccountList { get; set; } + public List PurchaseAccountList { get; set; } public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; } @@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Dto /// /// 采购参数列表(以采购商分组) /// - public IList CargoParamGroupList { get; set; } + public List CargoParamGroupList { get; set; } } } From 91ede8071032462bdef78e306dc346ca8c55320e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 5 Sep 2023 11:24:39 +0800 Subject: [PATCH 75/89] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseProductAPIService.cs | 26 +++++++++++++++++++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 3 ++- .../PurchaseProductBasicInfoResponse.cs | 5 ++++ .../PurchaseSchemeProductResponse.cs | 5 ++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index fcff95a..927269e 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -152,6 +152,20 @@ namespace BBWYB.Server.Business APIMode = Enums.PurchaseProductAPIMode.OneBound }; } + else if (jobject.Value("error_code") == "2000") + { + return new PurchaseSkuBasicInfoResponse() + { + IsInvalid = true, + APIMode = request.FirstApiMode, + PurchaseProductId = request.PurchaseProductId, + PurchasePlatform = request.Platform + }; + } + else + { + return null; + } } catch { } { @@ -210,7 +224,19 @@ namespace BBWYB.Server.Business var match = Regex.Match(_1688pageResult.Content, @"(window\.__INIT_DATA=)(.*)(\r*\n*\s*)"); if (!match.Success) + { + if (_1688pageResult.Content.Contains("商品已下架")) + { + return new PurchaseSkuBasicInfoResponse() + { + IsInvalid = true, + PurchasePlatform = request.Platform, + APIMode = request.FirstApiMode, + PurchaseProductId = request.PurchaseProductId + }; + } return null; + } var jsonStr = match.Groups[2].Value; var jobject = JObject.Parse(jsonStr); diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 286dd05..7b24d65 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -626,7 +626,7 @@ namespace BBWYB.Server.Business Platform = schemeProduct.PurchasePlatform ?? Enums.Platform.阿里巴巴, PurchaseProductId = schemeProduct.PurchaseProductId }); - if (basicInfo != null) + if (basicInfo != null && !basicInfo.IsInvalid) { schemeProduct.PurchaseProductLogo = basicInfo.ProductLogo; schemeProduct.PurchaseProductName = basicInfo.ProductName; @@ -644,6 +644,7 @@ namespace BBWYB.Server.Business } } } + schemeProduct.IsInvalid = (basicInfo == null || basicInfo.IsInvalid) ? 1 : 0; } catch { diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs index 28d0738..3d0cacc 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseProductBasicInfoResponse.cs @@ -26,6 +26,11 @@ namespace BBWYB.Server.Model.Dto public Purchaser Purchaser { get; set; } public Enums.PurchaseProductAPIMode APIMode { get; set; } + + /// + /// 是否失效 + /// + public bool IsInvalid { get; set; } } /// diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs index 7010514..a1033c5 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs @@ -24,6 +24,11 @@ public new List PurchaseSchemeProductSkuList { get; set; } + /// + /// 是否失效 失效=1 下架或无权都视为失效 其余情况默认为有效 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public int? IsInvalid { get; set; } + public PurchaseSchemeProductResponse() { PurchaseSchemeProductSkuList = new List(); From 4360499c1d9764f64ee42494a63700a945581c31 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 6 Sep 2023 13:33:29 +0800 Subject: [PATCH 76/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 3 + .../DataRepair/DataRepairBusiness.cs | 59 +++++++++++++++++++ .../Extensions/OrderStateExtension.cs | 2 +- 3 files changed, 63 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 3cfa44f..fe21727 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -59,5 +59,8 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.RepairOrderStateToCheckComputation(); } + + [HttpPost] + public void RepairOrderState() { dataRepairBusiness.RepairOrderState(); } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index cb1c992..260d66d 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -278,6 +278,65 @@ namespace BBWYB.Server.Business .Where(o => o.StartTime <= time && o.OrderState == Enums.OrderState.待验收) .ExecuteAffrows(); }); + } + + public void RepairOrderState() + { + var orderStateList = new List() { Enums.OrderState.待发货, Enums.OrderState.待收货, Enums.OrderState.部分发货, Enums.OrderState.部分收货, Enums.OrderState.待付款, Enums.OrderState.等待采购 }; + var orderList = fsql.Select().Where(o => orderStateList.Contains(o.OrderState)).ToList(); + var orderIdLIst = orderList.Select(o => o.Id).ToList(); + var orderSkuList = fsql.Select().Where(osku => orderIdLIst.Contains(osku.OrderId)).ToList(); + var poList = fsql.Select().Where(opi => orderIdLIst.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); + var updateOrderQueue = new Queue>(); + + foreach (var order in orderList) + { + var oskuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); + var polist1 = poList.Where(p => p.OrderId == order.Id).ToList(); + var oldState = order.OrderState; + order.CalculationOrderState(fsql, oskuList, polist1); + if (oldState != order.OrderState) + { + updateOrderQueue.Enqueue(fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState)); + Console.WriteLine($"{order.Id},{order.StartTime},计算状态:{order.OrderState}"); + } + } + var updateOrderList = new List>(); + while (true) + { + if (updateOrderQueue.TryDequeue(out var update)) + { + updateOrderList.Add(update); + } + else + { + break; + } + if (updateOrderList.Count() > 50) + { + fsql.Transaction(() => + { + foreach (var u in updateOrderList) + u.ExecuteAffrows(); + }); + Console.WriteLine($"执行数据库 {DateTime.Now}"); + updateOrderList.Clear(); + } + } + if (updateOrderList.Count() > 0) + { + fsql.Transaction(() => + { + foreach (var u in updateOrderList) + u.ExecuteAffrows(); + }); + updateOrderList.Clear(); + Console.WriteLine($"最后执行数据库 {DateTime.Now}"); + } + + + + } } } diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index eef8e59..088ee57 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -41,7 +41,7 @@ namespace BBWYB.Server.Business #region 部分采购 foreach (var osku in orderSkuList) { - if (!orderPurchaseInfoList.Any(opi => opi.BelongSkuIds.Contains(osku.SkuId))) + if (!orderPurchaseInfoList.Any(opi => !string.IsNullOrEmpty(opi.BelongSkuIds) && opi.BelongSkuIds.Contains(osku.SkuId))) { order.OrderState = Enums.OrderState.部分采购; return; From 2df5e36aba79cefae5524329cd7b52abf3266ac8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 6 Sep 2023 19:29:35 +0800 Subject: [PATCH 77/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dshu=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 8 +++ .../DataRepair/DataRepairBusiness.cs | 63 +++++++++++++++++-- .../Extensions/OrderStateExtension.cs | 3 +- BBWYB.Server.Business/Order/OrderBusiness.cs | 3 +- BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs | 2 +- 5 files changed, 71 insertions(+), 8 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index fe21727..df6b0a4 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -62,5 +62,13 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public void RepairOrderState() { dataRepairBusiness.RepairOrderState(); } + + [HttpPost] + public void SyncCCancelOrder() + { dataRepairBusiness.SyncCCancelOrder(); } + + [HttpPost] + public void SelectBExistsAndCNotExists() + { dataRepairBusiness.SelectBExistsAndCNotExists(); } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 260d66d..49b735d 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -14,11 +14,13 @@ namespace BBWYB.Server.Business private KuaiDi100Manager kuaiDi100Manager; private PurchaseSchemeBusiness purchaseSchemeBusiness; private PurchaseOrderBusiness purchaseOrderBusiness; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness) : base(fsql, nLogManager, idGenerator) + private FreeSqlMultiDBManager freeSqlMultiDBManager; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; this.purchaseOrderBusiness = purchaseOrderBusiness; + this.freeSqlMultiDBManager = freeSqlMultiDBManager; } @@ -282,17 +284,50 @@ namespace BBWYB.Server.Business public void RepairOrderState() { - var orderStateList = new List() { Enums.OrderState.待发货, Enums.OrderState.待收货, Enums.OrderState.部分发货, Enums.OrderState.部分收货, Enums.OrderState.待付款, Enums.OrderState.等待采购 }; - var orderList = fsql.Select().Where(o => orderStateList.Contains(o.OrderState)).ToList(); + var orderStateList = new List() { Enums.OrderState.待发货, Enums.OrderState.部分发货 }; + var orderList = fsql.Select().Where(o => orderStateList.Contains(o.OrderState)).OrderByDescending(o => o.StartTime).ToList(); var orderIdLIst = orderList.Select(o => o.Id).ToList(); var orderSkuList = fsql.Select().Where(osku => orderIdLIst.Contains(osku.OrderId)).ToList(); var poList = fsql.Select().Where(opi => orderIdLIst.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => orderIdLIst.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrder + { + CreateTime = peo.CreateTime, + ExpressContent = peo.ExpressContent, + ExpressChangedTime = peo.ExpressChangedTime, + ExpressState = peo.ExpressState, + IsSubscribeKD100 = peo.IsSubscribeKD100, + OrderId = eori.OrderId, + PurchaseOrderId = eori.PurchaseOrderId, + ShopId = eori.ShopId.Value, + SourceExpressId = peo.SourceExpressId, + SourceExpressName = peo.SourceExpressName, + TargetExpressId = peo.TargetExpressId, + TargetExpressName = peo.TargetExpressName, + WaybillNo = peo.WaybillNo + }); var updateOrderQueue = new Queue>(); foreach (var order in orderList) { + if (order.IntoStoreType == null) + order.IntoStoreType = Enums.IntoStoreType.发回齐越; var oskuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); var polist1 = poList.Where(p => p.OrderId == order.Id).ToList(); + + foreach (var po in polist1) + { + if (po.OrderState == null) + { + var peoList = purchaseExpressOrderList.Where(peo => peo.OrderId == po.OrderId && po.PurchaseOrderId == po.PurchaseOrderId).ToList(); + if (peoList.Count() > 0 && peoList.Count(peo => peo.ExpressState == "QianShou") == peoList.Count()) + { + po.OrderState = Enums.PurchaseOrderState.已签收; + } + } + } + var oldState = order.OrderState; order.CalculationOrderState(fsql, oskuList, polist1); if (oldState != order.OrderState) @@ -333,10 +368,30 @@ namespace BBWYB.Server.Business updateOrderList.Clear(); Console.WriteLine($"最后执行数据库 {DateTime.Now}"); } + } + public void SyncCCancelOrder() + { + var c_cancel_orderlist = freeSqlMultiDBManager.BBWYCfsql.Select().Where(p => p.OrderState == Enums.OrderState.已取消).ToList(); + var c_cancel_orderIdlist = c_cancel_orderlist.Select(p => p.Id).ToList(); + if (c_cancel_orderIdlist.Count() > 0) + { + fsql.Transaction(() => + { + fsql.Update(c_cancel_orderIdlist).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + }); + } + } - + public void SelectBExistsAndCNotExists() + { + var cIds = freeSqlMultiDBManager.BBWYCfsql.Select().OrderByDescending(p => p.Id).ToList(p => p.Id); + var bIds = fsql.Select().OrderByDescending(o => o.Id).ToList(o => o.Id); + var bexceptIdList = bIds.Except(cIds).ToList(); + var cexceptIdList = cIds.Except(bIds).ToList(); + Console.WriteLine($"B端在而C端不在的数量有 {bexceptIdList.Count()}"); + Console.WriteLine($"C端在而B端不在的数量有 {cexceptIdList.Count()}"); } } } diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 088ee57..86e8672 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -21,8 +21,7 @@ namespace BBWYB.Server.Business IList orderPurchaseInfoList = null) { if (order.OrderState == Enums.OrderState.已取消 || - order.OrderState == Enums.OrderState.已完成 || - order.OrderState == Enums.OrderState.待付款) + order.OrderState == Enums.OrderState.已完成) //order.OrderState == Enums.OrderState.待付款 return; if (orderSkuList == null) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index dab1f9a..6605a33 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -12,6 +12,7 @@ using Newtonsoft.Json; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; +using System.Collections.Concurrent; using System.Linq.Expressions; using System.Security.Cryptography; using Yitter.IdGenerator; @@ -550,7 +551,7 @@ namespace BBWYB.Server.Business } catch { - + } //var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'"; diff --git a/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs b/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs index ccc561c..3e9aaf4 100644 --- a/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs +++ b/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs @@ -116,7 +116,7 @@ namespace BBWYB.Server.Model.Db.BBWY /// 采购单状态(待付款=0,待发货=1,待收货=2,待质检=3,待打包=4,待结算=5,已完成=6) /// [Column(MapType = typeof(int?))] - public Enums.PurchaseOrderState? OrderState { get; set; } + public Enums.OrderState? OrderState { get; set; } /// /// 支付时间 From da745843002c80de7377e02dcd1957b55a080395 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 6 Sep 2023 23:52:38 +0800 Subject: [PATCH 78/89] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E5=A4=87=E6=B3=A8=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Sync/OrderSyncBusiness.cs | 6 ++++++ BBWYB.Server.Model/Db/Order/Order.cs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 9cf75d4..3dad87f 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -207,6 +207,12 @@ namespace BBWYB.Server.Business.Sync { #region 订单状态脱离拳探 只处理付款和取消 Enums.OrderState? updateOrderState = null; + if (orderState == Enums.OrderState.待付款 && dbOrder.OrderState!=Enums.OrderState.待付款) + { + //dbOrder.OrderState = Enums.OrderState.待付款; + updateOrderState = Enums.OrderState.待付款; + } + if (dbOrder.OrderState == Enums.OrderState.待付款 && orderState != Enums.OrderState.待付款) updateOrderState = Enums.OrderState.等待采购; diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index 37cca53..f664971 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -23,7 +23,7 @@ namespace BBWYB.Server.Model.Db /// /// 买家备注 /// - + [Column(StringLength = 1000)] public string BuyerRemark { get; set; } /// From 3d45d35077bf4b1a2c67d01f2ed6396eb0a6e8f2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 7 Sep 2023 10:58:00 +0800 Subject: [PATCH 79/89] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BF=AB=E9=80=92100?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=97=B6=20=E5=90=8C=E6=AD=A5C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=9A=84=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 57fc92e..a423504 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -2666,10 +2666,6 @@ namespace BBWYB.Server.Business var update = fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState); updateOrderList.Add(update); - #region 通知C端状态 - Task.Factory.StartNew(() => SendPurchaseOrderStateToC(order.Id, order.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - #endregion - #region 创建待核算任务 if (order.OrderState == Enums.OrderState.待核算) { @@ -2713,9 +2709,14 @@ namespace BBWYB.Server.Business }); } #endregion + + #region 通知C端状态 + Task.Factory.StartNew(() => SendPurchaseOrderStateToC(order.Id, order.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion } #endregion + #region 更新数据库 fsql.Transaction(() => { From 77bbadb5be83e47886d7ae31b48ae1c959fa3de4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 7 Sep 2023 13:24:04 +0800 Subject: [PATCH 80/89] =?UTF-8?q?1.=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=96=B9=E6=A1=88=E7=89=88?= =?UTF-8?q?=E6=9C=AC=202.=E5=9C=A8=E7=BA=BF=E4=B8=8B=E5=8D=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=96=B9=E6=A1=88=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 5 +- .../Db/Order/OrderPurchaseRelationinfo.cs | 5 ++ .../OrderPurchaseRelationInfo.cs | 40 --------- .../Db/PurchaseScheme/PurchaseScheme.cs | 6 ++ .../history/HistoryPurchaseScheme.cs | 89 +++++++++++++++++++ .../history/HistoryPurchaseSchemeProduct.cs | 65 ++++++++++++++ .../HistoryPurchaseSchemeProductsku.cs | 77 ++++++++++++++++ .../PurchaseOrder/CargoParamRequest.cs | 5 ++ 8 files changed, 251 insertions(+), 41 deletions(-) delete mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/OrderPurchaseRelationInfo.cs create mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs create mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs create mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 57fc92e..3ddb21a 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -392,7 +392,8 @@ namespace BBWYB.Server.Business PurchaseSpecId = cargoParam.SpecId, Quantity = cargoParam.Quantity, SchemeId = cargoParam.SchemeId, - SourceSkuId = orderSku?.BelongSkuId + SourceSkuId = orderSku?.BelongSkuId, + SchemeVersion = cargoParam.SchemeVersion ?? 1 }); } #endregion @@ -863,6 +864,7 @@ namespace BBWYB.Server.Business PurchaseProductId = cargoParam.ProductId, PurchaseSpecId = cargoParam.SpecId, SchemeId = cargoParam.SchemeId, + SchemeVersion = cargoParam.SchemeVersion ?? 1, Quantity = assOrderCostDetail.PurchaseQuantity, SourceSkuId = dbOrderSku.BelongSkuId }; @@ -3124,6 +3126,7 @@ namespace BBWYB.Server.Business ProductId = pss.PurchaseProductId, SkuId = pss.PurchaseSkuId, SchemeId = pss.SkuPurchaseSchemeId, + SchemeVersion = scheme.Version, SpecId = pss.PurchaseSkuSpecId, Quantity = itemTotal * (pss.PurchaseRatio ?? 1) })); diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseRelationinfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseRelationinfo.cs index 66af1a8..2712ae5 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseRelationinfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseRelationinfo.cs @@ -64,6 +64,11 @@ namespace BBWYB.Server.Model.Db /// public long? SchemeId { get; set; } + /// + /// 采购方案版本 + /// + public int SchemeVersion { get; set; } = 1; + /// /// 来源SkuId (JD) /// diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/OrderPurchaseRelationInfo.cs b/BBWYB.Server.Model/Db/PurchaseScheme/OrderPurchaseRelationInfo.cs deleted file mode 100644 index 629c939..0000000 --- a/BBWYB.Server.Model/Db/PurchaseScheme/OrderPurchaseRelationInfo.cs +++ /dev/null @@ -1,40 +0,0 @@ -using FreeSql.DataAnnotations; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; - -namespace BBWYB.Server.Model.Db.PurchaseScheme -{ - [Table(Name = "orderpurchaserelationinfo", DisableSyncStructure = true)] - public class OrderPurchaseRelationInfo - { - [Column( IsPrimary = true)] - public long Id { get; set; } - - /// - /// 采购单Id - /// - public string PurchaseOrderId { get; set; } - /// - /// 订单Id - /// - public string OrderId { get; set; } - - /// - /// 采购方案Id - /// - public string SchemeId { get; set; } - /// - /// 采购spu - /// - public string PurchaseProductId { get; set; } - /// - /// 采购sku - /// - public string PurchaseSkuId { get; set; } - } -} diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index 4b9e582..2880073 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -70,6 +70,12 @@ namespace BBWYB.Server.Model [Column(DbType = "bigint")] public long SchemeGroupId { get; set; } = 0; + /// + /// 方案版本 + /// + [Column(DbType = "int")] + public int Version { get; set; } = 1; + [Column(IsIgnore = true)] public List PurchaseSchemeProductList { get; set; } } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs new file mode 100644 index 0000000..d9798b2 --- /dev/null +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs @@ -0,0 +1,89 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 历史采购方案表 + /// + [Table(Name = "historypurchasescheme", DisableSyncStructure = true)] + public partial class HistoryPurchaseScheme + { + /// + /// 历史流水Id + /// + [Column(DbType = "bigint", IsPrimary = true)] + public long HistoryId { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 采购默认成本 + /// + + public decimal? DefaultCost { get; set; } + + /// + /// 慧眼标的Id + /// + [Column(StringLength = 50)] + public string HYBDId { get; set; } + + /// + /// 慧眼采购方案Id + /// + [Column(StringLength = 50)] + public string HYSchemeId { get; set; } + + /// + /// 采购方案Id + /// + [Column(DbType = "bigint")] + public long? Id { get; set; } + + /// + /// 上次采购成本 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? LastPurchasePriceCost { get; set; } + + /// + /// 上次采购时间 + /// + [Column(DbType = "datetime")] + public DateTime? LastPurchaseTime { get; set; } + + [Column(StringLength = 50, IsNullable = false)] + public string ProductId { get; set; } + + /// + /// 采购商Id + /// + [Column(StringLength = 20)] + public string PurchaserId { get; set; } + + /// + /// 方案分组Id + /// + [Column(DbType = "bigint")] + public long? SchemeGroupId { get; set; } + + /// + /// 店铺Id + /// + [Column(DbType = "bigint")] + public long ShopId { get; set; } + + [Column(StringLength = 50, IsNullable = false)] + public string SkuId { get; set; } + + /// + /// 采购方案版本 + /// + [Column(DbType = "int")] + public int? Version { get; set; } = 1; + + } + +} diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs new file mode 100644 index 0000000..982cc45 --- /dev/null +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs @@ -0,0 +1,65 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 采购方案商品表 + /// + [ Table(Name = "historypurchaseschemeproduct", DisableSyncStructure = true)] + public partial class HistoryPurchaseSchemeProduct { + + /// + /// 历史流水Id + /// + [Column(DbType = "bigint", IsPrimary = true)] + public long HistoryId { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 采购商品流水Id + /// + [Column(DbType = "bigint")] + public long? Id { get; set; } + + [Column(StringLength = 50)] + public string ProductId { get; set; } + + /// + /// 采购商品Id + /// + [Column(StringLength = 50)] + public string PurchaseProductId { get; set; } + + /// + /// 商家Id + /// + [Column(StringLength = 50)] + public string PurchaserId { get; set; } + + /// + /// 采购商品链接 + /// + [Column(StringLength = 500)] + public string PurchaseUrl { get; set; } + + [Column(StringLength = 50)] + public string SkuId { get; set; } + + /// + /// Sku采购方案Id + /// + [Column(DbType = "bigint")] + public long? SkuPurchaseSchemeId { get; set; } + + /// + /// 采购方案版本 + /// + [Column(DbType = "int")] + public int? Version { get; set; } = 1; + + } + +} diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs new file mode 100644 index 0000000..95eba67 --- /dev/null +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs @@ -0,0 +1,77 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 采购方案sku表 + /// + [Table(Name = "historypurchaseschemeproductsku", DisableSyncStructure = true)] + public partial class HistoryPurchaseSchemeProductSku { + + /// + /// 历史流水Id + /// + [Column(DbType = "bigint", IsPrimary = true)] + public long HistoryId { get; set; } + + /// + /// 实际单价(人工设置) + /// + [Column(DbType = "decimal(18,2)")] + public decimal? ActualPrice { get; set; } = 0.00M; + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// + /// 采购sku流水Id + /// + [Column(DbType = "bigint")] + public long? Id { get; set; } + + [Column(StringLength = 50, IsNullable = false)] + public string ProductId { get; set; } + + /// + /// 采购商品Id + /// + [Column(StringLength = 50, IsNullable = false)] + public string PurchaseProductId { get; set; } + + /// + /// 采购比例 + /// + [Column(DbType = "int")] + public int? PurchaseRatio { get; set; } = 1; + + /// + /// 采购商品的SkuId + /// + [Column(StringLength = 50)] + public string PurchaseSkuId { get; set; } + + /// + /// 采购商品Sku的SpecId + /// + [Column(StringLength = 50)] + public string PurchaseSkuSpecId { get; set; } + + [Column(StringLength = 50, IsNullable = false)] + public string SkuId { get; set; } + + /// + /// Sku采购方案Id + /// + [Column(DbType = "bigint")] + public long SkuPurchaseSchemeId { get; set; } + + /// + /// 采购方案版本 + /// + [Column(DbType = "int")] + public int? Version { get; set; } = 1; + + } + +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs index 22bbb7b..2286220 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs @@ -31,6 +31,11 @@ /// public long SchemeId { get; set; } + /// + /// 采购方案版本 + /// + public int? SchemeVersion { get; set; } = 1; + /// /// 配件的采购比例 不传值默认1 /// From f570b4c4d63bd773c2a05aecab7791004a2b5a08 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 7 Sep 2023 18:23:29 +0800 Subject: [PATCH 81/89] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Common/Log/NLogManager.cs | 2 -- .../PurchaseOrder/PurchaseOrderBusiness.cs | 3 ++- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 7 +++++++ .../Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs | 5 +++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/BBWYB.Common/Log/NLogManager.cs b/BBWYB.Common/Log/NLogManager.cs index 54c00a6..698aede 100644 --- a/BBWYB.Common/Log/NLogManager.cs +++ b/BBWYB.Common/Log/NLogManager.cs @@ -29,8 +29,6 @@ namespace BBWYB.Common.Log loggerDictionary.TryAdd(loggerName, logger); } return logger; - - } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3ddb21a..51e2bda 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -489,7 +489,8 @@ namespace BBWYB.Server.Business notifyQikuPackSchemeParamList.Add(new QiKuPackTaskSkuPurchaseSchemeIdRequest() { SkuId = orderSku.BelongSkuId, - SkuPurchaseSchemeId = cargoParam.SchemeId.ToString() + SkuPurchaseSchemeId = cargoParam.SchemeId.ToString(), + SchemeVersion = cargoParam.SchemeVersion ?? 1 }); } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 7a53413..5affc42 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -206,6 +206,7 @@ namespace BBWYB.Server.Business List dbSchemeGroupList = null; List dbPurchaseSchemeList = null; List deleteSchemeIdList = new List(); + #region 数据验证 if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && (batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)) @@ -338,6 +339,10 @@ namespace BBWYB.Server.Business IInsert? insertPurchaseSchemeGroupIndex = null; IUpdate? updatePurchaseSchemeGroupIndex = null; + List insertHistoryPSList = new List(); + List insertHistoryPSPList = new List(); + List insertHistoryPSSList = new List(); + if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { @@ -423,6 +428,8 @@ namespace BBWYB.Server.Business if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0) { ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList); + var editSchemeIdList = batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id).ToList(); + List dbPurchaseSchemes = fsql.Select().Where(ps => editSchemeIdList.Contains(ps.Id)).ToList(); deletePartsSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id)); foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) diff --git a/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs b/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs index 8bde0fe..08ce525 100644 --- a/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs @@ -5,5 +5,10 @@ public string SkuId { get; set; } public string SkuPurchaseSchemeId { get; set; } + + /// + /// 采购方案版本 + /// + public long? SchemeVersion { get; set; } = 1; } } From bfd64ba4b34c4dfef14d3235824383109f1f3030 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 7 Sep 2023 21:30:23 +0800 Subject: [PATCH 82/89] =?UTF-8?q?=E7=BC=96=E8=BE=91/=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E4=BF=9D=E5=AD=98=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=8E=86=E5=8F=B2=EF=BC=8C=E4=BF=AE=E8=A1=A5=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E6=96=B9=E6=A1=88=E5=8E=86=E5=8F=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 4 ++ .../DataRepair/DataRepairBusiness.cs | 70 ++++++++++++++++++- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 70 +++++++++++++++++-- .../history/HistoryPurchaseScheme.cs | 6 -- .../history/HistoryPurchaseSchemeProduct.cs | 6 -- .../HistoryPurchaseSchemeProductsku.cs | 5 -- BBWYB.Server.Model/MappingProfiles.cs | 8 ++- 7 files changed, 144 insertions(+), 25 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index df6b0a4..b1b3720 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -70,5 +70,9 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public void SelectBExistsAndCNotExists() { dataRepairBusiness.SelectBExistsAndCNotExists(); } + + [HttpPost] + public void SyncHistoryPurchaseScheme() + { dataRepairBusiness.SyncHistoryPurchaseScheme();} } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 49b735d..a9ab217 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -1,4 +1,5 @@ -using BBWYB.Common.Log; +using BBWYB.Common.Extensions; +using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; @@ -15,12 +16,14 @@ namespace BBWYB.Server.Business private PurchaseSchemeBusiness purchaseSchemeBusiness; private PurchaseOrderBusiness purchaseOrderBusiness; private FreeSqlMultiDBManager freeSqlMultiDBManager; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager) : base(fsql, nLogManager, idGenerator) + private VenderBusiness venderBusiness; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; this.purchaseOrderBusiness = purchaseOrderBusiness; this.freeSqlMultiDBManager = freeSqlMultiDBManager; + this.venderBusiness = venderBusiness; } @@ -393,5 +396,68 @@ namespace BBWYB.Server.Business Console.WriteLine($"B端在而C端不在的数量有 {bexceptIdList.Count()}"); Console.WriteLine($"C端在而B端不在的数量有 {cexceptIdList.Count()}"); } + + public void SyncHistoryPurchaseScheme() + { + var qtShops = venderBusiness.GetShopList(platform: Enums.Platform.拳探); + foreach (var shop in qtShops) + { + var psList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() + { + ShopId = long.Parse(shop.ShopId) + }); + + List insertHistoryPSList = new List(); + List insertHistoryPSPList = new List(); + List insertHistoryPSSList = new List(); + //List updatePurchaseSchemeIdList = new List(); + + foreach (var ps in psList) + { + //var newVersion = ps.Version + 1; + var newVersion = ps.Version; + foreach (var psp in ps.PurchaseSchemeProductList) + { + foreach (var pss in psp.PurchaseSchemeProductSkuList) + { + #region 处理历史版本 + var historyPss = psp.Map(); + historyPss.HistoryId = idGenerator.NewLong(); + historyPss.Version = newVersion; + insertHistoryPSSList.Add(historyPss); + #endregion + } + #region 处理历史版本 + var historyPsp = psp.Map(); + historyPsp.HistoryId = idGenerator.NewLong(); + historyPsp.Version = newVersion; + insertHistoryPSPList.Add(historyPsp); + #endregion + } + + #region 处理历史版本 + var historyPs = ps.Map(); + historyPs.HistoryId = idGenerator.NewLong(); + historyPs.Version = newVersion; + insertHistoryPSList.Add(historyPs); + + //updatePurchaseSchemeIdList.Add(ps.Id); + #endregion + } + + + fsql.Transaction(() => + { + if (insertHistoryPSList.Count() > 0) + fsql.Insert(insertHistoryPSList).ExecuteAffrows(); + if (insertHistoryPSPList.Count() > 0) + fsql.Insert(insertHistoryPSPList).ExecuteAffrows(); + if (insertHistoryPSSList.Count() > 0) + fsql.Insert(insertHistoryPSSList).ExecuteAffrows(); + //if (updatePurchaseSchemeIdList.Count() > 0) + // fsql.Update(updatePurchaseSchemeIdList).Set(ps => ps.Version + 1).ExecuteAffrows(); + }); + } + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 5affc42..b9b324b 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -340,8 +340,8 @@ namespace BBWYB.Server.Business IUpdate? updatePurchaseSchemeGroupIndex = null; List insertHistoryPSList = new List(); - List insertHistoryPSPList = new List(); - List insertHistoryPSSList = new List(); + List insertHistoryPSPList = new List(); + List insertHistoryPSSList = new List(); if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) @@ -400,7 +400,8 @@ namespace BBWYB.Server.Business ShopId = psReq.ShopId, HYBDId = psReq.HYBDId, HYSchemeId = psReq.HYSchemeId, - SchemeGroupId = psReq.SchemeGroupId ?? 0 + SchemeGroupId = psReq.SchemeGroupId ?? 0, + Version = 1 }; addPurchaseSchemeList.Add(ps); foreach (var pspReq in psReq.PurchaseSchemeProductList) @@ -419,8 +420,28 @@ namespace BBWYB.Server.Business pss.SkuPurchaseSchemeId = ps.Id; addPurchaseSchemeProductSkuList.Add(pss); ps.DefaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); + + #region 处理历史版本 + var historyPss = psp.Map(); + historyPss.HistoryId = idGenerator.NewLong(); + historyPss.Version = 1; + insertHistoryPSSList.Add(historyPss); + #endregion } + + #region 处理历史版本 + var historyPsp = psp.Map(); + historyPsp.HistoryId = idGenerator.NewLong(); + historyPsp.Version = 1; + insertHistoryPSPList.Add(historyPsp); + #endregion } + + #region 处理历史版本 + var historyPs = ps.Map(); + historyPs.HistoryId = idGenerator.NewLong(); + insertHistoryPSList.Add(historyPs); + #endregion } } @@ -435,6 +456,10 @@ namespace BBWYB.Server.Business foreach (var psReq in batchCURDSchemeRequest.EditPurchaseSchemeList) { var schemeId = psReq.Id; + var dbps = dbPurchaseSchemes.FirstOrDefault(x => x.Id == schemeId); + if (dbps == null) + throw new BusinessException($"未找到编辑方案{schemeId}"); + var newVersion = dbps.Version + 1; //采购方案版本 var defaultCost = 0M; foreach (var pspReq in psReq.PurchaseSchemeProductList) { @@ -452,13 +477,43 @@ namespace BBWYB.Server.Business pss.SkuPurchaseSchemeId = schemeId; addPurchaseSchemeProductSkuList.Add(pss); defaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); + + #region 处理历史版本 + var historyPss = pssReq.Map(); + historyPss.HistoryId = idGenerator.NewLong(); + historyPss.CreateTime = DateTime.Now; + historyPss.SkuPurchaseSchemeId = schemeId; + historyPss.Version = newVersion; + insertHistoryPSSList.Add(historyPss); + #endregion } + + #region 处理历史版本 + var historyPsp = pspReq.Map(); + historyPsp.HistoryId = idGenerator.NewLong(); + historyPsp.CreateTime = DateTime.Now; + historyPsp.SkuPurchaseSchemeId = schemeId; + historyPsp.Version = newVersion; + insertHistoryPSPList.Add(historyPsp); + #endregion } var psupdate = fsql.Update(schemeId) .Set(ps => ps.DefaultCost, defaultCost) .Set(ps => ps.HYSchemeId, psReq.HYSchemeId) - .Set(ps => ps.HYBDId, psReq.HYBDId); + .Set(ps => ps.HYBDId, psReq.HYBDId) + .Set(ps => ps.Version, newVersion); updatePurchaseSchemeList.Add(psupdate); + + #region 处理历史版本 + var historyPs = psReq.Map(); + historyPs.LastPurchaseTime = dbps.LastPurchaseTime; + historyPs.LastPurchasePriceCost = dbps.LastPurchasePriceCost; + historyPs.DefaultCost = defaultCost; + historyPs.CreateTime = DateTime.Now; + historyPs.Version = newVersion; + historyPs.HistoryId = idGenerator.NewLong(); + insertHistoryPSList.Add(historyPs); + #endregion } } #endregion @@ -497,6 +552,13 @@ namespace BBWYB.Server.Business } insertPurchaseSchemeGroupIndex?.ExecuteAffrows(); updatePurchaseSchemeGroupIndex?.ExecuteAffrows(); + + if (insertHistoryPSList.Count() > 0) + fsql.Insert(insertHistoryPSList).ExecuteAffrows(); + if (insertHistoryPSPList.Count() > 0) + fsql.Insert(insertHistoryPSPList).ExecuteAffrows(); + if (insertHistoryPSSList.Count() > 0) + fsql.Insert(insertHistoryPSSList).ExecuteAffrows(); }); //删除信息残缺的采购方案 diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs index d9798b2..fa4f370 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseScheme.cs @@ -57,12 +57,6 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 50, IsNullable = false)] public string ProductId { get; set; } - /// - /// 采购商Id - /// - [Column(StringLength = 20)] - public string PurchaserId { get; set; } - /// /// 方案分组Id /// diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs index 982cc45..86cab85 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProduct.cs @@ -18,12 +18,6 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } - /// - /// 采购商品流水Id - /// - [Column(DbType = "bigint")] - public long? Id { get; set; } - [Column(StringLength = 50)] public string ProductId { get; set; } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs index 95eba67..78c6cb2 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/HistoryPurchaseSchemeProductsku.cs @@ -24,11 +24,6 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } - /// - /// 采购sku流水Id - /// - [Column(DbType = "bigint")] - public long? Id { get; set; } [Column(StringLength = 50, IsNullable = false)] public string ProductId { get; set; } diff --git a/BBWYB.Server.Model/MappingProfiles.cs b/BBWYB.Server.Model/MappingProfiles.cs index 65112b1..d3b3542 100644 --- a/BBWYB.Server.Model/MappingProfiles.cs +++ b/BBWYB.Server.Model/MappingProfiles.cs @@ -50,8 +50,12 @@ namespace BBWYB.Server.Model .ForPath(t => t.OrderCost.PurchaseFreight, opt => opt.MapFrom(f => f.PurchaseFreight)); CreateMap(); - //CreateMap(); - + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); } } } From 866f757ac4ef886de7ae8164e23c56b6cc0c063e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 7 Sep 2023 21:31:34 +0800 Subject: [PATCH 83/89] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=89=88=E6=9C=AC=E4=B8=8D=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index a9ab217..14d12b6 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -410,7 +410,7 @@ namespace BBWYB.Server.Business List insertHistoryPSList = new List(); List insertHistoryPSPList = new List(); List insertHistoryPSSList = new List(); - //List updatePurchaseSchemeIdList = new List(); + foreach (var ps in psList) { From c6941df3201e755befc4e00b4226c859f1617dcd Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 7 Sep 2023 21:45:51 +0800 Subject: [PATCH 84/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=98=A0=E5=B0=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs | 2 +- BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs | 2 +- BBWYB.Server.Model/MappingProfiles.cs | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 14d12b6..e7c4272 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -421,7 +421,7 @@ namespace BBWYB.Server.Business foreach (var pss in psp.PurchaseSchemeProductSkuList) { #region 处理历史版本 - var historyPss = psp.Map(); + var historyPss = pss.Map(); historyPss.HistoryId = idGenerator.NewLong(); historyPss.Version = newVersion; insertHistoryPSSList.Add(historyPss); diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index b9b324b..748c5de 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -422,7 +422,7 @@ namespace BBWYB.Server.Business ps.DefaultCost += ((pssReq.ActualPrice ?? pssReq.DefaultPrice) ?? 0) * (pssReq.PurchaseRatio ?? 1); #region 处理历史版本 - var historyPss = psp.Map(); + var historyPss = pss.Map(); historyPss.HistoryId = idGenerator.NewLong(); historyPss.Version = 1; insertHistoryPSSList.Add(historyPss); diff --git a/BBWYB.Server.Model/MappingProfiles.cs b/BBWYB.Server.Model/MappingProfiles.cs index d3b3542..f3a6555 100644 --- a/BBWYB.Server.Model/MappingProfiles.cs +++ b/BBWYB.Server.Model/MappingProfiles.cs @@ -56,6 +56,9 @@ namespace BBWYB.Server.Model CreateMap(); CreateMap(); CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); } } } From 2c1db35566b25843cf3465490d5f080dfbcb7f10 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 9 Sep 2023 04:28:56 +0800 Subject: [PATCH 85/89] 1 --- BBWYB.Server.Business/Extensions/OrderStateExtension.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 86e8672..088ee57 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -21,7 +21,8 @@ namespace BBWYB.Server.Business IList orderPurchaseInfoList = null) { if (order.OrderState == Enums.OrderState.已取消 || - order.OrderState == Enums.OrderState.已完成) //order.OrderState == Enums.OrderState.待付款 + order.OrderState == Enums.OrderState.已完成 || + order.OrderState == Enums.OrderState.待付款) return; if (orderSkuList == null) From caf46c384a4da985299abeebb2971656399f1754 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 10 Sep 2023 10:01:21 +0800 Subject: [PATCH 86/89] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=B7=B2=E5=88=A0=E9=99=A4=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 26 +++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 6605a33..c925b5a 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -525,15 +525,23 @@ namespace BBWYB.Server.Business public void CancelOrder(CancelOrderRequest request, string mdsToken) { - opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform).CancelOrder(new OP_CancelOrderRequest() + try { - AppKey = request.AppKey, - AppSecret = request.AppSecret, - AppToken = request.AppToken, - OrderId = request.OrderId, - Platform = (AdapterEnums.PlatformType)request.Platform, - Remark = request.Remark - }); + opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform).CancelOrder(new OP_CancelOrderRequest() + { + AppKey = request.AppKey, + AppSecret = request.AppSecret, + AppToken = request.AppToken, + OrderId = request.OrderId, + Platform = (AdapterEnums.PlatformType)request.Platform, + Remark = request.Remark + }); + } + catch (Exception ex) + { + if (!ex.Message.Contains("订单已删除")) + throw new Exception(ex.Message); + } fsql.Transaction(() => { @@ -551,7 +559,7 @@ namespace BBWYB.Server.Business } catch { - + } //var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'"; From b8579a52cf21a4a91dd79d528a4ac3891880413b Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 10 Sep 2023 10:02:14 +0800 Subject: [PATCH 87/89] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8A=A5=E4=B8=9A=E5=8A=A1=E5=BC=82=E5=B8=B8?= 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 c925b5a..636814a 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -540,7 +540,7 @@ namespace BBWYB.Server.Business catch (Exception ex) { if (!ex.Message.Contains("订单已删除")) - throw new Exception(ex.Message); + throw new BusinessException(ex.Message); } fsql.Transaction(() => From 27c306584f3fcb4417b506237321774d911c164e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 11 Sep 2023 00:25:48 +0800 Subject: [PATCH 88/89] =?UTF-8?q?=E5=86=85=E7=BD=91=E6=8E=A8=E9=80=81C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 8 +- .../DataRepair/DataRepairBusiness.cs | 117 +++++++++++++++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 12 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 12 +- 4 files changed, 140 insertions(+), 9 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index b1b3720..35ac049 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -73,6 +73,12 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public void SyncHistoryPurchaseScheme() - { dataRepairBusiness.SyncHistoryPurchaseScheme();} + { dataRepairBusiness.SyncHistoryPurchaseScheme(); } + + [HttpPost] + public void BatchCompleteOrder() + { + dataRepairBusiness.BatchCompleteOrder(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index e7c4272..3af8d51 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -5,6 +5,9 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; +using SDKAdapter; +using SDKAdapter.OperationPlatform.Client; +using SDKAdapter.OperationPlatform.Models; using System.Net.Http.Headers; using Yitter.IdGenerator; @@ -17,13 +20,15 @@ namespace BBWYB.Server.Business private PurchaseOrderBusiness purchaseOrderBusiness; private FreeSqlMultiDBManager freeSqlMultiDBManager; private VenderBusiness venderBusiness; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) + private OP_PlatformClientFactory opPlatformClientFactory; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; this.purchaseOrderBusiness = purchaseOrderBusiness; this.freeSqlMultiDBManager = freeSqlMultiDBManager; this.venderBusiness = venderBusiness; + this.opPlatformClientFactory = opPlatformClientFactory; } @@ -410,7 +415,7 @@ namespace BBWYB.Server.Business List insertHistoryPSList = new List(); List insertHistoryPSPList = new List(); List insertHistoryPSSList = new List(); - + foreach (var ps in psList) { @@ -459,5 +464,113 @@ namespace BBWYB.Server.Business }); } } + + public void BatchCompleteOrder() + { + var time = DateTime.Parse("2023-09-01"); + //var orderStateList = new List() { Enums.OrderState.待付款, Enums.OrderState.已取消, Enums.OrderState.已完成 }; + //var orderList = fsql.Select().Where(o => o.StartTime < time && !orderStateList.Contains(o.OrderState)).ToList(); + + var orderList = fsql.Select().Where(o => o.StartTime < time && o.OrderState == Enums.OrderState.待付款).ToList(); + var shops = venderBusiness.GetShopList(platform: Enums.Platform.拳探); + var count = orderList.Count(); + var i = 1; + + Queue> updateOrderQueue = new Queue>(); + List> updateOrderList = new List>(); + foreach (var order in orderList) + { + Console.WriteLine($"{i}/{count},{order.Id}"); + try + { + var shop = shops.FirstOrDefault(s => s.ShopId == order.ShopId.ToString()); + if (shop == null) + { + i++; + continue; + } + var qtOrderList = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探).GetOrderList(new OP_QueryOrderRequest() + { + AppKey = shop.AppKey, + AppSecret = shop.AppSecret, + AppToken = shop.AppToken, + OrderId = order.Id, + PageIndex = 1, + PageSize = 100, + Platform = AdapterEnums.PlatformType.拳探, + SortTimeField = AdapterEnums.SortTimeField.Modify, + SortType = AdapterEnums.SortType.Desc, + StartDate = null, + EndDate = null + }); + if (qtOrderList.Count == 0) + { + var update = fsql.Update(order.Id).Set(o => o.OrderState, Enums.OrderState.已取消); + updateOrderQueue.Enqueue(update); + + i++; + continue; + } + + var qtOrder = qtOrderList.Items[0]; + if (qtOrder.OrderState != "-1" && qtOrder.IsPay) + { + var update = fsql.Update(order.Id).Set(o => o.OrderState, Enums.OrderState.已完成); + updateOrderQueue.Enqueue(update); + } + + if ((qtOrder.OrderState == "-1" || !qtOrder.IsPay) && order.OrderState != Enums.OrderState.已取消) + { + var update = fsql.Update(order.Id).Set(o => o.OrderState, Enums.OrderState.已取消); + updateOrderQueue.Enqueue(update); + } + } + catch + { + + } + finally + { + i++; + } + } + + if (updateOrderQueue.Count() > 0) + { + while (true) + { + if (updateOrderQueue.TryDequeue(out var update)) + updateOrderList.Add(update); + else + break; + + if (updateOrderList.Count() == 10) + { + Console.Write($"执行数据库 {DateTime.Now}"); + fsql.Transaction(() => + { + foreach (var u in updateOrderList) + { + u.ExecuteAffrows(); + } + }); + updateOrderList.Clear(); + } + } + + if (updateOrderList.Count() > 0) + { + Console.Write($"最后执行数据库 {DateTime.Now}"); + fsql.Transaction(() => + { + foreach (var u in updateOrderList) + { + u.ExecuteAffrows(); + } + }); + updateOrderList.Clear(); + } + } + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 636814a..b231f07 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -782,15 +782,21 @@ namespace BBWYB.Server.Business { try { - restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new +#if DEBUG + var url = "https://bbwy.qiyue666.com"; +#else + var url = "http://172.16.54.105:8090"; +#endif + + restApiService.SendRequest(url, "api/BatchPurchase/UpdatePurchaseOrderState", new { OrderId = orderId, PurchaseOrderState = orderState }, null, HttpMethod.Post); } - catch + catch (Exception ex) { - + nLogManager.Default().Error(ex, $"OrderId-{orderId}推送C订单状态[{orderState}]失败"); } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ebe5db3..15ea68e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -3071,15 +3071,21 @@ namespace BBWYB.Server.Business { try { - restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new +#if DEBUG + var url = "https://bbwy.qiyue666.com"; +#else + var url = "http://172.16.54.105:8090"; +#endif + + restApiService.SendRequest(url, "api/BatchPurchase/UpdatePurchaseOrderState", new { OrderId = orderId, PurchaseOrderState = orderState }, null, HttpMethod.Post); } - catch + catch (Exception ex) { - + nLogManager.Default().Error(ex, $"OrderId-{orderId}推送C订单状态[{orderState}]失败"); } } From ae42491df84551b68e591b154311c8af69b7bdc2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 11 Sep 2023 01:56:10 +0800 Subject: [PATCH 89/89] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 6 +- .../DataRepair/DataRepairBusiness.cs | 130 +++++------------- 2 files changed, 36 insertions(+), 100 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 35ac049..36204fd 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -60,16 +60,14 @@ namespace BBWYB.Server.API.Controllers dataRepairBusiness.RepairOrderStateToCheckComputation(); } - [HttpPost] - public void RepairOrderState() { dataRepairBusiness.RepairOrderState(); } [HttpPost] public void SyncCCancelOrder() { dataRepairBusiness.SyncCCancelOrder(); } [HttpPost] - public void SelectBExistsAndCNotExists() - { dataRepairBusiness.SelectBExistsAndCNotExists(); } + public void BSyncToC() + { dataRepairBusiness.BSyncToC(); } [HttpPost] public void SyncHistoryPurchaseScheme() diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 3af8d51..a18cacc 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -1,4 +1,5 @@ using BBWYB.Common.Extensions; +using BBWYB.Common.Http; using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; @@ -21,7 +22,8 @@ namespace BBWYB.Server.Business private FreeSqlMultiDBManager freeSqlMultiDBManager; private VenderBusiness venderBusiness; private OP_PlatformClientFactory opPlatformClientFactory; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator) + private RestApiService restApiService; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; @@ -29,6 +31,7 @@ namespace BBWYB.Server.Business this.freeSqlMultiDBManager = freeSqlMultiDBManager; this.venderBusiness = venderBusiness; this.opPlatformClientFactory = opPlatformClientFactory; + this.restApiService = restApiService; } @@ -290,94 +293,6 @@ namespace BBWYB.Server.Business }); } - public void RepairOrderState() - { - var orderStateList = new List() { Enums.OrderState.待发货, Enums.OrderState.部分发货 }; - var orderList = fsql.Select().Where(o => orderStateList.Contains(o.OrderState)).OrderByDescending(o => o.StartTime).ToList(); - var orderIdLIst = orderList.Select(o => o.Id).ToList(); - var orderSkuList = fsql.Select().Where(osku => orderIdLIst.Contains(osku.OrderId)).ToList(); - var poList = fsql.Select().Where(opi => orderIdLIst.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); - var purchaseExpressOrderList = fsql.Select() - .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) - .Where((eori, peo) => orderIdLIst.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrder - { - CreateTime = peo.CreateTime, - ExpressContent = peo.ExpressContent, - ExpressChangedTime = peo.ExpressChangedTime, - ExpressState = peo.ExpressState, - IsSubscribeKD100 = peo.IsSubscribeKD100, - OrderId = eori.OrderId, - PurchaseOrderId = eori.PurchaseOrderId, - ShopId = eori.ShopId.Value, - SourceExpressId = peo.SourceExpressId, - SourceExpressName = peo.SourceExpressName, - TargetExpressId = peo.TargetExpressId, - TargetExpressName = peo.TargetExpressName, - WaybillNo = peo.WaybillNo - }); - var updateOrderQueue = new Queue>(); - - foreach (var order in orderList) - { - if (order.IntoStoreType == null) - order.IntoStoreType = Enums.IntoStoreType.发回齐越; - var oskuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); - var polist1 = poList.Where(p => p.OrderId == order.Id).ToList(); - - foreach (var po in polist1) - { - if (po.OrderState == null) - { - var peoList = purchaseExpressOrderList.Where(peo => peo.OrderId == po.OrderId && po.PurchaseOrderId == po.PurchaseOrderId).ToList(); - if (peoList.Count() > 0 && peoList.Count(peo => peo.ExpressState == "QianShou") == peoList.Count()) - { - po.OrderState = Enums.PurchaseOrderState.已签收; - } - } - } - - var oldState = order.OrderState; - order.CalculationOrderState(fsql, oskuList, polist1); - if (oldState != order.OrderState) - { - updateOrderQueue.Enqueue(fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState)); - Console.WriteLine($"{order.Id},{order.StartTime},计算状态:{order.OrderState}"); - } - } - var updateOrderList = new List>(); - while (true) - { - if (updateOrderQueue.TryDequeue(out var update)) - { - updateOrderList.Add(update); - } - else - { - break; - } - if (updateOrderList.Count() > 50) - { - fsql.Transaction(() => - { - foreach (var u in updateOrderList) - u.ExecuteAffrows(); - }); - Console.WriteLine($"执行数据库 {DateTime.Now}"); - updateOrderList.Clear(); - } - } - if (updateOrderList.Count() > 0) - { - fsql.Transaction(() => - { - foreach (var u in updateOrderList) - u.ExecuteAffrows(); - }); - updateOrderList.Clear(); - Console.WriteLine($"最后执行数据库 {DateTime.Now}"); - } - } - public void SyncCCancelOrder() { var c_cancel_orderlist = freeSqlMultiDBManager.BBWYCfsql.Select().Where(p => p.OrderState == Enums.OrderState.已取消).ToList(); @@ -392,14 +307,37 @@ namespace BBWYB.Server.Business } - public void SelectBExistsAndCNotExists() + public void BSyncToC() { - var cIds = freeSqlMultiDBManager.BBWYCfsql.Select().OrderByDescending(p => p.Id).ToList(p => p.Id); - var bIds = fsql.Select().OrderByDescending(o => o.Id).ToList(o => o.Id); - var bexceptIdList = bIds.Except(cIds).ToList(); - var cexceptIdList = cIds.Except(bIds).ToList(); - Console.WriteLine($"B端在而C端不在的数量有 {bexceptIdList.Count()}"); - Console.WriteLine($"C端在而B端不在的数量有 {cexceptIdList.Count()}"); + var time = DateTime.Parse("2023-09-01"); + var orderList = fsql.Select().Where(o => o.StartTime < time).OrderByDescending(o => o.Id).ToList(o => new { o.Id, o.OrderState }); + var count = orderList.Count(); + var i = 1; + foreach (var order in orderList) + { + + + Thread.Sleep(500); + try + { + var url = "https://bbwy.qiyue666.com"; + var result = restApiService.SendRequest(url, "api/BatchPurchase/UpdatePurchaseOrderState", new + { + OrderId = order.Id, + PurchaseOrderState = order.OrderState + }, null, HttpMethod.Post); + + Console.WriteLine($"{i}/{count},{order.Id},{result.StatusCode}"); + } + catch (Exception ex) + { + + } + finally + { + i++; + } + } } public void SyncHistoryPurchaseScheme()