Merge branch 'main' into 4452-vnChanges2
This commit is contained in:
commit
f8a05fac72
|
@ -2,7 +2,6 @@
|
|||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
.env
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
|
@ -27,9 +26,7 @@ build/Release/
|
|||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
.env.production
|
||||
.env*
|
||||
|
||||
# Next.js build output
|
||||
.next/
|
||||
|
@ -66,6 +63,4 @@ $RECYCLE.BIN/
|
|||
*.swp
|
||||
*~
|
||||
|
||||
# Docker files
|
||||
docker-compose.override.yml
|
||||
zplData_*.txt
|
||||
|
|
|
@ -38,6 +38,7 @@ Este proyecto es una aplicación backend que utiliza Node.js, Docker, MariaDB y
|
|||
|
||||
```env
|
||||
DB_HOST=mariadb
|
||||
DB_PORT=3306
|
||||
DB_USER=user
|
||||
DB_PASSWORD=password
|
||||
DB_NAME=database
|
||||
|
|
|
@ -39,25 +39,18 @@ async function getConnectionWithRetries(retries = 3, delay = 5000) {
|
|||
}
|
||||
|
||||
//Función para enviar ZPL a la impresora con TCP socket y reintentos
|
||||
async function sendZPL(zplContent, ipAddress, retries = 2, delay = 3000) {
|
||||
async function sendZPL(zplContent, ipAddress, retries = 3, delay = 2000) {
|
||||
const port = 9100; // puerto que se utiliza para el envio de zpl junto con el ipAddress
|
||||
|
||||
for (let attempt = 0; attempt < retries; attempt++) {
|
||||
try {
|
||||
const result = await new Promise((resolve, reject) => {
|
||||
const client = new net.Socket();
|
||||
let dataReceived = false; // Bandera para rastrear si se recibió respuesta
|
||||
|
||||
client.connect(port, ipAddress, () => {
|
||||
logger.info(`Conexión establecida con la impresora en el intento ${attempt + 1}`);
|
||||
client.write(zplContent);
|
||||
});
|
||||
|
||||
client.on('data', data => {
|
||||
dataReceived = true; // Se ha recibido respuesta
|
||||
logger.info(`Respuesta de la impresora: ${data.toString()}`);
|
||||
client.destroy();
|
||||
resolve('success');
|
||||
client.write(zplContent, () => {
|
||||
resolve('success');
|
||||
});
|
||||
});
|
||||
|
||||
client.on('error', error => {
|
||||
|
@ -68,19 +61,14 @@ async function sendZPL(zplContent, ipAddress, retries = 2, delay = 3000) {
|
|||
|
||||
client.on('close', () => {
|
||||
logger.info('Conexión cerrada');
|
||||
// Si no se recibió ningún dato, considerarlo como cerrado exitosamente
|
||||
if (dataReceived)
|
||||
resolve('success'); // Considerar éxito si la impresora cerró la conexión sin error
|
||||
else
|
||||
resolve('closed');
|
||||
resolve('closed');
|
||||
});
|
||||
});
|
||||
|
||||
if (result === 'success')
|
||||
return 'success';
|
||||
else if (result === 'closed') {
|
||||
if(retries >= attempt)
|
||||
return 'error';
|
||||
if (retries >= attempt) return 'error';
|
||||
continue; // Reintentar si la conexión se cerró sin error
|
||||
}
|
||||
|
||||
|
@ -159,7 +147,7 @@ async function processRecord(record) {
|
|||
try {
|
||||
await connection.beginTransaction();
|
||||
|
||||
logger.info(`Procesando expeditionFk=${record.expeditionFk} en worker`);
|
||||
logger.info(`Procesando expedición = ${record.expeditionFk}`);
|
||||
const zplData = generateZPL(record, label);
|
||||
|
||||
const filePath = path.join(__dirname, `zplData_${record.expeditionFk}.txt`);
|
||||
|
@ -173,7 +161,6 @@ async function processRecord(record) {
|
|||
const sendResult = await sendZPL(zplContent, ipAddress);
|
||||
|
||||
if (sendResult === 'success') {
|
||||
logger.info(`Etiqueta impresa correctamente para expeditionFk=${record.expeditionFk}`);
|
||||
await connection.query(
|
||||
'UPDATE expedition_PrintOut SET isPrinted = 1 WHERE expeditionFk = ?',
|
||||
[record.expeditionFk]
|
||||
|
@ -186,7 +173,6 @@ async function processRecord(record) {
|
|||
[record.expeditionFk]
|
||||
);
|
||||
}
|
||||
|
||||
parentPort.postMessage('done');
|
||||
await connection.commit();
|
||||
} catch (error) {
|
||||
|
|
Loading…
Reference in New Issue