Commit f0f6869c by zry

excel

parent e56d886c
......@@ -27,5 +27,9 @@ public enum SheetType
Overtime = 6,
[Description("工作量")]
Workload = 7,
[Description("特殊核算单元")]
SpecialUnit = 8,
[Description("核算单元统一系数")]
UnifyUnit = 9,
}
}
......@@ -4,7 +4,10 @@
namespace Performance.DtoModels
{
public class PerData
public interface IPerData
{
}
public class PerData : IPerData
{
/// <summary>
/// 核算单元类别 (医生组/护理组)
......@@ -26,12 +29,13 @@ public class PerData
/// 单元格备注
/// </summary>
public string Annotation { get; set; }
}
public class PerData<TKey> : PerData
{
/// <summary>
/// 单元格value
/// </summary>
public TKey CellValue { get; set; }
public decimal? CellValue { get; set; }
/// <summary>
/// 系数值
/// </summary>
public decimal? FactorValue { get; set; }
}
}
......@@ -4,7 +4,81 @@
namespace Performance.DtoModels
{
public class PerDataEmployee : PerData<string>
public class PerDataEmployee : IPerData
{
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
/// <summary>
/// 绩效基数核算参考对象
/// </summary>
public Nullable<decimal> FitPeople { get; set; }
/// <summary>
/// 医生姓名
/// </summary>
public string DoctorName { get; set; }
/// <summary>
/// 职称
/// </summary>
public string JobTitle { get; set; }
/// <summary>
/// 岗位系数
/// </summary>
public Nullable<decimal> PostCoefficient { get; set; }
/// <summary>
/// 参加工作时间
/// </summary>
public Nullable<DateTime> WorkTime { get; set; }
/// <summary>
/// 考核得分率
/// </summary>
public Nullable<decimal> ScoreAverageRate { get; set; }
/// <summary>
/// 出勤率
/// </summary>
public Nullable<decimal> Attendance { get; set; }
/// <summary>
/// 核算单元医生数
/// </summary>
public Nullable<int> PeopleNumber { get; set; }
/// <summary>
/// 工作量绩效
/// </summary>
public Nullable<decimal> Workload { get; set; }
/// <summary>
/// 其他绩效
/// </summary>
public Nullable<decimal> OthePerfor { get; set; }
/// <summary>
/// 医院奖罚
/// </summary>
public Nullable<decimal> Punishment { get; set; }
/// <summary>
/// 调节系数
/// </summary>
public Nullable<decimal> Adjust { get; set; }
/// <summary>
/// 发放系数
/// </summary>
public Nullable<decimal> Grant { get; set; }
}
}
......@@ -4,8 +4,7 @@
namespace Performance.DtoModels
{
public class PerDataExpend : PerData<decimal>
public class PerDataExpend : PerData
{
public string ParentType { get; set; }
}
}
......@@ -4,11 +4,7 @@
namespace Performance.DtoModels
{
public class PerDataIncome : PerData<decimal?>
public class PerDataIncome : PerData
{
/// <summary>
/// 系数值
/// </summary>
public decimal? FactorValue { get; set; }
}
}
......@@ -4,7 +4,7 @@
namespace Performance.DtoModels
{
public class PerDataOtherIncome : PerData<decimal?>
public class PerDataOtherIncome : PerData
{
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class PerDataUnifyUnit : IPerData
{
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
/// <summary>
/// 核算单元医生数量
/// </summary>
public Nullable<int> DoctorNumber { get; set; }
/// <summary>
/// 医生预设总系数
/// </summary>
public Nullable<decimal> DoctorFactor { get; set; }
/// <summary>
/// 其他绩效1
/// </summary>
public Nullable<decimal> DoctorOtherPerfor1 { get; set; }
/// <summary>
/// 其他绩效2
/// </summary>
public Nullable<decimal> DoctorOtherPerfor2 { get; set; }
/// <summary>
/// 医院奖罚
/// </summary>
public Nullable<decimal> DoctorExtra { get; set; }
/// <summary>
/// 考核对分率
/// </summary>
public Nullable<decimal> DoctorScoringAverage { get; set; }
/// <summary>
/// 核算单元护士数量
/// </summary>
public Nullable<int> NurseNumber { get; set; }
/// <summary>
/// 护理预设总系数
/// </summary>
public Nullable<decimal> NurseFactor { get; set; }
/// <summary>
/// 其他绩效1
/// </summary>
public Nullable<decimal> NurseOtherPerfor1 { get; set; }
/// <summary>
/// 其他绩效2
/// </summary>
public Nullable<decimal> NurseOtherPerfor2 { get; set; }
/// <summary>
/// 医院奖罚
/// </summary>
public Nullable<decimal> NurseExtra { get; set; }
/// <summary>
/// 考核对分率
/// </summary>
public Nullable<decimal> NurseScoringAverage { get; set; }
}
}
......@@ -4,8 +4,7 @@
namespace Performance.DtoModels
{
public class PerDataWorkload : PerData<decimal?>
public class PerDataWorkload : PerData
{
public decimal? FactorValue { get; set; }
}
}
......@@ -25,6 +25,6 @@ public class PerSheet
/// <summary>
/// sheet数据
/// </summary>
public List<PerData> PerData { get; set; }
public List<IPerData> PerData { get; set; }
}
}
......@@ -51,36 +51,36 @@ public PerExcel Import(string path)
}
}
private List<im_employee> C(List<PerData> dataList)
{
List<im_employee> result = new List<im_employee>();
var empList = dataList.GroupBy(t => new { t.AccountingUnit, t.Department })
.Select(t => new { t.Key, Employee = t.Select(p => (PerDataEmployee)p) });
foreach (var gkey in empList)
{
im_employee employee = new im_employee
{
AccountingUnit = gkey.Key.AccountingUnit,
Department = gkey.Key.Department,
DoctorName = gkey.Employee.FirstOrDefault(t => t.TypeName == "医生姓名").CellValue,
FitPeople = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "绩效基数核算参考对象")?.CellValue),
JobTitle = gkey.Employee.FirstOrDefault(t => t.TypeName == "职称")?.CellValue,
PostCoefficient = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "岗位系数")?.CellValue),
WorkTime = ConvertHelper.To<DateTime?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "考核得分率")?.CellValue),
ScoreAverageRate = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "医生姓名")?.CellValue),
Attendance = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "出勤率")?.CellValue),
PeopleNumber = ConvertHelper.To<int?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "核算单元医生数")?.CellValue),
Workload = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "工作量绩效")?.CellValue),
OthePerfor = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "其他绩效")?.CellValue),
Punishment = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "医院奖罚")?.CellValue),
Adjust = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "调节系数")?.CellValue),
Grant = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "发放系数")?.CellValue)
};
result.Add(employee);
}
//private List<im_employee> C(List<PerData> dataList)
//{
// List<im_employee> result = new List<im_employee>();
// var empList = dataList.GroupBy(t => new { t.AccountingUnit, t.Department })
// .Select(t => new { t.Key, Employee = t.Select(p => (PerDataEmployee)p) });
// foreach (var gkey in empList)
// {
// im_employee employee = new im_employee
// {
// AccountingUnit = gkey.Key.AccountingUnit,
// Department = gkey.Key.Department,
// DoctorName = gkey.Employee.FirstOrDefault(t => t.TypeName == "医生姓名").CellValue,
// FitPeople = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "绩效基数核算参考对象")?.CellValue),
// JobTitle = gkey.Employee.FirstOrDefault(t => t.TypeName == "职称")?.CellValue,
// PostCoefficient = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "岗位系数")?.CellValue),
// WorkTime = ConvertHelper.To<DateTime?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "考核得分率")?.CellValue),
// ScoreAverageRate = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "医生姓名")?.CellValue),
// Attendance = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "出勤率")?.CellValue),
// PeopleNumber = ConvertHelper.To<int?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "核算单元医生数")?.CellValue),
// Workload = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "工作量绩效")?.CellValue),
// OthePerfor = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "其他绩效")?.CellValue),
// Punishment = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "医院奖罚")?.CellValue),
// Adjust = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "调节系数")?.CellValue),
// Grant = ConvertHelper.To<decimal?>(gkey.Employee.FirstOrDefault(t => t.TypeName == "发放系数")?.CellValue)
// };
// result.Add(employee);
// }
return result;
}
// return result;
//}
public void Copy(int iD)
{
......
......@@ -37,18 +37,26 @@ public PerSheet Sheet(ISheet sheet)
return perSheet;
}
/// <summary>
/// 判断sheet适用模板类型
/// </summary>
/// <param name="sheetName"></param>
/// <returns></returns>
public SheetType GetSheetType(string sheetName)
{
if (sheetName.StartsWith("医院人员名单"))
return SheetType.Employee;
else if (sheetName.StartsWith("1.0"))
return SheetType.OtherIncome;
else if (sheetName.StartsWith("1."))
return SheetType.Income;
else if (sheetName.StartsWith("2."))
return SheetType.Expend;
else if (sheetName.StartsWith("3."))
return SheetType.Workload;
//if (sheetName.StartsWith("医院人员名单"))
// return SheetType.Employee;
//else if (sheetName.StartsWith("1.0"))
// return SheetType.OtherIncome;
//else if (sheetName.StartsWith("1."))
// return SheetType.Income;
////else if (sheetName.StartsWith("2."))
//// return SheetType.Expend;
//else if (sheetName.StartsWith("3."))
// return SheetType.Workload;
//else
if (sheetName.StartsWith("4.1"))
return SheetType.UnifyUnit;
return SheetType.Unidentifiable;
}
......
......@@ -12,12 +12,13 @@ public interface IPerSheetDataRead
/// excel 列头及数据 配置信息
/// </summary>
PerSheetPoint Point { get; }
/// <summary>
/// 读取数据
/// </summary>
/// <param name="sheet"></param>
/// <param name="perHeader"></param>
/// <returns></returns>
List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader);
List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader);
}
}
......@@ -38,6 +38,9 @@ public static IPerSheetDataRead GetDataRead(SheetType sheetType)
case SheetType.Workload:
dataread = new PerSheetDataReadWorkload();
break;
case SheetType.UnifyUnit:
dataread = new PerSheetDataReadUnifyUnit();
break;
}
return dataread;
}
......
using NPOI.SS.UserModel;
using Performance.DtoModels;
using Performance.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -18,43 +19,40 @@ public class PerSheetDataReadEmployee : IPerSheetDataRead
HeaderLastRowNum = 0,
HeaderFirstCellNum = 0,
DataFirstRowNum = 1,
AccountingUnit = new List<AccountingUnit>
{
new AccountingUnit
{
AccountingUnitCellNum = 0,
DeptCellNum = 1
}
}
};
public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<PerData> dataList = new List<PerData>();
foreach (var unit in Point.AccountingUnit)
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
var vhead = perHeader.Where(t => t.PointCell != unit.AccountingUnitCellNum && t.PointCell != unit.DeptCellNum).OrderBy(t => t.PointCell);
List<IPerData> dataList = new List<IPerData>();
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
{
var row = sheet.GetRow(r);
for (int c = 0; c < vhead.Count(); c++)
{
//PerData data = sheetRead.GetPerData(row, vhead.ElementAt(c));
PerData data = new PerDataEmployee
{
AccountingUnit = row.GetCell(unit.AccountingUnitCellNum.Value)?.ToString(),
Department = row.GetCell(unit.DeptCellNum.Value)?.ToString(),
TypeName = vhead.ElementAt(c)?.CellName,
CellValue = row.GetCell(vhead.ElementAt(c).PointCell)?.ToString(),
Annotation = row.GetCell(vhead.ElementAt(c).PointCell)?.CellComment?.String?.String,
var accountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元").PointCell).ToString();
if (string.IsNullOrEmpty(accountingUnit))
continue;
PerDataEmployee employee = new PerDataEmployee
{
AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元").PointCell).ToString(),
Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "科室").PointCell).ToString(),
DoctorName = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "医生姓名").PointCell).ToString(),
JobTitle = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "职称").PointCell).ToString(),
FitPeople = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "绩效基数核算参考对象").PointCell).ToString()),
PostCoefficient = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "岗位系数").PointCell).ToString()),
WorkTime = ConvertHelper.To<DateTime?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "考核得分率").PointCell).ToString()),
ScoreAverageRate = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "医生姓名").PointCell).ToString()),
Attendance = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "出勤率").PointCell).ToString()),
PeopleNumber = ConvertHelper.To<int?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元医生数").PointCell).ToString()),
Workload = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "工作量绩效").PointCell).ToString()),
OthePerfor = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "其他绩效").PointCell).ToString()),
Punishment = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "医院奖罚").PointCell).ToString()),
Adjust = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "调节系数").PointCell).ToString()),
Grant = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "发放系数").PointCell).ToString()),
};
dataList.Add(data);
}
}
dataList.Add(employee);
}
return dataList;
}
}
......
......@@ -23,7 +23,7 @@ public class PerSheetDataReadExpend : IPerSheetDataRead
//DeptCellNum = 4
};
public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
//throw new NotImplementedException();
return null;
......
......@@ -8,6 +8,9 @@
namespace Performance.Services
{
/// <summary>
/// 收入
/// </summary>
public class PerSheetDataReadIncome : IPerSheetDataRead
{
public PerSheetPoint Point => new PerSheetPoint
......@@ -35,18 +38,17 @@ public class PerSheetDataReadIncome : IPerSheetDataRead
FactorRow = 1,
}
}
//AccountingUnitCellNum = 0,
//DeptCellNum = 1,
//FactorRow = 1,
};
public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<PerData> dataList = new List<PerData>();
List<IPerData> dataList = new List<IPerData>();
//循环 当前有几个核算单元
foreach (var unit in Point.AccountingUnit)
{
//查询除了 核算单元 科室名称 有效数据列头位置
var vhead = perHeader.Where(t => !Point.AccountingUnit.Select(p => p.AccountingUnitCellNum).Contains(t.PointCell)
&& !Point.AccountingUnit.Select(p => p.DeptCellNum).Contains(t.PointCell)).OrderBy(t => t.PointCell);
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
......@@ -54,11 +56,12 @@ public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
var row = sheet.GetRow(r);
for (int c = 0; c < vhead.Count(); c++)
{
//获取当前核算单元名称
var accountingUnit = row.GetCell(unit.AccountingUnitCellNum.Value)?.ToString();
//核算单元空值跳过
if (string.IsNullOrEmpty(accountingUnit))
continue;
var athead = vhead.ElementAt(c);
//PerData data = sheetRead.GetPerData(row, vhead.ElementAt(c));
PerData data = new PerDataIncome
{
AccountingUnit = accountingUnit,
......@@ -66,7 +69,7 @@ public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
TypeName = athead?.CellName,
CellValue = ConvertHelper.To<decimal?>(row.GetCell(athead.PointCell)?.ToString()),
Annotation = row.GetCell(athead.PointCell)?.CellComment?.String?.String,
UnitType = unit.UnitType,
UnitType = unit.UnitType, //手动匹配
FactorValue = ConvertHelper.To<decimal?>(sheet.GetRow(unit.FactorRow.Value).GetCell(athead.PointCell)?.ToString()),
};
dataList.Add(data);
......
......@@ -8,6 +8,9 @@
namespace Performance.Services
{
/// <summary>
/// 其他收入
/// </summary>
public class PerSheetDataReadOtherIncome : IPerSheetDataRead
{
public PerSheetPoint Point => new PerSheetPoint
......@@ -26,12 +29,12 @@ public class PerSheetDataReadOtherIncome : IPerSheetDataRead
}
};
public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<PerData> dataList = new List<PerData>();
List<IPerData> dataList = new List<IPerData>();
foreach (var unit in Point.AccountingUnit)
{
var unit = Point.AccountingUnit.First();
//查询除了 核算单元 科室名称 有效数据列头位置
var vhead = perHeader.Where(t => t.PointCell != unit.AccountingUnitCellNum && t.PointCell != unit.DeptCellNum).OrderBy(t => t.PointCell);
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
......@@ -39,7 +42,9 @@ public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
var row = sheet.GetRow(r);
for (int c = 0; c < vhead.Count(); c++)
{
//获取当前核算单元名称
var accountingUnit = row.GetCell(unit.AccountingUnitCellNum.Value)?.ToString();
//核算单元空值跳过
if (string.IsNullOrEmpty(accountingUnit))
continue;
var athead = vhead.ElementAt(c);
......@@ -50,29 +55,32 @@ public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
TypeName = athead?.CellName,
CellValue = ConvertHelper.To<decimal?>(row.GetCell(athead.PointCell)?.ToString()),
Annotation = row.GetCell(athead.PointCell)?.CellComment?.String?.String,
UnitType = GetUnitType(sheet.SheetName, perHeader)
};
if (sheet.SheetName.Contains("医生组"))
{
data.UnitType = "医生组";
}
else if (sheet.SheetName.Contains("护理组"))
{
data.UnitType = "护理组";
}
else if (perHeader.Any(t => t.CellName.Contains("核算单元") && t.CellName.Contains("医生组")))
{
data.UnitType = "医生组";
}
else if (perHeader.Any(t => t.CellName.Contains("核算单元") && t.CellName.Contains("护理组")))
{
data.UnitType = "护理组";
}
dataList.Add(data);
}
}
}
return dataList;
}
/// <summary>
/// 获取核算单元类型
/// </summary>
/// <param name="sheet"></param>
/// <param name="perHeader"></param>
private string GetUnitType(string sheetName, List<PerHeader> perHeader)
{
if (sheetName.Contains("医生组"))
return "医生组";
else if (sheetName.Contains("护理组"))
return "护理组";
else if (perHeader.Any(t => t.CellName.Contains("核算单元") && t.CellName.Contains("医生组")))
return "医生组";
else if (perHeader.Any(t => t.CellName.Contains("核算单元") && t.CellName.Contains("护理组")))
return "护理组";
return "";
}
}
}
......@@ -13,7 +13,7 @@ public class PerSheetDataReadOvertime : IPerSheetDataRead
{
public PerSheetPoint Point => throw new NotImplementedException();
public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
throw new NotImplementedException();
}
......
using NPOI.SS.UserModel;
using Performance.DtoModels;
using Performance.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Performance.Services
{
/// <summary>
/// 临床科室单元核算表
/// </summary>
public class PerSheetDataReadUnifyUnit : IPerSheetDataRead
{
public PerSheetPoint Point => new PerSheetPoint
{
HeaderFirstRowNum = 0,
HeaderLastRowNum = 1,
HeaderFirstCellNum = 0,
DataFirstRowNum = 2,
};
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<IPerData> dataList = new List<IPerData>();
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
{
var row = sheet.GetRow(r);
var accountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元").PointCell).ToString();
if (string.IsNullOrEmpty(accountingUnit))
continue;
PerDataUnifyUnit unifyUnit = new PerDataUnifyUnit
{
AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元").PointCell).ToString(),
Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "科室").PointCell).ToString(),
DoctorNumber = ConvertHelper.To<int?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元医生数量" && p.Parent.CellName == "医生组").PointCell).ToString()),
DoctorFactor = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "医生预设总系数" && p.Parent.CellName == "医生组").PointCell).ToString()),
DoctorOtherPerfor1 = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "其他绩效1" && p.Parent.CellName == "医生组").PointCell).ToString()),
DoctorOtherPerfor2 = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "其他绩效2" && p.Parent.CellName == "医生组").PointCell).ToString()),
DoctorExtra = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "医院奖罚" && p.Parent.CellName == "医生组").PointCell).ToString()),
DoctorScoringAverage = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "考核对分率" && p.Parent.CellName == "医生组").PointCell).ToString()),
NurseNumber = ConvertHelper.To<int?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "核算单元护士数量" && p.Parent.CellName == "护理组").PointCell).ToString()),
NurseFactor = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "护理预设总系数" && p.Parent.CellName == "护理组").PointCell).ToString()),
NurseOtherPerfor1 = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "其他绩效1" && p.Parent.CellName == "护理组").PointCell).ToString()),
NurseOtherPerfor2 = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "其他绩效2" && p.Parent.CellName == "护理组").PointCell).ToString()),
NurseExtra = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "医院奖罚" && p.Parent.CellName == "护理组").PointCell).ToString()),
NurseScoringAverage = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellName == "考核对分率" && p.Parent.CellName == "护理组").PointCell).ToString()),
};
dataList.Add(unifyUnit);
}
return dataList;
}
}
}
......@@ -30,25 +30,27 @@ public class PerSheetDataReadWorkload : IPerSheetDataRead
}
};
public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{
List<PerData> dataList = new List<PerData>();
List<IPerData> dataList = new List<IPerData>();
var unit = Point.AccountingUnit.First();
//查询除了 核算单元 科室名称 有效数据列头位置
var vhead = perHeader.Where(t => t.PointCell != unit.AccountingUnitCellNum && t.PointCell != unit.DeptCellNum).OrderBy(t => t.PointCell);
//循环 当前有几个核算单元
foreach (var unit in Point.AccountingUnit)
{
var vhead = perHeader.Where(t => !Point.AccountingUnit.Select(p => p.AccountingUnitCellNum).Contains(t.PointCell)
&& !Point.AccountingUnit.Select(p => p.DeptCellNum).Contains(t.PointCell)).OrderBy(t => t.PointCell);
for (int r = Point.DataFirstRowNum.Value; r < sheet.LastRowNum + 1; r++)
{
var row = sheet.GetRow(r);
for (int c = 0; c < vhead.Count(); c++)
{
//获取当前核算单元名称
var accountingUnit = row.GetCell(unit.AccountingUnitCellNum.Value)?.ToString();
//核算单元空值跳过
if (string.IsNullOrEmpty(accountingUnit))
continue;
var athead = vhead.ElementAt(c);
//PerData data = sheetRead.GetPerData(row, vhead.ElementAt(c));
PerData data = new PerDataWorkload
{
AccountingUnit = accountingUnit,
......@@ -60,17 +62,14 @@ public List<PerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
FactorValue = ConvertHelper.To<decimal?>(sheet.GetRow(unit.FactorRow.Value).GetCell(athead.PointCell)?.ToString()),
};
if (sheet.SheetName.Contains("医生组"))
{
data.UnitType = "医生组";
}
else if (sheet.SheetName.Contains("护理组"))
{
data.UnitType = "护理组";
}
dataList.Add(data);
}
}
}
return dataList;
}
}
......
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