Commit 68035f62 by lcx

导入模板、方法调整

parent d2b1f625
......@@ -195,11 +195,7 @@ public void ImportAllotData(int hospitalId, string filePath)
switch (sheetName)
{
case "科室总绩效":
ImporSummaryData(sheet, columns, hospitalId, allots);
break;
case "临床科室绩效":
case "科室绩效":
ImporAccountData(sheet, columns, hospitalId, allots);
break;
......@@ -215,10 +211,6 @@ public void ImportAllotData(int hospitalId, string filePath)
ImporClinicTag(sheet, columns, hospitalId);
break;
case "人均绩效":
ImporBasicnormData(sheet, columns, hospitalId, allots);
break;
default:
ImportBasicData(sheet, columns, hospitalId, allots, sheetName, sourceType);
break;
......@@ -273,19 +265,21 @@ private void ImportBasicData(ISheet sheet, List<string> columns, int hospitalId,
hisimportdataRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
}
private void ImporSummaryData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots)
private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots)
{
var data = new List<his_import_summary>();
var data = new List<his_import_account>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
{
var row = sheet.GetRow(rowIndex);
if (row == null) continue;
his_import_summary importdata = new his_import_summary
his_import_account importdata = new his_import_account
{
Year = GetCellValue<int>(row, columns, "年份"),
Month = GetCellValue<int>(row, columns, "月份"),
UnitType = GetCellValue<string>(row, columns, "核算单元类型"),
AccountingUnit = GetCellValue<string>(row, columns, "核算单元"),
Number = GetCellValue<decimal>(row, columns, "核算单元人员数量"),
RealGiveFee = GetCellValue<decimal>(row, columns, "实发绩效"),
};
data.Add(importdata);
......@@ -301,48 +295,79 @@ private void ImporSummaryData(ISheet sheet, List<string> columns, int hospitalId
t.CreateTime = dateTime;
});
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
#region his_import_summary 科室总绩效
logger.LogInformation($"添加科室总绩效");
var summaryData = data.GroupBy(t => new { t.AllotId, t.Year, t.Month, t.AccountingUnit }).Select(t => new his_import_summary
{
HospitalId = hospitalId,
AllotId = t.Key.AllotId ?? 0,
Year = t.Key.Year,
Month = t.Key.Month,
AccountingUnit = t.Key.AccountingUnit,
RealGiveFee = t.Sum(s => s.RealGiveFee),
CreateTime = dateTime
});
foreach (var item in summaryData.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportsummaryRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportsummaryRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
}
hisimportsummaryRepository.BulkInsert(summaryData.Where(t => t.Year != 0 && t.Month != 0));
#endregion his_import_summary
private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots)
{
var data = new List<his_import_account>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
#region his_import_account 临床科室绩效
logger.LogInformation($"临床科室绩效");
string[] clinicAccountTypes = new string[]
{
var row = sheet.GetRow(rowIndex);
if (row == null) continue;
his_import_account importdata = new his_import_account
UnitType.医生组.ToString(),
UnitType.护理组.ToString(),
UnitType.医技组.ToString(),
UnitType.其他医生组.ToString(),
UnitType.其他护理组.ToString(),
UnitType.其他医技组.ToString(),
UnitType.特殊核算组.ToString()
};
if (data.Any(t => clinicAccountTypes.Contains(t.UnitType)))
{
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
Year = GetCellValue<int>(row, columns, "年份"),
Month = GetCellValue<int>(row, columns, "月份"),
UnitType = GetCellValue<string>(row, columns, "核算单元类型"),
AccountingUnit = GetCellValue<string>(row, columns, "核算单元"),
Number = GetCellValue<decimal>(row, columns, "核算单元人员数量"),
RealGiveFee = GetCellValue<decimal>(row, columns, "实发绩效"),
};
data.Add(importdata);
hisimportaccountRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportaccountRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0 && clinicAccountTypes.Contains(t.UnitType)));
}
logger.LogInformation($"{sheet.SheetName}共有{sheet.LastRowNum}行数据,读取到{data.Count}条记录");
if (data == null || !data.Any(t => t.Year != 0 && t.Month != 0)) return;
#endregion his_import_account
var dateTime = DateTime.Now;
data.ForEach(t =>
#region his_import_baiscnorm 人均绩效计算
logger.LogInformation($"人均绩效计算");
Dictionary<string, string> basicDict = new Dictionary<string, string>
{
t.HospitalId = hospitalId;
t.AllotId = allots?.FirstOrDefault(w => w.Year == t.Year && t.Month == w.Month)?.ID ?? 0;
t.CreateTime = dateTime;
});
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{ "行政工勤人均绩效", UnitType.行政后勤.ToString() },
{ "临床医生人均绩效", UnitType.医生组.ToString() },
{ "医技医生人均绩效", UnitType.医技组.ToString() },
{ "护士人均绩效", UnitType.护理组.ToString() },
};
List<his_import_baiscnorm> baiscnorms = new List<his_import_baiscnorm>();
foreach (var item in basicDict)
{
hisimportaccountRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
var basicnormData = data.Where(t => t.UnitType == item.Value).GroupBy(t => new { t.AllotId, t.Year, t.Month }).Select(t => new his_import_baiscnorm
{
HospitalId = hospitalId,
AllotId = t.Key.AllotId ?? 0,
Year = t.Key.Year,
Month = t.Key.Month,
PositionName = item.Key,
TotelValue = t.Sum(s => s.RealGiveFee),
TotelNumber = t.Sum(s => s.Number),
AvgValue = t.Sum(s => s.Number) == 0 ? 0 : t.Sum(s => s.RealGiveFee) / t.Sum(s => s.Number),
CreateTime = dateTime
});
baiscnorms.AddRange(basicnormData);
}
hisimportaccountRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
foreach (var item in baiscnorms.Select(t => new { t.Year, t.Month, t.PositionName }).Distinct())
{
hisimportbaiscnormRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month && t.PositionName == item.PositionName);
}
hisimportbaiscnormRepository.BulkInsert(baiscnorms);
#endregion his_import_baiscnorm
}
private void ImporAccountTag(ISheet sheet, List<string> columns, int hospitalId)
......@@ -412,11 +437,46 @@ private void ImporClinicData(ISheet sheet, List<string> columns, int hospitalId,
t.CreateTime = dateTime;
});
#region his_import_clinic 科主任护士长绩效
logger.LogInformation($"科主任护士长绩效");
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportclinicRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportclinicRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
#endregion his_import_clinic
#region his_import_baiscnorm 人均绩效计算
logger.LogInformation($"人均绩效计算");
Dictionary<string, string> basicDict = new Dictionary<string, string>
{
{ "临床科室主任人均绩效", UnitType.医生组.ToString() },
{ "医技科室主任人均绩效", UnitType.医技组.ToString() },
{ "护士长人均绩效", UnitType.护理组.ToString() },
};
List<his_import_baiscnorm> baiscnorms = new List<his_import_baiscnorm>();
foreach (var item in basicDict)
{
var basicnormData = data.Where(t => t.UnitType == item.Value).GroupBy(t => new { t.AllotId, t.Year, t.Month }).Select(t => new his_import_baiscnorm
{
HospitalId = hospitalId,
AllotId = t.Key.AllotId ?? 0,
Year = t.Key.Year,
Month = t.Key.Month,
PositionName = item.Key,
TotelValue = t.Sum(s => s.RealGiveFee),
TotelNumber = t.Sum(s => s.Basics),
AvgValue = t.Sum(s => s.Basics) == 0 ? 0 : t.Sum(s => s.RealGiveFee) / t.Sum(s => s.Basics),
CreateTime = dateTime
});
baiscnorms.AddRange(basicnormData);
}
foreach (var item in baiscnorms.Select(t => new { t.Year, t.Month, t.PositionName }).Distinct())
{
hisimportbaiscnormRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month && t.PositionName == item.PositionName);
}
hisimportbaiscnormRepository.BulkInsert(baiscnorms);
#endregion his_import_baiscnorm
}
private void ImporClinicTag(ISheet sheet, List<string> columns, int hospitalId)
......@@ -455,43 +515,6 @@ private void ImporClinicTag(ISheet sheet, List<string> columns, int hospitalId)
reportperformancepersontagsRepository.BulkInsert(data.Where(t => !string.IsNullOrEmpty(t.PersonnelName) && !string.IsNullOrEmpty(t.PersonnelNumber)));
}
private void ImporBasicnormData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots)
{
var data = new List<his_import_baiscnorm>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
{
var row = sheet.GetRow(rowIndex);
if (row == null) continue;
his_import_baiscnorm importdata = new his_import_baiscnorm
{
Year = GetCellValue<int>(row, columns, "年份"),
Month = GetCellValue<int>(row, columns, "月份"),
PositionName = GetCellValue<string>(row, columns, "绩效核算人群"),
TotelValue = GetCellValue<decimal>(row, columns, "总绩效"),
AvgValue = GetCellValue<decimal>(row, columns, "总人数"),
TotelNumber = GetCellValue<decimal>(row, columns, "人均绩效"),
};
data.Add(importdata);
}
logger.LogInformation($"{sheet.SheetName}共有{sheet.LastRowNum}行数据,读取到{data.Count}条记录");
if (data == null || !data.Any(t => t.Year != 0 && t.Month != 0)) return;
var dateTime = DateTime.Now;
data.ForEach(t =>
{
t.HospitalId = hospitalId;
t.AllotId = allots?.FirstOrDefault(w => w.Year == t.Year && t.Month == w.Month)?.ID ?? 0;
t.CreateTime = dateTime;
});
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportbaiscnormRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportbaiscnormRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
}
private List<string> GetColumns(ISheet sheet, string sheetName, out string sourceType)
{
sourceType = "";
......
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