Browse Source

修复归属

master
shanji 1 year ago
parent
commit
9ecf072a4a
  1. 133
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  2. 28
      BBWYB.Server.Model/BelongTestModel.cs

133
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<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);
}

28
BBWYB.Server.Model/BelongTestModel.cs

@ -0,0 +1,28 @@
namespace BBWYB.Server.Model
{
public class BelongSchemeTestModel
{
public long SchemeId { get; set; }
public IList<BelongPurchaserTestModel> 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<long> RelationSchemeIdList { get; set; }
}
}
Loading…
Cancel
Save