Gostaria de ajuda. Sei que p código abaixo é um pouco precário (sujo) pois não segue alguns padrões de facilitação para manutenção. Mas agora que estou aprendendo utilizar o padrão MVC, estou reescrevendo os códigos neste modelo.
Mas o código abaixo já roda em um sistema de Manipulação de Medicamentos que desenvolvi para uma necessidade urgente no momento. A questão é o Seguinte:
–> AtualizaFila é um método que ao iniciar a janela de busca por data informada, ele busca a partir da query do SQL todos os pacientes que naquele dia terão que manipular os medicamentos.
Logo em seguida no código ele faz uma validação utilizando um laço, à procura em uma outra classe tb_fim (Finalizados - medicações que já forma manipuladas), e acrescentar em coluna que inicia vazia o Status : MNP (Manipulado) ou EMNP (Em manipulação), depende em qual situação ele se encontra. Tendo este status atrelado no momento da validação entre o que vai entrar para manipular e o manipulado consigo retirar as linhas de pacientes que já foram manipulados, uma vez que a Query sempre trará a mesma busca no dia pesquisado.
—> Então com isso pego estes dados e faço um outro FOR para comparar as duas tabelas e se o paciente estiver na aba FINALIZADOS e remove a linha identica na aba FILA (Utilizo um JTABLE).
Problema:
–> Tenho uma opção na aplicação que permite o usuário CANCELAR a manipulação. Com isso ele vai para a aba FINALIZADO com o STATUS C. Então percebi sempre que faço isso ele duplica as informações nas duas ABAS. Fica uma linha na Aba FILA e outra na Aba Finalizado. Ele não consegue retirar esse paciente que foi cancelado a medicação. A única diferença para os que estão manipulados e ele consegue eliminar essa linha na comparação do FOR é o Status. Fora isso está tudo OK.
Alguém consegue entender isso tudo que escrevi rsrsrs, e tentar me ajudar a encontrar onde está o problema em não conseguir eliminar os pacientes C de CANCELADOS da aba FILA e deixar somente na ABA FINALIZADOS assim como acontece com os que estão com Status M de manipulados?
Help!!! rsrs.
private void AtualizaFila (){
//*********INICIO DE CAST DE DATA******************
String dia = dt_ini.getText().substring(0, 2);
String mes = dt_ini.getText().substring(3, 5);
String ano = dt_ini.getText().substring(6);
String dia1 = dt_final.getText().substring(0, 2);
String mes1 = dt_final.getText().substring(3, 5);
String ano1 = dt_final.getText().substring(6);
//*********FIM DE CAST DE DATA*********************
//Conecta ao DB e preenche com o retorno da consulta da Query na Table Fila
//Faz- uma busca no Table de Manipulação e Table Finalizado, e valida se não há registro duplicado
//Caso houver remove a linha da Table FILA
if (tb_fila.getRowCount() == 0 || tb_fila.getRowCount() != 0){ //Preenche a tabela se a linha for igual ou diferente de 0
try {
conn = conexao.getConnection();
//Titulos das Colunas da Tabela
String[]titulos =new String[]{"Reg","Pront","Nome", "Esquema", "Medicamento", "Dose","User_Solic", "Psc_Num","Data_Solic","MNP", "Psc_APM", "Cod_Barra"};
//Query de consulta
String SQL;
SQL = "SELECT pac.pac_reg, pac.pac_pront, pac.pac_nome, bul.bul_nome, adp.adp_nome, apl.apl_dose,sma.sma_usr_login_sol, sma.sma_data, apl.apl_psc_num, psc.psc_apm, "
+ " (CAST (psc.psc_pac AS VARCHAR(10)) + CAST (psc.psc_num AS VARCHAR(10)) + CAST (psc.psc_apm AS VARCHAR(10))) as Cod_Barra "
+ " FROM psc"
+ " join pac on "
+ " ( pac.pac_reg = psc.psc_pac )"
+ " join apl on"
+ " ( apl.apl_psc_hsp = psc.psc_hsp ) and"
+ " ( apl.apl_psc_num = psc.psc_num ) and"
+ " ( apl.apl_psc_pac = psc.psc_pac )"
+ " join apm on"
+ " ( apm.apm_pac = psc.psc_pac ) and"
+ " ( apm.apm_hsp = psc.psc_hsp ) and"
+ " ( apm.apm_num = psc.psc_apm )"
+ " join sma on"
+ " (sma.sma_serie = apm.apm_sma_serie) and"
+ " (sma.sma_num = apm.apm_sma_num)"
+ " join bul on"
+ " (bul.bul_med = psc.psc_cod)"
+ " join adp on"
+ " (adp.adp_cod = psc.psc_adp)"
+ " join cnv on"
+ " ( cnv.cnv_cod = pac.pac_cnv )"
+ " join psv on"
+ " ( psc.psc_med = psv.psv_cod )"
+ " FULL join psv ps on"
+ " ( psc.psc_med2 = ps.psv_cod )"
+ " WHERE"
// Retornar as prescrições (Aplicações) do dia
+ " apl.apl_dthr_aplic >= '"+ano+"-"+mes+"-"+dia+" 00:00:00' and"
+ " apl.apl_dthr_aplic <= '"+ano1+"-"+mes1+"-"+dia1+" 23:59:59' and"
// Retornar as Solicações (Enfermagem) do dia
+ " sma.sma_data >= '"+ano+"-"+mes+"-"+dia+" 00:00:00' and"
+ " sma.sma_data <= '"+ano1+"-"+mes1+"-"+dia1+" 23:59:59' and"
+ " pac.pac_nome not like 'xxx%' and"
+ " apl.apl_status in('A','N') And"
+ " bul.bul_farm2 = 2 AND bul.bul_farm1 = 62"
+ " ORDER BY pac.pac_nome ASC ";
//+ " ORDER BY sma.sma_data DESC ";
model =new DefaultTableModel(null, titulos);
sent = conn.createStatement();
ResultSet rs = sent.executeQuery(SQL);
String []fila = new String[12];
while (rs.next()){
fila [0]=rs.getString("pac_reg");
fila [1]=rs.getString("pac_pront");
fila [2]=rs.getString("pac_nome");
fila [3]=rs.getString("adp_nome");
fila [4]=rs.getString("bul_nome");
fila [5]=rs.getString("apl_dose");
fila [6]=rs.getString("sma_usr_login_sol");
fila [7]=rs.getString("apl_psc_num");
fila [8]=rs.getString("sma_data");
fila [9]=null;//Inicia a variavel vazia
fila [10] =rs.getString("psc_apm");
fila [11] =rs.getString("Cod_Barra");
//For para validar registro FILA igual a tabela Em Manipulação com Status de *Em Manipulação*
for ( int m = 0; m < tb_manip.getRowCount() ; m++)
{
if (fila [0].equals(tb_manip.getValueAt(m, 0)) && fila [7].equals(tb_manip.getValueAt(m, 11)) && fila [10].equals(tb_manip.getValueAt(m, 12)))
{
fila [9]="EMNP";
}
}
//For para validar registro FILA igual a tabela Finalizado com Status de *Manipulado*
for ( int f = 0; f < tb_fim.getRowCount() ; f++)
{
if (fila [0].equals(tb_fim.getValueAt(f, 0)) && fila [7].equals(tb_fim.getValueAt(f, 12)) && fila [10].equals(tb_fim.getValueAt(f, 13)) )
{
fila [9]="MNP";
}
}
model.addRow(fila);
}
conn.close();
tb_fila.setModel(model);
tb_fila.setDefaultEditor(Object.class, null);
//Colunas que deverão ser ocultadas E redimensionadas
tb_fila.setAutoResizeMode(javax.swing.JTable.WIDTH );
tb_fila.getColumnModel().getColumn(0).setMinWidth(0);
tb_fila.getColumnModel().getColumn(0).setMaxWidth(0);
tb_fila.getColumnModel().getColumn(1).setMinWidth(60);
tb_fila.getColumnModel().getColumn(1).setMaxWidth(60);
tb_fila.getColumnModel().getColumn(2).setMinWidth(200);
tb_fila.getColumnModel().getColumn(2).setMaxWidth(200);
tb_fila.getColumnModel().getColumn(5).setMinWidth(60);
tb_fila.getColumnModel().getColumn(5).setMaxWidth(60);
tb_fila.getColumnModel().getColumn(6).setMinWidth(80);
tb_fila.getColumnModel().getColumn(6).setMaxWidth(80);
tb_fila.getColumnModel().getColumn(7).setMinWidth(0);
tb_fila.getColumnModel().getColumn(7).setMaxWidth(0);
tb_fila.getColumnModel().getColumn(8).setMinWidth(50);//150
tb_fila.getColumnModel().getColumn(8).setMaxWidth(50);//150
tb_fila.getColumnModel().getColumn(9).setMinWidth(50);//0
tb_fila.getColumnModel().getColumn(9).setMaxWidth(50);//0
tb_fila.getColumnModel().getColumn(10).setMinWidth(0);
tb_fila.getColumnModel().getColumn(10).setMaxWidth(0);
//Selecionar somente uma linha por vez
tb_fila.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}catch (SQLException ex){
JOptionPane.showMessageDialog(this, "Erro na Consulta ao Banco Smart!", "Erro",JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(this, ex);
}catch (Exception e){
JOptionPane.showMessageDialog(this, e);
}
//Valida se o valor adicionado já existe na Tabela Finalizado
//Se existe, remove da Tabela linha, para não gerar duplicidade
for ( int f = tb_fila.getRowCount()-1; f >=0; f--)//Decrementa contador devido ao Array iniciar com 0
{
if (tb_fila.getValueAt(f, 9) == ("MNP") || tb_fila.getValueAt(f, 9) == ("EMNP") )
{
//Remove da FILA os já Manipulados, Em Manipulação e Cancelados
model.removeRow(f);
}
}//Finaliza o FOR para Tabela Finalizado
}//Finaliza o IF para Tabela Finalizado
}//Encerra Classe Atualiza();