From 25138be09a42195a4f778eb5e8baf10da0d4ad60 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 4 Apr 2024 00:14:19 +0800 Subject: [PATCH 1/8] 1 --- .../SkuOptimization/OptimizationBusiness.cs | 18 ++++++++++++++++-- ...QueryNoCompletionOptimizationTaskRequest.cs | 5 +++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index 52e80a4..7439363 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -635,6 +635,8 @@ namespace BBWYB.Server.Business skuKeyWords = request.SpuOrSku; } + var barginTeamId = uInfo.bargainTeam?.Id ?? string.Empty; + select = fsql.Select() .Where(t => t.IsOptimizationCompleted == false && t.CreateTime >= request.StartTime && @@ -647,10 +649,22 @@ namespace BBWYB.Server.Business .WhereIf(!string.IsNullOrEmpty(skuKeyWords), st => st.SkuId == skuKeyWords) .Any()) .WhereIf(!string.IsNullOrEmpty(request.TitleKeywords), t => t.ProductTitle.Contains(request.TitleKeywords)) - .WhereIf(!string.IsNullOrEmpty(spuKeyWords), t => t.ProductId == spuKeyWords); + .WhereIf(!string.IsNullOrEmpty(spuKeyWords), t => t.ProductId == spuKeyWords) + .WhereIf(request.IsCompleted, t => t.IsOptimizationCompleted == true || + fsql.Select() + .Where(sbt => sbt.IsOptimizationCompleted == true && + sbt.SpuOptimizationTaskId == t.Id && + sbt.BelongTeamId == barginTeamId) + .Any()) + .WhereIf(!request.IsCompleted && !string.IsNullOrEmpty(barginTeamId), t => t.IsOptimizationCompleted == false && + fsql.Select() + .Where(sbt => sbt.IsOptimizationCompleted == false && + sbt.SpuOptimizationTaskId == t.Id && + sbt.BelongTeamId == barginTeamId) + .Any()); } - var taskList = select.OrderByDescending(t => t.CreateTime) + var taskList = select.OrderBy(t => t.CreateTime) .Count(out var total) .Page(request.PageIndex, request.PageSize) .ToList(); diff --git a/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs b/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs index bca729f..c228773 100644 --- a/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs @@ -40,5 +40,10 @@ namespace BBWYB.Server.Model.Dto /// 标题关键字 /// public string TitleKeywords { get; set; } + + /// + /// 是否完成 (议价组完成视为完成) + /// + public bool IsCompleted { get; set; } } } From 027e37927803e9f366e6c8ac9ab479657dee1bee Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 4 Apr 2024 00:17:27 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SkuOptimizationController.cs | 2 +- .../SkuOptimization/OptimizationBusiness.cs | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs index 9d9b66b..03c910f 100644 --- a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs +++ b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs @@ -78,7 +78,7 @@ namespace BBWYB.Server.API.Controllers [HttpGet] public long GetNoCompletedSpuOptimizationTaskCount() { - return optimizationBusiness.GetNoCompletedSpuOptimizationTaskCount(); + return optimizationBusiness.GetNoCompletedSpuOptimizationTaskCount(GetUserId()); } } } diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index 7439363..d6250e1 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -960,8 +960,20 @@ namespace BBWYB.Server.Business //fsql.Delete(ctTaskIdList).ExecuteAffrows(); } - public long GetNoCompletedSpuOptimizationTaskCount() + public long GetNoCompletedSpuOptimizationTaskCount(string userId) { + var uInfo = userBusiness.GetisBargainTeamByUserId(userId); + if (uInfo.isBargainTeam) + { + var barginTeamId = uInfo.bargainTeam?.Id ?? string.Empty; + return fsql.Select().Where(t => t.IsOptimizationCompleted == false && + fsql.Select() + .Where(sbt => sbt.IsOptimizationCompleted == false && + sbt.SpuOptimizationTaskId == t.Id && + sbt.BelongTeamId == barginTeamId) + .Any()).Count(); + } + return fsql.Select().Where(t => t.IsOptimizationCompleted == false).Count(); } } From 49a0d8c12f45e436295adc3907203808a403884d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 4 Apr 2024 04:51:31 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=AE=AE=E4=BB=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SkuOptimization/OptimizationBusiness.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index d6250e1..062a0b8 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -638,8 +638,7 @@ namespace BBWYB.Server.Business var barginTeamId = uInfo.bargainTeam?.Id ?? string.Empty; select = fsql.Select() - .Where(t => t.IsOptimizationCompleted == false && - t.CreateTime >= request.StartTime && + .Where(t => t.CreateTime >= request.StartTime && t.CreateTime <= request.EndTime) .WhereIf(request.BelongShopId != null && request.BelongShopId != 0, t => t.BelongShopId == request.BelongShopId) .WhereIf(!string.IsNullOrEmpty(request.JDSku) || @@ -661,9 +660,12 @@ namespace BBWYB.Server.Business .Where(sbt => sbt.IsOptimizationCompleted == false && sbt.SpuOptimizationTaskId == t.Id && sbt.BelongTeamId == barginTeamId) - .Any()); + .Any()) + .WhereIf(!request.IsCompleted && string.IsNullOrEmpty(barginTeamId), t => t.IsOptimizationCompleted == false); } + var sql = select.ToSql(); + var taskList = select.OrderBy(t => t.CreateTime) .Count(out var total) .Page(request.PageIndex, request.PageSize) @@ -973,7 +975,7 @@ namespace BBWYB.Server.Business sbt.BelongTeamId == barginTeamId) .Any()).Count(); } - + return fsql.Select().Where(t => t.IsOptimizationCompleted == false).Count(); } } From 9ecf072a4a30b380578696bae971ed9b9b8f0b1a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 5 Apr 2024 02:10:08 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=92=E5=B1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataRepair/DataRepairBusiness.cs | 133 +++++++++++++++--- BBWYB.Server.Model/BelongTestModel.cs | 28 ++++ 2 files changed, 145 insertions(+), 16 deletions(-) create mode 100644 BBWYB.Server.Model/BelongTestModel.cs diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index c9335a2..e271b67 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -15,7 +15,9 @@ using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; +using System.Collections.Generic; using System.Data; +using System.Net.Http.Headers; using System.Reflection; using System.Text; using Yitter.IdGenerator; @@ -1473,9 +1475,10 @@ namespace BBWYB.Server.Business }); var errorPurchaserList = new List(); - var errorSchemeList = new List(); + //var errorSchemeList = new List(); var errorSchemeGroupList = new List(); + var dbPurchaserList = fsql.Select().ToList(); var dbPurchaseGroupList = fsql.Select().ToList(); var dbSchemeList = fsql.Select().ToList(); @@ -1486,6 +1489,8 @@ namespace BBWYB.Server.Business var updateSchemeGroupList = new List(); var deletePsgIdList = new List(); + + foreach (var purchaseRelation in purchaseRelations) { var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == purchaseRelation.PurchaserName); @@ -1504,6 +1509,8 @@ namespace BBWYB.Server.Business } } + List compareNullBelongSchemeList = new List(); + var errorBelongSchemeList = new List(); foreach (var purchaseRelation in purchaseRelations) { var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == purchaseRelation.PurchaserName); @@ -1512,11 +1519,12 @@ namespace BBWYB.Server.Business //查询使用了该采购商的采购方案 var usePurchaserSchemeIdList = dbSchemeProductList.Where(psp => psp.PurchaserId == dbPurchaser.Id) - .Select(psp => psp.SkuPurchaseSchemeId) - .Distinct() - .ToList(); + .Select(psp => psp.SkuPurchaseSchemeId) + .Distinct() + .ToList(); var usePurchaserSchemeList = dbSchemeList.Where(ps => usePurchaserSchemeIdList.Contains(ps.Id)).ToList(); + foreach (var scheme in usePurchaserSchemeList) { var pspList = dbSchemeProductList.Where(psp => psp.SkuPurchaseSchemeId == scheme.Id).ToList(); @@ -1527,14 +1535,27 @@ namespace BBWYB.Server.Business var currentSchemePurchaserBelongGroups = currentSchemePurchaserList.GroupBy(p => p.BelongBargainTeamId); if (currentSchemePurchaserBelongGroups.Count() > 1) { - var sb = new StringBuilder($"采购方案{scheme.Id}使用了{currentSchemePurchaserBelongGroups.Count()}个不同归属的采购商 "); + //if (currentSchemePurchaserBelongGroups.Any(g => string.IsNullOrEmpty(g.Key))) + //{ + //采购方案包含多个不同议价组的采购商且议价组Id为空 + var schemeModel = new BelongSchemeTestModel() + { + SchemeId = scheme.Id, + BelongPurchaserTestModelList = new List() + }; + compareNullBelongSchemeList.Add(schemeModel); + foreach (var belongGroup in currentSchemePurchaserBelongGroups) { - var teamName = belongGroup.FirstOrDefault()?.BelongBargainTeamName; - sb.Append($"{teamName}:{string.Join(",", belongGroup.Select(x => x.Name))},"); + foreach (var purchaser in belongGroup) + { + schemeModel.BelongPurchaserTestModelList.Add(new BelongPurchaserTestModel() + { + BelongTeam = string.IsNullOrEmpty(purchaser.BelongBargainTeamName) ? "空" : purchaser.BelongBargainTeamName, + PurchaserName = purchaser.Name + }); + } } - - errorSchemeList.Add(sb.ToString()); } else if (currentSchemePurchaserBelongGroups.Count() == 1) { @@ -1549,6 +1570,60 @@ namespace BBWYB.Server.Business } } + #region 筛选有没有混合空组采购商的情况 + foreach (var belongScheme in compareNullBelongSchemeList) + { + if (belongScheme.BelongPurchaserTestModelList.Any(p => p.BelongTeam == "空")) + { + var nullBelongPurchaserList = belongScheme.BelongPurchaserTestModelList.Where(p => p.BelongTeam == "空").ToList(); + var otherSchemeList = compareNullBelongSchemeList.Where(c => c.SchemeId != belongScheme.SchemeId && + c.BelongPurchaserTestModelList.Any(p => p.BelongTeam == "空") && + c.BelongGroupKey != belongScheme.BelongGroupKey && + c.BelongPurchaserTestModelList.Any(x => nullBelongPurchaserList.Any(y => y.PurchaserName == x.PurchaserName))).ToList(); + if (otherSchemeList.Count() > 0) + { + foreach (var belongPurchaser in nullBelongPurchaserList) + { + belongPurchaser.RelationSchemeIdList = otherSchemeList.Where(c => c.BelongPurchaserTestModelList.Any(x => belongPurchaser.PurchaserName == x.PurchaserName)).Select(c => c.SchemeId).Distinct().ToList(); + } + errorBelongSchemeList.Add(belongScheme); + } + else + { + //没有混合空组 + var firstNoNullBelongPurchaserName = belongScheme.BelongPurchaserTestModelList.FirstOrDefault(p => p.BelongTeam != "空")?.PurchaserName; + var firstNoNullBelongPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == firstNoNullBelongPurchaserName); + if (firstNoNullBelongPurchaser != null) + { + foreach (var nullBelongPurchaser in nullBelongPurchaserList) + { + var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == nullBelongPurchaser.PurchaserName); + if (dbPurchaser != null) + { + dbPurchaser.BelongBargainTeamId = firstNoNullBelongPurchaser.BelongBargainTeamId; + dbPurchaser.BelongBargainTeamName = firstNoNullBelongPurchaser.BelongBargainTeamName; + dbPurchaser.BelongType = Enums.PurchaserBelongType.临时; + updatePurchaserList.Add(dbPurchaser); + } + } + + var dbScheme = dbSchemeList.FirstOrDefault(s => s.Id == belongScheme.SchemeId); + if (dbScheme != null) + { + dbScheme.BelongBargainTeamId = firstNoNullBelongPurchaser.BelongBargainTeamId; + dbScheme.BelongBargainTeamName = firstNoNullBelongPurchaser.BelongBargainTeamName; + updateSchemeList.Add(dbScheme); + } + } + } + } + else + { + errorBelongSchemeList.Add(belongScheme); + } + } + #endregion + foreach (var psg in dbPurchaseGroupList) { var schemeList = dbSchemeList.Where(ps => ps.SchemeGroupId == psg.Id).ToList(); @@ -1561,13 +1636,34 @@ namespace BBWYB.Server.Business var currentPsgPurchaserBelongGroups = schemeList.GroupBy(ps => ps.BelongBargainTeamId); if (currentPsgPurchaserBelongGroups.Count() > 1) { - var sb = new StringBuilder($"采购分组{psg.GroupName}使用了{currentPsgPurchaserBelongGroups.Count()}个不同归属的采购方案 "); - foreach (var belongGroup in currentPsgPurchaserBelongGroups) + //var sb = new StringBuilder($"采购分组{psg.GroupName}使用了{currentPsgPurchaserBelongGroups.Count()}个不同归属的采购方案"); + //foreach (var belongGroup in currentPsgPurchaserBelongGroups) + //{ + // var teamName = belongGroup.FirstOrDefault()?.BelongBargainTeamName; + // sb.Append($"{teamName}:{string.Join(",", belongGroup.Select(x => x.Id))},"); + //} + //errorSchemeGroupList.Add(sb.ToString()); + + var ps = currentPsgPurchaserBelongGroups.SelectMany(g => g.ToList()).FirstOrDefault(ps => !string.IsNullOrEmpty(ps.BelongBargainTeamId)); + + foreach (var schemeGroup in currentPsgPurchaserBelongGroups) + { + foreach (var scheme in schemeGroup) + { + if (string.IsNullOrEmpty(scheme.BelongBargainTeamId)) + { + scheme.BelongBargainTeamId = ps?.BelongBargainTeamId; + scheme.BelongBargainTeamName = ps?.BelongBargainTeamName; + updateSchemeList.Add(scheme); + } + } + } + + if (psg.BelongBargainTeamId != ps?.BelongBargainTeamId) { - var teamName = belongGroup.FirstOrDefault()?.BelongBargainTeamName; - sb.Append($"{teamName}:{string.Join(",", belongGroup.Select(x => x.Id))},"); + psg.BelongBargainTeamId = ps?.BelongBargainTeamId; + updateSchemeGroupList.Add(psg); } - errorSchemeGroupList.Add(sb.ToString()); } else if (currentPsgPurchaserBelongGroups.Count() == 1) { @@ -1581,10 +1677,15 @@ namespace BBWYB.Server.Business } if (errorPurchaserList.Count() > 0 || - errorSchemeList.Count() > 0 || + errorBelongSchemeList.Count() > 0 || errorSchemeGroupList.Count() > 0) { - var msg = JsonConvert.SerializeObject(errorPurchaserList.Union(errorSchemeList).Union(errorSchemeGroupList)); + if (errorBelongSchemeList.Count() > 0) + { + var msg2 = JsonConvert.SerializeObject(errorBelongSchemeList); + throw new BusinessException(msg2); + } + var msg = JsonConvert.SerializeObject(errorPurchaserList.Union(errorSchemeGroupList)); throw new BusinessException(msg); } diff --git a/BBWYB.Server.Model/BelongTestModel.cs b/BBWYB.Server.Model/BelongTestModel.cs new file mode 100644 index 0000000..ba9c32c --- /dev/null +++ b/BBWYB.Server.Model/BelongTestModel.cs @@ -0,0 +1,28 @@ +namespace BBWYB.Server.Model +{ + public class BelongSchemeTestModel + { + public long SchemeId { get; set; } + + public IList BelongPurchaserTestModelList { get; set; } + + public string BelongGroupKey + { + get + { + return string.Join(",", BelongPurchaserTestModelList.OrderBy(x => x.BelongTeam) + .Select(x => x.BelongTeam) + .Distinct()); + } + } + } + + public class BelongPurchaserTestModel + { + public string PurchaserName { get; set; } + + public string BelongTeam { get; set; } + + public List RelationSchemeIdList { get; set; } + } +} From 6fb097b1ccecb1cd6526177c50f2ada98baed412 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 7 Apr 2024 17:40:19 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E5=8C=BA=E5=88=86=E8=A7=86=E8=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 62 +++++++------------ .../SkuOptimization/OptimizationBusiness.cs | 58 +++++++++++++++-- ...ueryNoCompletionOptimizationTaskRequest.cs | 14 ++++- .../SpuOptimizationBargainTeamTaskResponse.cs | 1 + 4 files changed, 90 insertions(+), 45 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index c0ea9bb..9718937 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -521,49 +521,33 @@ namespace BBWYB.Server.Business var allCargoParamList = new List(); request.CargoParamGroupList.ForEach(x => allCargoParamList.AddRange(x.CargoParamList)); - #region 更新采购方案 - { - var cargoParamGroupsBySchemeList = allCargoParamList.GroupBy(c => c.SchemeId); - foreach (var cargoParamGroupsByScheme in cargoParamGroupsBySchemeList) - { - var schemeId = cargoParamGroupsByScheme.Key; - var skuId = cargoParamGroupsByScheme.FirstOrDefault().BelongSkuId; - var skuItemCount = orderSkus.FirstOrDefault(osku => osku.SkuId == skuId)?.ItemTotal ?? 0; - - //var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId) - // .Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)) - // .DefaultIfEmpty(0M) - // .First()); + //#region 更新采购方案 + //{ + // var cargoParamGroupsBySchemeList = allCargoParamList.GroupBy(c => c.SchemeId); + // foreach (var cargoParamGroupsByScheme in cargoParamGroupsBySchemeList) + // { + // var schemeId = cargoParamGroupsByScheme.Key; + // var skuId = cargoParamGroupsByScheme.FirstOrDefault().BelongSkuId; + // var skuItemCount = orderSkus.FirstOrDefault(osku => osku.SkuId == skuId)?.ItemTotal ?? 0; - var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => - { - return (createdPurchaseOrderItemList.FirstOrDefault(x => x.SkuId == cargoParam.SkuId)?.Price ?? 0) * (cargoParam.PurchaseRatio ?? 1); - }); + // //var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId) + // // .Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)) + // // .DefaultIfEmpty(0M) + // // .First()); + // var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => + // { + // return (createdPurchaseOrderItemList.FirstOrDefault(x => x.SkuId == cargoParam.SkuId)?.Price ?? 0) * (cargoParam.PurchaseRatio ?? 1); + // }); - var purchasedAmount = insertOrderCostDetails.Where(ocd => ocd.SkuId == skuId).Sum(ocd => ocd.SkuAmount); - var update = fsql.Update(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now) - .Set(ps => ps.LastPurchasePriceCost, lastPurchasePriceCost) - .Set(ps => ps.PurchasedCount + 1) - .Set(ps => ps.PurchasedItemCount + skuItemCount) - .Set(ps => ps.PurchasedAmount + purchasedAmount); - updatePurchaseSchemeList.Add(update); - } - } - #endregion - //#region 更新采购配件 - //{ - // foreach (var cargoParam in allCargoParamList) - // { - // var createOrderItem = createdPurchaseOrderItemList.FirstOrDefault(x => x.SkuId == cargoParam.SkuId); - // if (createOrderItem != null) - // { - // var update = fsql.Update() - // .Set(pss => pss.LastPurchasePriceCost, createOrderItem.Price) - // .Where(pss => pss.PurchaseSkuId == cargoParam.SkuId && pss.SkuPurchaseSchemeId == cargoParam.SchemeId); - // updatePssList.Add(update); - // } + // var purchasedAmount = insertOrderCostDetails.Where(ocd => ocd.SkuId == skuId).Sum(ocd => ocd.SkuAmount); + // var update = fsql.Update(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now) + // .Set(ps => ps.LastPurchasePriceCost, lastPurchasePriceCost) + // .Set(ps => ps.PurchasedCount + 1) + // .Set(ps => ps.PurchasedItemCount + skuItemCount) + // .Set(ps => ps.PurchasedAmount + purchasedAmount); + // updatePurchaseSchemeList.Add(update); // } //} //#endregion diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index 062a0b8..7961476 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -8,6 +8,7 @@ using BBWYB.Server.Model.Db.SpuOptimization; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json; +using Org.BouncyCastle.Asn1; using System.Numerics; using System.Text.RegularExpressions; using Yitter.IdGenerator; @@ -617,7 +618,8 @@ namespace BBWYB.Server.Business public ListResponse GetNoCompletionSkuOptimizationTask(QueryNoCompletionOptimizationTaskRequest request, string userId) { request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); - var uInfo = userBusiness.GetisBargainTeamByUserId(userId); + var uInfo = userBusiness.GetisBargainTeamByUserId(userId) + ISelect select = null; if (request.SpuOptimizationTaskId != null && request.SpuOptimizationTaskId != 0) @@ -648,8 +650,10 @@ namespace BBWYB.Server.Business .WhereIf(!string.IsNullOrEmpty(skuKeyWords), st => st.SkuId == skuKeyWords) .Any()) .WhereIf(!string.IsNullOrEmpty(request.TitleKeywords), t => t.ProductTitle.Contains(request.TitleKeywords)) - .WhereIf(!string.IsNullOrEmpty(spuKeyWords), t => t.ProductId == spuKeyWords) - .WhereIf(request.IsCompleted, t => t.IsOptimizationCompleted == true || + .WhereIf(!string.IsNullOrEmpty(spuKeyWords), t => t.ProductId == spuKeyWords); + + /* + .WhereIf(request.IsCompleted, t => t.IsOptimizationCompleted == true || fsql.Select() .Where(sbt => sbt.IsOptimizationCompleted == true && sbt.SpuOptimizationTaskId == t.Id && @@ -661,7 +665,53 @@ namespace BBWYB.Server.Business sbt.SpuOptimizationTaskId == t.Id && sbt.BelongTeamId == barginTeamId) .Any()) - .WhereIf(!request.IsCompleted && string.IsNullOrEmpty(barginTeamId), t => t.IsOptimizationCompleted == false); + .WhereIf(!request.IsCompleted && string.IsNullOrEmpty(barginTeamId), t => t.IsOptimizationCompleted == false) + */ + if (request.State == 0) + { + if (string.IsNullOrEmpty(barginTeamId)) + { + //非议价组查询未完成 + select = select.Where(t => t.IsOptimizationCompleted == false); + } + else + { + //议价组查询未完成 + select = select.Where(t => t.IsOptimizationCompleted == false && + fsql.Select() + .Where(sbt => sbt.IsOptimizationCompleted == false && + sbt.SpuOptimizationTaskId == t.Id && + sbt.BelongTeamId == barginTeamId) + .Any()); + } + } + else if (request.State == 1) + { + if (string.IsNullOrEmpty(barginTeamId)) + { + //非议价组查询已完成 + select = select.Where(t => t.IsOptimizationCompleted == true); + } + else + { + //议价组查询已完成 + select = select.Where(t => fsql.Select() + .Where(sbt => sbt.IsOptimizationCompleted == true && + sbt.SpuOptimizationTaskId == t.Id && + sbt.BelongTeamId == barginTeamId) + .Any()); + } + } + else if (request.State == 2) + { + //已超时 + select = select.Where(t => t.IsOptimizationCompleted == true) + .Where(t=> fsql.Select() + .Where(sbt => sbt.IsOptimizationCompleted == false && + sbt.SpuOptimizationTaskId == t.Id ) + .WhereIf(!string.IsNullOrEmpty(barginTeamId),sbt=>sbt.BelongTeamId == barginTeamId) + .Any()); + } } var sql = select.ToSql(); diff --git a/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs b/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs index c228773..9e8e835 100644 --- a/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Optimization/QueryNoCompletionOptimizationTaskRequest.cs @@ -41,9 +41,19 @@ namespace BBWYB.Server.Model.Dto /// public string TitleKeywords { get; set; } + ///// + ///// 是否完成 (议价组完成视为完成) + ///// + //public bool IsCompleted { get; set; } + + ///// + ///// 是否关闭 + ///// + //public bool IsClosed { get; set; } + /// - /// 是否完成 (议价组完成视为完成) + /// 任务相对状态 0=待优化 1=已完成 2=已关闭 /// - public bool IsCompleted { get; set; } + public int State { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Optimization/SpuOptimizationBargainTeamTaskResponse.cs b/BBWYB.Server.Model/Dto/Response/Optimization/SpuOptimizationBargainTeamTaskResponse.cs index 5ec20a4..5167561 100644 --- a/BBWYB.Server.Model/Dto/Response/Optimization/SpuOptimizationBargainTeamTaskResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Optimization/SpuOptimizationBargainTeamTaskResponse.cs @@ -4,5 +4,6 @@ namespace BBWYB.Server.Model.Dto { public class SpuOptimizationBargainTeamTaskResponse : SpuOptimizationBargainTeamTask { + } } From 5c0aa5d9d471c854ae1ac9568f0c3b7b2e23ec29 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 8 Apr 2024 00:07:12 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=AE=AE=E4=BB=B7=E7=BB=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/UserController.cs | 28 +++++++++++++++++++ .../SkuOptimization/OptimizationBusiness.cs | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 BBWYB.Server.API/Controllers/UserController.cs diff --git a/BBWYB.Server.API/Controllers/UserController.cs b/BBWYB.Server.API/Controllers/UserController.cs new file mode 100644 index 0000000..822672e --- /dev/null +++ b/BBWYB.Server.API/Controllers/UserController.cs @@ -0,0 +1,28 @@ +using BBWYB.Server.Business; +using BBWYB.Server.Model.Db; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + + public class UserController : BaseApiController + { + private UserBusiness userBusiness; + + public UserController(IHttpContextAccessor httpContextAccessor, UserBusiness userBusiness) : base(httpContextAccessor) + { + this.userBusiness = userBusiness; + } + + /// + /// 获取登录用户是否为议价组 + /// + /// + [HttpGet] + public bool GetisBargainTeamByUserId() + { + return userBusiness.GetisBargainTeamByUserId(GetUserId(), false).isBargainTeam; + } + } +} diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index 7961476..a980dce 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -618,7 +618,7 @@ namespace BBWYB.Server.Business public ListResponse GetNoCompletionSkuOptimizationTask(QueryNoCompletionOptimizationTaskRequest request, string userId) { request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); - var uInfo = userBusiness.GetisBargainTeamByUserId(userId) + var uInfo = userBusiness.GetisBargainTeamByUserId(userId); ISelect select = null; From 748fbbefa56c50b125cdddfcb507259c0f046e08 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 8 Apr 2024 05:31:04 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dusercontroller=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/SkuOptimizationController.cs | 2 +- BBWYB.Server.API/Controllers/UserController.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs index 03c910f..f99350f 100644 --- a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs +++ b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs @@ -72,7 +72,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 获取未完成spu优化任务数量 + /// 获取待优化任务数量 /// /// [HttpGet] diff --git a/BBWYB.Server.API/Controllers/UserController.cs b/BBWYB.Server.API/Controllers/UserController.cs index 822672e..257c39a 100644 --- a/BBWYB.Server.API/Controllers/UserController.cs +++ b/BBWYB.Server.API/Controllers/UserController.cs @@ -1,11 +1,11 @@ using BBWYB.Server.Business; -using BBWYB.Server.Model.Db; -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace BBWYB.Server.API.Controllers { - + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class UserController : BaseApiController { private UserBusiness userBusiness; From 5c1e8a331909ffd7feb302ff72fbc3eab2e3b825 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Tue, 9 Apr 2024 00:49:04 +0800 Subject: [PATCH 8/8] =?UTF-8?q?1)=20=E5=BE=85=E4=BC=98=E5=8C=96=E9=99=90?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=88=B0=E6=9C=9F=E6=9C=80=E5=A4=9A?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E4=B8=A4=E6=AC=A1=EF=BC=8C=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=AC=A1=E5=BC=80=E5=A7=8B=E5=85=81=E8=AE=B8=E6=97=A0=E9=99=90?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E4=B8=8D=E5=86=8D=E9=87=8D=E5=90=AF=202)=201?= =?UTF-8?q?688=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B9=B6=E5=8F=91=E6=8E=A7=E5=88=B6,=20?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E6=97=B6=E9=97=B4=E5=86=85(1min)=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=B6=88=E6=81=AF=E4=B8=80=E7=AC=94=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E5=85=81=E8=AE=B8=E6=89=A7=E8=A1=8C=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E3=80=82=E4=BD=9C=E7=94=A8=E8=8C=83=E5=9B=B4=E5=90=AB?= =?UTF-8?q?[=E4=BB=98=E6=AC=BE/=E6=94=B9=E4=BB=B7/=E5=8F=91=E8=B4=A7/?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=8F=91=E8=B4=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 94 +++++++++++++++---- .../SkuOptimization/OptimizationBusiness.cs | 28 +++++- .../TimeLimitTask/TimeLimitTaskBusiness.cs | 5 - .../Db/SpuOptimization/Spuoptimizationtask.cs | 6 ++ 4 files changed, 109 insertions(+), 24 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 9718937..5d1a801 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -10,6 +10,7 @@ using BBWYB.Server.Model.Db.Mds; using BBWYB.Server.Model.Db.MDS; using BBWYB.Server.Model.Dto; using FreeSql; +using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -39,6 +40,7 @@ namespace BBWYB.Server.Business private Lazy venderBusinessLazy; private Lazy purchaseSchemeBusinessLazy; private Lazy timeLimitRulesLazy; + private Lazy memoryCacheLazy; private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; @@ -57,8 +59,12 @@ namespace BBWYB.Server.Business private TimeLimitRules timeLimitRules => timeLimitRulesLazy.Value; + private IMemoryCache memoryCache => memoryCacheLazy.Value; + private IList cantPurchaseOrderStateList; + private TimeSpan _1688ConcurrentKeyTimeSpan; + public PurchaseOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, @@ -77,12 +83,14 @@ namespace BBWYB.Server.Business venderBusinessLazy = new Lazy(() => serviceProvider.GetService()); purchaseSchemeBusinessLazy = new Lazy(() => serviceProvider.GetService()); timeLimitRulesLazy = new Lazy(() => serviceProvider.GetService()); + memoryCacheLazy = new Lazy(() => serviceProvider.GetService()); cantPurchaseOrderStateList = new List() { Enums.OrderState.已取消, Enums.OrderState.已完成, Enums.OrderState.待付款 }; + _1688ConcurrentKeyTimeSpan = new TimeSpan(0, 1, 0); } /// @@ -2346,25 +2354,56 @@ namespace BBWYB.Server.Business //} #region 1688CallBack + private string Get1688ConcurrentKey(JObject j) + { + var type = j.Value("type").ToUpper(); + var poId = string.Empty; + switch (type) + { + case "ORDER_BUYER_VIEW_PART_PART_SENDGOODS": //部分发货 + case "ORDER_BUYER_VIEW_ANNOUNCE_SENDGOODS": //发货 + case "ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY": //订单改价 + case "LOGISTICS_BUYER_VIEW_TRACE": //物流变更 + case "ORDER_BUYER_VIEW_ORDER_PAY": //支付 + poId = j["data"].Value("orderId"); + break; + default: + break; + } + if (string.IsNullOrEmpty(poId)) + return string.Empty; + + return $"{type}_{poId}"; + } + public void CallbackFrom1688(string jsonStr) { nLogManager.Default().Info(jsonStr); var jObject = JObject.Parse(jsonStr); + var _1688ConcurrentKey = Get1688ConcurrentKey(jObject); + + if (!string.IsNullOrEmpty(_1688ConcurrentKey)) + { + if (memoryCache.TryGetValue(_1688ConcurrentKey, out _)) + return;//并发key存在,不允执行 + memoryCache.Set(_1688ConcurrentKey, _1688ConcurrentKey, _1688ConcurrentKeyTimeSpan); + } + var type = jObject.Value("type").ToUpper(); switch (type) { case "ORDER_BUYER_VIEW_PART_PART_SENDGOODS": //部分发货 case "ORDER_BUYER_VIEW_ANNOUNCE_SENDGOODS": //发货 - DeliveryCallbackFrom1688(jObject); + DeliveryCallbackFrom1688(jObject, _1688ConcurrentKey); break; case "ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY": - OrderPriceModificationCallbackFrom1688(jObject); //订单改价 + OrderPriceModificationCallbackFrom1688(jObject, _1688ConcurrentKey); //订单改价 break; case "LOGISTICS_BUYER_VIEW_TRACE": // LogisticsUpdateCallbackFrom1688(jObject);//1688物流信息变更 break; case "ORDER_BUYER_VIEW_ORDER_PAY": - OrderPayFrom1688(jObject); + OrderPayFrom1688(jObject, _1688ConcurrentKey); break; default: break; @@ -2375,17 +2414,21 @@ namespace BBWYB.Server.Business /// 1688发货回调 /// /// - private void DeliveryCallbackFrom1688(JObject jObject) + /// 并发key + private void DeliveryCallbackFrom1688(JObject jObject, string _1688ConcurrentKey) { var purchaseOrderId = jObject["data"].Value("orderId"); - Task.Factory.StartNew(() => DeliveryCallbackFrom1688(purchaseOrderId), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => DeliveryCallbackFrom1688(purchaseOrderId, _1688ConcurrentKey), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } /// /// 1688发货回调 /// - /// 采购单 - private void DeliveryCallbackFrom1688(string purchaseOrderId) + /// + /// + /// + /// + private void DeliveryCallbackFrom1688(string purchaseOrderId, string _1688ConcurrentKey) { string orderId = string.Empty; long? shopId = null; @@ -2623,22 +2666,28 @@ namespace BBWYB.Server.Business { nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}"); } + finally + { + if (!string.IsNullOrEmpty(_1688ConcurrentKey)) + memoryCache.Remove(_1688ConcurrentKey); + } } /// /// 1688订单改价回调 /// /// - private void OrderPriceModificationCallbackFrom1688(JObject jObject) + /// + private void OrderPriceModificationCallbackFrom1688(JObject jObject, string _1688ConcurrentKey) { var purchaseOrderId = jObject["data"].Value("orderId"); - Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴, _1688ConcurrentKey), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } - private void OrderPayFrom1688(JObject jObject) + private void OrderPayFrom1688(JObject jObject, string _1688ConcurrentKey) { var purchaseOrderId = jObject["data"].Value("orderId"); - Task.Factory.StartNew(() => OrderPayCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + Task.Factory.StartNew(() => OrderPayCallback(purchaseOrderId, Enums.Platform.阿里巴巴, _1688ConcurrentKey), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } #endregion @@ -2648,14 +2697,21 @@ namespace BBWYB.Server.Business /// /// /// - private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform) + /// + private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform, string concurrentKey) { - OnSomeOnePurchaseOrderChanged(purchaseOrderId, true); + OnSomeOnePurchaseOrderChanged(purchaseOrderId, true, concurrentKey); } - private void OrderPayCallback(string purchaseOrderId, Enums.Platform callbackPlatform) + /// + /// 订单支付回调 + /// + /// + /// + /// + private void OrderPayCallback(string purchaseOrderId, Enums.Platform callbackPlatform, string concurrentKey) { - OnSomeOnePurchaseOrderChanged(purchaseOrderId, false); + OnSomeOnePurchaseOrderChanged(purchaseOrderId, false, concurrentKey); } public void KuaiDi100Publish(string param) @@ -2927,7 +2983,8 @@ namespace BBWYB.Server.Business /// /// 采购单Id /// 当不需要触发订单改价时是否继续走流程 - public void OnSomeOnePurchaseOrderChanged(string purchaseOrderId, bool keepRunWhenNoEditOrderPirce) + /// 并发key + public void OnSomeOnePurchaseOrderChanged(string purchaseOrderId, bool keepRunWhenNoEditOrderPirce, string concurrentKey) { bool isEditOrderPrice = true; try @@ -3182,6 +3239,11 @@ namespace BBWYB.Server.Business { nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 采购单号{purchaseOrderId}"); } + finally + { + if (!string.IsNullOrEmpty(concurrentKey)) + memoryCache.Remove(concurrentKey); + } } private void SendDingDing(string content) diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index a980dce..65ecade 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -706,10 +706,10 @@ namespace BBWYB.Server.Business { //已超时 select = select.Where(t => t.IsOptimizationCompleted == true) - .Where(t=> fsql.Select() + .Where(t => fsql.Select() .Where(sbt => sbt.IsOptimizationCompleted == false && - sbt.SpuOptimizationTaskId == t.Id ) - .WhereIf(!string.IsNullOrEmpty(barginTeamId),sbt=>sbt.BelongTeamId == barginTeamId) + sbt.SpuOptimizationTaskId == t.Id) + .WhereIf(!string.IsNullOrEmpty(barginTeamId), sbt => sbt.BelongTeamId == barginTeamId) .Any()); } } @@ -903,6 +903,7 @@ namespace BBWYB.Server.Business IUpdate updateSpuTask = null; IUpdate updateSpuSaleInfo = null; IUpdate updateCompetitiveTenderTask = null; + IUpdate updateTimeLimitTask = null; var spuOptimizationBargainTeamTaskList = fsql.Select() .Where(sbt => sbt.SpuOptimizationTaskId == taskId) @@ -960,12 +961,33 @@ namespace BBWYB.Server.Business .Set(ct => ct.IsWin, true); #endregion } + else + { + //重启任务 + if (spuOptimizationTask.ReStartTimes < 2) + { + var timeLimitTask = fsql.Select().Where(t => t.TaskType == Enums.TimeLimitTaskType.待议价任务 && + t.TaskId == spuOptimizationTask.Id).ToOne(); + if (timeLimitTask != null) + { + var expirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now); + updateTimeLimitTask = fsql.Update(timeLimitTask.Id) + .Set(t => t.ExpirationTime, expirationTime) + .Set(t => t.CompletionTime, null) + .Set(t => t.IsTimely, null); + } + spuOptimizationTask.ReStartTimes++; + updateSpuTask = fsql.Update(spuOptimizationTask.Id) + .Set(t => t.ReStartTimes, spuOptimizationTask.ReStartTimes); + } + } fsql.Transaction(() => { updateSpuTask?.ExecuteAffrows(); updateSpuSaleInfo?.ExecuteAffrows(); updateCompetitiveTenderTask?.ExecuteAffrows(); + updateTimeLimitTask?.ExecuteAffrows(); }); } catch (Exception ex) diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index bf98724..e217ff8 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -38,11 +38,6 @@ namespace BBWYB.Server.Business } public void CheckTask() { - //fsql.Update().Set(t => t.IsTimely, false) - // .Where(t => t.CompletionTime == null) - // .Where(t => t.ExpirationTime < DateTime.Now) - // .ExecuteAffrows(); - var timeoutTaskList = fsql.Select().Where(t => t.CompletionTime == null && t.ExpirationTime < DateTime.Now).ToList(); if (timeoutTaskList.Count() > 0) { diff --git a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs index 97c0020..1c5c598 100644 --- a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs +++ b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs @@ -87,6 +87,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "int", MapType = typeof(int?))] public Enums.TriggerOptimizationReason? TriggerOptimizationReason { get; set; } + /// + /// 重启次数 + /// + [Column(DbType = "int")] + public int ReStartTimes { get; set; } = 0; + } }