From 433caa879379264efc6af019490c903f6337dde4 Mon Sep 17 00:00:00 2001 From: als-v Date: Tue, 14 Jul 2026 14:28:24 -0300 Subject: [PATCH 1/3] =?UTF-8?q?HCF-API-475:=20adicao=20rotas=20valida?= =?UTF-8?q?=C3=A7=C3=A3o=20tid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/rfids-controller.js | 32 +++++++++++++++++++++-------- src/routes/rfids.js | 2 +- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/controllers/rfids-controller.js b/src/controllers/rfids-controller.js index 7f210d8..d602c9a 100644 --- a/src/controllers/rfids-controller.js +++ b/src/controllers/rfids-controller.js @@ -20,6 +20,13 @@ const getColetorPrincipal = tombo => ( tombo?.coletor?.nome || tombo?.Coletor?.nome || 'N/A' ); +const normalizarTid = tid => (typeof tid === 'string' ? tid.trim() : ''); + +const tidValido = tid => { + const tidNormalizado = normalizarTid(tid); + return tidNormalizado.length > 0 && tidNormalizado.toUpperCase() !== 'N/A'; +}; + const codificarParaEpcHex = (tomboHcf, codigoBarra) => { const tomboId = parseInt(tomboHcf, 10); const match = codigoBarra.match(/([a-zA-Z]+)(\d+)/); @@ -145,8 +152,15 @@ export const finalizarGravacao = async (request, response, next) => { break; case 'CONCLUIDO': - if (tid) { - const tagExistente = await Rfid.findOne({ where: { tid } }); + if (!tidValido(tid)) { + return response.status(400).json({ + erro: 'TID obrigatório para concluir a gravação RFID.', + }); + } + + { + const tidNormalizado = normalizarTid(tid); + const tagExistente = await Rfid.findOne({ where: { tid: tidNormalizado } }); if (tagExistente && tagExistente.id !== Number(id)) { return response.status(409).json({ @@ -154,7 +168,7 @@ export const finalizarGravacao = async (request, response, next) => { }); } - rfid.tid = tid; + rfid.tid = tidNormalizado; } break; @@ -311,12 +325,13 @@ export const listarPendentesRfid = async (request, response, next) => { } }; -export const validarEpc = async (request, response, next) => { - const { epc } = request.params; +export const validarTid = async (request, response, next) => { + const { tid } = request.params; + const tidNormalizado = normalizarTid(tid); try { const rfid = await Rfid.findOne({ - where: { epc: epc }, + where: { tid: tidNormalizado }, include: [ { model: TomboFoto, @@ -344,7 +359,7 @@ export const validarEpc = async (request, response, next) => { if (!rfid) { return response.status(404).json({ valido: false, - mensagem: 'EPC não encontrado.', + mensagem: 'TID não encontrado.', }); } @@ -354,9 +369,10 @@ export const validarEpc = async (request, response, next) => { return response.status(200).json({ valido: true, - mensagem: 'EPC validado com sucesso.', + mensagem: 'TID validado com sucesso.', dados: { id_rfid: rfidJson.id, + tid: rfidJson.tid, epc_formatado: rfidJson.epc, epc: decodificarEpcHex(rfidJson.epc), status_rfid: rfidJson.status, diff --git a/src/routes/rfids.js b/src/routes/rfids.js index 8c0c273..0fda6cb 100644 --- a/src/routes/rfids.js +++ b/src/routes/rfids.js @@ -102,6 +102,6 @@ export default app => { app.route('/rfids/tombos-pendentes').get(RfidsController.listarPendentesRfid); - app.route('/rfids/validar/:epc').get(RfidsController.validarEpc); + app.route('/rfids/validar-tid/:tid').get(RfidsController.validarTid); }; From 69196e1f2a46633c6c063e412f14fbb4c4674389 Mon Sep 17 00:00:00 2001 From: als-v Date: Tue, 14 Jul 2026 14:45:58 -0300 Subject: [PATCH 2/3] HCF-API-475: retorno data nos metodos --- src/controllers/rfids-controller.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/controllers/rfids-controller.js b/src/controllers/rfids-controller.js index d602c9a..0d9c012 100644 --- a/src/controllers/rfids-controller.js +++ b/src/controllers/rfids-controller.js @@ -218,8 +218,9 @@ export const listagem = async (request, response, next) => { whereFoto.codigo_barra = codigo_barra; } - const rfids = await Rfid.findAndCountAll({ - limit: limite, + const rfids = await Rfid.unscoped().findAndCountAll({ + attributes: ['id', 'tombo_foto_id', 'epc', 'tid', 'status', 'created_at', 'updated_at'], + limit: limite, offset, where: whereRfid, include: [ From 331c0a84051467159da90283bceec800abfe23b5 Mon Sep 17 00:00:00 2001 From: als-v Date: Tue, 14 Jul 2026 15:08:15 -0300 Subject: [PATCH 3/3] HCF-API-475: fixl int --- src/controllers/rfids-controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/rfids-controller.js b/src/controllers/rfids-controller.js index 0d9c012..e3a721e 100644 --- a/src/controllers/rfids-controller.js +++ b/src/controllers/rfids-controller.js @@ -219,8 +219,8 @@ export const listagem = async (request, response, next) => { } const rfids = await Rfid.unscoped().findAndCountAll({ - attributes: ['id', 'tombo_foto_id', 'epc', 'tid', 'status', 'created_at', 'updated_at'], - limit: limite, + attributes: ['id', 'tombo_foto_id', 'epc', 'tid', 'status', 'created_at', 'updated_at'], + limit: limite, offset, where: whereRfid, include: [