Commit cdfb53be by lcx

修改抽取,保存基础数据500/次保存

parent 55456a86
using AutoMapper;
using Microsoft.Extensions.Logging;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
......@@ -30,6 +31,8 @@ public class ImportDataService : IAutoInjection
private PerforImemployeeclinicRepository perforImemployeeclinicRepository;
//private PerforLogdbugRepository logdbug;
private readonly LogManageService logManageService;
private ILogger<ImportDataService> logger;
public ImportDataService(PerSheetService perSheetService,
PerforPersheetRepository perforPerSheetRepository,
PerforPerallotRepository perforPerallotRepository,
......@@ -40,7 +43,8 @@ public class ImportDataService : IAutoInjection
PerforImspecialunitRepository perforImspecialunitRepository,
PerforImemployeeclinicRepository perforImemployeeclinicRepository,
//PerforLogdbugRepository logdbug
LogManageService logManageService)
LogManageService logManageService,
ILogger<ImportDataService> logger)
{
this.perSheetService = perSheetService;
this.perforPerSheetRepository = perforPerSheetRepository;
......@@ -53,6 +57,7 @@ public class ImportDataService : IAutoInjection
this.perforImemployeeclinicRepository = perforImemployeeclinicRepository;
//this.logdbug = logdbug;
this.logManageService = logManageService;
this.logger = logger;
}
/// <summary>
......@@ -308,6 +313,7 @@ private void SaveCommon(PerSheet sheet, int allotId)
}
}
}
if (addHeadList != null && addHeadList.Any())
perforImHeaderRepository.AddRange(addHeadList.ToArray());
List<im_data> addDataList = new List<im_data>();
......@@ -319,7 +325,15 @@ private void SaveCommon(PerSheet sheet, int allotId)
imdata.AllotID = allotId;
addDataList.Add(imdata);
}
perforImDataRepository.AddRange(addDataList.ToArray());
if (addDataList != null && addDataList.Any())
{
int rows = 500;
for (int i = 0; i < Math.Ceiling((double)addDataList.Count / rows); i++)
{
perforImDataRepository.AddRange(addDataList.Skip(rows * i).Take(rows).ToArray());
}
}
}
private bool Save(PerExcel excel, int allotId)
......
......@@ -637,9 +637,7 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account
var itemList = items.Where(t => t.ModuleId == module.Id).ToList();
logger.LogInformation($"item有{itemList?.Count ?? 0}个.");
if (itemList == null || !itemList.Any()) return;
WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp);
//if (itemList == null || !itemList.Any()) return;
var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
if (extractdata == null || !extractdata.Any())
......@@ -655,9 +653,17 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account
//logger.LogInformation($"{sheet.SheetName}合计值为: " + allExtract.Sum(t => t.Value));
var category = allExtract.Select(t => t.Category).Distinct().ToList();
var category = allExtract.Select(t => t.Category?.Trim()).Distinct().ToList();
var existHead = category.Except(itemList.Select(i => i.ItemName?.Trim()));
if (existHead != null && existHead.Any())
itemList.AddRange(existHead.Select(t => new ex_item
{
ItemName = t,
}));
WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp);
//WriteIncomeHeaderAndFactor(sheet, sheetRead, category, isNewTemp);
WriteSheetData(sheet, sheetRead, unitList, allExtract, category, isNewTemp, true);
WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp, true);
logger.LogInformation($"{sheet.SheetName}提取结束.");
}
......@@ -893,10 +899,10 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis
List<string> original = new List<string>();
#region 过滤历史模板中已有的列头
//写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4 + 3;
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
for (int i = cellStartIndex; i < head.LastCellNum; i++)
{
var cellvalue = head.GetCell(i)?.ToString();
var cellvalue = head.GetCell(i)?.ToString()?.Trim();
if (string.IsNullOrEmpty(cellvalue)) continue;
cellItems.RemoveAll(t => t.ItemName == cellvalue);
}
......@@ -1018,7 +1024,7 @@ private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<Acco
var row = sheet.GetRow(i);
if (row != null)
{
var department = row.GetCell(3)?.ToString(); // 科室名称
var department = row.GetCell(6)?.ToString(); // 科室名称
if (string.IsNullOrEmpty(department)) continue;
var deptData = allExtract.Where(t => t.Department == department);
......@@ -1175,7 +1181,7 @@ private void WriteWorkData(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
var row = sheet.GetRow(i);
if (row != null)
{
var department = row.GetCell(1)?.ToString(); // 科室名称
var department = row.GetCell(2)?.ToString(); // 科室名称
if (string.IsNullOrEmpty(department)) continue;
var deptData = allExtract.Where(t => t.Department == department);
......
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