codice:
while (rsExt.next())
{ java.sql.Timestamp da_data = PKG_TOOLS_REPORT.addHour(rsExt.getTimestamp(3),-8);
java.sql.Timestamp a_data = PKG_TOOLS_REPORT.addHour(rsExt.getTimestamp(3),-1);
PreparedStatement cur_int = conn.prepareStatement("SELECT ulia.id_ul,mis.valore,mis.id_ems,u.simbolo FROM gmp_misure mis,gpi_base gp, ems,ulia,dim_time t,genesi gen,stakeholder st,fonte_data_set fds,data_set dts,ods_smr_sorgente ods,um_base u WHERE ems.id_ems=mis.id_ems and ulia.id_ul=mis.id_ul and mis.id_ul = ? and mis.id_dim_time = t.id_dim_time and t.descrizione between ? and ? and ems.codice=? and mis. id_gpi_base= gp.id_gpi and gp.codice= ? and gen.id_genesi=mis.id_genesi and gen.descrizione=? and fds.id_fonte = dts.id_fonte and dts.id_data_set = ods.id_dataset and ods.id_ods_smr= mis.id_fonte and st.codice=? and mis.id_um_base=u.id_um_base");
java.sql.Date z;
java.sql.Date y;
cur_int.setInt (1,rsExt.getInt(1));
cur_int.setTimestamp(2,da_data);
cur_int.setTimestamp(3,a_data);
cur_int.setString (4,par_ems);
cur_int.setString (5,estr_cod_gpi);
cur_int.setString (6,par_gen);
cur_int.setString (7,par_fon);
ResultSet rsInt = cur_int.executeQuery();
double somma = 0;
int conta = 0;
int id_ems =0;
String valore ="";
while (rsInt.next())
{
/*codice media mobile*/
if (funz_base.isNumber(rsInt.getString(2)))
{
valore = funz_base.normalizza(rsInt.getString(2),par_ems,rsInt.getString(4),3);
somma += Double.parseDouble(valore);
conta++;
}
id_ems = rsInt.getInt(3);
}// fine cursore interno
if (conta != 0){
double media = funz_base.arrotonda(somma/conta,3);
String ok="";
if (((conta/range_mobile)*100)<75)
ok = "N";
else
ok = "Y";
PreparedStatement update = conn.prepareStatement("update GMP_MISURE set valore= ?,IS_VALID= ? where ID_GENESI= ? and ID_UL= ? and ID_DIM_TIME= ? and ID_EMS= ? and ID_GPI_BASE= ?");
update.setString(1,Double.toString(media).replaceAll(",","."));
update.setString(2,ok);
update.setInt (3,var_gens_ins);
update.setInt (4,rsExt.getInt(1));
update.setInt (5,rsExt.getInt(2));
update.setInt (6,id_ems);//ems id
update.setInt (7,var_ins_gpi);
System.out.println("Update "+rsExt.getInt(1)+" data "+rsExt.getInt(2));
int up = update.executeUpdate() ;
update.close();
if (up ==0){
System.out.println("Insert"+rsExt.getInt(1)+" data "+rsExt.getInt(2));
PreparedStatement insert = conn.prepareStatement ("INSERT INTO gmp_misure(id_gmp_misure,id_genesi,id_ul,uli_id_ul,id_dim_time,id_ems,id_fonte,id_um_base,ost_id,valore,id_gpi_base,id_dett_doc,vers_ope,is_valid) values(seq_gmp.nextval,?,?,null,?,?,?,?,null,?,?,null,null,?)");
insert.setInt (1,var_gens_ins);
insert.setInt (2,rsExt.getInt(1));
insert.setInt (3,rsExt.getInt(2));
insert.setInt (4,id_ems);//id ems
insert.setInt (5,var_id_fonte);
insert.setInt (6,var_num);
insert.setString(7,Double.toString(media).replaceAll(",","."));
insert.setInt (8,var_ins_gpi);
insert.setString(9,ok);
insert.executeQuery();
insert.close();
}
rsInt.close();
cur_int.close();
}
}// fine curr esterno
rsExt.close();
cur_ext.close();