|
|
@ -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<string>(); |
|
|
|
var errorSchemeList = new List<string>(); |
|
|
|
//var errorSchemeList = new List<string>();
|
|
|
|
var errorSchemeGroupList = new List<string>(); |
|
|
|
|
|
|
|
|
|
|
|
var dbPurchaserList = fsql.Select<Purchaser>().ToList(); |
|
|
|
var dbPurchaseGroupList = fsql.Select<PurchaseSchemeGroup>().ToList(); |
|
|
|
var dbSchemeList = fsql.Select<PurchaseScheme>().ToList(); |
|
|
@ -1486,6 +1489,8 @@ namespace BBWYB.Server.Business |
|
|
|
var updateSchemeGroupList = new List<PurchaseSchemeGroup>(); |
|
|
|
var deletePsgIdList = new List<long>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var purchaseRelation in purchaseRelations) |
|
|
|
{ |
|
|
|
var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == purchaseRelation.PurchaserName); |
|
|
@ -1504,6 +1509,8 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<BelongSchemeTestModel> compareNullBelongSchemeList = new List<BelongSchemeTestModel>(); |
|
|
|
var errorBelongSchemeList = new List<BelongSchemeTestModel>(); |
|
|
|
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<BelongPurchaserTestModel>() |
|
|
|
}; |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|