Update
This commit is contained in:
@@ -297,20 +297,21 @@ async function procesarArchivo(archivo) {
|
|||||||
|
|
||||||
const datos = await obtenerDatosHoja(archivo.id);
|
const datos = await obtenerDatosHoja(archivo.id);
|
||||||
|
|
||||||
const filasAProcesar = datos.slice(1)
|
const todasLasFilas = datos.slice(1)
|
||||||
.map((row, index) => ({
|
.map((row, index) => ({
|
||||||
valor: row[0], // Columna A
|
valor: row[0], // Columna A
|
||||||
fila: index + 2, // Número de fila real
|
fila: index + 2, // Número de fila real
|
||||||
ultimaConsulta: row[1], // Columna B
|
ultimaConsulta: row[1], // Columna B
|
||||||
columnaC: row[2] // Columna C
|
columnaC: row[2] // Columna C
|
||||||
}))
|
}));
|
||||||
.filter(row => {
|
|
||||||
if (!row.columnaC) return true; // Si la columna C está vacía, procesar
|
|
||||||
|
|
||||||
// Si la columna C no está vacía, verificar la fecha de última consulta en la columna B
|
// Separate rows into three groups based on priority
|
||||||
if (!row.ultimaConsulta) return true; // Si no hay fecha en B, procesar (aunque C no esté vacía)
|
const filasVaciasC = todasLasFilas.filter(row => !row.columnaC);
|
||||||
|
|
||||||
|
const filasConFechaB = todasLasFilas.filter(row => {
|
||||||
|
if (!row.columnaC && !row.ultimaConsulta) return false; // Already handled by filasVaciasC or filasVaciasB
|
||||||
|
if (!row.ultimaConsulta) return false; // Handled by filasVaciasB
|
||||||
|
|
||||||
// Parsear la fecha en formato español DD/MM/YYYY
|
|
||||||
const [date, time] = row.ultimaConsulta.split(', ');
|
const [date, time] = row.ultimaConsulta.split(', ');
|
||||||
const [day, month, year] = date.split('/');
|
const [day, month, year] = date.split('/');
|
||||||
const [hours, minutes, seconds] = time.split(':');
|
const [hours, minutes, seconds] = time.split(':');
|
||||||
@@ -318,20 +319,40 @@ async function procesarArchivo(archivo) {
|
|||||||
const fechaUltimaConsulta = new Date(year, month - 1, day, hours, minutes, seconds);
|
const fechaUltimaConsulta = new Date(year, month - 1, day, hours, minutes, seconds);
|
||||||
const ahora = new Date();
|
const ahora = new Date();
|
||||||
|
|
||||||
// Calcular la diferencia en horas
|
|
||||||
const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
||||||
|
|
||||||
// Para fechas futuras, no procesar
|
if (fechaUltimaConsulta > ahora) return false; // For future dates, return false to skip processing
|
||||||
if (fechaUltimaConsulta > ahora) return false;
|
|
||||||
|
|
||||||
return diferenciaHoras > 1; // Procesar solo si ha pasado más de 1 hora
|
return diferenciaHoras > 1; // Process only if more than 1 hour has passed
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(filasAProcesar);
|
const filasVaciasB = todasLasFilas.filter(row => {
|
||||||
|
return !row.ultimaConsulta && row.columnaC; // Empty F, but G is not empty
|
||||||
|
});
|
||||||
|
|
||||||
console.log(`📊 Total de filas a procesar: ${filasAProcesar.length}`);
|
// Sort rows with date in B by oldest date first
|
||||||
|
filasConFechaB.sort((a, b) => {
|
||||||
|
const [dateA, timeA] = a.ultimaConsulta.split(', ');
|
||||||
|
const [dayA, monthA, yearA] = dateA.split('/');
|
||||||
|
const [hoursA, minutesA, secondsA] = timeA.split(':');
|
||||||
|
const fechaA = new Date(yearA, monthA - 1, dayA, hoursA, minutesA, secondsA);
|
||||||
|
|
||||||
if (filasAProcesar.length > 0) {
|
const [dateB, timeB] = b.ultimaConsulta.split(', ');
|
||||||
|
const [dayB, monthB, yearB] = dateB.split('/');
|
||||||
|
const [hoursB, minutesB, secondsB] = timeB.split(':');
|
||||||
|
const fechaB = new Date(yearB, monthB - 1, dayB, hoursB, minutesB, secondsB);
|
||||||
|
|
||||||
|
return fechaA - fechaB; // Ascending order (oldest first)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Combine the arrays in the specified priority order
|
||||||
|
const filasOrdenadas = [...filasVaciasC, ...filasConFechaB, ...filasVaciasB];
|
||||||
|
|
||||||
|
console.log(filasOrdenadas);
|
||||||
|
|
||||||
|
console.log(`📊 Total de filas a procesar: ${filasOrdenadas.length}`);
|
||||||
|
|
||||||
|
if (filasOrdenadas.length > 0) {
|
||||||
console.log('🌐 Iniciando navegador...');
|
console.log('🌐 Iniciando navegador...');
|
||||||
let browser = await initBrowser(platform);
|
let browser = await initBrowser(platform);
|
||||||
let page = (await browser.pages())[0];
|
let page = (await browser.pages())[0];
|
||||||
@@ -339,9 +360,9 @@ async function procesarArchivo(archivo) {
|
|||||||
const MAX_FALLOS_CONSECUTIVOS = 3;
|
const MAX_FALLOS_CONSECUTIVOS = 3;
|
||||||
|
|
||||||
let procesadas = 0;
|
let procesadas = 0;
|
||||||
for (const element of filasAProcesar) {
|
for (const element of filasOrdenadas) {
|
||||||
procesadas++;
|
procesadas++;
|
||||||
console.log(`\n⏳ Procesando fila ${element.fila} (${procesadas}/${filasAProcesar.length})`);
|
console.log(`\n⏳ Procesando fila ${element.fila} (${procesadas}/${filasOrdenadas.length})`);
|
||||||
console.log(`📝 Valor a consultar: ${element.valor}`);
|
console.log(`📝 Valor a consultar: ${element.valor}`);
|
||||||
|
|
||||||
// Guardar la fecha y hora actual
|
// Guardar la fecha y hora actual
|
||||||
|
|||||||
+6
-6
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "migracion-uscis",
|
"name": "migracion-corte",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"main": "uscis.mjs",
|
"main": "corte.mjs",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"start": "electron .",
|
"start": "electron .",
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"description": "Migracion Uscis",
|
"description": "Migracion Corte",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"googleapis": "^144.0.0",
|
"googleapis": "^144.0.0",
|
||||||
"node-fetch": "^3.3.2",
|
"node-fetch": "^3.3.2",
|
||||||
@@ -23,8 +23,8 @@
|
|||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"build": {
|
"build": {
|
||||||
"appId": "com.migracion.uscis.id",
|
"appId": "com.migracion.corte.id",
|
||||||
"productName": "Migracion Uscis",
|
"productName": "Migracion Corte",
|
||||||
"win": {
|
"win": {
|
||||||
"target": "nsis",
|
"target": "nsis",
|
||||||
"icon": "path/to/icon.ico"
|
"icon": "path/to/icon.ico"
|
||||||
|
|||||||
@@ -265,34 +265,20 @@ async function procesarArchivo(archivo) {
|
|||||||
const platform_type = 'uscis';
|
const platform_type = 'uscis';
|
||||||
const platform = CONFIG.PLATFORMS[platform_type.toUpperCase()].URL;
|
const platform = CONFIG.PLATFORMS[platform_type.toUpperCase()].URL;
|
||||||
|
|
||||||
// const filasAProcesar = datos.slice(1).map((row, index) => ({
|
const todasLasFilas = datos.slice(1)
|
||||||
// valor: row[4],
|
|
||||||
// fila: index + 2,
|
|
||||||
// tieneValor: !row[5],
|
|
||||||
// ultimaConsulta: row[5] || ''
|
|
||||||
// })).filter(row => {
|
|
||||||
// if (!row.ultimaConsulta) return true;
|
|
||||||
// const fechaUltimaConsulta = new Date(row.ultimaConsulta);
|
|
||||||
// const ahora = new Date();
|
|
||||||
// const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
|
||||||
// return diferenciaHoras > 1;
|
|
||||||
// });
|
|
||||||
|
|
||||||
const filasAProcesar = datos.slice(1)
|
|
||||||
.map((row, index) => ({
|
.map((row, index) => ({
|
||||||
valor: row[4], // Columna 5 (Valor a consultar)
|
valor: row[4], // Columna 5 (Valor a consultar)
|
||||||
fila: index + 2, // Número de fila real
|
fila: index + 2, // Número de fila real
|
||||||
ultimaConsulta: row[5], // Columna 6 (Fecha de última consulta)
|
ultimaConsulta: row[5], // Columna 6 (Fecha de última consulta)
|
||||||
resultado: row[6] // Columna 7 (Resultado)
|
resultado: row[6] // Columna 7 (Resultado)
|
||||||
}))
|
}));
|
||||||
.filter(row => {
|
|
||||||
// Priorizar si la columna G (resultado) está vacía
|
|
||||||
if (!row.resultado) return true;
|
|
||||||
|
|
||||||
// Si la columna G no está vacía, verificar la fecha en la columna F
|
// Filter rows that need processing (either G is empty or F is older than 1 hour)
|
||||||
if (!row.ultimaConsulta) return true; // Si no hay fecha en F, también se procesa (aunque G no esté vacía)
|
const filasAProcesar = todasLasFilas.filter(row => {
|
||||||
|
if (!row.resultado) return true; // Prioritize if column G (resultado) is empty
|
||||||
|
|
||||||
|
if (!row.ultimaConsulta) return true; // If no date in F, also process (even if G is not empty)
|
||||||
|
|
||||||
// Parse date in Spanish format DD/MM/YYYY
|
|
||||||
const [date, time] = row.ultimaConsulta.split(', ');
|
const [date, time] = row.ultimaConsulta.split(', ');
|
||||||
const [day, month, year] = date.split('/');
|
const [day, month, year] = date.split('/');
|
||||||
const [hours, minutes, seconds] = time.split(':');
|
const [hours, minutes, seconds] = time.split(':');
|
||||||
@@ -300,21 +286,42 @@ async function procesarArchivo(archivo) {
|
|||||||
const fechaUltimaConsulta = new Date(year, month - 1, day, hours, minutes, seconds);
|
const fechaUltimaConsulta = new Date(year, month - 1, day, hours, minutes, seconds);
|
||||||
const ahora = new Date();
|
const ahora = new Date();
|
||||||
|
|
||||||
// Calculate hours difference
|
|
||||||
const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
||||||
|
|
||||||
// For future dates, return false to skip processing
|
if (fechaUltimaConsulta > ahora) return false; // For future dates, return false to skip processing
|
||||||
if (fechaUltimaConsulta > ahora) return false;
|
|
||||||
|
|
||||||
return diferenciaHoras > 1; // Process only if more than 1 hour has passed
|
return diferenciaHoras > 1; // Process only if more than 1 hour has passed
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(filasAProcesar);
|
// Separate rows into three groups based on priority
|
||||||
|
const filasVaciasG = filasAProcesar.filter(row => !row.resultado);
|
||||||
|
const filasVaciasF = filasAProcesar.filter(row => row.resultado && !row.ultimaConsulta);
|
||||||
|
const filasConFechaF = filasAProcesar.filter(row => row.resultado && row.ultimaConsulta);
|
||||||
|
|
||||||
|
// Sort rows with date in F by oldest date first
|
||||||
|
filasConFechaF.sort((a, b) => {
|
||||||
|
const [dateA, timeA] = a.ultimaConsulta.split(', ');
|
||||||
|
const [dayA, monthA, yearA] = dateA.split('/');
|
||||||
|
const [hoursA, minutesA, secondsA] = timeA.split(':');
|
||||||
|
const fechaA = new Date(yearA, monthA - 1, dayA, hoursA, minutesA, secondsA);
|
||||||
|
|
||||||
|
const [dateB, timeB] = b.ultimaConsulta.split(', ');
|
||||||
|
const [dayB, monthB, yearB] = dateB.split('/');
|
||||||
|
const [hoursB, minutesB, secondsB] = timeB.split(':');
|
||||||
|
const fechaB = new Date(yearB, monthB - 1, dayB, hoursB, minutesB, secondsB);
|
||||||
|
|
||||||
|
return fechaA - fechaB; // Ascending order (oldest first)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Combine the arrays in the specified priority order
|
||||||
|
const filasOrdenadas = [...filasVaciasG, ...filasConFechaF, ...filasVaciasF];
|
||||||
|
|
||||||
|
console.log(filasOrdenadas);
|
||||||
|
|
||||||
|
|
||||||
console.log(`📊 Total de filas a procesar: ${filasAProcesar.length}`);
|
console.log(`📊 Total de filas a procesar: ${filasOrdenadas.length}`);
|
||||||
|
|
||||||
if (filasAProcesar.length > 0) {
|
if (filasOrdenadas.length > 0) {
|
||||||
console.log('🌐 Iniciando navegador...');
|
console.log('🌐 Iniciando navegador...');
|
||||||
let browser = await initBrowser(platform);
|
let browser = await initBrowser(platform);
|
||||||
let page = (await browser.pages())[0];
|
let page = (await browser.pages())[0];
|
||||||
@@ -322,9 +329,9 @@ async function procesarArchivo(archivo) {
|
|||||||
const MAX_FALLOS_CONSECUTIVOS = 3;
|
const MAX_FALLOS_CONSECUTIVOS = 3;
|
||||||
|
|
||||||
let procesadas = 0;
|
let procesadas = 0;
|
||||||
for (const element of filasAProcesar) {
|
for (const element of filasOrdenadas) {
|
||||||
procesadas++;
|
procesadas++;
|
||||||
console.log(`\n⏳ Procesando fila ${element.fila} (${procesadas}/${filasAProcesar.length})`);
|
console.log(`\n⏳ Procesando fila ${element.fila} (${procesadas}/${filasOrdenadas.length})`);
|
||||||
console.log(`📝 Valor a consultar: ${element.valor}`);
|
console.log(`📝 Valor a consultar: ${element.valor}`);
|
||||||
|
|
||||||
// Guardar la fecha y hora actual
|
// Guardar la fecha y hora actual
|
||||||
|
|||||||
Reference in New Issue
Block a user