diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index cf13444..bb7412f 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -208,5 +208,16 @@ namespace BBWYB.Server.API.Controllers { purchaseSchemeBusiness.BatchEditPurchaseSkuActualPrice(request, null, GetUserId()); } + + /// + /// 货源标记接口 + /// + /// + /// + [HttpPost] + public IList GetGoodsSourceTagsInfo([FromBody] List requestList) + { + return purchaseSchemeBusiness.GetGoodsSourceTagsInfo(requestList, GetUserId()); + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index ca7f558..85f0728 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -1603,6 +1603,8 @@ namespace BBWYB.Server.Business foreach (var purchasedSku in purchasedSkuList) { + if (list.Any(x => x.PurchaseSku == purchasedSku.PurchaseSkuId)) + continue; var goodsSourceTag = new GoodsSourceTagResponse() { PurchaseSku = purchasedSku.PurchaseSkuId, @@ -1617,8 +1619,72 @@ namespace BBWYB.Server.Business #region 查询添加为采购方案的sku if (purchaseSkuIdList.Count() > 0) - { - + { + var schemeUsedSkuList = fsql.Select() + .InnerJoin((ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) + .Where((ps, pss) => purchaseSkuIdList.Contains(pss.PurchaseSkuId)) + .GroupBy((ps, pss) => new { pss.SkuPurchaseSchemeId, pss.PurchaseSkuId, ps.BelongBargainTeamId }) + .ToList(g => new + { + g.Key.PurchaseSkuId, + g.Key.SkuPurchaseSchemeId, + g.Key.BelongBargainTeamId + }); + foreach (var usedSku in schemeUsedSkuList) + { + if (list.Any(x => x.PurchaseSku == usedSku.PurchaseSkuId)) + continue; + + var goodsSourceTag = new GoodsSourceTagResponse() + { + PurchaseSku = usedSku.PurchaseSkuId, + GoodsSourceTagType = usedSku.BelongBargainTeamId != uInfo.user.DepartmentId ? + Enums.GoodsSourceTagType.其他组添加过采购方案 : + Enums.GoodsSourceTagType.本组添加过采购方案 + }; + list.Add(goodsSourceTag); + purchaseSkuIdList.Remove(usedSku.PurchaseSkuId); //排除绑定过采购方案的sku + } + } + #endregion + + #region 历史采购过相同供应商的商品 + if (purchaseSkuIdList.Count() > 0) + { + purchaserIdList.Clear(); + var goodsSourceList = requestList.Where(x => purchaseSkuIdList.Contains(x.PurchaseSkuId)).ToList(); + purchaserIdList.AddRange(goodsSourceList.Select(x => x.PurchaserId).Distinct().ToList()); + + var purchasedBySamePurchaserList = fsql.Select() + .InnerJoin((opi, opri, ps) => opi.OrderId == opri.OrderId && + opi.PurchaseOrderId == opri.PurchaseOrderId) + .InnerJoin((opi, opri, ps) => opri.SchemeId == ps.Id) + .Where((opi, opri, ps) => opi.IsEnabled == true && + purchaserIdList.Contains(opi.PurchaserId)) + .GroupBy((opi, opri, ps) => new { opi.PurchaserId, opri.SchemeId, ps.BelongBargainTeamId }) + .ToList(g => new + { + g.Key.PurchaserId, + g.Key.SchemeId, + g.Key.BelongBargainTeamId + }); + + if (purchasedBySamePurchaserList.Count() > 0) + { + foreach (var purchaserBySame in purchasedBySamePurchaserList) + { + var item = goodsSourceList.FirstOrDefault(x => x.PurchaserId == purchaserBySame.PurchaserId); + if (item != null && list.Any(x => x.PurchaseSku == item.PurchaseSkuId)) + continue; + list.Add(new GoodsSourceTagResponse() + { + PurchaseSku = item.PurchaseSkuId, + GoodsSourceTagType = purchaserBySame.BelongBargainTeamId != uInfo.user.DepartmentId ? + Enums.GoodsSourceTagType.其他组历史采购过该供应商的商品 : + Enums.GoodsSourceTagType.本组历史采购过该供应商的商品 + }); + } + } } #endregion