Browse Source

修补数据

yijia
shanji 2 years ago
parent
commit
872ffd09a0
  1. 12
      BBWYB.Common/Extensions/ConverterExtensions.cs
  2. 125
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

12
BBWYB.Common/Extensions/ConverterExtensions.cs

@ -13,5 +13,17 @@
return null; return null;
} }
} }
public static int? ToInt32(this object? o)
{
try
{
return Convert.ToInt32(o);
}
catch
{
return null;
}
}
} }
} }

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

@ -9,6 +9,7 @@ using FreeSql;
using SDKAdapter; using SDKAdapter;
using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models; using SDKAdapter.OperationPlatform.Models;
using System.Data;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -514,6 +515,9 @@ namespace BBWYB.Server.Business
{ {
List<SpuTotalSaleInfo> insertSpuSaleInfoList = new List<SpuTotalSaleInfo>(); List<SpuTotalSaleInfo> insertSpuSaleInfoList = new List<SpuTotalSaleInfo>();
List<SkuTotalSaleInfo> insertSkuSaleInfoList = new List<SkuTotalSaleInfo>(); List<SkuTotalSaleInfo> insertSkuSaleInfoList = new List<SkuTotalSaleInfo>();
List<PurchaseScheme> updatePurchaseSchemeList = new List<PurchaseScheme>();
List<Purchaser> updatePurchaserList = new List<Purchaser>();
List<SkuHistoryPurchaserRelation> insertSkuHistoryPurchaserRelationList = new List<SkuHistoryPurchaserRelation>();
var noOrderStateList = new List<Enums.OrderState?>() var noOrderStateList = new List<Enums.OrderState?>()
{ {
Enums.OrderState., Enums.OrderState.,
@ -584,6 +588,7 @@ namespace BBWYB.Server.Business
#endregion #endregion
#region 采购方案累计信息 #region 采购方案累计信息
#region 采购件数 #region 采购件数
/* /*
select opi.SchemeId,sum(osku.ItemTotal) from orderpurchaserelationinfo opi select opi.SchemeId,sum(osku.ItemTotal) from orderpurchaserelationinfo opi
@ -604,6 +609,15 @@ namespace BBWYB.Server.Business
SchemeId = g.Key, SchemeId = g.Key,
ItemTotal = g.Sum(g.Value.Item3.ItemTotal) ItemTotal = g.Sum(g.Value.Item3.ItemTotal)
}); });
foreach (var psItemCount in psItemCountGroups)
{
updatePurchaseSchemeList.Add(new PurchaseScheme()
{
Id = psItemCount.SchemeId.Value,
PurchasedItemCount = Convert.ToInt32(psItemCount.ItemTotal),
PurchasedAmount = 0M
});
}
} }
#endregion #endregion
@ -626,14 +640,109 @@ namespace BBWYB.Server.Business
SchemeId = g.Key, SchemeId = g.Key,
Amount = g.Sum(g.Value.Item3.SkuAmount) Amount = g.Sum(g.Value.Item3.SkuAmount)
}); });
foreach (var psAmount in psAmountGroups)
{
var ps = updatePurchaseSchemeList.FirstOrDefault(x => x.Id == psAmount.SchemeId);
if (ps == null)
{
ps = new PurchaseScheme() { Id = psAmount.SchemeId.Value, PurchasedItemCount = 0 };
updatePurchaseSchemeList.Add(ps);
}
ps.PurchasedAmount = psAmount.Amount;
}
} }
#endregion #endregion
#endregion #endregion
#region 采购商累计信息 #region 采购商累计信息
{
#region 采购SKU数
var purchaserPurchasedList = fsql.Select<OrderPurchaseRelationInfo, Order, OrderPurchaseInfo>()
.InnerJoin((opri, o, opi) => opri.OrderId == o.Id)
.InnerJoin((opri, o, opi) => opi.OrderId == opri.OrderId && opi.IsEnabled == true)
.Where((opri, o, opi) => !noOrderStateList.Contains(o.OrderState) && o.ShopId != 11 && !string.IsNullOrEmpty(opi.PurchaserId))
.GroupBy((opri, o, opi) => new { o.ShopId, opi.PurchaserId, opri.BelongSkuId })
.ToList(g => new
{
g.Key.ShopId,
g.Key.PurchaserId,
g.Key.BelongSkuId
});
var purchaserPurchasedGroups = purchaserPurchasedList.GroupBy(x => x.PurchaserId);
foreach (var g in purchaserPurchasedGroups)
{
updatePurchaserList.Add(new Purchaser()
{
Id = g.Key,
PurchasedSkuCount = g.Count(),
PurchasedCount = 0
});
insertSkuHistoryPurchaserRelationList.AddRange(g.Select(x => new SkuHistoryPurchaserRelation()
{
CreateTime = DateTime.Now,
Id = idGenerator.NewLong(),
PurchaserId = x.PurchaserId,
ShopId = x.ShopId,
SkuId = x.BelongSkuId
}));
}
#endregion
#region 采购次数
/*
select opi.PurchaserId,count(DISTINCT(opi.OrderId)) from orderpurchaserelationinfo opri
inner join `order` o on opri.OrderId=o.Id
inner join orderpurchaseinfo opi on opi.OrderId=opri.OrderId and opi.IsEnabled=1
where o.OrderState not in (0,6) and o.ShopId !=11 and opi.PurchaserId is not null
group by opi.PurchaserId;
*/
var purchaserPurchasedCountList = fsql.Select<OrderPurchaseRelationInfo, Order, OrderPurchaseInfo>()
.InnerJoin((opri, o, opi) => opri.OrderId == o.Id)
.InnerJoin((opri, o, opi) => opi.OrderId == opri.OrderId && opi.IsEnabled == true)
.Where((opri, o, opi) => !noOrderStateList.Contains(o.OrderState) && o.ShopId != 11 && !string.IsNullOrEmpty(opi.PurchaserId))
.GroupBy((opri, o, opi) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
//Count = g.Count(g.Value.Item3.OrderId.Distinct())
Count = SqlExt.DistinctCount(g.Value.Item3.OrderId)
});
foreach (var pcount in purchaserPurchasedCountList)
{
var p = updatePurchaserList.FirstOrDefault(x => x.Id == pcount.PurchaserId);
if (p == null)
{
p = new Purchaser() { Id = pcount.PurchaserId, PurchasedSkuCount = 0 };
updatePurchaserList.Add(p);
}
p.PurchasedCount = Convert.ToInt32(pcount.Count);
}
//var purchaserPurchasedCountDataTable = fsql.Ado.ExecuteDataTable(@"select opi.PurchaserId,count(DISTINCT(opi.OrderId)) from orderpurchaserelationinfo opri
// inner join `order` o on opri.OrderId = o.Id
// inner join orderpurchaseinfo opi on opi.OrderId = opri.OrderId and opi.IsEnabled = 1
// where o.OrderState not in (0, 6) and o.ShopId != 11 and opi.PurchaserId is not null
// group by opi.PurchaserId;");
//foreach (DataRow dataRow in purchaserPurchasedCountDataTable.Rows)
//{
// var purchaserId = dataRow[0].ToString();
// var count = dataRow[1].ToInt32() ?? 0;
// var p = updatePurchaserList.FirstOrDefault(x => x.Id == purchaserId);
// if (p == null)
// {
// p = new Purchaser() { Id = purchaserId, PurchasedSkuCount = 0 };
// updatePurchaserList.Add(p);
// }
// p.PurchasedCount = count;
//}
#endregion
}
#endregion #endregion
fsql.Transaction(() => fsql.Transaction(() =>
@ -642,12 +751,26 @@ namespace BBWYB.Server.Business
fsql.Delete<SkuTotalSaleInfo>().Where(s => 1 == 1).ExecuteAffrows(); fsql.Delete<SkuTotalSaleInfo>().Where(s => 1 == 1).ExecuteAffrows();
fsql.Delete<SkuOptimizationHistory>().Where(s => 1 == 1).ExecuteAffrows(); fsql.Delete<SkuOptimizationHistory>().Where(s => 1 == 1).ExecuteAffrows();
fsql.Delete<TimeLimitTask>().Where(t => t.TaskType == Enums.TimeLimitTaskType.).ExecuteAffrows(); fsql.Delete<TimeLimitTask>().Where(t => t.TaskType == Enums.TimeLimitTaskType.).ExecuteAffrows();
fsql.Delete<SkuHistoryPurchaserRelation>().Where(s => 1 == 1).ExecuteAffrows();
fsql.Update<OrderSku>().Set(osku => osku.IsNeedOptimization, 0) fsql.Update<OrderSku>().Set(osku => osku.IsNeedOptimization, 0)
.Set(osku => osku.IsOptimizationCompleted, 0) .Set(osku => osku.IsOptimizationCompleted, 0)
.Where(osku => osku.IsNeedOptimization == 1) .Where(osku => osku.IsNeedOptimization == 1)
.ExecuteAffrows(); .ExecuteAffrows();
foreach (var updatePs in updatePurchaseSchemeList)
{
fsql.Update<PurchaseScheme>(updatePs.Id).Set(ps => ps.PurchasedItemCount, updatePs.PurchasedItemCount)
.Set(ps => ps.PurchasedAmount, updatePs.PurchasedAmount)
.ExecuteAffrows();
}
foreach (var updatePurchaser in updatePurchaserList)
{
fsql.Update<Purchaser>(updatePurchaser.Id).Set(p => p.PurchasedSkuCount, updatePurchaser.PurchasedSkuCount)
.Set(p => p.PurchasedCount, updatePurchaser.PurchasedCount)
.ExecuteAffrows();
}
fsql.Insert(insertSpuSaleInfoList).ExecuteAffrows(); fsql.Insert(insertSpuSaleInfoList).ExecuteAffrows();
fsql.Insert(insertSkuSaleInfoList).ExecuteAffrows(); fsql.Insert(insertSkuSaleInfoList).ExecuteAffrows();
fsql.Insert(insertSkuHistoryPurchaserRelationList).ExecuteAffrows();
}); });
} }
} }

Loading…
Cancel
Save