Commit 519f3277 by 799284587@qq.com

优化

parent 263c85cf
...@@ -52,10 +52,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom ...@@ -52,10 +52,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom
//判断是否创建头部 //判断是否创建头部
if (!isHasData && dataList != null && dataList.Count() > 0) if (!isHasData && dataList != null && dataList.Count() > 0)
isHasData = true; isHasData = true;
foreach (var item in EnumHelper.GetItems<UnitType>())
foreach (var group in dataList.GroupBy(t => t.UnitType))
{ {
var typeName = $"{GetCleanSheetName(sheet.SheetName)}({ group.Key})"; var group = dataList.Where(t => t.UnitType == item.Name);
var typeName = $"{GetCleanSheetName(sheet.SheetName)}({item.Name})";
//创建子集头部信息 //创建子集头部信息
PerHeader childHeader = new PerHeader(1, childPointCell, typeName, 1, 1, 1, null, 2); PerHeader childHeader = new PerHeader(1, childPointCell, typeName, 1, 1, 1, null, 2);
headList.Add(childHeader); headList.Add(childHeader);
...@@ -64,11 +65,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom ...@@ -64,11 +65,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom
.GroupBy(t => t.AccountingUnit).Select(t => new PerData .GroupBy(t => t.AccountingUnit).Select(t => new PerData
{ {
SignID = childHeader.SignID, SignID = childHeader.SignID,
UnitType = group.Key, UnitType = item.Name,
AccountingUnit = t.Key, AccountingUnit = t.Key,
CellValue = ComputeValue(t, sheet.SheetName, group.Key, incomeconfs), CellValue = ComputeValue(t, sheet.SheetName, item.Name, incomeconfs),
TypeName = typeName, TypeName = typeName,
RowNumber = dataList.FirstOrDefault(s => s.AccountingUnit == t.Key && s.UnitType == group.Key)?.RowNumber ?? 0, RowNumber = dataList.FirstOrDefault(s => s.AccountingUnit == t.Key && s.UnitType == item.Name)?.RowNumber ?? 0,
ComputRule = type == SheetType.Expend ? 2 : 1 ComputRule = type == SheetType.Expend ? 2 : 1
}); });
...@@ -143,7 +144,7 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -143,7 +144,7 @@ public PerSheet OnceCompute(PerSheet sheet)
{ {
header.PointCell = header.PointCell + phead; header.PointCell = header.PointCell + phead;
header.Children.ForEach(item => item.PointCell = item.PointCell + phead); header.Children.ForEach(item => item.PointCell = item.PointCell + phead);
phead = phead + 2; phead = phead + 3;
} }
} }
...@@ -160,18 +161,20 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -160,18 +161,20 @@ public PerSheet OnceCompute(PerSheet sheet)
var typeClass = dataList.Where(t => header.Children.Select(s => s.CellValue).Contains(t.TypeName)); var typeClass = dataList.Where(t => header.Children.Select(s => s.CellValue).Contains(t.TypeName));
int pointcell = 0; int pointcell = 0;
foreach (var group in typeClass.GroupBy(t => t.UnitType)) foreach (var item in EnumHelper.GetItems<UnitType>())
{ {
pointcell++; pointcell++;
var childHead = new PerHeader(1, maxcell + pointcell, group.Key, 1, 1, 1, null, 1); var group = typeClass.Where(t => t.UnitType == item.Name);
var childHead = new PerHeader(1, maxcell + pointcell, item.Name, 1, 1, 1, null, 1);
parentHead.Children.Add(childHead); parentHead.Children.Add(childHead);
var ds = group.Where(t => t.CellValue.HasValue) var ds = group.Where(t => t.CellValue.HasValue)
.GroupBy(t => t.AccountingUnit).Select(t => new PerData .GroupBy(t => t.AccountingUnit).Select(t => new PerData
{ {
UnitType = group.Key, UnitType = item.Name,
AccountingUnit = t.Key, AccountingUnit = t.Key,
CellValue = t.Sum(s => s.CellValue), CellValue = t.Sum(s => s.CellValue),
TypeName = group.Key, TypeName = item.Name,
RowNumber = t.FirstOrDefault()?.RowNumber ?? 0, RowNumber = t.FirstOrDefault()?.RowNumber ?? 0,
IsTotal = 1, IsTotal = 1,
PointCell = maxcell + pointcell, PointCell = maxcell + pointcell,
...@@ -199,7 +202,7 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -199,7 +202,7 @@ public PerSheet OnceCompute(PerSheet sheet)
//获取最大列坐标位置 //获取最大列坐标位置
var maxhead = sheet.PerHeader.OrderByDescending(t => t.PointCell).FirstOrDefault(); var maxhead = sheet.PerHeader.OrderByDescending(t => t.PointCell).FirstOrDefault();
int thiscell = maxhead.Children != null && maxhead.Children.Count > 0 int thiscell = maxhead.Children != null && maxhead.Children.Count > 0
? maxhead.Children.Max(t => t.PointCell) + 3 ? maxhead.Children.Max(t => t.PointCell) + 1
: maxhead.PointCell; : maxhead.PointCell;
PerHeader perHead = new PerHeader(0, thiscell, "科室可核算业绩收入", 0, 1, 3, new List<PerHeader>(), 1); PerHeader perHead = new PerHeader(0, thiscell, "科室可核算业绩收入", 0, 1, 3, new List<PerHeader>(), 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment