From a6f9056133c3b8eea93d4f9cb6a3b6d919818992 Mon Sep 17 00:00:00 2001 From: Diogo Neves Date: Tue, 27 Jul 2010 11:31:03 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@1342 bb69d46d-e84e-40c8-a05a-06db0d633741 --- .../provider/PlanoActuacaoDataProvider.java | 56 +++++++++++------ .../relatorio/GerirMedidasRelatorioPanel.java | 5 +- .../siprp/logic/HigieneSegurancaLogic.java | 63 ++++++++++++------- 3 files changed, 81 insertions(+), 43 deletions(-) diff --git a/trunk/SIPRPSoft/src/siprp/data/provider/PlanoActuacaoDataProvider.java b/trunk/SIPRPSoft/src/siprp/data/provider/PlanoActuacaoDataProvider.java index e838279c..85079ccd 100644 --- a/trunk/SIPRPSoft/src/siprp/data/provider/PlanoActuacaoDataProvider.java +++ b/trunk/SIPRPSoft/src/siprp/data/provider/PlanoActuacaoDataProvider.java @@ -428,21 +428,6 @@ public class PlanoActuacaoDataProvider { return (HsRiscoData) ENTITY_PROVIDER.load( HsRiscoData.class, id ); } - - - //FIXME : a query esta errada !!! :s - /* - SELECT * - FROM hs_relatorio_posto_medida - INNER JOIN hs_relatorio_medida ON ( hs_relatorio_posto_medida.medida_id = hs_relatorio_medida.id ) - INNER JOIN hs_relatorio_risco ON ( hs_relatorio_medida.risco_id = hs_relatorio_risco.id ) - INNER JOIN hs_relatorio_posto_risco ON ( hs_relatorio_risco.id = hs_relatorio_posto_risco.risco_id ) - WHERE - hs_relatorio_posto_medida.posto_id = 6515 - AND hs_relatorio_medida.deleted_date IS NULL - AND hs_relatorio_risco.deleted_date IS NULL - ORDER BY hs_relatorio_risco.description, hs_relatorio_medida.description, hs_relatorio_medida.requesitos_legais - */ public List getRelatorioMedidasForPosto( HsRelatorioPostoData posto ) throws Exception { @@ -453,12 +438,45 @@ public class PlanoActuacaoDataProvider fks.add( new ForeignKey( HsRelatorioRiscoData.class, HsRelatorioRiscoData.ID_FULL, HsRelatorioPostoRiscoData.class, HsRelatorioPostoRiscoData.RISCO_ID_FULL ) ); Expression where = new Field( HsRelatorioPostoMedidaData.POSTO_ID_FULL ).isEqual( posto.getId() ).and( - new Field( HsRelatorioMedidaData.DELETED_DATE_FULL ).isEqual( null ).and( - new Field( HsRelatorioRiscoData.DELETED_DATE_FULL ).isEqual( null ) - ) - ); + new Field( HsRelatorioMedidaData.DELETED_DATE_FULL ).isEqual( null ).and( + new Field( HsRelatorioRiscoData.DELETED_DATE_FULL ).isEqual( null ) + ) + ); result = ((EvoDataProvider)ENTITY_PROVIDER).listLoad( fks, where, HsRelatorioRiscoData.DESCRIPTION_FULL, HsRelatorioMedida.DESCRIPTION_FULL, HsRelatorioMedida.REQUESITOS_LEGAIS_FULL ); return result; } + + public HsRelatorioRiscoData loadRelatorioRiscoByRiscoID( Integer hsRiscoID ) + throws Exception + { + return ((EvoDataProvider)ENTITY_PROVIDER).load( HsRelatorioRiscoData.class, + new Object[] { null, hsRiscoID }, new String[] { HsRelatorioRiscoData.DELETED_DATE, HsRelatorioRiscoData.HS_RISCO_ID }, + null ); + } + + public HsRelatorioPostoRiscoData loadRelatorioPostoRisco( Integer postoID, Integer riscoID ) + throws Exception + { + return ((EvoDataProvider)ENTITY_PROVIDER).load( HsRelatorioPostoRiscoData.class, + new Object[] { postoID, riscoID }, new String[] { HsRelatorioPostoRiscoData.POSTO_ID, HsRelatorioPostoRiscoData.RISCO_ID }, + null ); + } + + public HsRelatorioMedidaData loadRelatorioMedidaByMedidaID( Integer hsMedidaID ) + throws Exception + { + return ((EvoDataProvider)ENTITY_PROVIDER).load( HsRelatorioMedidaData.class, + new Object[] { null, hsMedidaID }, new String[] { HsRelatorioMedidaData.DELETED_DATE, HsRelatorioMedidaData.HS_MEDIDA_ID }, + null ); + } + + public HsRelatorioPostoMedidaData loadRelatorioPostoMedida( Integer postoID, Integer medidaID ) + throws Exception + { + return ((EvoDataProvider)ENTITY_PROVIDER).load( HsRelatorioPostoMedidaData.class, + new Object[] { postoID, medidaID }, new String[] { HsRelatorioPostoMedidaData.POSTO_ID, HsRelatorioPostoMedidaData.MEDIDA_ID }, + null ); + } + } diff --git a/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java b/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java index 4678a5ae..9021064a 100644 --- a/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java +++ b/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java @@ -442,7 +442,8 @@ public class GerirMedidasRelatorioPanel extends SIPRPLazyLoadedPanel { HsRelatorioPostoRiscoData postoRisco = evoJoinObject.getObject( HsRelatorioPostoRiscoData.class ); HsRelatorioPostoMedidaData postoMedida = evoJoinObject.getObject( HsRelatorioPostoMedidaData.class ); - if( riscoNode == null || ! postoRisco.equals( riscoNode.getUserObject() ) ) + + if( riscoNode == null || ! postoRisco.equals( ( HsRelatorioPostoRiscoData ) riscoNode.getUserObject() ) ) { riscoNode = new RiscoRelatorioNode( postoRisco ); root.add( riscoNode ); @@ -456,8 +457,6 @@ public class GerirMedidasRelatorioPanel extends SIPRPLazyLoadedPanel } - - // List list = posto.fromHsRelatorioPostoRisco_posto_id(); // Collections.sort( list ); // diff --git a/trunk/SIPRPSoft/src/siprp/logic/HigieneSegurancaLogic.java b/trunk/SIPRPSoft/src/siprp/logic/HigieneSegurancaLogic.java index 4deb1d85..5d438059 100644 --- a/trunk/SIPRPSoft/src/siprp/logic/HigieneSegurancaLogic.java +++ b/trunk/SIPRPSoft/src/siprp/logic/HigieneSegurancaLogic.java @@ -321,30 +321,51 @@ public class HigieneSegurancaLogic public static void addRiscoToRelatorioPosto( HsRiscoData risco, Integer order, HsRelatorioPostoData rPosto ) throws Exception { -// System.out.println( "\naddRiscoToRelatorioPosto( " + risco + ", " + order + ", " + rPosto + " ) : " ); - HsRelatorioRiscoData rRelatorioRisco = new HsRelatorioRiscoData(); - rRelatorioRisco.setToRelatorio_id( rPosto.toArea_id().toRelatorio_id() ); - rRelatorioRisco.setDescription( risco.getDescription() ); - HsRelatorioPostoRiscoData rPostoRisco = new HsRelatorioPostoRiscoData(); - rPostoRisco.setToPosto_id( rPosto ); - rPostoRisco.setToRisco_id( rRelatorioRisco ); - rPostoRisco.setOrdem( order ); + HsRelatorioRiscoData relatorioRisco = planoProvider.loadRelatorioRiscoByRiscoID( risco.getId() ); + if ( relatorioRisco == null ) + { + relatorioRisco = new HsRelatorioRiscoData(); + relatorioRisco.setToRelatorio_id( rPosto.toArea_id().toRelatorio_id() ); + relatorioRisco.setDescription( risco.getDescription() ); + relatorioRisco.setHs_risco_id( risco.getId() ); + relatorioRisco.save(); + } + + HsRelatorioPostoRiscoData rPostoRisco = planoProvider.loadRelatorioPostoRisco( rPosto.getId(), relatorioRisco.getId() ); + if ( rPostoRisco == null ) + { + rPostoRisco = new HsRelatorioPostoRiscoData(); + rPostoRisco.setToPosto_id( rPosto ); + rPostoRisco.setToRisco_id( relatorioRisco ); + rPostoRisco.setOrdem( order ); + rPostoRisco.save(); + } + for( HsRiscoMedidaData riscoMedida : risco.fromHsRiscoMedida_risco_id() ) { - HsRelatorioMedidaData rMedida = new HsRelatorioMedidaData(); - rMedida.setDescription( riscoMedida.toMedida_id().getDescription() ); - rMedida.setRequesitos_legais( riscoMedida.toMedida_id().getRequesitos_legais()); - rMedida.setToRisco_id( rRelatorioRisco ); - HsRelatorioPostoMedidaData rPostoMedida = new HsRelatorioPostoMedidaData(); - rPostoMedida.setIs_plano_actuacao( false ); - rPostoMedida.setToMedida_id( rMedida ); - rPostoMedida.setToPosto_id( rPosto ); - rPostoMedida.save(); - rMedida.save(); - } - rPostoRisco.save(); - rRelatorioRisco.save(); + HsRelatorioMedidaData medidaData = planoProvider.loadRelatorioMedidaByMedidaID( riscoMedida.getMedida_id() ); + if ( medidaData == null ) + { + medidaData = new HsRelatorioMedidaData(); + medidaData.setDescription( riscoMedida.toMedida_id().getDescription() ); + medidaData.setRequesitos_legais( riscoMedida.toMedida_id().getRequesitos_legais()); + medidaData.setToRisco_id( relatorioRisco ); + medidaData.setHs_medida_id( riscoMedida.toMedida_id().getId() ); + medidaData.save(); + } + + HsRelatorioPostoMedidaData rPostoMedida = planoProvider.loadRelatorioPostoMedida( rPosto.getId(), medidaData.getId() ); + if ( rPostoMedida == null ) + { + rPostoMedida = new HsRelatorioPostoMedidaData(); + rPostoMedida.setIs_plano_actuacao( false ); + rPostoMedida.setToMedida_id( medidaData ); + rPostoMedida.setToPosto_id( rPosto ); + rPostoMedida.save(); + } + } + } private static void revertMedidasAndRiscos( HsPostoRiscoData postoRisco, HsRelatorioPostoData rPosto ) throws Exception