|
|
@ -7,6 +7,7 @@ using BBWYB.Server.Model.Db; |
|
|
|
using BBWYB.Server.Model.Dto; |
|
|
|
using FreeSql; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using System.Linq; |
|
|
|
using Yitter.IdGenerator; |
|
|
|
|
|
|
|
namespace BBWYB.Server.Business |
|
|
@ -16,6 +17,9 @@ namespace BBWYB.Server.Business |
|
|
|
private PurchaseProductAPIService purchaseProductAPIService; |
|
|
|
private RestApiService restApiService; |
|
|
|
private AggregionPurchaserBusiness aggregionPurchaserBusiness; |
|
|
|
private UserBusiness userBusiness; |
|
|
|
|
|
|
|
|
|
|
|
private IList<Enums.OrderState?> invalidOrderStateList; |
|
|
|
|
|
|
|
public PurchaseSchemeBusiness(IFreeSql fsql, |
|
|
@ -23,7 +27,8 @@ namespace BBWYB.Server.Business |
|
|
|
IIdGenerator idGenerator, |
|
|
|
PurchaseProductAPIService purchaseProductAPIService, |
|
|
|
RestApiService restApiService, |
|
|
|
AggregionPurchaserBusiness aggregionPurchaserBusiness) : base(fsql, nLogManager, idGenerator) |
|
|
|
AggregionPurchaserBusiness aggregionPurchaserBusiness, |
|
|
|
UserBusiness userBusiness) : base(fsql, nLogManager, idGenerator) |
|
|
|
{ |
|
|
|
this.purchaseProductAPIService = purchaseProductAPIService; |
|
|
|
this.restApiService = restApiService; |
|
|
@ -35,6 +40,7 @@ namespace BBWYB.Server.Business |
|
|
|
Enums.OrderState.部分采购 |
|
|
|
}; |
|
|
|
this.aggregionPurchaserBusiness = aggregionPurchaserBusiness; |
|
|
|
this.userBusiness = userBusiness; |
|
|
|
} |
|
|
|
|
|
|
|
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest |
|
|
@ -211,9 +217,9 @@ namespace BBWYB.Server.Business |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest) |
|
|
|
public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest, string userId) |
|
|
|
{ |
|
|
|
nLogManager.Default().Info($"EditPurchaseSchemeV2 {JsonConvert.SerializeObject(batchCURDSchemeRequest)}"); |
|
|
|
//nLogManager.Default().Info($"EditPurchaseSchemeV2 {JsonConvert.SerializeObject(batchCURDSchemeRequest)}");
|
|
|
|
|
|
|
|
List<PurchaseSchemeGroup> dbSchemeGroupList = null; |
|
|
|
List<PurchaseScheme> dbPurchaseSchemeList = null; |
|
|
@ -339,6 +345,56 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var uInfo = userBusiness.GetisBargainTeamByUserId(userId); |
|
|
|
if (uInfo.isBargainTeam) |
|
|
|
{ |
|
|
|
#region 检测是否存在被其他议价组分配的采购商
|
|
|
|
{ |
|
|
|
var tempPurchaseScmemeList = (batchCURDSchemeRequest.AddPurchaseSchemeList ?? new List<InputPurchaseSchemeRequest>()).Union(batchCURDSchemeRequest.EditPurchaseSchemeList ?? new List<EditPurchaseSchemeRequest>()).ToList(); |
|
|
|
var allPurchaserList = tempPurchaseScmemeList.SelectMany(ps => ps.PurchaseSchemeProductList.Select(psp => new { psp.PurchaserId, psp.PurchaserName })).ToList(); |
|
|
|
|
|
|
|
var allPurchaserIdList = allPurchaserList.Select(p => p.PurchaserId).Distinct().ToList(); |
|
|
|
var dbPurchaserList = fsql.Select<Purchaser>(allPurchaserIdList).ToList(p => new Purchaser() |
|
|
|
{ |
|
|
|
Id = p.Id, |
|
|
|
Name = p.Name, |
|
|
|
BelongBargainTeamId = p.BelongBargainTeamId, |
|
|
|
BelongType = p.BelongType |
|
|
|
}); |
|
|
|
var noCurrentBargainTeamList = dbPurchaserList.Where(dp => !string.IsNullOrEmpty(dp.BelongBargainTeamId) && |
|
|
|
dp.BelongBargainTeamId != uInfo.user.DepartmentId).ToList(); |
|
|
|
if (noCurrentBargainTeamList.Count() > 0) |
|
|
|
throw new BusinessException($"不能包含被其他议价组使用的采购商 [{string.Join(",", noCurrentBargainTeamList.Select(x => x.Name))}]"); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 检测同sku在该议价组下的数量是否超过3个
|
|
|
|
{ |
|
|
|
if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0) |
|
|
|
{ |
|
|
|
var addSchemeSkuList = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList(); |
|
|
|
var dbSkuSchemeCountList = fsql.Select<PurchaseScheme>().Where(ps => ps.BelongBargainTeamId == uInfo.user.DepartmentId && |
|
|
|
addSchemeSkuList.Contains(ps.SkuId)) |
|
|
|
.GroupBy(ps => ps.SkuId) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
SkuId = g.Key, |
|
|
|
Count = g.Count() |
|
|
|
}); |
|
|
|
var skuCountList = dbSkuSchemeCountList.Select(x => new |
|
|
|
{ |
|
|
|
x.SkuId, |
|
|
|
Count = x.Count + batchCURDSchemeRequest.AddPurchaseSchemeList.Count(ps => ps.SkuId == x.SkuId) |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
var over3CountList = skuCountList.Where(x => x.Count > 3).ToList(); |
|
|
|
if (over3CountList.Count() > 0) |
|
|
|
throw new BusinessException($"sku在同一个议价组内不能超过3个采购方案 [{string.Join(",", over3CountList.Select(x => x.SkuId))}]"); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
List<PurchaseScheme> addPurchaseSchemeList = new List<PurchaseScheme>(); |
|
|
@ -1445,7 +1501,9 @@ namespace BBWYB.Server.Business |
|
|
|
/// 批量修改采购配件实际单价
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="request"></param>
|
|
|
|
public void BatchEditPurchaseSkuActualPrice(BatchEditPurchaseSkuActualPriceRequest request) |
|
|
|
/// <param name="userId"></param>
|
|
|
|
/// <exception cref="BusinessException"></exception>
|
|
|
|
public void BatchEditPurchaseSkuActualPrice(BatchEditPurchaseSkuActualPriceRequest request, string userId) |
|
|
|
{ |
|
|
|
if (request.ItemList == null || request.ItemList.Count() == 0) |
|
|
|
throw new BusinessException("缺少参数"); |
|
|
@ -1520,7 +1578,7 @@ namespace BBWYB.Server.Business |
|
|
|
}).ToList() |
|
|
|
}).ToList() |
|
|
|
}).ToList() |
|
|
|
}); |
|
|
|
}, userId); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|