Commit 8aa2b332 by 李承祥

临床科室医护绩效测算表 -- 数据填充

parent 014152f8
...@@ -104,6 +104,7 @@ public AutoMapperConfigs() ...@@ -104,6 +104,7 @@ public AutoMapperConfigs()
.ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.NurseAdjustFactor)); .ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.NurseAdjustFactor));
CreateMap<PerDataAccountBaisc, im_accountbasic>(); CreateMap<PerDataAccountBaisc, im_accountbasic>();
CreateMap<im_accountbasic, PerDataAccountBaisc>();
CreateMap<PerDataSpecialUnit, im_specialunit>(); CreateMap<PerDataSpecialUnit, im_specialunit>();
CreateMap<PerDataAccountDoctor, res_accountdoctor>(); CreateMap<PerDataAccountDoctor, res_accountdoctor>();
CreateMap<res_accountdoctor, PerDataAccount>(); CreateMap<res_accountdoctor, PerDataAccount>();
......
...@@ -32,6 +32,7 @@ public class ExtractService : IAutoInjection ...@@ -32,6 +32,7 @@ public class ExtractService : IAutoInjection
private readonly PerforPersheetRepository perforPersheetRepository; private readonly PerforPersheetRepository perforPersheetRepository;
private readonly PerforImheaderRepository perforImheaderRepository; private readonly PerforImheaderRepository perforImheaderRepository;
private readonly PerforImemployeeRepository perforImemployeeRepository; private readonly PerforImemployeeRepository perforImemployeeRepository;
private readonly PerforImaccountbasicRepository perforImaccountbasicRepository;
private readonly PerforExtractRepository perforExtractRepository; private readonly PerforExtractRepository perforExtractRepository;
private readonly PerforPerfirstRepository perforPerfirstRepository; private readonly PerforPerfirstRepository perforPerfirstRepository;
private readonly PerforPerallotRepository perforPerallotRepository; private readonly PerforPerallotRepository perforPerallotRepository;
...@@ -45,6 +46,7 @@ public class ExtractService : IAutoInjection ...@@ -45,6 +46,7 @@ public class ExtractService : IAutoInjection
PerforPersheetRepository perforPersheetRepository, PerforPersheetRepository perforPersheetRepository,
PerforImheaderRepository perforImheaderRepository, PerforImheaderRepository perforImheaderRepository,
PerforImemployeeRepository perforImemployeeRepository, PerforImemployeeRepository perforImemployeeRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository,
PerforExtractRepository perforExtractRepository, PerforExtractRepository perforExtractRepository,
PerforPerfirstRepository perforPerfirstRepository, PerforPerfirstRepository perforPerfirstRepository,
PerforPerallotRepository perforPerallotRepository, PerforPerallotRepository perforPerallotRepository,
...@@ -58,6 +60,7 @@ public class ExtractService : IAutoInjection ...@@ -58,6 +60,7 @@ public class ExtractService : IAutoInjection
this.perforPersheetRepository = perforPersheetRepository; this.perforPersheetRepository = perforPersheetRepository;
this.perforImheaderRepository = perforImheaderRepository; this.perforImheaderRepository = perforImheaderRepository;
this.perforImemployeeRepository = perforImemployeeRepository; this.perforImemployeeRepository = perforImemployeeRepository;
this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this.perforExtractRepository = perforExtractRepository; this.perforExtractRepository = perforExtractRepository;
this.perforPerfirstRepository = perforPerfirstRepository; this.perforPerfirstRepository = perforPerfirstRepository;
this.perforPerallotRepository = perforPerallotRepository; this.perforPerallotRepository = perforPerallotRepository;
...@@ -257,6 +260,59 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -257,6 +260,59 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
} }
} }
} }
//临床科室医护绩效测算表
else if (SheetType.AccountBasic == sheet.SheetType /*&& sheet.PerData != null && sheet.PerData.Any()*/)
{
LogHelper.Information($"填充临床科室医护绩效测算表,", "提取绩效数据");
var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataAccountBaisc>(t => (PerDataAccountBaisc)t));
var children = new List<PerHeader>();
foreach (var item in sheet.PerHeader)
{
var childItem = item.Children;
if (childItem != null)
{
childItem.ForEach(t => t.CellValue = item.CellValue + t.CellValue);
children = children.Union(childItem).ToList();
}
}
for (int i = 0; i < dataList.Count; i++)
{
var importRow = importSheet.CreateRow(maxHeaderRowNumber + i + 1);
Dictionary<string, Func<PerDataAccountBaisc, object>> keyValues = new Dictionary<string, Func<PerDataAccountBaisc, object>>
{
{ "核算单元", (t) => t.AccountingUnit },
{ "科室", (t) => t.Department },
{ "医生组核算单元医生数量", (t) => t.DoctorNumber },
{ "医生组基础系数", (t) => t.DoctorBasicFactor },
{ "医生组倾斜系数", (t) => t.DoctorSlopeFactor },
{ "医生组其他绩效1", (t) => t.DoctorOtherPerfor1 },
{ "医生组考核得分率", (t) => t.DoctorScoringAverage },
{ "医生组医院奖罚", (t) => t.DoctorExtra },
{ "医生组其他绩效2", (t) => t.DoctorOtherPerfor2 },
{ "医生组调节系数", (t) => t.DoctorAdjustFactor },
{ "护理组核算单元护士数量", (t) => t.NurseNumber },
{ "护理组基础系数", (t) => t.NurseBasicFactor },
{ "护理组倾斜系数", (t) => t.NurseSlopeFactor },
{ "护理组其他绩效1", (t) => t.NurseOtherPerfor1 },
{ "护理组考核得分率", (t) => t.NurseScoringAverage },
{ "护理组医院奖罚", (t) => t.NurseExtra },
{ "护理组其他绩效2", (t) => t.NurseOtherPerfor2 },
{ "护理组调节系数", (t) => t.NurseAdjustFactor },
};
foreach (var item in keyValues.Keys)
{
var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == item)
?? children?.FirstOrDefault(t => t.CellValue == item);
if (headInfo != null)
{
var value = (keyValues[item].Invoke(dataList[i]) ?? "").ToString();
importRow.CreateCell(headInfo.PointCell).SetCellValue(Verify(value));
}
}
}
}
//SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充 //SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充
else if (scriptList.Any(t => sheet.SheetName.Contains(t.SheetName))) else if (scriptList.Any(t => sheet.SheetName.Contains(t.SheetName)))
{ {
...@@ -352,14 +408,15 @@ private List<PerSheet> GetRepositoryData(int allotId) ...@@ -352,14 +408,15 @@ private List<PerSheet> GetRepositoryData(int allotId)
else if (SheetType.AccountBasic == (SheetType)sheet.SheetType) else if (SheetType.AccountBasic == (SheetType)sheet.SheetType)
{ {
perSheet.PerHeader = GetHeader((SheetType)sheet.SheetType); perSheet.PerHeader = GetHeader((SheetType)sheet.SheetType);
var basicList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == sheet.AllotID);
var perBasicList = AutoMapper.Mapper.Map<List<PerDataAccountBaisc>>(basicList);
perSheet.PerData = perBasicList?.ConvertAll(new Converter<PerDataAccountBaisc, IPerData>(m => m));
} }
sheetList.Add(perSheet); sheetList.Add(perSheet);
} }
return sheetList; return sheetList;
} }
/// <summary> /// <summary>
/// 获取sheet及列头 /// 获取sheet及列头
/// </summary> /// </summary>
...@@ -399,6 +456,11 @@ private List<PerSheet> GetFileData(string path) ...@@ -399,6 +456,11 @@ private List<PerSheet> GetFileData(string path)
var headerReverse = perHeaderService.GetPerHeaderReverse(perHeader); var headerReverse = perHeaderService.GetPerHeaderReverse(perHeader);
perSheet.PerData = sheetRead.ReadData(sheet, headerReverse); perSheet.PerData = sheetRead.ReadData(sheet, headerReverse);
} }
if (SheetType.AccountBasic == sheetType)
{
var headerReverse = perHeaderService.GetPerHeaderReverse(perHeader);
perSheet.PerData = sheetRead.ReadData(sheet, headerReverse);
}
sheetList.Add(perSheet); sheetList.Add(perSheet);
} }
} }
...@@ -417,6 +479,7 @@ private List<PerSheet> GetFileData(string path) ...@@ -417,6 +479,7 @@ private List<PerSheet> GetFileData(string path)
return sheetList; return sheetList;
} }
#region 校验数据格式
/// <summary> /// <summary>
/// 校验数据格式,并转换 /// 校验数据格式,并转换
/// </summary> /// </summary>
...@@ -440,6 +503,7 @@ public dynamic Verify(string obj) ...@@ -440,6 +503,7 @@ public dynamic Verify(string obj)
return obj; return obj;
} }
} }
#endregion
#region 获取列头 #region 获取列头
/// <summary> /// <summary>
...@@ -449,83 +513,80 @@ public dynamic Verify(string obj) ...@@ -449,83 +513,80 @@ public dynamic Verify(string obj)
/// <returns></returns> /// <returns></returns>
public List<PerHeader> GetHeader(SheetType sheetType) public List<PerHeader> GetHeader(SheetType sheetType)
{ {
Dictionary<string, List<int>> keyValues = new Dictionary<string, List<int>>(); List<PerHeader> header = new List<PerHeader>();
if (SheetType.Employee == sheetType) if (SheetType.Employee == sheetType)
{ {
keyValues = new Dictionary<string, List<int>> header = new List<PerHeader>
{ {
{ "核算单元分类",new List<int> { 1, 1, 0, 1 } }, new PerHeader { CellValue = "核算单元分类", //列名
{ "核算单元", new List<int> { 1, 1, 1, 1 } }, MergeCell = 1, //单元格占据的列数
{ "绩效基数核算参考对象", new List<int> { 1, 1, 2, 1 } }, MergeRow = 1, //单元格占据的行数
{ "医生姓名", new List<int> { 1, 1, 3, 1 } }, PointCell = 0, //单元格列
{ "职称", new List<int> { 1, 1, 4, 1 } }, PointRow = 1 //单元格行
{ "岗位系数", new List<int> { 1, 1, 5, 1 } }, },
{ "参加工作时间", new List<int> { 1, 1, 6, 1 } }, new PerHeader { CellValue = "核算单元", MergeCell = 1, MergeRow = 1, PointCell = 1, PointRow = 1 },
{ "考核得分率", new List<int> { 1, 1, 7, 1 } }, new PerHeader { CellValue = "绩效基数核算参考对象", MergeCell = 1, MergeRow = 1, PointCell = 2, PointRow = 1 },
{ "出勤率", new List<int> { 1, 1, 8, 1 } }, new PerHeader { CellValue = "医生姓名", MergeCell = 1, MergeRow = 1, PointCell = 3, PointRow = 1 },
{ "核算单元医生数", new List<int> { 1, 1, 9, 1 } }, new PerHeader { CellValue = "职称", MergeCell = 1, MergeRow = 1, PointCell = 4, PointRow = 1 },
{ "工作量绩效", new List<int> { 1, 1, 10, 1 } }, new PerHeader { CellValue = "岗位系数", MergeCell = 1, MergeRow = 1, PointCell = 5, PointRow = 1 },
{ "其他绩效", new List<int> { 1, 1, 11, 1 } }, new PerHeader { CellValue = "参加工作时间", MergeCell = 1, MergeRow = 1, PointCell = 6, PointRow = 1 },
{ "医院奖罚", new List<int> { 1, 1, 12, 1 } }, new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 7, PointRow = 1 },
{ "调节系数", new List<int> { 1, 1, 13, 1 } }, new PerHeader { CellValue = "出勤率", MergeCell = 1, MergeRow = 1, PointCell = 8, PointRow = 1 },
{ "发放系数", new List<int> { 1, 1, 14, 1 } }, new PerHeader { CellValue = "核算单元医生数", MergeCell = 1, MergeRow = 1, PointCell = 9, PointRow = 1 },
new PerHeader { CellValue = "工作量绩效", MergeCell = 1, MergeRow = 1, PointCell = 10, PointRow = 1 },
new PerHeader { CellValue = "其他绩效", MergeCell = 1, MergeRow = 1, PointCell = 11, PointRow = 1 },
new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 12, PointRow = 1 },
new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 13, PointRow = 1 },
new PerHeader { CellValue = "发放系数", MergeCell = 1, MergeRow = 1, PointCell = 14, PointRow = 1 },
}; };
} }
else if (SheetType.AccountBasic == sheetType) else if (SheetType.AccountBasic == sheetType)
{ {
keyValues = new Dictionary<string, List<int>> header = new List<PerHeader>
{ {
{ "核算单元",new List<int> { 1, 2, 0, 1 } }, new PerHeader { CellValue = "核算单元", MergeCell = 1, MergeRow = 2, PointCell = 0, PointRow = 1 },
{ "科室", new List<int> { 1, 2, 1, 1 } }, new PerHeader { CellValue = "科室", MergeCell = 1, MergeRow = 2, PointCell = 1, PointRow = 1 },
{ "医生组", new List<int> { 8, 1, 2, 1 } }, new PerHeader { CellValue = "医生组", MergeCell = 8, MergeRow = 1, PointCell = 2, PointRow = 1,
{ "护理组", new List<int> { 8, 1, 3, 1 } }, Children = new List<PerHeader>{
{ "核算单元医生数量", new List<int> { 1, 1, 2, 2 } }, new PerHeader { CellValue = "核算单元医生数量", MergeCell = 1, MergeRow = 1, PointCell = 2, PointRow = 2 },
{ "基础系数", new List<int> { 1, 1, 3, 2 } }, new PerHeader { CellValue = "基础系数", MergeCell = 1, MergeRow = 1, PointCell = 3, PointRow = 2 },
{ "倾斜系数", new List<int> { 1, 1, 4, 2 } }, new PerHeader { CellValue = "倾斜系数", MergeCell = 1, MergeRow = 1, PointCell = 4, PointRow = 2 },
{ "其他绩效1", new List<int> { 1, 1, 5, 2 } }, new PerHeader { CellValue = "其他绩效1", MergeCell = 1, MergeRow = 1, PointCell = 5, PointRow = 2 },
{ "考核得分率", new List<int> { 1, 1, 6, 2 } }, new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 6, PointRow = 2 },
{ "医院奖罚", new List<int> { 1, 1, 7, 2 } }, new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 7, PointRow = 2 },
{ "其他绩效2", new List<int> { 1, 1, 8, 2 } }, new PerHeader { CellValue = "其他绩效2", MergeCell = 1, MergeRow = 1, PointCell = 8, PointRow = 2 },
{ "调节系数", new List<int> { 1, 1, 9, 2 } }, new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 9, PointRow = 2 },
{ "核算单元护士数量", new List<int> { 1, 1, 10, 2 } }, }
{ "基础系数?", new List<int> { 1, 1, 11, 2 } }, },
{ "倾斜系数?", new List<int> { 1, 1, 12, 2 } }, new PerHeader { CellValue = "护理组", MergeCell = 8, MergeRow = 1, PointCell = 3, PointRow = 1,
{ "其他绩效1?", new List<int> { 1, 1, 13, 2 } }, Children = new List<PerHeader>{
{ "考核得分率?", new List<int> { 1, 1, 14, 2 } }, new PerHeader { CellValue = "核算单元护士数量", MergeCell = 1, MergeRow = 1, PointCell = 10, PointRow = 2 },
{ "医院奖罚?", new List<int> { 1, 1, 15, 2 } }, new PerHeader { CellValue = "基础系数", MergeCell = 1, MergeRow = 1, PointCell = 11, PointRow = 2 },
{ "其他绩效2?", new List<int> { 1, 1, 16, 2 } }, new PerHeader { CellValue = "倾斜系数", MergeCell = 1, MergeRow = 1, PointCell = 12, PointRow = 2 },
{ "调节系数?", new List<int> { 1, 1, 17, 2 } }, new PerHeader { CellValue = "其他绩效1", MergeCell = 1, MergeRow = 1, PointCell = 13, PointRow = 2 },
new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 14, PointRow = 2 },
new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 15, PointRow = 2 },
new PerHeader { CellValue = "其他绩效2", MergeCell = 1, MergeRow = 1, PointCell = 16, PointRow = 2 },
new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 17, PointRow = 2 },
}
},
}; };
} }
else if (SheetType.SpecialUnit == sheetType) else if (SheetType.SpecialUnit == sheetType)
{ {
keyValues = new Dictionary<string, List<int>> header = new List<PerHeader>
{ {
{ "科室",new List<int> { 1, 1, 0, 1 } }, new PerHeader { CellValue = "科室", MergeCell = 1, MergeRow = 1, PointCell = 0, PointRow = 1 },
{ "人数", new List<int> { 1, 1, 1, 1 } }, new PerHeader { CellValue = "人数", MergeCell = 1, MergeRow = 1, PointCell = 1, PointRow = 1 },
{ "量化指标", new List<int> { 1, 1, 2, 1 } }, new PerHeader { CellValue = "量化指标", MergeCell = 1, MergeRow = 1, PointCell = 2, PointRow = 1 },
{ "数量", new List<int> { 1, 1, 3, 1 } }, new PerHeader { CellValue = "数量", MergeCell = 1, MergeRow = 1, PointCell = 3, PointRow = 1 },
{ "量化指标绩效分值", new List<int> { 1, 1, 4, 1 } }, new PerHeader { CellValue = "量化指标绩效分值", MergeCell = 1, MergeRow = 1, PointCell = 4, PointRow = 1 },
{ "考核得分率", new List<int> { 1, 1, 5, 1 } }, new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 5, PointRow = 1 },
{ "医院奖罚", new List<int> { 1, 1, 6, 1 } }, new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 6, PointRow = 1 },
{ "其他绩效", new List<int> { 1, 1, 7, 1 } }, new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 7, PointRow = 1 },
{ "调节系数", new List<int> { 1, 1, 8, 1 } }, new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 8, PointRow = 1 },
}; };
} }
List<PerHeader> header = new List<PerHeader>();
foreach (var item in keyValues.Keys)
{
header.Add(new PerHeader
{
CellValue = item.Replace("?", ""),
IsTotal = 0,
MergeCell = keyValues[item][0],
MergeRow = keyValues[item][1],
PointCell = keyValues[item][2],
PointRow = keyValues[item][3]
});
}
return header; return header;
} }
#endregion #endregion
......
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