Commit cdfb53be by lcx

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

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