diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index c8481b8..16bfb0a 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -4,6 +4,7 @@ using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db.BBWY; +using BBWYB.Server.Model.Db.SpuOptimization; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json; @@ -112,6 +113,7 @@ namespace BBWYB.Server.Business List insertSkuOptimizationTaskList = new List(); List insertSpuOptimizationBargainTeamTaskList = new List(); List insertSpuOptimizationCompetitiveTenderTaskList = new List(); + //List insertSpuOptimizationPurchaserCompetitiveTenderTaskList = new List(); List insertTimeLimitTaskList = new List(); #endregion @@ -126,6 +128,12 @@ namespace BBWYB.Server.Business productIdList.Contains(ps.ProductId)) .ToList(); //需要参与竞标采购方案 + var waitToCompetitiveTenderSchemeIdList = waitToCompetitiveTenderSchemeList.Select(ps => ps.Id).ToList(); + var waitToCompetitiveTenderSchemePurchaserList = fsql.Select() + .Where(psp => waitToCompetitiveTenderSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) + .GroupBy(psp => new { psp.SkuPurchaseSchemeId, psp.PurchaserId }) + .ToList(g => new { g.Key.SkuPurchaseSchemeId, g.Key.PurchaserId }); //需要参与竞标的采购商 + foreach (var productId in productIdList) { #region 验证 @@ -250,6 +258,9 @@ namespace BBWYB.Server.Business var waitJoinSchemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.BelongBargainTeamId == department.Id && qtskus.Contains(ps.SkuId)) .ToList(); + + //var waitJoinSchemeIdList = waitJoinSchemeList.Select(ps => ps.Id).ToList(); + //var waitJonPurchaserList = waitToCompetitiveTenderSchemePurchaserList.Where(x => waitJoinSchemeIdList.Contains(x.SkuPurchaseSchemeId)); if (waitJoinSchemeList.Count() > 0) { insertSpuOptimizationCompetitiveTenderTaskList.AddRange(waitJoinSchemeList.Select(ps => new SpuOptimizationCompetitiveTenderTask() @@ -265,6 +276,24 @@ namespace BBWYB.Server.Business SpuOptimizationTaskId = spuOptimizationTask.Id, UpdateTime = DateTime.Now })); + + //insertSpuOptimizationPurchaserCompetitiveTenderTaskList.AddRange(waitJonPurchaserList.Select(x => + //{ + // var ps = waitJoinSchemeList.FirstOrDefault(ps => ps.Id == x.SkuPurchaseSchemeId); + // return new SpuOptimizationPurchaserCompetitiveTenderTask() + // { + // Id = idGenerator.NewLong(), + // BargainTeamId = ps.BelongBargainTeamId, + // CreateTime = DateTime.Now, + // UpdateTime = DateTime.Now, + // IsUpdateQuotedPrice = false, + // PurchaserId = x.PurchaserId, + // SchemeGroupId = ps.SchemeGroupId, + // SchemeId = ps.Id, + // SkuId = ps.SkuId, + // SpuOptimizationTaskId = spuOptimizationTask.Id + // }; + //})); } #endregion } @@ -306,6 +335,8 @@ namespace BBWYB.Server.Business fsql.Insert(insertSpuOptimizationBargainTeamTaskList).ExecuteAffrows(); if (insertSpuOptimizationCompetitiveTenderTaskList.Count() > 0) fsql.Insert(insertSpuOptimizationCompetitiveTenderTaskList).ExecuteAffrows(); + //if (insertSpuOptimizationPurchaserCompetitiveTenderTaskList.Count() > 0) + // fsql.Insert(insertSpuOptimizationPurchaserCompetitiveTenderTaskList).ExecuteAffrows(); if (insertTimeLimitTaskList.Count() > 0) fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); }); @@ -348,20 +379,24 @@ namespace BBWYB.Server.Business .ToList(); //查询配件关联的采购方案 - var relationPurchaseSchemeList = fsql.Select() + var relationPurchaseSchemeIdList = fsql.Select() .Where(ps => ps.SchemeGroupId == request.SchemeGroupId && ps.BelongBargainTeamId == uInfo.bargainTeam.Id && fsql.Select() .Where(pss => skuIdList.Contains(pss.SkuId) && purchaseSkuIdList.Contains(pss.PurchaseSkuId) && pss.SkuPurchaseSchemeId == ps.Id).Any()) - .ToList(); + .ToList(ps => ps.Id); + var relationPurchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() + { + SchemeIdList = relationPurchaseSchemeIdList, + IncludePurchaseSkuBasicInfo = 0 + }); //筛选出不在竞标任务中的采购方案 var noJoinCompetitiveTenderPurchaseSchemeList = relationPurchaseSchemeList.Where(ps => !competitiveTenderTaskList.Any(ct => ct.SchemeId == ps.Id)).ToList(); - //var noJoinCompetitiveTenderPurchaseSchemeIdList = noJoinCompetitiveTenderPurchaseSchemeList.Select(x => x.Id).ToList(); - //批量更新配件 + { var batchEditPurchaseSkuActualPriceRequest = request.Map(); @@ -387,7 +422,24 @@ namespace BBWYB.Server.Business })); } if (competitiveTenderTaskList.Count() > 0) - updateCompetitiveTenderTaskIdList.AddRange(competitiveTenderTaskList.Select(ct => ct.Id).ToList()); + { + //updateCompetitiveTenderTaskIdList.AddRange(competitiveTenderTaskList.Select(ct => ct.Id).ToList()); + foreach (var ctTask in competitiveTenderTaskList) + { + if (ctTask.IsUpdateQuotedPrice == true) + continue; + var scheme = relationPurchaseSchemeList.FirstOrDefault(ps => ps.Id == ctTask.SchemeId); + if (scheme == null) + continue; + var pssList = scheme.PurchaseSchemeProductList.SelectMany(psp => psp.PurchaseSchemeProductSkuList); + if (pssList.Any(pss => request.ItemList.Any(item => item.PurchaseSkuId == pss.PurchaseSkuId))) + { + //ctTask.IsUpdateQuotedPrice = true; + updateCompetitiveTenderTaskIdList.Add(ctTask.Id); + } + } + } + fsql.Transaction(() => { diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 0e2bd76..6df1905 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -3,6 +3,7 @@ using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db.BBWY; +using BBWYB.Server.Model.Db.SpuOptimization; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json.Linq; @@ -151,7 +152,7 @@ namespace BBWYB.Server.Business.Sync List insertSkuOptimizationTaskList = new List(); List insertSpuOptimizationBargainTeamTaskList = new List(); List insertSpuOptimizationCompetitiveTenderTaskList = new List(); - + //List insertSpuOptimizationPurchaserCompetitiveTenderTaskList = new List(); #endregion //等待检查sku销量的订单集合 @@ -418,6 +419,12 @@ namespace BBWYB.Server.Business.Sync spuIdList.Contains(ps.ProductId)) .ToList(); //需要参与竞标采购方案 + var waitToCompetitiveTenderSchemeIdList = waitToCompetitiveTenderSchemeList.Select(ps => ps.Id).ToList(); + var waitToCompetitiveTenderSchemePurchaserList = fsql.Select() + .Where(psp => waitToCompetitiveTenderSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) + .GroupBy(psp => new { psp.SkuPurchaseSchemeId, psp.PurchaserId }) + .ToList(g => new { g.Key.SkuPurchaseSchemeId, g.Key.PurchaserId }); //需要参与竞标的采购商 + var waitToCheckOrderSpuGroups = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList).GroupBy(osku => osku.ProductId); @@ -559,6 +566,9 @@ namespace BBWYB.Server.Business.Sync var waitJoinSchemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.BelongBargainTeamId == department.Id && skuIdList.Contains(ps.SkuId)) .ToList(); + //var waitJoinSchemeIdList = waitJoinSchemeList.Select(ps => ps.Id).ToList(); + //var waitJonPurchaserList = waitToCompetitiveTenderSchemePurchaserList.Where(x => waitJoinSchemeIdList.Contains(x.SkuPurchaseSchemeId)); + if (waitJoinSchemeList.Count() > 0) { insertSpuOptimizationCompetitiveTenderTaskList.AddRange(waitJoinSchemeList.Select(ps => new SpuOptimizationCompetitiveTenderTask() @@ -574,6 +584,24 @@ namespace BBWYB.Server.Business.Sync SpuOptimizationTaskId = spuOptimizationTask.Id, UpdateTime = DateTime.Now })); + + //insertSpuOptimizationPurchaserCompetitiveTenderTaskList.AddRange(waitJonPurchaserList.Select(x => + //{ + // var ps = waitJoinSchemeList.FirstOrDefault(ps => ps.Id == x.SkuPurchaseSchemeId); + // return new SpuOptimizationPurchaserCompetitiveTenderTask() + // { + // Id = idGenerator.NewLong(), + // BargainTeamId = ps.BelongBargainTeamId, + // CreateTime = DateTime.Now, + // UpdateTime = DateTime.Now, + // IsUpdateQuotedPrice = false, + // PurchaserId = x.PurchaserId, + // SchemeGroupId = ps.SchemeGroupId, + // SchemeId = ps.Id, + // SkuId = ps.SkuId, + // SpuOptimizationTaskId = spuOptimizationTask.Id + // }; + //})); } #endregion } @@ -634,6 +662,8 @@ namespace BBWYB.Server.Business.Sync fsql.Insert(insertSpuOptimizationBargainTeamTaskList).ExecuteAffrows(); if (insertSpuOptimizationCompetitiveTenderTaskList.Count() > 0) fsql.Insert(insertSpuOptimizationCompetitiveTenderTaskList).ExecuteAffrows(); + //if (insertSpuOptimizationPurchaserCompetitiveTenderTaskList.Count() > 0) + // fsql.Insert(insertSpuOptimizationPurchaserCompetitiveTenderTaskList).ExecuteAffrows(); if (updateOrderList.Count() > 0) foreach (var update in updateOrderList) diff --git a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationpurchasercompetitvetendertask.cs b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationpurchasercompetitvetendertask.cs new file mode 100644 index 0000000..bb89885 --- /dev/null +++ b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationpurchasercompetitvetendertask.cs @@ -0,0 +1,60 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db.SpuOptimization +{ + + [Table(Name = "spuoptimizationpurchasercompetitivetendertask", DisableSyncStructure = true)] + public partial class SpuOptimizationPurchaserCompetitiveTenderTask + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + /// + /// 议价组Id + /// + [Column(StringLength = 50)] + public string BargainTeamId { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + [Column(DbType = "datetime")] + public DateTime? UpdateTime { get; set; } + + /// + /// 是否更新报价 + /// + + public bool? IsUpdateQuotedPrice { get; set; } = false; + + /// + /// 采购商Id + /// + [Column(StringLength = 50)] + public string PurchaserId { get; set; } + + /// + /// 采购方案分组Id + /// + [Column(DbType = "bigint")] + public long? SchemeGroupId { get; set; } + + /// + /// 采购方案Id + /// + [Column(DbType = "bigint")] + public long? SchemeId { get; set; } + + [Column(StringLength = 50)] + public string SkuId { get; set; } + + /// + /// Spu优化任务Id + /// + [Column(DbType = "bigint")] + public long? SpuOptimizationTaskId { get; set; } + + } + +}