sheet格式第二版

parent 72ac1d44
...@@ -27,7 +27,7 @@ public class SheetExportResponse ...@@ -27,7 +27,7 @@ public class SheetExportResponse
/// <summary> /// <summary>
/// sheet数据 /// sheet数据
/// </summary> /// </summary>
public List<RowData> Row { get; set; } public List<Row> Row { get; set; }
public SheetExportResponse() { } public SheetExportResponse() { }
...@@ -37,7 +37,7 @@ public SheetExportResponse(int sheetID, string sheetName, int sheetType) ...@@ -37,7 +37,7 @@ public SheetExportResponse(int sheetID, string sheetName, int sheetType)
SheetName = sheetName; SheetName = sheetName;
SheetType = sheetType; SheetType = sheetType;
Header = new List<Row>(); Header = new List<Row>();
Row = new List<RowData>(); Row = new List<Row>();
} }
} }
...@@ -54,17 +54,6 @@ public Row(int rownumber) ...@@ -54,17 +54,6 @@ public Row(int rownumber)
} }
} }
public class RowData : Row
{
public string AccountingUnit { get; set; }
public RowData(int rownumber, string accountingUnit)
{
Rownumber = rownumber;
AccountingUnit = accountingUnit;
Data = new List<Cell>();
}
}
public class Cell public class Cell
{ {
public int PointCell { get; set; } public int PointCell { get; set; }
......
...@@ -51,7 +51,7 @@ public bool AddRange(params TEntity[] entities) ...@@ -51,7 +51,7 @@ public bool AddRange(params TEntity[] entities)
await context.Set<TEntity>().AddRangeAsync(entities); await context.Set<TEntity>().AddRangeAsync(entities);
return await context.SaveChangesAsync() > 0; return await context.SaveChangesAsync() > 0;
} }
public bool Remove(TEntity entity) public bool Remove(TEntity entity)
{ {
context.Set<TEntity>().Remove(entity); context.Set<TEntity>().Remove(entity);
...@@ -69,36 +69,24 @@ public bool Update(TEntity entity) ...@@ -69,36 +69,24 @@ public bool Update(TEntity entity)
return context.SaveChanges() > 0; return context.SaveChanges() > 0;
} }
public IEnumerable<TEntity> GetEntities() public List<TEntity> GetEntities()
{ {
return context.Set<TEntity>(); return context.Set<TEntity>().ToList();
} }
public IEnumerable<TEntity> GetEntities(Expression<Func<TEntity, bool>> exp) public List<TEntity> GetEntities(Expression<Func<TEntity, bool>> exp)
{ {
return CompileQuery(exp); return context.Set<TEntity>().Where(exp).ToList();
} }
public IEnumerable<TEntity> GetEntitiesForPaging(int Page, int pageSize, Expression<Func<TEntity, bool>> exp) public List<TEntity> GetEntitiesForPaging(int Page, int pageSize, Expression<Func<TEntity, bool>> exp)
{ {
return CompileQuery(exp).Skip((Page - 1) * pageSize).Take(pageSize); return context.Set<TEntity>().Where(exp).Skip((Page - 1) * pageSize).Take(pageSize).ToList();
} }
public TEntity GetEntity(Expression<Func<TEntity, bool>> exp) public TEntity GetEntity(Expression<Func<TEntity, bool>> exp)
{ {
return CompileQuerySingle(exp); return context.Set<TEntity>().FirstOrDefault(exp);
}
private IEnumerable<TEntity> CompileQuery(Expression<Func<TEntity, bool>> exp)
{
var func = EF.CompileQuery((DbContext context, Expression<Func<TEntity, bool>> exps) => context.Set<TEntity>().Where(exp));
return func(context, exp);
}
private TEntity CompileQuerySingle(Expression<Func<TEntity, bool>> exp)
{
var func = EF.CompileQuery((DbContext context, Expression<Func<TEntity, bool>> exps) => context.Set<TEntity>().FirstOrDefault(exp));
return func(context, exp);
} }
} }
} }
...@@ -28,6 +28,7 @@ public PerSheet ProcessCompute(PerExcel excel) ...@@ -28,6 +28,7 @@ public PerSheet ProcessCompute(PerExcel excel)
PerData = new List<IPerData>() PerData = new List<IPerData>()
}; };
List<PerData> perDataList = new List<PerData>();
//初始核算单元列头 //初始核算单元列头
compSheet.PerHeader.Add(new PerHeader { CellValue = "核算单元", Level = 0, MergeCell = 1, MergeRow = 2, PointCell = 0, PointRow = 0 }); compSheet.PerHeader.Add(new PerHeader { CellValue = "核算单元", Level = 0, MergeCell = 1, MergeRow = 2, PointCell = 0, PointRow = 0 });
//起始列 //起始列
...@@ -49,16 +50,17 @@ public PerSheet ProcessCompute(PerExcel excel) ...@@ -49,16 +50,17 @@ public PerSheet ProcessCompute(PerExcel excel)
foreach (var group in dataList.GroupBy(t => t.UnitType)) foreach (var group in dataList.GroupBy(t => t.UnitType))
{ {
var typeName = $"{GetCleanSheetName(sheet.SheetName)}({ group.Key})"; var typeName = $"{GetCleanSheetName(sheet.SheetName)}({ group.Key})";
var ds = group.GroupBy(t => t.AccountingUnit).Select(t => new PerData var ds = group.Where(t => t.CellValue.HasValue && t.CellValue.Value > 0)
{ .GroupBy(t => t.AccountingUnit).Select(t => new PerData
UnitType = group.Key, {
AccountingUnit = t.Key, UnitType = group.Key,
CellValue = t.Sum(s => s.IsFactor ? (s.CellValue * (s.FactorValue ?? 0)) : s.CellValue), AccountingUnit = t.Key,
TypeName = typeName, CellValue = t.Sum(s => s.IsFactor ? (s.CellValue * (s.FactorValue ?? 0)) : s.CellValue),
RowNumber = dataList.FirstOrDefault(s => s.AccountingUnit == t.Key && s.UnitType == group.Key)?.RowNumber ?? 0 TypeName = typeName,
}); RowNumber = dataList.FirstOrDefault(s => s.AccountingUnit == t.Key && s.UnitType == group.Key)?.RowNumber ?? 0
});
compSheet.PerData.AddRange(ds); perDataList.AddRange(ds);
//创建子集头部信息 //创建子集头部信息
PerHeader childHeader = new PerHeader(1, childPointCell, typeName, 1, 1, 1, null); PerHeader childHeader = new PerHeader(1, childPointCell, typeName, 1, 1, 1, null);
headList.Add(childHeader); headList.Add(childHeader);
...@@ -71,6 +73,14 @@ public PerSheet ProcessCompute(PerExcel excel) ...@@ -71,6 +73,14 @@ public PerSheet ProcessCompute(PerExcel excel)
pointCell = pointCell + headList.Count; pointCell = pointCell + headList.Count;
} }
} }
int number = 0;
foreach (var accountingUnit in perDataList.OrderBy(t => t.RowNumber).Select(t => t.AccountingUnit).Distinct())
{
perDataList.Where(t => t.AccountingUnit == accountingUnit).ToList().ForEach(item => item.RowNumber = number);
number++;
}
compSheet.PerData.AddRange(perDataList);
return compSheet; return compSheet;
} }
......
using AutoMapper; using AutoMapper;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Repository; using Performance.Repository;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -128,17 +129,60 @@ public SheetExportResponse SheetExport(int sheetID) ...@@ -128,17 +129,60 @@ public SheetExportResponse SheetExport(int sheetID)
rowhead2.Data.Add(new Cell(header.PointCell.Value, header.CellValue, header.MergeRow.Value, header.MergeCell.Value)); rowhead2.Data.Add(new Cell(header.PointCell.Value, header.CellValue, header.MergeRow.Value, header.MergeCell.Value));
} }
} }
List<im_header> headers = new List<im_header>();
foreach (var head in headList)
{
if (!headList.Any(t => t.ParentID == head.ID))
headers.Add(head);
}
//创建数据行 //创建数据行
RowData rowbody = null; Row rowbody = null;
foreach (var data in dataList.OrderBy(t => t.RowNumber)) foreach (var rowNumber in dataList.Select(t => t.RowNumber).OrderBy(t => t).Distinct())
{ {
var header = headList.Where(t => t.CellValue == data.TypeName).OrderByDescending(t => t.ParentID).FirstOrDefault(); foreach (var head in headers)
if (rowbody == null || rowbody.Rownumber != data.RowNumber)
{ {
rowbody = new RowData(data.RowNumber.Value, data.AccountingUnit); if (rowbody == null || rowbody.Rownumber != rowNumber)
response.Row.Add(rowbody); {
rowbody = new Row(rowNumber ?? 0);
response.Row.Add(rowbody);
}
if (head.CellValue.Contains("核算单元"))
{
if (head.CellValue.Contains("医生组"))
{
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber && t.UnitType == 1).AccountingUnit;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1));
}
else if (head.CellValue.Contains("护理组"))
{
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber && t.UnitType == 2).AccountingUnit;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1));
}
else
{
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber).AccountingUnit;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1));
}
}
else if (head.CellValue.Contains("科室名称"))
{
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber).Department;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1));
}
else if (head.CellValue.Contains("备注"))
{
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber).Remark;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1));
}
else if (!rowbody.Data.Any(t => t.PointCell == head.PointCell))
{
var accountingUnit = dataList.FirstOrDefault(t => t.RowNumber == rowNumber).AccountingUnit;
var value = dataList.FirstOrDefault(t => t.AccountingUnit == accountingUnit && t.TypeName == head.CellValue)?.CellValue;
if (value.HasValue && value.Value > 0)
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1));
}
} }
rowbody.Data.Add(new Cell(header.PointCell.Value, data.CellValue, 1, 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