From b172240ad5aca5f25e8a06feec2f9496506a4360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Sim=C3=A3o?= Date: Thu, 27 Dec 2007 12:06:25 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@628 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/SIPRPSoft/src/SIPRPMap.map.xml | 17 ++- .../cayenne/objects/Trabalhadores.java | 26 ---- .../cayenne/objects/TrabalhadoresEcds.java | 79 ++++++++-- .../objects/TrabalhadoresEcdsDatas.java | 144 +++++++++++------- .../objects/auto/_TrabalhadoresEcd.java | 9 ++ .../objects/auto/_TrabalhadoresEcdsDatas.java | 28 ++++ .../processo/logic/MedicinaProcessoLogic.java | 4 +- .../processo/ui/ProcessoDadosPanel.java | 2 +- 8 files changed, 212 insertions(+), 97 deletions(-) diff --git a/trunk/SIPRPSoft/src/SIPRPMap.map.xml b/trunk/SIPRPSoft/src/SIPRPMap.map.xml index ea39c74c..8ca1bc89 100644 --- a/trunk/SIPRPSoft/src/SIPRPMap.map.xml +++ b/trunk/SIPRPSoft/src/SIPRPMap.map.xml @@ -404,6 +404,7 @@ + @@ -426,7 +427,10 @@ + + + @@ -766,6 +770,7 @@ + @@ -775,6 +780,8 @@ + + @@ -980,8 +987,8 @@ - - + + @@ -1079,6 +1086,9 @@ + + + @@ -1178,7 +1188,7 @@ - + @@ -1211,6 +1221,7 @@ + diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/Trabalhadores.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/Trabalhadores.java index f81974fb..3eb0685c 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/Trabalhadores.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/Trabalhadores.java @@ -55,31 +55,5 @@ public class Trabalhadores extends _Trabalhadores { return getNomePlain(); } - - public List getAllEcdForGrupo( PrtGruposProtocolo grupo ) - { - List result = new ArrayList(); - Integer perfil = getPerfil(); - if( perfil != null ) - { - Empresas empresa = getToEstabelecimentos().getToEmpresas(); - List ecdsPerfil = (List) empresa.getPrtElementosProtocoloArray(); - for( PrtElementosProtocolo ecdPerfil : ecdsPerfil ) - { - if( perfil.equals( ecdPerfil.getNumeroPerfil() ) ) - { - PrtTiposElementosProtocolo ecd = ecdPerfil.getToPrtTiposElementosProtocolo(); - if( ecd != null ) - { - if( ecd.getToPrtGruposProtocolo().equals( grupo ) && !result.contains( ecd )) - { - result.add( ecd ); - } - } - } - } - } - return result; - } } diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcds.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcds.java index 5f6e1dbc..66fe5d21 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcds.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcds.java @@ -1,5 +1,6 @@ package siprp.database.cayenne.objects; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -43,6 +44,7 @@ public class TrabalhadoresEcds extends _TrabalhadoresEcds implements MedicinaCon public OrderedMap getGruposExamesForPerfil() { OrderedMap grupos = new OrderedMap(); + List estadosSoFar = new ArrayList(); Trabalhadores trabalhador = this.getToTrabalhadores(); Integer perfil = trabalhador.getPerfil(); if( perfil != null ) @@ -63,35 +65,90 @@ public class TrabalhadoresEcds extends _TrabalhadoresEcds implements MedicinaCon if( descricao != null && !grupos.containsKey( grupoEcd ) ) { grupos.putLast( grupoEcd, descricao ); - Integer estado = getEstadoForGrupoEcd(grupoEcd); + Integer estado = getEstadoForGrupoEcd( grupoEcd ); grupos.putLast( grupoEcd, estado != null ? MedicinaConstants.ESTADOS_EXAME_STR[estado] : " " ); + if( !estadosSoFar.contains( estado ) ) + { + estadosSoFar.add( estado ); + } } } } } } - } + } + + if( estadosSoFar.size() == 1 ) + { + if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) || estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) ) + { + setEstado( ESTADO_REALIZADO ); + } + else if( estadosSoFar.contains( new Integer( ESTADO_POR_REALIZAR ) ) ) + { + setEstado( ESTADO_POR_REALIZAR ); + } + else + { + setEstado( ESTADO_POR_MARCAR ); + } + } + else if( estadosSoFar.size() == 2 ) + { + if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) && estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) ) + { + setEstado( ESTADO_REALIZADO ); + } + else if( estadosSoFar.contains( new Integer( ESTADO_POR_MARCAR ) ) ) + { + setEstado( ESTADO_POR_MARCAR ); + + } + else if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) || estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) ) + { + setEstado( ESTADO_PARCIALMENTE_REALIZADO ); + } + else + { + setEstado( ESTADO_POR_REALIZAR ); + } + } + else + { + if( estadosSoFar.contains( new Integer( ESTADO_POR_MARCAR ) ) ) + { + setEstado( ESTADO_POR_MARCAR ); + } + else if( estadosSoFar.contains( new Integer( ESTADO_ANULADO ) ) && estadosSoFar.contains( new Integer( ESTADO_REALIZADO ) ) ) + { + setEstado( ESTADO_PARCIALMENTE_REALIZADO ); + } + else + { + setEstado( ESTADO_POR_REALIZAR ); + } + } return grupos; } - - private Integer getEstadoForGrupoEcd(PrtGruposProtocolo grupoEcd) + + private Integer getEstadoForGrupoEcd( PrtGruposProtocolo grupoEcd ) { Integer estado = null; List marcacoes = getTrabalhadoresEcdsDatasArray(); - if(marcacoes != null) + if( marcacoes != null ) { - for(TrabalhadoresEcdsDatas marcacao : marcacoes) + for( TrabalhadoresEcdsDatas marcacao : marcacoes ) { List ecds = marcacao.getTrabalhadoresEcdArray(); for( TrabalhadoresEcd ecd : ecds ) { - if(ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo().equals( grupoEcd )) + if( ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo().equals( grupoEcd ) ) { - if(new Integer(ESTADO_REALIZADO).equals(ecd.getEstado())) + if( new Integer( ESTADO_REALIZADO ).equals( ecd.getEstado() ) || new Integer( ESTADO_ANULADO ).equals( ecd.getEstado() ) ) { - return new Integer(ESTADO_REALIZADO); + return ecd.getEstado(); } - else if(estado == null) + else if( new Integer( ESTADO_POR_REALIZAR ).equals( ecd.getEstado() ) ) { estado = ecd.getEstado(); break; @@ -100,7 +157,7 @@ public class TrabalhadoresEcds extends _TrabalhadoresEcds implements MedicinaCon } } } - return estado == null ? ESTADO_POR_REALIZAR : estado; + return estado == null ? ESTADO_POR_MARCAR : estado; } } diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatas.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatas.java index 22df96ed..59cd44ee 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatas.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatas.java @@ -1,5 +1,6 @@ package siprp.database.cayenne.objects; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -9,19 +10,20 @@ import siprp.database.cayenne.providers.MedicinaDAO; import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.ui.OrderedMap; -public class TrabalhadoresEcdsDatas extends _TrabalhadoresEcdsDatas implements MedicinaConstants{ +public class TrabalhadoresEcdsDatas extends _TrabalhadoresEcdsDatas implements MedicinaConstants +{ private static final long serialVersionUID = 1L; public String getDataString() { return getData() == null ? "" : sdf.format( getData() ); } - + public String getEstadoString() { - return getEstado() == null || getEstado() >= ESTADOS_EXAME_STR.length ? "" : ESTADOS_EXAME_STR[ getEstado() ]; + return getEstado() == null || getEstado() >= ESTADOS_EXAME_STR.length ? "" : ESTADOS_EXAME_STR[getEstado()]; } - + public HashMap getEstados() { HashMap result = new HashMap(); @@ -34,76 +36,86 @@ public class TrabalhadoresEcdsDatas extends _TrabalhadoresEcdsDatas implements M } return result; } - + @Override public void setData( Date date ) { - if( date != null && this.getToTrabalhadoresEcds() != null && this.getEstado() != null && new Integer(ESTADO_POR_REALIZAR).equals(this.getEstado())) + if( date != null && this.getToTrabalhadoresEcds() != null && this.getEstado() != null && new Integer( ESTADO_POR_REALIZAR ).equals( this.getEstado() ) ) { this.getToTrabalhadoresEcds().setData( date ); } super.setData( date ); } - - @Override - public void setEstado( Integer estado ) - { - - if( estado != null && this.getToTrabalhadoresEcds() != null) - { - Integer oldExameEstado = this.getToTrabalhadoresEcds().getEstado(); - if(new Integer(ESTADO_POR_REALIZAR).equals( oldExameEstado)) - { - boolean todosRealizados = todosRealizados(); - if(new Integer(ESTADO_REALIZADO).equals( estado ) && !todosRealizados) - { - this.getToTrabalhadoresEcds().setEstado( ESTADO_PARCIALMENTE_REALIZADO ); - } - else if(new Integer(ESTADO_REALIZADO).equals( estado ) && todosRealizados) - { - this.getToTrabalhadoresEcds().setEstado( ESTADO_REALIZADO ); - } - } - } - super.setEstado( estado ); - } - - private boolean todosRealizados() - { - //TODO - return true; - } - + @Override public String toString() { return getDataString() + ": " + getEstadoString(); } - - public OrderedMap getGruposExames() + + public OrderedMap getStatesForeGruposExames() { OrderedMap grupos = new OrderedMap(); List exames = this.getTrabalhadoresEcdArray(); if( exames != null ) { - for(TrabalhadoresEcd exame : exames) + for( TrabalhadoresEcd exame : exames ) { - String estado = MedicinaConstants.ESTADOS_EXAME_STR[exame.getEstado()]; + String estadoString = MedicinaConstants.ESTADOS_EXAME_STR[exame.getEstado()]; PrtGruposProtocolo grupo = exame.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo(); - if( !grupos.containsKey( grupo )) + if( !grupos.containsKey( grupo ) ) { grupos.putLast( grupo, grupo.getDescricao() ); - grupos.putLast( grupo, estado ); + grupos.putLast( grupo, estadoString ); } } } return grupos; } + private List getAllEcdForGrupoForThisMarcacao( PrtGruposProtocolo grupo ) + { + List result = new ArrayList(); + for( TrabalhadoresEcd ecd : (List) getTrabalhadoresEcdArray() ) + { + if( grupo.equals( ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo() ) ) + { + result.add( ecd.getToPrtTiposElementosProtocolo() ); + } + } + return result; + } + + private List getAllEcdForGrupoAndCurrentPerfil( PrtGruposProtocolo grupo ) + { + Trabalhadores trabalhador = getToTrabalhadoresEcds().getToTrabalhadores(); + List result = new ArrayList(); + Integer perfil = trabalhador.getPerfil(); + if( perfil != null ) + { + Empresas empresa = trabalhador.getToEstabelecimentos().getToEmpresas(); + List ecdsPerfil = (List) empresa.getPrtElementosProtocoloArray(); + for( PrtElementosProtocolo ecdPerfil : ecdsPerfil ) + { + if( perfil.equals( ecdPerfil.getNumeroPerfil() ) ) + { + PrtTiposElementosProtocolo ecd = ecdPerfil.getToPrtTiposElementosProtocolo(); + if( ecd != null ) + { + if( ecd.getToPrtGruposProtocolo().equals( grupo ) && !result.contains( ecd ) ) + { + result.add( ecd ); + } + } + } + } + } + return result; + } + public void marcarGrupoExames( PrtGruposProtocolo grupo ) { - List allEcd = getToTrabalhadoresEcds().getToTrabalhadores().getAllEcdForGrupo( grupo ); - for(PrtTiposElementosProtocolo ecd : allEcd) + for( PrtTiposElementosProtocolo ecd : getAllEcdForGrupoAndCurrentPerfil( grupo ) ) { TrabalhadoresEcd trabEcd = new TrabalhadoresEcd(); trabEcd.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR ); @@ -112,21 +124,45 @@ public class TrabalhadoresEcdsDatas extends _TrabalhadoresEcdsDatas implements M addToTrabalhadoresEcdArray( trabEcd ); } } - - public void realizar() + + public void setStateForGrupoProtocolo( PrtGruposProtocolo grupo, Integer estado ) { - List ecds = getTrabalhadoresEcdArray(); - if( ecds != null ) + List group = getAllEcdForGrupoForThisMarcacao( grupo ); + for(TrabalhadoresEcd ecd : (List) getTrabalhadoresEcdArray()) { - for(TrabalhadoresEcd ecd : ecds) + if(group.contains( ecd.getToPrtTiposElementosProtocolo())) { - ecd.setEstado( MedicinaConstants.ESTADO_REALIZADO ); + ecd.setEstado( estado ); } } - setEstado( MedicinaConstants.ESTADO_REALIZADO ); } - -} - + public void setStateForGrupoProtocolo( PrtGruposProtocolo grupo, String estado ) + { + for( int i = 0; i < ESTADOS_EXAME_STR.length; ++i ) + { + String currentEstado = ESTADOS_EXAME_STR[i]; + if( currentEstado != null && new Integer( i ).equals( estado ) ) + { + setStateForGrupoProtocolo( grupo, i ); + break; + } + } + } + + @Override + public void setEstado( Integer estado ) + { + List allEcd = (List) getTrabalhadoresEcdArray(); + if(allEcd != null) + { + for(TrabalhadoresEcd ecd : allEcd ) + { + ecd.setEstado( estado ); + } + } + super.setEstado( estado ); + getToTrabalhadoresEcds().getGruposExamesForPerfil(); + } +} diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcd.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcd.java index fabe1c36..4ee99d2d 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcd.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcd.java @@ -7,6 +7,7 @@ package siprp.database.cayenne.objects.auto; */ public abstract class _TrabalhadoresEcd extends siprp.database.cayenne.objects.BaseObject { + public static final String ENVIADO_PROPERTY = "enviado"; public static final String ESTADO_PROPERTY = "estado"; public static final String TO_ECD_OFICIAL_PROPERTY = "toEcdOficial"; public static final String TO_PRT_TIPOS_ELEMENTOS_PROTOCOLO_PROPERTY = "toPrtTiposElementosProtocolo"; @@ -14,6 +15,14 @@ public abstract class _TrabalhadoresEcd extends siprp.database.cayenne.objects.B public static final String ID_PK_COLUMN = "id"; + public void setEnviado(Character enviado) { + writeProperty("enviado", enviado); + } + public Character getEnviado() { + return (Character)readProperty("enviado"); + } + + public void setEstado(Integer estado) { writeProperty("estado", estado); } diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcdsDatas.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcdsDatas.java index 32919841..92c45cd8 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcdsDatas.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/auto/_TrabalhadoresEcdsDatas.java @@ -8,8 +8,11 @@ package siprp.database.cayenne.objects.auto; public abstract class _TrabalhadoresEcdsDatas extends siprp.database.cayenne.objects.BaseObject { public static final String DATA_PROPERTY = "data"; + public static final String DATA_ENVIO_PROPERTY = "dataEnvio"; + public static final String DATA_RECEPCAO_PROPERTY = "dataRecepcao"; public static final String ESTADO_PROPERTY = "estado"; public static final String ID_PROPERTY = "id"; + public static final String TO_ANALISADOR_PROPERTY = "toAnalisador"; public static final String TO_PRESTADORES_PROPERTY = "toPrestadores"; public static final String TO_TRABALHADORES_ECDS_PROPERTY = "toTrabalhadoresEcds"; public static final String TRABALHADORES_ECD_ARRAY_PROPERTY = "trabalhadoresEcdArray"; @@ -26,6 +29,22 @@ public abstract class _TrabalhadoresEcdsDatas extends siprp.database.cayenne.obj } + public void setDataEnvio(java.util.Date dataEnvio) { + writeProperty("dataEnvio", dataEnvio); + } + public java.util.Date getDataEnvio() { + return (java.util.Date)readProperty("dataEnvio"); + } + + + public void setDataRecepcao(java.util.Date dataRecepcao) { + writeProperty("dataRecepcao", dataRecepcao); + } + public java.util.Date getDataRecepcao() { + return (java.util.Date)readProperty("dataRecepcao"); + } + + public void setEstado(Integer estado) { writeProperty("estado", estado); } @@ -42,6 +61,15 @@ public abstract class _TrabalhadoresEcdsDatas extends siprp.database.cayenne.obj } + public void setToAnalisador(siprp.database.cayenne.objects.Prestadores toAnalisador) { + setToOneTarget("toAnalisador", toAnalisador, true); + } + + public siprp.database.cayenne.objects.Prestadores getToAnalisador() { + return (siprp.database.cayenne.objects.Prestadores)readProperty("toAnalisador"); + } + + public void setToPrestadores(siprp.database.cayenne.objects.Prestadores toPrestadores) { setToOneTarget("toPrestadores", toPrestadores, true); } diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java index bf7eb610..ed9010a5 100755 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java @@ -348,7 +348,7 @@ public class MedicinaProcessoLogic extends SIPRPLogic { if( currentExameMarcacao != null ) { - currentExameMarcacao.realizar(); + currentExameMarcacao.setEstado( MedicinaConstants.ESTADO_REALIZADO ); runActionLater( SAVE_EXAME_MARCACAO ); } } @@ -482,8 +482,8 @@ public class MedicinaProcessoLogic extends SIPRPLogic public TrabalhadoresEcdsDatas createExameMarcacao() { currentExameMarcacao = new TrabalhadoresEcdsDatas(); - currentExameMarcacao.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR ); currentExameMarcacao.setToTrabalhadoresEcds( currentExame ); + currentExameMarcacao.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR ); runActionLater( SAVE_EXAME_MARCACAO ); return currentExameMarcacao; } diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java index 349c1be1..7d44350f 100755 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java @@ -354,7 +354,7 @@ public class ProcessoDadosPanel extends JPanel { inputExameMarcacaoData.setObject( exameMarcacao.getData() ); inputExameMarcacaoEstado.setObject( exameMarcacao.getEstados(), exameMarcacao.getEstado() ); - OrderedMap grupos = exameMarcacao.getGruposExames(); + OrderedMap grupos = exameMarcacao.getStatesForeGruposExames(); inputExameMarcacaoGruposEcds.setCollapseOptions( false ); inputExameMarcacaoGruposEcds.setObject( grupos, grupos.getFirst() ); cardLayout.show( this, PANEL_EXAME_MARCACAO_NAME );