Import chip virgens tables side by side
This commit is contained in:
parent
b07b1d2cd7
commit
f14059dd2c
|
|
@ -1360,45 +1360,60 @@ namespace line_gestao_api.Controllers
|
|||
for (int i = 0; i < headers.Count; i++)
|
||||
{
|
||||
var headerRow = headers[i];
|
||||
var map = BuildHeaderMap(headerRow);
|
||||
int colItem = GetCol(map, "ITEM");
|
||||
if (colItem == 0) continue;
|
||||
var itemColumns = headerRow.CellsUsed()
|
||||
.Where(c => NormalizeHeader(c.GetString()) == "ITEM")
|
||||
.Select(c => c.Address.ColumnNumber)
|
||||
.OrderBy(c => c)
|
||||
.ToList();
|
||||
if (itemColumns.Count == 0) continue;
|
||||
|
||||
var startRow = headerRow.RowNumber() + 1;
|
||||
var endRow = i + 1 < headers.Count ? headers[i + 1].RowNumber() - 1 : lastRow;
|
||||
|
||||
for (int r = startRow; r <= endRow; r++)
|
||||
for (int tableIndex = 0; tableIndex < itemColumns.Count; tableIndex++)
|
||||
{
|
||||
var itemStr = GetCellString(ws, r, colItem);
|
||||
if (string.IsNullOrWhiteSpace(itemStr)) continue;
|
||||
var startCol = itemColumns[tableIndex];
|
||||
var endCol = tableIndex + 1 < itemColumns.Count
|
||||
? itemColumns[tableIndex + 1] - 1
|
||||
: headerRow.LastCellUsed()?.Address.ColumnNumber ?? startCol;
|
||||
|
||||
var numeroChip = NullIfEmptyDigits(GetCellByHeaderAny(ws, r, map,
|
||||
"Nº DO CHIP", "N° DO CHIP", "NUMERO DO CHIP", "N DO CHIP", "NUM. DO CHIP", "N° DO CHIP"));
|
||||
var observacoes = GetCellByHeaderAny(ws, r, map, "OBSERVAÇÕES", "OBSERVACOES", "OBS");
|
||||
if (string.IsNullOrWhiteSpace(numeroChip) && string.IsNullOrWhiteSpace(observacoes))
|
||||
var map = BuildHeaderMapRange(headerRow, startCol, endCol);
|
||||
int colItem = GetCol(map, "ITEM");
|
||||
if (colItem == 0) continue;
|
||||
|
||||
for (int r = startRow; r <= endRow; r++)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var itemStr = GetCellString(ws, r, colItem);
|
||||
if (string.IsNullOrWhiteSpace(itemStr)) continue;
|
||||
|
||||
var now = DateTime.UtcNow;
|
||||
var numeroChip = NullIfEmptyDigits(GetCellByHeaderAny(ws, r, map,
|
||||
"Nº DO CHIP", "N° DO CHIP", "NUMERO DO CHIP", "N DO CHIP", "NUM. DO CHIP"));
|
||||
var observacoes = GetCellByHeaderAny(ws, r, map, "OBSERVAÇÕES", "OBSERVACOES", "OBS");
|
||||
if (string.IsNullOrWhiteSpace(numeroChip) && string.IsNullOrWhiteSpace(observacoes))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var e = new ChipVirgemLine
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Item = TryInt(itemStr),
|
||||
NumeroDoChip = numeroChip,
|
||||
Observacoes = string.IsNullOrWhiteSpace(observacoes) ? null : observacoes.Trim(),
|
||||
CreatedAt = now,
|
||||
UpdatedAt = now
|
||||
};
|
||||
var now = DateTime.UtcNow;
|
||||
|
||||
buffer.Add(e);
|
||||
var e = new ChipVirgemLine
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Item = TryInt(itemStr),
|
||||
NumeroDoChip = numeroChip,
|
||||
Observacoes = string.IsNullOrWhiteSpace(observacoes) ? null : observacoes.Trim(),
|
||||
CreatedAt = now,
|
||||
UpdatedAt = now
|
||||
};
|
||||
|
||||
if (buffer.Count >= 500)
|
||||
{
|
||||
await _db.ChipVirgemLines.AddRangeAsync(buffer);
|
||||
await _db.SaveChangesAsync();
|
||||
buffer.Clear();
|
||||
buffer.Add(e);
|
||||
|
||||
if (buffer.Count >= 500)
|
||||
{
|
||||
await _db.ChipVirgemLines.AddRangeAsync(buffer);
|
||||
await _db.SaveChangesAsync();
|
||||
buffer.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1632,6 +1647,21 @@ namespace line_gestao_api.Controllers
|
|||
return map;
|
||||
}
|
||||
|
||||
private static Dictionary<string, int> BuildHeaderMapRange(IXLRow headerRow, int startCol, int endCol)
|
||||
{
|
||||
var map = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
||||
foreach (var cell in headerRow.CellsUsed())
|
||||
{
|
||||
var col = cell.Address.ColumnNumber;
|
||||
if (col < startCol || col > endCol) continue;
|
||||
|
||||
var k = NormalizeHeader(cell.GetString());
|
||||
if (!string.IsNullOrWhiteSpace(k) && !map.ContainsKey(k))
|
||||
map[k] = col;
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
private static DateTime? ToUtc(DateTime? dt)
|
||||
{
|
||||
if (dt == null) return null;
|
||||
|
|
|
|||
Loading…
Reference in New Issue