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

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