Commit eecae4aa by lcx

no message

parent 3fdd62b3
...@@ -417,7 +417,7 @@ public string TemplateExecute(string email, sys_hospital hospital, List<sys_hosp ...@@ -417,7 +417,7 @@ public string TemplateExecute(string email, sys_hospital hospital, List<sys_hosp
// WriteAccountBasic(sheet, sheetRead); // WriteAccountBasic(sheet, sheetRead);
// break; // break;
case SheetType.SpecialUnit: case SheetType.SpecialUnit:
WriteSpecialUnit(sheet, sheetRead, specials, data); WriteSpecialUnit(sheet, sheetRead, specials, data, sheetRead.Point.DataFirstRowNum.Value);
break; break;
} }
logManage.ReturnTheLog(Allot.ID, GroupName, 2, "写入数据", $"sheet“{sheet.SheetName}”已完成数据写入"); logManage.ReturnTheLog(Allot.ID, GroupName, 2, "写入数据", $"sheet“{sheet.SheetName}”已完成数据写入");
...@@ -493,28 +493,28 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit ...@@ -493,28 +493,28 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit
//case SheetType.ClinicEmployee: //case SheetType.ClinicEmployee:
// WriteClinicEmployee(sheet, sheetRead, false); // WriteClinicEmployee(sheet, sheetRead, false);
// break; // break;
case SheetType.OtherIncome: //case SheetType.OtherIncome:
ClearData(sheet, 5, 7); // ClearData(sheet, 5, 7);
WriteOtherIncome(sheet, sheetRead, modules, items, extracts, false); // WriteOtherIncome(sheet, sheetRead, modules, items, extracts, false);
break; // break;
case SheetType.Income: //case SheetType.Income:
ClearData(sheet, 5, 3, true); // ClearData(sheet, 5, 3, true);
WriteIncome(sheet, sheetRead, modules, items, extracts, false); // WriteIncome(sheet, sheetRead, modules, items, extracts, false);
break; // break;
case SheetType.Expend: //case SheetType.Expend:
ClearData(sheet, 5, 7); // ClearData(sheet, 5, 7);
WriteExpend(sheet, sheetRead, modules, items, extracts, false); // WriteExpend(sheet, sheetRead, modules, items, extracts, false);
break; // break;
case SheetType.Workload: //case SheetType.Workload:
ClearData(sheet, 3, 3); // ClearData(sheet, 3, 3);
WriteWorkload(sheet, sheetRead, modules, items, extracts, false); // WriteWorkload(sheet, sheetRead, modules, items, extracts, false);
break; // break;
//case SheetType.AccountBasic: //case SheetType.AccountBasic:
// WriteAccountBasic(sheet, sheetRead, false); // WriteAccountBasic(sheet, sheetRead, false);
// break; // break;
case SheetType.SpecialUnit: case SheetType.SpecialUnit:
ClearData(sheet, 2, 0); //ClearData(sheet, 2, 0);
WriteSpecialUnit(sheet, sheetRead, specials, extracts, lastAllot, false); SupplySpecialUnit(sheet, sheetRead, specials, extracts, lastAllot, false);
break; break;
} }
logManage.ReturnTheLog(Allot.ID, GroupName, 2, "写入数据", $"sheet“{sheet.SheetName}”已完成数据写入"); logManage.ReturnTheLog(Allot.ID, GroupName, 2, "写入数据", $"sheet“{sheet.SheetName}”已完成数据写入");
...@@ -1250,7 +1250,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_mo ...@@ -1250,7 +1250,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_mo
logger.LogInformation($"{sheet.SheetName}写入结束."); logger.LogInformation($"{sheet.SheetName}写入结束.");
} }
private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_special> specials, List<NewExtractDto> data, per_allot lastAllot = null, bool IsWriteHead = true) private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_special> specials, List<NewExtractDto> data, int beginRowIndex, per_allot lastAllot = null, bool IsWriteHead = true)
{ {
logger.LogInformation($"{sheet.SheetName}开始执行写入."); logger.LogInformation($"{sheet.SheetName}开始执行写入.");
var dictionary = new Dictionary<string, Func<ex_special, List<im_specialunit>, object>> var dictionary = new Dictionary<string, Func<ex_special, List<im_specialunit>, object>>
...@@ -1270,11 +1270,11 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex ...@@ -1270,11 +1270,11 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
if (lastAllot != null) if (lastAllot != null)
allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID); allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID);
//取消合并单元格 ////取消合并单元格
foreach (var merge in sheet.MergedRegions) //foreach (var merge in sheet.MergedRegions)
{ //{
sheet.RemoveMergedRegion(sheet.MergedRegions.IndexOf(merge)); // sheet.RemoveMergedRegion(sheet.MergedRegions.IndexOf(merge));
} //}
var modDataGroup = speaialList.GroupBy(t => new { t.Department }).Select(group => new var modDataGroup = speaialList.GroupBy(t => new { t.Department }).Select(group => new
{ {
...@@ -1282,8 +1282,8 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex ...@@ -1282,8 +1282,8 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
Count = group.Count() Count = group.Count()
})?.OrderBy(t => t.Department); })?.OrderBy(t => t.Department);
int mergedBegin = sheetRead.Point.DataFirstRowNum.Value; int mergedBegin = beginRowIndex;
int mergedEnd = sheetRead.Point.DataFirstRowNum.Value; int mergedEnd = beginRowIndex;
var extractdata = data.Where(t => t.SheetName == specialname).ToList(); var extractdata = data.Where(t => t.SheetName == specialname).ToList();
logger.LogInformation($"data有{extractdata?.Count ?? 0}个."); logger.LogInformation($"data有{extractdata?.Count ?? 0}个.");
...@@ -1294,7 +1294,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex ...@@ -1294,7 +1294,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
var headIndex = sheetRead.Point.HeaderFirstRowNum; var headIndex = sheetRead.Point.HeaderFirstRowNum;
var cellList = sheet.GetRow(headIndex.Value).Cells; var cellList = sheet.GetRow(headIndex.Value).Cells;
var rowIndex = sheetRead.Point.DataFirstRowNum.Value + i; var rowIndex = beginRowIndex + i;
var importRow = sheet.CreateRow(rowIndex); var importRow = sheet.CreateRow(rowIndex);
int cellIndex = 0; int cellIndex = 0;
...@@ -1339,90 +1339,124 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex ...@@ -1339,90 +1339,124 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_special> specials, List<NewExtractDto> data, per_allot lastAllot = null, bool IsWriteHead = true) private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_special> specials, List<NewExtractDto> data, per_allot lastAllot = null, bool IsWriteHead = true)
{ {
logger.LogInformation($"{sheet.SheetName}开始执行写入."); try
var speaialList = specials?.OrderBy(t => t.Department).ToList(); {
logger.LogInformation($"item有{speaialList?.Count ?? 0}个."); logger.LogInformation($"{sheet.SheetName}开始执行写入.");
if (speaialList == null || !speaialList.Any()) return;
var headIndex = sheetRead.Point.HeaderFirstRowNum;
var cellList = sheet.GetRow(headIndex.Value).Cells;
var headerDict = new Dictionary<string, int>();
cellList.ForEach(t => var dictionary = new Dictionary<string, Func<ex_special, List<im_specialunit>, object>>
{ {
t.SetCellType(CellType.String); { "科室", (special,lastallot) => special.Department },
if (!headerDict.ContainsKey(t.StringCellValue)) { "人数", (special,lastallot) => lastallot.Where(t=>special.Department == t.Department).Max(t=>t.Number) },
headerDict.Add(t.StringCellValue, cellList.IndexOf(t)); { "量化指标", (special,lastallot) => special.Target},
}); { "量化指标绩效分值",(special,lastallot) => special.TargetFactor },
{ "调节系数", (special,lastallot) => special.AdjustFactor },
};
if (!headerDict.ContainsKey("科室") || !headerDict.ContainsKey("量化指标")) return; List<im_specialunit> allotDataList = new List<im_specialunit>();
if (lastAllot != null)
allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID);
var merges = mergefunc.Invoke(sheet, sheetRead.Point.DataFirstRowNum); var speaialList = specials?.OrderBy(t => t.Department).ToList();
if (merges == null || !merges.Any()) return; logger.LogInformation($"item有{speaialList?.Count ?? 0}个.");
merges = merges.OrderBy(t => t.FirstRow).ToList(); if (speaialList == null || !speaialList.Any()) return;
int startRowIndex = sheetRead.Point.DataFirstRowNum ?? 2; var headIndex = sheetRead.Point.HeaderFirstRowNum;
foreach (var merge in merges) var cellList = sheet.GetRow(headIndex.Value).Cells;
{ var headerDict = new Dictionary<string, int>();
var deptSpecials = speaialList.Where(t => t.Department == merge.Value)?.ToList();
if (deptSpecials == null) continue;
for (int i = merge.FirstRow; i < merge.LastRow + 1; i++) cellList.ForEach(t =>
{ {
var row = GetOrCreate(sheet, i); t.SetCellType(CellType.String);
string target = NopiSevice.GetValue(GetOrCreate(row, headerDict["量化指标"])); if (!headerDict.ContainsKey(t.StringCellValue))
headerDict.Add(t.StringCellValue, cellList.IndexOf(t));
});
var config = deptSpecials.FirstOrDefault(t => t.Target == target); if (!headerDict.ContainsKey("科室") || !headerDict.ContainsKey("量化指标")) return;
if (config != null)
{ var extractdata = data.Where(t => t.SheetName == specialname).ToList();
deptSpecials.RemoveAll(t => t.Department == merge.Value && t.Target == target);
continue; var merges = mergefunc.Invoke(sheet, sheetRead.Point.DataFirstRowNum);
} if (merges == null || !merges.Any()) return;
} merges = merges.OrderBy(t => t.FirstRow).ToList();
if (deptSpecials != null && deptSpecials.Any()) var allmerge = sheet.MergedRegions;
int startRowIndex = sheetRead.Point.DataFirstRowNum ?? 2;
foreach (var merge in merges)
{ {
sheet.ShiftRows(merge.LastRow + 1, sheet.LastRowNum, 1, true, false); var deptSpecials = speaialList.Where(t => t.Department == merge.Value)?.ToList();
var shiftrow = sheet.CreateRow(merge.LastRow + 1); if (deptSpecials == null) continue;
var thanmerges = merges.Where(t => t.FirstRow > merge.LastRow)?.ToList(); for (int i = merge.FirstRow; i < merge.LastRow + 1; i++)
if (thanmerges != null && thanmerges.Any())
{ {
thanmerges.ForEach(t => var row = GetOrCreate(sheet, i);
string target = NopiSevice.GetValue(GetOrCreate(row, headerDict["量化指标"]));
var config = deptSpecials.FirstOrDefault(t => t.Target == target);
if (config != null)
{ {
t.FirstRow += 1; deptSpecials.RemoveAll(t => t.Department == merge.Value && t.Target == target);
t.LastRow += 1; continue;
}); }
}
if (deptSpecials != null && deptSpecials.Any())
{
foreach (var spec in deptSpecials)
{
sheet.ShiftRows(merge.LastRow + 1, sheet.LastRowNum, 1, true, false);
var shiftrow = sheet.CreateRow(merge.LastRow + 1);
WriteSpecialCellValue(dictionary, shiftrow, cellList, spec, allotDataList, extractdata);
var thanmerges = merges.Where(t => t.FirstRow > merge.LastRow)?.ToList();
if (thanmerges != null && thanmerges.Any())
{
thanmerges.ForEach(t =>
{
t.FirstRow += 1;
t.LastRow += 1;
});
}
merge.LastRow += 1;
}
} }
merge.LastRow += 1; speaialList.RemoveAll(t => t.Department == merge.Value);
} }
speaialList.RemoveAll(t => t.Department == merge.Value);
}
if (speaialList != null && speaialList.Any()) if (speaialList != null && speaialList.Any())
{
var index = sheet.LastRowNum + 1;
foreach (var item in speaialList)
{ {
var newrow = sheet.CreateRow(index); var index = sheet.LastRowNum + 1;
newrow.CreateCell(0).SetCellValue(""); foreach (var item in speaialList)
index++; {
var newrow = sheet.CreateRow(index);
newrow.CreateCell(0).SetCellValue("");
index++;
}
} }
}
//取消合并单元格 //取消合并单元格
foreach (var merge in sheet.MergedRegions) foreach (var merge in allmerge)
{ {
sheet.RemoveMergedRegion(sheet.MergedRegions.IndexOf(merge)); if (merge.LastRow > merge.FirstRow)
} sheet.RemoveMergedRegion(allmerge.IndexOf(merge));
}
foreach (var merge in merges) foreach (var merge in merges.Where(t => t.FirstColumn == 0))
{
if (merge.LastRow > merge.FirstRow || merge.LastColumn > merge.FirstColumn)
{ {
CellRangeAddress region = new CellRangeAddress(merge.FirstRow, merge.LastRow, merge.FirstColumn, merge.LastColumn); if (merge.LastRow > merge.FirstRow)
sheet.AddMergedRegion(region); {
CellRangeAddress region = new CellRangeAddress(merge.FirstRow, merge.LastRow, headerDict["科室"], headerDict["科室"]);
sheet.AddMergedRegion(region);
sheet.AddMergedRegion(new CellRangeAddress(merge.FirstRow, merge.LastRow, headerDict["人数"], headerDict["人数"]));
}
} }
WriteSpecialUnit(sheet, sheetRead, speaialList, data, sheet.LastRowNum + 1, lastAllot, false);
}
catch (Exception ex)
{
logger.LogError("补充特殊科室数据发生异常" + ex.ToString());
} }
} }
...@@ -1443,7 +1477,6 @@ private void WriteSpecialCellValue(Dictionary<string, Func<ex_special, List<im_s ...@@ -1443,7 +1477,6 @@ private void WriteSpecialCellValue(Dictionary<string, Func<ex_special, List<im_s
} }
var newCell = row.CreateCell(cellList.IndexOf(cell)); var newCell = row.CreateCell(cellList.IndexOf(cell));
//newCell.SetCellValue(Verify(value));
OutToExcelCell(newCell, value); OutToExcelCell(newCell, value);
if (dictionary.ContainsKey(cell.StringCellValue) || (cell.StringCellValue == "数量" && !string.IsNullOrEmpty(value?.ToString()))) if (dictionary.ContainsKey(cell.StringCellValue) || (cell.StringCellValue == "数量" && !string.IsNullOrEmpty(value?.ToString())))
newCell.CellStyle = style; newCell.CellStyle = style;
......
...@@ -83,7 +83,7 @@ public void ReturnTheLog(int allotId, string groupName, int type, string tag, ob ...@@ -83,7 +83,7 @@ public void ReturnTheLog(int allotId, string groupName, int type, string tag, ob
var http = url.ImportFile + $"/template/returnlog?type={type}&tag={tag}&message={message}&level={level}&groupName={groupName}"; var http = url.ImportFile + $"/template/returnlog?type={type}&tag={tag}&message={message}&level={level}&groupName={groupName}";
//logger.LogInformation("发送日志:" + http); //logger.LogInformation("发送日志:" + http);
logdbug.Add(allotId, tag, message.ToString(), level, type); logdbug.Add(allotId, tag, message.ToString(), level, type);
HttpHelper.HttpPost(http); //HttpHelper.HttpPost(http);
} }
catch (Exception ex) catch (Exception ex)
{ {
......
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