Import multiple chip virgens tables
This commit is contained in:
parent
c9d8bdfda6
commit
cd1066f203
|
|
@ -1346,48 +1346,56 @@ namespace line_gestao_api.Controllers
|
||||||
|
|
||||||
if (ws == null) return;
|
if (ws == null) return;
|
||||||
|
|
||||||
var headerRow = ws.RowsUsed().FirstOrDefault(r => r.CellsUsed().Any(c => NormalizeHeader(c.GetString()) == "ITEM"));
|
var headers = ws.RowsUsed()
|
||||||
if (headerRow == null) return;
|
.Where(IsChipsVirgensHeader)
|
||||||
|
.OrderBy(r => r.RowNumber())
|
||||||
var map = BuildHeaderMap(headerRow);
|
.ToList();
|
||||||
int colItem = GetCol(map, "ITEM");
|
if (headers.Count == 0) return;
|
||||||
if (colItem == 0) return;
|
|
||||||
|
|
||||||
var startRow = headerRow.RowNumber() + 1;
|
|
||||||
var lastRow = ws.LastRowUsed()?.RowNumber() ?? startRow;
|
|
||||||
|
|
||||||
await _db.ChipVirgemLines.ExecuteDeleteAsync();
|
await _db.ChipVirgemLines.ExecuteDeleteAsync();
|
||||||
|
|
||||||
var buffer = new List<ChipVirgemLine>(500);
|
var buffer = new List<ChipVirgemLine>(500);
|
||||||
|
var lastRow = ws.LastRowUsed()?.RowNumber() ?? 1;
|
||||||
|
|
||||||
for (int r = startRow; r <= lastRow; r++)
|
for (int i = 0; i < headers.Count; i++)
|
||||||
{
|
{
|
||||||
var itemStr = GetCellString(ws, r, colItem);
|
var headerRow = headers[i];
|
||||||
if (string.IsNullOrWhiteSpace(itemStr)) break;
|
var map = BuildHeaderMap(headerRow);
|
||||||
|
int colItem = GetCol(map, "ITEM");
|
||||||
|
if (colItem == 0) continue;
|
||||||
|
|
||||||
var numeroChip = NullIfEmptyDigits(GetCellByHeaderAny(ws, r, map,
|
var startRow = headerRow.RowNumber() + 1;
|
||||||
"Nº DO CHIP", "N° DO CHIP", "NUMERO DO CHIP", "N DO CHIP", "NUM. DO CHIP"));
|
var endRow = i + 1 < headers.Count ? headers[i + 1].RowNumber() - 1 : lastRow;
|
||||||
var observacoes = GetCellByHeaderAny(ws, r, map, "OBSERVAÇÕES", "OBSERVACOES", "OBS");
|
|
||||||
|
|
||||||
var now = DateTime.UtcNow;
|
for (int r = startRow; r <= endRow; r++)
|
||||||
|
|
||||||
var e = new ChipVirgemLine
|
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid(),
|
var itemStr = GetCellString(ws, r, colItem);
|
||||||
Item = TryInt(itemStr),
|
if (string.IsNullOrWhiteSpace(itemStr)) continue;
|
||||||
NumeroDoChip = numeroChip,
|
|
||||||
Observacoes = string.IsNullOrWhiteSpace(observacoes) ? null : observacoes.Trim(),
|
|
||||||
CreatedAt = now,
|
|
||||||
UpdatedAt = now
|
|
||||||
};
|
|
||||||
|
|
||||||
buffer.Add(e);
|
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 (buffer.Count >= 500)
|
var now = DateTime.UtcNow;
|
||||||
{
|
|
||||||
await _db.ChipVirgemLines.AddRangeAsync(buffer);
|
var e = new ChipVirgemLine
|
||||||
await _db.SaveChangesAsync();
|
{
|
||||||
buffer.Clear();
|
Id = Guid.NewGuid(),
|
||||||
|
Item = TryInt(itemStr),
|
||||||
|
NumeroDoChip = numeroChip,
|
||||||
|
Observacoes = string.IsNullOrWhiteSpace(observacoes) ? null : observacoes.Trim(),
|
||||||
|
CreatedAt = now,
|
||||||
|
UpdatedAt = now
|
||||||
|
};
|
||||||
|
|
||||||
|
buffer.Add(e);
|
||||||
|
|
||||||
|
if (buffer.Count >= 500)
|
||||||
|
{
|
||||||
|
await _db.ChipVirgemLines.AddRangeAsync(buffer);
|
||||||
|
await _db.SaveChangesAsync();
|
||||||
|
buffer.Clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1590,6 +1598,24 @@ namespace line_gestao_api.Controllers
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsChipsVirgensHeader(IXLRow row)
|
||||||
|
{
|
||||||
|
var hasItem = false;
|
||||||
|
var hasNumeroChip = false;
|
||||||
|
|
||||||
|
foreach (var cell in row.CellsUsed())
|
||||||
|
{
|
||||||
|
var k = NormalizeHeader(cell.GetString());
|
||||||
|
if (k == "ITEM") hasItem = true;
|
||||||
|
if (k == "NODOCHIP" || k == "NUMERODOCHIP" || k == "NDOCHIP" || k == "NUMDOCHIP")
|
||||||
|
{
|
||||||
|
hasNumeroChip = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return hasItem && hasNumeroChip;
|
||||||
|
}
|
||||||
|
|
||||||
// ==========================================================
|
// ==========================================================
|
||||||
// HELPERS (SEUS)
|
// HELPERS (SEUS)
|
||||||
// ==========================================================
|
// ==========================================================
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue