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,7 +1339,23 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex ...@@ -1339,7 +1339,23 @@ 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)
{ {
try
{
logger.LogInformation($"{sheet.SheetName}开始执行写入."); logger.LogInformation($"{sheet.SheetName}开始执行写入.");
var dictionary = new Dictionary<string, Func<ex_special, List<im_specialunit>, object>>
{
{ "科室", (special,lastallot) => special.Department },
{ "人数", (special,lastallot) => lastallot.Where(t=>special.Department == t.Department).Max(t=>t.Number) },
{ "量化指标", (special,lastallot) => special.Target},
{ "量化指标绩效分值",(special,lastallot) => special.TargetFactor },
{ "调节系数", (special,lastallot) => special.AdjustFactor },
};
List<im_specialunit> allotDataList = new List<im_specialunit>();
if (lastAllot != null)
allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID);
var speaialList = specials?.OrderBy(t => t.Department).ToList(); var speaialList = specials?.OrderBy(t => t.Department).ToList();
logger.LogInformation($"item有{speaialList?.Count ?? 0}个."); logger.LogInformation($"item有{speaialList?.Count ?? 0}个.");
if (speaialList == null || !speaialList.Any()) return; if (speaialList == null || !speaialList.Any()) return;
...@@ -1357,10 +1373,14 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e ...@@ -1357,10 +1373,14 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e
if (!headerDict.ContainsKey("科室") || !headerDict.ContainsKey("量化指标")) return; if (!headerDict.ContainsKey("科室") || !headerDict.ContainsKey("量化指标")) return;
var extractdata = data.Where(t => t.SheetName == specialname).ToList();
var merges = mergefunc.Invoke(sheet, sheetRead.Point.DataFirstRowNum); var merges = mergefunc.Invoke(sheet, sheetRead.Point.DataFirstRowNum);
if (merges == null || !merges.Any()) return; if (merges == null || !merges.Any()) return;
merges = merges.OrderBy(t => t.FirstRow).ToList(); merges = merges.OrderBy(t => t.FirstRow).ToList();
var allmerge = sheet.MergedRegions;
int startRowIndex = sheetRead.Point.DataFirstRowNum ?? 2; int startRowIndex = sheetRead.Point.DataFirstRowNum ?? 2;
foreach (var merge in merges) foreach (var merge in merges)
{ {
...@@ -1382,9 +1402,13 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e ...@@ -1382,9 +1402,13 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e
if (deptSpecials != null && deptSpecials.Any()) if (deptSpecials != null && deptSpecials.Any())
{ {
foreach (var spec in deptSpecials)
{
sheet.ShiftRows(merge.LastRow + 1, sheet.LastRowNum, 1, true, false); sheet.ShiftRows(merge.LastRow + 1, sheet.LastRowNum, 1, true, false);
var shiftrow = sheet.CreateRow(merge.LastRow + 1); var shiftrow = sheet.CreateRow(merge.LastRow + 1);
WriteSpecialCellValue(dictionary, shiftrow, cellList, spec, allotDataList, extractdata);
var thanmerges = merges.Where(t => t.FirstRow > merge.LastRow)?.ToList(); var thanmerges = merges.Where(t => t.FirstRow > merge.LastRow)?.ToList();
if (thanmerges != null && thanmerges.Any()) if (thanmerges != null && thanmerges.Any())
{ {
...@@ -1396,6 +1420,7 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e ...@@ -1396,6 +1420,7 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e
} }
merge.LastRow += 1; merge.LastRow += 1;
} }
}
speaialList.RemoveAll(t => t.Department == merge.Value); speaialList.RemoveAll(t => t.Department == merge.Value);
} }
...@@ -1411,19 +1436,28 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e ...@@ -1411,19 +1436,28 @@ private void SupplySpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<e
} }
//取消合并单元格 //取消合并单元格
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) if (merge.LastRow > merge.FirstRow)
{ {
CellRangeAddress region = new CellRangeAddress(merge.FirstRow, merge.LastRow, merge.FirstColumn, merge.LastColumn); CellRangeAddress region = new CellRangeAddress(merge.FirstRow, merge.LastRow, headerDict["科室"], headerDict["科室"]);
sheet.AddMergedRegion(region); 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());
}
} }
private void WriteSpecialCellValue(Dictionary<string, Func<ex_special, List<im_specialunit>, object>> dictionary, IRow row, List<ICell> cellList, ex_special special, List<im_specialunit> allotDataList, List<NewExtractDto> extractdata) private void WriteSpecialCellValue(Dictionary<string, Func<ex_special, List<im_specialunit>, object>> dictionary, IRow row, List<ICell> cellList, ex_special special, List<im_specialunit> allotDataList, List<NewExtractDto> extractdata)
...@@ -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