1、测算表的科室写入标准科室 2、配置提取SQL的列头进行整列数据清除(并清除公式) 3、0值数据不导出…

1、测算表的科室写入标准科室   2、配置提取SQL的列头进行整列数据清除(并清除公式) 3、0值数据不导出 4、支持配置按标准科室导出或按HIS科室导出(ex_script表中IsOrgDepartment=1按HIS科室导出,其他按表中科室导出)
parent 97d1832d
......@@ -385,6 +385,7 @@
查询考勤记录
</summary>
<param name="allotId"></param>
<param name="hospitalId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.AttendanceBatch(System.Int32,System.Int32,Performance.DtoModels.SaveCollectData)">
......
......@@ -8325,11 +8325,6 @@
是否开启定时抽取任务 1 是 2 否
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsSingleProject">
<summary>
抽取项目是否在同一环境 1 是 2 否
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsShowManageButton">
<summary>
行政后勤是否显示管理绩效按钮 1 是 2 否
......
......@@ -111,10 +111,10 @@ public class sys_hospital
/// </summary>
public Nullable<int> IsOpenTimedTasks { get; set; }
/// <summary>
/// 抽取项目是否在同一环境 1 是 2 否
/// </summary>
public Nullable<int> IsSingleProject { get; set; }
///// <summary>
///// 抽取项目是否在同一环境 1 是 2 否
///// </summary>
//public Nullable<int> IsSingleProject { get; set; }
/// <summary>
/// 行政后勤是否显示管理绩效按钮 1 是 2 否
......
......@@ -368,7 +368,7 @@ public bool QueryHosConfigs(int moduleId, ref bool isSingle, out int sheetType)
var hospital = hospitalRepository.GetEntity(t => t.ID == module.HospitalId);
if (hospital == null) throw new PerformanceException("医院信息错误!");
isSingle = hospital.IsSingleProject == 1;
isSingle = true;// hospital.IsSingleProject == 1;
var hospitalConfigs = hospitalconfigRepository.GetEntities(t => t.HospitalId == module.HospitalId);
if (hospitalConfigs != null && hospitalConfigs.Any())
......@@ -645,7 +645,7 @@ public string Judge(int allotId, int hospitalId, int useTemplate, ref bool isSin
var hospital = hospitalRepository.GetEntity(t => t.ID == hospitalId);
if (hospital == null)
throw new PerformanceException("医院ID错误");
isSingle = (hospital.IsSingleProject ?? 2) == 1;
isSingle = true; // (hospital.IsSingleProject ?? 2) == 1;
// 获取医院配置信息
var hospitalConfigList = hospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
if (hospitalConfigList == null || hospitalConfigList.Count == 0)
......
......@@ -30,6 +30,20 @@ public static ICell GetOrCreate(this IRow row, int index)
return cell;
}
/// <summary>
/// 删除重建
/// </summary>
/// <param name="row"></param>
/// <param name="index"></param>
/// <returns></returns>
public static ICell GetOrRecreate(this IRow row, int index)
{
var cell = row.GetCell(index);
if (cell != null)
row.RemoveCell(cell);
return row.CreateCell(index);
}
public static void SetRowStyle(this IRow row, ICellStyle cellStyle)
{
......
......@@ -116,6 +116,28 @@ private static void WriteFactor(IRow row, int cellIndex, decimal? value, ICellSt
cell.CellStyle = style;
}
public static void ClearSheetFormula(ISheet sheet, PerSheetPoint point, SheetType sheetType, ExcelStyle style, List<string> headers, List<ExtractTransDto> data)
{
headers = headers.Select(t => t.NoBlank()).ToList();
int dataFirstCellNum = point.DataFirstCellNum.Value;
var columnHeader = sheet.GetOrCreate(point.HeaderFirstRowNum.Value);
for (int cellIndex = dataFirstCellNum; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
for (int rowIndex = point.DataFirstRowNum.Value; rowIndex < sheet.LastRowNum + 1; rowIndex++)
{
var row = sheet.GetRow(rowIndex);
if (row == null) continue;
var column = columnHeader.GetOrCreate(cellIndex).GetDecodeEscapes();
if (headers.Any(w => w == column))
{
row.GetOrRecreate(cellIndex);
}
}
}
}
#region ExtractData
public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetType, ExcelStyle style, List<string> headers, List<ExtractTransDto> data)
......@@ -157,12 +179,15 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
if (row == null) continue;
string department = row.GetOrCreate(dataFirstCellNum - 1).GetDecodeEscapes();
if (string.IsNullOrEmpty(department)) continue;
if (rowIndex >= dataFirstRowNum) dataFirstRowNum = rowIndex + 1;
if (rowIndex > dataFirstRowNum) dataFirstRowNum = rowIndex + 1;
var deptData = data.Where(t => t.Department.NoBlank() == department);
if (deptData == null || !deptData.Any(t => t.Value.HasValue && t.Value != 0)) continue;
#region 写入数据
if (sheetType == SheetType.Income && !string.IsNullOrEmpty(department))
if (sheetType == SheetType.Income)
{
if (!incomes.Any(t => t.Department == department))
incomes.Add(GetIncomeRowMessage(row, dataFirstCellNum, department, rowIndex));
......@@ -175,15 +200,7 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
var cell = row.GetOrCreate(cellIndex);
if (string.IsNullOrEmpty(column)) continue;
decimal? value = 0m;
if (!string.IsNullOrEmpty(department))
{
var deptData = data.Where(t => t.Department.NoBlank() == department);
if (deptData != null && deptData.Any(t => t.Value.HasValue && t.Value != 0))
value = deptData.FirstOrDefault(t => t.Category.NoBlank() == column)?.Value;
}
var value = deptData.FirstOrDefault(t => t.Category.NoBlank() == column)?.Value;
//数据为空,且单元格值不为空,不写入数据(保留原始值)
// 22.3.29 ry 只要是提取的列头全部覆盖数据
if (headers != null && headers.Contains(column) && value.HasValue && value != 0)
......@@ -196,9 +213,9 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
#endregion
data.RemoveAll(t => t.Department == department);
}
//if (point.DataFirstRowNum.Value < dataFirstRowNum) dataFirstRowNum += 1;
//if (point.DataFirstRowNum.Value < dataFirstRowNum) dataFirstRowNum += 1;
}
}
private static void WriteSheetDataNonexistent(ISheet sheet, IRow columnHeader, PerSheetPoint point, SheetType sheetType, ExcelStyle style,
......@@ -233,17 +250,19 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
{
var row = sheet.GetOrCreate(dataFirstRowNum);
for (int cellIndex = point.HeaderFirstCellNum.Value; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
var column = columnHeader.GetCell(cellIndex).GetDecodeEscapes();
List<string> uts = new List<string> { "核算单元(医技组)", "核算单元(医生组)", "核算单元(护理组)" };
if (uts.Contains(column))
if (uts.Contains(column))
column = column?.Replace("(", "(").Replace(")", ")");
var cell = row.CreateCell(cellIndex);
var cell = row.GetOrCreate(cellIndex);
if (filed.ContainsKey(column))
{
var value = filed[column]?.Invoke(deptData.First());
cell.SetCellOValue(value);
cell.CellStyle = cellStyle;
}
......@@ -280,14 +299,14 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
{
{ 1, item.Department },
{ 2, (sheet.SheetName.Contains("门诊")
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutNurseAccounting))?.OutNurseAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatNurseAccounting))?.InpatNurseAccounting) ?? item.NurseAccount },
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutNurseAccounting))?.OutNurseAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatNurseAccounting))?.InpatNurseAccounting) ?? item.NurseAccount },
{ 3, (sheet.SheetName.Contains("门诊")
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutDoctorAccounting))?.OutDoctorAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatDoctorAccounting))?.InpatDoctorAccounting) ?? item.DoctorAccount },
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutDoctorAccounting))?.OutDoctorAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatDoctorAccounting))?.InpatDoctorAccounting) ?? item.DoctorAccount },
{ 4, (sheet.SheetName.Contains("门诊")
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutTechnicAccounting))?.OutTechnicAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatTechnicAccounting))?.InpatTechnicAccounting) ?? item.TechnicAccounting },
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutTechnicAccounting))?.OutTechnicAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatTechnicAccounting))?.InpatTechnicAccounting) ?? item.TechnicAccounting },
};
foreach (var content in deptContents)
......@@ -297,8 +316,6 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
cell.CellStyle = cellStyle;
}
for (int cellIndex = dataFirstCellNum; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
var column = columnHeader.GetOrCreate(cellIndex).GetDecodeEscapes();
......@@ -487,7 +504,7 @@ public static void WriteCollectData(ISheet sheet, PerSheetPoint point, SheetType
for (int cellIndex = point.HeaderFirstCellNum.Value; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
var column = columnHeader.GetCell(cellIndex).GetDecodeEscapes()?.Replace("(", "(").Replace(")", ")");
var cell = row.CreateCell(cellIndex);
var cell = row.GetOrCreate(cellIndex);
if (filed.ContainsKey(column))
{
......
......@@ -81,7 +81,7 @@ public void Execute()
var dict = new Dictionary<ExDataDict, object>();
var scripts = new List<ex_script>();
var isSingle = hospital.IsSingleProject == 1;
var isSingle = true;// hospital.IsSingleProject == 1;
dictionaryService.Handler(hospital.ID, allot, "", isSingle);
var data = queryService.Handler(hospital.ID, allot, "", isSingle, ref dict, ref scripts);
}
......@@ -125,7 +125,7 @@ public void ExportFile()
var dict = new Dictionary<ExDataDict, object>();
var isSingle = hospital.IsSingleProject == 1;
var isSingle = true;// hospital.IsSingleProject == 1;
var prevAllot = allots?.Where(t => t.HospitalId == hospital.ID && new int[] { 6, 8 }.Contains(t.States)).OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
string filePath = prevAllot?.Path ?? "";
string extractFilePath = extractService.Main(allot.ID, allot.HospitalId, "", "User" + userId, filePath, isSingle);
......
......@@ -58,6 +58,7 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
if (data is List<ExtractTransDto> extractDto && extractDto.Any())
{
var columns = headers.Select(t => t.ColumnName).ToList();
WriteDataHelper.ClearSheetFormula(sheet, point, sheetType, style, columns, extractDto);
WriteDataHelper.WriteSheetData(sheet, point, sheetType, style, columns, extractDto);
}
}
......
......@@ -56,6 +56,7 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
if (data is List<ExtractTransDto> extractDto && extractDto.Any())
{
var columns = headers.Select(t => t.ColumnName).Intersect(extractDto.Select(t => t.Category))?.ToList();
WriteDataHelper.ClearSheetFormula(sheet, point, sheetType, style, columns, extractDto);
WriteDataHelper.WriteSheetData(sheet, point, sheetType, style, columns, extractDto);
}
}
......
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