Commit 0221b62a by lcx

抽取bug-新增科室起始行读取错误

parent c914323c
......@@ -250,7 +250,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest
if (isSingle)
{
extractEService.Main(allot.ID, allot.HospitalId, email, "User" + claim.GetUserId(), filePath, true);
string extractFilePath = extractEService.Main(allot.ID, allot.HospitalId, email, "User" + claim.GetUserId(), filePath, true);
}
else
{
......
......@@ -125,7 +125,7 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
var cell = row.GetOrCreate(cellIndex);
var value = deptData.FirstOrDefault(t => t.Category == column)?.Value;
var notWrite = !value.HasValue && !string.IsNullOrEmpty(cell.GetDecodeEscapes());
var notWrite = !value.HasValue && !string.IsNullOrEmpty(cell.ToString());
if (sheetType == SheetType.Income)
{
......@@ -161,6 +161,7 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
var deptStyle = style.GetCellStyle();
var cellStyle = style.SetBgkColorAndFormat(style.GetCellStyle(), StyleType.数据);
dataFirstRowNum += 1;
foreach (string department in departments)
{
var deptData = data.Where(t => t.Department == department);
......@@ -306,6 +307,7 @@ public static void WriteCollectData(ISheet sheet, PerSheetPoint point, SheetType
var deptStyle = style.GetCellStyle();
var cellStyle = style.SetBgkColorAndFormat(style.GetCellStyle(), StyleType.数据);
dataFirstRowNum += 1;
foreach (string department in departments)
{
var deptData = data.Where(t => t.Department == department);
......
......@@ -59,6 +59,7 @@ PerforPeremployeeRepository peremployeeRepository
public string Main(int allotId, int hospitalId, string email, string groupName, string filePath = null, bool isSingle = false)
{
string extractFilePath = "";
per_allot allot = null;
IWorkbook workbook = null;
try
{
......@@ -69,7 +70,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
var allots = perallotRepository.GetEntities(t => t.HospitalId == hospitalId);
if (allots == null || !allots.Any(t => t.ID == allotId)) throw new Exception("绩效不存在");
var allot = allots.First(t => t.ID == allotId);
allot = allots.First(t => t.ID == allotId);
var dict = new Dictionary<ExDataDict, object>();
logService.ReturnTheLog(allotId, groupName, 3, "", 5, 1, isSingle);
......@@ -88,9 +89,13 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
WriteDataToFile(workbook, allotId, dict, standData, groupName, isSingle);
logService.ReturnTheLog(allotId, groupName, 2, "提取完成", $"绩效数据提取成功", 5, isSingle);
allot.IsExtracting = isSingle ? 2 : 0;
allot.ExtractPath = extractFilePath;
}
catch (Exception ex)
{
allot.IsExtracting = 3;
logService.ReturnTheLog(allotId, groupName, 2, "提取完成", $"绩效数据提取失败", 4, isSingle);
logger.LogError("提取数据中发生异常: " + ex.ToString());
}
......@@ -102,10 +107,20 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
workbook.Write(file);
}
workbook.Close();
perallotRepository.Update(allot);
}
return extractFilePath;
}
/// <summary>
/// 数据写入
/// </summary>
/// <param name="workbook"></param>
/// <param name="allotId"></param>
/// <param name="exdict"></param>
/// <param name="extractDto"></param>
/// <param name="groupName"></param>
/// <param name="isSingle"></param>
private void WriteDataToFile(IWorkbook workbook, int allotId, Dictionary<ExDataDict, object> exdict, List<ExtractTransDto> extractDto, string groupName, bool isSingle)
{
ExcelStyle style = new ExcelStyle(workbook);
......@@ -145,6 +160,10 @@ private void WriteDataToFile(IWorkbook workbook, int allotId, Dictionary<ExDataD
customer.WriteCollectData(sheet, point, sheetType, style, collects);
var exdata = extractDto.Where(t => t.SheetName.NoBlank() == sheetName)?.ToList();
if (exdata != null)
{
logger.LogInformation($"{sheetName}: 总金额 - {exdata.Sum(s => s.Value ?? 0)}; 科室 - {string.Join(",", exdata.Select(s => s.Department).Distinct())}");
}
var data = GetDataBySheetType(sheetType, exdata, employeeDict);
customer.WriteSheetData(sheet, point, sheetType, style, data, exdict);
}
......
......@@ -238,9 +238,10 @@ private List<ex_result> ExtractItemData(per_allot allot, string groupName, bool
{
var data = new List<ex_result>();
if (dictValue is List<ex_item> items && items != null && items.Any(t => t.TypeId.HasValue && t.TypeId > 0))
var incomeModuleIds = modules.Where(w => w.SheetType == (int)SheetType.Income)?.Select(s => s.Id).ToList() ?? new List<int>();
if (dictValue is List<ex_item> items && items != null && items.Any(t => t.TypeId.HasValue && t.TypeId > 0 && !incomeModuleIds.Contains(t.ModuleId ?? 0)))
{
var typeIds = items.Where(t => t.TypeId.HasValue && t.TypeId > 0)?.Select(t => t.TypeId.Value).Distinct().ToList();
var typeIds = items.Where(t => t.TypeId.HasValue && t.TypeId > 0 && !incomeModuleIds.Contains(t.ModuleId ?? 0))?.Select(t => t.TypeId.Value).Distinct().ToList();
if (typeIds == null || typeIds.Count == 0) return data;
decimal ratio = 20m;
......
......@@ -86,18 +86,18 @@ public void ReturnTheLog(int allotId, string groupName, int type, string tag, ob
string content = ""; decimal ratio = 0;
if (type == 2)
{
content = message.ToString();
logger.LogInformation(content);
if (isSingle) hubContext.Clients.Group(groupName).SendAsync("ExtractLog", tag, content, level);
}
else if (type == 3)
{
ratio = Math.Round(Convert.ToDecimal(message), 2, MidpointRounding.AwayFromZero);
if (level != 5 && ratio > 100) ratio = 99;
if (level == 5 && ratio != 100) ratio = 100;
content = ratio.ToString();
if (isSingle) hubContext.Clients.Group(groupName).SendAsync("Schedule", ratio, level);
}
else if (type == 3)
{
content = message.ToString();
logger.LogInformation(content);
if (isSingle) hubContext.Clients.Group(groupName).SendAsync("ExtractLog", tag, content, level);
}
logdbug.Add(allotId, tag, content, level, type);
if (!isSingle)
......
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