Browse Source

修复归属

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

127
BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

@ -15,7 +15,9 @@ using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models; using SDKAdapter.OperationPlatform.Models;
using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Client;
using SDKAdapter.PurchasePlatform.Models; using SDKAdapter.PurchasePlatform.Models;
using System.Collections.Generic;
using System.Data; using System.Data;
using System.Net.Http.Headers;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -1473,9 +1475,10 @@ namespace BBWYB.Server.Business
}); });
var errorPurchaserList = new List<string>(); var errorPurchaserList = new List<string>();
var errorSchemeList = new List<string>(); //var errorSchemeList = new List<string>();
var errorSchemeGroupList = new List<string>(); var errorSchemeGroupList = new List<string>();
var dbPurchaserList = fsql.Select<Purchaser>().ToList(); var dbPurchaserList = fsql.Select<Purchaser>().ToList();
var dbPurchaseGroupList = fsql.Select<PurchaseSchemeGroup>().ToList(); var dbPurchaseGroupList = fsql.Select<PurchaseSchemeGroup>().ToList();
var dbSchemeList = fsql.Select<PurchaseScheme>().ToList(); var dbSchemeList = fsql.Select<PurchaseScheme>().ToList();
@ -1486,6 +1489,8 @@ namespace BBWYB.Server.Business
var updateSchemeGroupList = new List<PurchaseSchemeGroup>(); var updateSchemeGroupList = new List<PurchaseSchemeGroup>();
var deletePsgIdList = new List<long>(); var deletePsgIdList = new List<long>();
foreach (var purchaseRelation in purchaseRelations) foreach (var purchaseRelation in purchaseRelations)
{ {
var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == purchaseRelation.PurchaserName); 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) foreach (var purchaseRelation in purchaseRelations)
{ {
var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == purchaseRelation.PurchaserName); var dbPurchaser = dbPurchaserList.FirstOrDefault(p => p.Name == purchaseRelation.PurchaserName);
@ -1517,6 +1524,7 @@ namespace BBWYB.Server.Business
.ToList(); .ToList();
var usePurchaserSchemeList = dbSchemeList.Where(ps => usePurchaserSchemeIdList.Contains(ps.Id)).ToList(); var usePurchaserSchemeList = dbSchemeList.Where(ps => usePurchaserSchemeIdList.Contains(ps.Id)).ToList();
foreach (var scheme in usePurchaserSchemeList) foreach (var scheme in usePurchaserSchemeList)
{ {
var pspList = dbSchemeProductList.Where(psp => psp.SkuPurchaseSchemeId == scheme.Id).ToList(); 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); var currentSchemePurchaserBelongGroups = currentSchemePurchaserList.GroupBy(p => p.BelongBargainTeamId);
if (currentSchemePurchaserBelongGroups.Count() > 1) 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) foreach (var belongGroup in currentSchemePurchaserBelongGroups)
{ {
var teamName = belongGroup.FirstOrDefault()?.BelongBargainTeamName; foreach (var purchaser in belongGroup)
sb.Append($"{teamName}:{string.Join(",", belongGroup.Select(x => x.Name))},"); {
schemeModel.BelongPurchaserTestModelList.Add(new BelongPurchaserTestModel()
{
BelongTeam = string.IsNullOrEmpty(purchaser.BelongBargainTeamName) ? "空" : purchaser.BelongBargainTeamName,
PurchaserName = purchaser.Name
});
}
} }
errorSchemeList.Add(sb.ToString());
} }
else if (currentSchemePurchaserBelongGroups.Count() == 1) 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) foreach (var psg in dbPurchaseGroupList)
{ {
var schemeList = dbSchemeList.Where(ps => ps.SchemeGroupId == psg.Id).ToList(); 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); var currentPsgPurchaserBelongGroups = schemeList.GroupBy(ps => ps.BelongBargainTeamId);
if (currentPsgPurchaserBelongGroups.Count() > 1) if (currentPsgPurchaserBelongGroups.Count() > 1)
{ {
var sb = new StringBuilder($"采购分组{psg.GroupName}使用了{currentPsgPurchaserBelongGroups.Count()}个不同归属的采购方案 "); //var sb = new StringBuilder($"采购分组{psg.GroupName}使用了{currentPsgPurchaserBelongGroups.Count()}个不同归属的采购方案");
foreach (var belongGroup in currentPsgPurchaserBelongGroups) //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))
{ {
var teamName = belongGroup.FirstOrDefault()?.BelongBargainTeamName; scheme.BelongBargainTeamId = ps?.BelongBargainTeamId;
sb.Append($"{teamName}:{string.Join(",", belongGroup.Select(x => x.Id))},"); scheme.BelongBargainTeamName = ps?.BelongBargainTeamName;
updateSchemeList.Add(scheme);
}
}
}
if (psg.BelongBargainTeamId != ps?.BelongBargainTeamId)
{
psg.BelongBargainTeamId = ps?.BelongBargainTeamId;
updateSchemeGroupList.Add(psg);
} }
errorSchemeGroupList.Add(sb.ToString());
} }
else if (currentPsgPurchaserBelongGroups.Count() == 1) else if (currentPsgPurchaserBelongGroups.Count() == 1)
{ {
@ -1581,10 +1677,15 @@ namespace BBWYB.Server.Business
} }
if (errorPurchaserList.Count() > 0 || if (errorPurchaserList.Count() > 0 ||
errorSchemeList.Count() > 0 || errorBelongSchemeList.Count() > 0 ||
errorSchemeGroupList.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); 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