From 2375fe11c386a6f12704baf08db832ddf794ca25 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 22 Jul 2023 01:15:26 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=AE=A2=E5=8D=95sku=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=20=20=20?= =?UTF-8?q?=201.1=20=E6=94=B6=E5=88=B0=E9=9C=80=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=9D=A1=E4=BB=B6=E5=88=9B=E5=BB=BA=E5=90=88?= =?UTF-8?q?=E6=A0=BC=E8=AF=81=E8=A1=A5=E5=85=85=E4=BB=BB=E5=8A=A1=20=20=20?= =?UTF-8?q?=201.2=20=E6=94=B6=E5=88=B0=E5=B7=B2=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=90=88=E6=A0=BC=E8=AF=81=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=20=20=20=201.3=20=E6=9B=B4=E6=96=B0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95SKU=E9=85=8D=E7=BD=AE=E7=8A=B6=E6=80=81=202.=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E9=87=87=E8=B4=AD=E5=8D=95=E5=92=8C=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=97=B6=E6=A0=B9=E6=8D=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=88=9B=E5=BB=BA=E5=90=88=E6=A0=BC=E8=AF=81=E6=8B=9F?= =?UTF-8?q?=E5=AE=9A=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Order/OrderBusiness.cs | 25 ++-- .../PurchaseOrder/PurchaseOrderBusiness.cs | 6 +- BBWYB.Server.Business/QiKuManager.cs | 107 ++++++++++++++++-- BBWYB.Server.Model/Enums.cs | 4 +- 4 files changed, 123 insertions(+), 19 deletions(-) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index dd7aff5..2b0502d 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -7,6 +7,7 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; @@ -19,13 +20,23 @@ namespace BBWYB.Server.Business { public class OrderBusiness : BaseBusiness, IDenpendency { - private OP_PlatformClientFactory opPlatformClientFactory; - private RestApiService restApiService; + private IList waitConfigStateList; - public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) + + private Lazy qikuManagerLazy; + private Lazy opPlatformClientFactoryLazy; + private Lazy restApiServiceLazy; + + private OP_PlatformClientFactory opPlatformClientFactory => opPlatformClientFactoryLazy.Value; + private RestApiService restApiService => restApiServiceLazy.Value; + private QiKuManager qikuManager => qikuManagerLazy.Value; + + public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) { - this.opPlatformClientFactory = opPlatformClientFactory; - this.restApiService = restApiService; + qikuManagerLazy = new Lazy(() => serviceProvider.GetService()); + opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService()); + restApiServiceLazy = new Lazy(() => serviceProvider.GetService()); + waitConfigStateList = new List() { Enums.PackConfigState.待配置, Enums.PackConfigState.需修改 }; } @@ -670,8 +681,8 @@ namespace BBWYB.Server.Business /// /// public void QikuPublishOrderSkuPackConfigState(QikuPublishOrderSkuPackConfigStateRequest request) - { - + { + qikuManager.QikuPublishOrderSkuPackConfigState(request); } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ceecd06..589f8b4 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -507,7 +507,7 @@ namespace BBWYB.Server.Business notifyQikuPackSchemeParamList != null && notifyQikuPackSchemeParamList.Count() > 0) { - Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, orderSkus), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(dbOrder, notifyQikuPackSchemeParamList, orderSkus), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } #endregion @@ -524,6 +524,7 @@ namespace BBWYB.Server.Business .Where(t => t.OrderId == request.OrderId) .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) .Where(t => t.CompletionTime == null) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) .ExecuteAffrows(); } @@ -970,7 +971,7 @@ namespace BBWYB.Server.Business if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越 && notifyQikuPackSchemeParamList.Count() > 0) { - Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, dbOrderSkuList), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(dbOrder, notifyQikuPackSchemeParamList, dbOrderSkuList), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } #endregion @@ -990,6 +991,7 @@ namespace BBWYB.Server.Business .Where(t => t.OrderId == request.OrderId) .Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId)) .Where(t => t.CompletionTime == null) + .Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) .ExecuteAffrows(); } if (updateOrderPurchaseInfoList.Count() > 0) diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index b0e61b8..272a2b4 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -6,18 +6,19 @@ using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json; +using Yitter.IdGenerator; namespace BBWYB.Server.Business { - public class QiKuManager : IDenpendency + public class QiKuManager : BaseBusiness, IDenpendency { private RestApiService restApiService; private IFreeSql fsql; private NLogManager nLogManager; - public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager) + + public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) { this.restApiService = restApiService; - this.fsql = fsql; } /// @@ -124,16 +125,17 @@ namespace BBWYB.Server.Business /// /// 查询齐库合格证 /// - /// + /// /// /// - public void SearchCerConfigured(string orderId, IList packTaskSkuPurchaseSchemeIdList, IList orderSkuList) + public void SearchCerConfigured(Order order, IList packTaskSkuPurchaseSchemeIdList, IList orderSkuList) { try { + nLogManager.Default().Info($"SearchCerConfigured OrderId {order.Id}, packTaskSkuPurchaseSchemeIdList {JsonConvert.SerializeObject(packTaskSkuPurchaseSchemeIdList)}"); var restApiResult = restApiService.SendRequest("http://qiku.qiyue666.com", "api/PackPurchaseTask/SearchCerConfigured", new { - orderId, + orderId = order.Id, packTaskSkuPurchaseSchemeIdList }, null, HttpMethod.Post); @@ -146,6 +148,7 @@ namespace BBWYB.Server.Business if (response.Data.PackTaskSkuPurchaseSchemeIdList != null && response.Data.PackTaskSkuPurchaseSchemeIdList.Count() > 0) { IList> updateOrderSkuList = new List>(); + List insertTimeLimitTaskList = new List(); foreach (var skuConfigured in response.Data.PackTaskSkuPurchaseSchemeIdList) { var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == skuConfigured.SkuId); @@ -160,9 +163,21 @@ namespace BBWYB.Server.Business updateOrderSkuList.Add(update); } - if (qiKuPackState == Enums.PackConfigState.待配置) + if (qiKuPackState == Enums.PackConfigState.待配置 && order.ShopId != 9) { //创建合格证拟定任务 + var t = new TimeLimitTask() + { + CreateTme = DateTime.Now, + Id = idGenerator.NewLong(), + OrderId = order.Id, + SkuId = orderSku.SkuId, + OrderSn = order.OrderSn, + ShopId = order.ShopId, + TaskType = Enums.TimeLimitTaskType.合格证拟定任务, + ExpirationTime = DateTime.Now.AddDays(1), + }; + insertTimeLimitTaskList.Add(t); } } @@ -173,13 +188,89 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderSkuList) update.ExecuteAffrows(); } + if (insertTimeLimitTaskList.Count() > 0) + fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); }); } } catch (Exception ex) { - nLogManager.Default().Error(ex, $"SearchCerConfigured\r\n{JsonConvert.SerializeObject(new { orderId, packTaskSkuPurchaseSchemeIdList })}"); + nLogManager.Default().Error(ex, $"SearchCerConfigured\r\n{JsonConvert.SerializeObject(new { order.Id, packTaskSkuPurchaseSchemeIdList })}"); } } + + + /// + /// 齐库推送sku配置状态 + /// + /// + public void QikuPublishOrderSkuPackConfigState(QikuPublishOrderSkuPackConfigStateRequest request) + { + var order = fsql.Select(request.OrderId).ToOne(); + if (order == null) + throw new BusinessException($"未查询到订单{request.OrderId}"); + + if (request.PackConfigState == Enums.PackConfigState.需修改 && order.ShopId != 9) + return; + + var orderSku = fsql.Select().Where(osku => osku.OrderId == request.OrderId && osku.BelongSkuId == request.SkuId).ToOne(); + if (orderSku == null) + throw new BusinessException($"未查询到订单来源sku{request.SkuId}"); + + + IInsert insertTimeLimitTask = null; + IUpdate updateTimeLimitTask = null; + IUpdate updateOrderSku = null; + + if (orderSku.PackConfigState != request.PackConfigState) + updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.PackConfigState, request.PackConfigState); + + if (request.PackConfigState == Enums.PackConfigState.需修改) + { + var isExists = fsql.Select().Where(t => t.OrderId == request.OrderId && + t.SkuId == orderSku.SkuId && + t.TaskType == Enums.TimeLimitTaskType.合格证补充任务) + .Any(); + if (!isExists) + { + var t = new TimeLimitTask() + { + CreateTme = DateTime.Now, + Id = idGenerator.NewLong(), + OrderId = request.OrderId, + SkuId = orderSku.SkuId, + OrderSn = order.OrderSn, + ShopId = order.ShopId, + TaskType = Enums.TimeLimitTaskType.合格证补充任务 + }; + if (DateTime.Now.Hour < 16) + t.ExpirationTime = DateTime.Now.AddHours(2); + else + t.ExpirationTime = DateTime.Now.Date.AddDays(1).AddHours(13); + insertTimeLimitTask = fsql.Insert(t); + } + } + else if (request.PackConfigState == Enums.PackConfigState.已配置) + { + var taskTypeList = new List() + { + Enums.TimeLimitTaskType.合格证拟定任务, + Enums.TimeLimitTaskType.合格证补充任务 + }; + updateTimeLimitTask = fsql.Update().Set(t => t.CompletionTime, DateTime.Now) + .Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) + .Where(t => t.OrderId == request.OrderId) + .Where(t => t.SkuId == orderSku.SkuId) + .Where(t => t.CompletionTime == null) + .Where(t => taskTypeList.Contains(t.TaskType)); + } + + fsql.Transaction(() => + { + insertTimeLimitTask?.ExecuteAffrows(); + updateTimeLimitTask?.ExecuteAffrows(); + updateOrderSku?.ExecuteAffrows(); + }); + } } } diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index caf06b6..48a2e81 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -308,11 +308,11 @@ } /// - /// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11 + /// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20 /// public enum TimeLimitTaskType { - 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11 + 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20 } } }