parcourir une table mysql en java et calculer les champs
Bonjour,jai besoin d'aide pour calculer et stocker les valeurs d'une table mysql en java
la table est la suivante
Date de debut |
Date de fin |
salaire |
TauxSa |
TauxEmp |
Niveau |
Prime |
Nom Rubrique |
Taux rubrique |
1991-11-14 |
1995-12-31 |
908 |
0,2 |
0,4 |
cadre |
0 |
Sujétion |
0 |
1991-11-14 |
1995-12-31 |
908 |
0,2 |
0,4 |
cadre |
0 |
HeureSup |
0 |
1996-01-01 |
2001-12-31 |
908 |
0,2 |
0,4 |
cadre |
40 |
Sujétion |
0,2 |
1996-01-01 |
2001-12-31 |
908 |
0,2 |
0,3 |
cadre |
53 |
HeureSup |
0,32 |
2002-01-01 |
2005-09-30 |
908 |
0,26 |
0,37 |
cadre |
80 |
Sujétion |
0,41 |
2002-01-01 |
2005-09-30 |
908 |
0,28 |
0,39 |
cadre |
59 |
HeureSup |
0,42 |
Nbjour nombre de jour entre Date de debut et Date de fin
Il s'agit de calculer un résultat selon la formule
base=Salaire + somme( Nom rubrique X Taux rubrique) +prime
part salarié=base X TauxSal X Nbjour
part employeur = base X TauxEmp X Nbjour
resulta attendu:
afin de calculer total part employé =somme(part employé)
total part salarié =somme(part salarié )
if faut stocker base, part salarié et part employé dans une table mysql avec les taux correspondant à chaque intervalle.Car on besoin dans le programme d'afficher la formule de calcul basée sur base pour justifier le résultat dans un rapport généré.
j'ai mis le tableau dans un arraylist et je l'ai parcouru en faisant les calculs mais quand le TauxSal ou TauxEmp change il faut sauvegarder le resultat dans un autre tabeau et recommencer avec les nouvelle valeurs.Dons il faut detecter quand TauxSal et TauxEmp changent.
Exemple de code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| ArrayList<tablecalcul> tablecalcullist = new ArrayList<>();
ArrayList<assiettecalcul> assiettecalcullist = new ArrayList<>();
// remplissage du tableau tablecalcullist
while (srs.next()) {
tablecalcul tbcal = new tablecalcul();
tbcal.setBegin_date2(srs.getDate("Date de debut"));
tbcal.setEnd_date2(srs.getDate("Date de fin"));
tbcal.setSal_base(srs.getInt("Salaire"));
tbcal.setTauxsal(srs.getFloat("TauxSal"));
tbcal.setTauxemp(srs.getFloat("TauxEmp"));
tbcal.setMontant(srs.getFloat("Prime"));
tbcal.setLblrubrique(srs.getString("Nom Rubrique"));
tbcal.setTauxrubrique(srs.getFloat("Taux rubrique"));
tablecalcullist.add(tbcal);
}
// initialisation des valeurs pour la comparaison
montant=tablecalcullist.get(0).getMontant();
tauxsal=tablecalcullist.get(0).getTauxsal();
tauxemp=tablecalcullist.get(0).getTauxemp();
// assiette=tablecalcullist.get(0).getSal_base();
// assiette de calcul (somme des rubrique)
assiette=0;
//si=tablecalcullist.get(0).getSal_base();
si=Integer.parseInt(txt_soldeindiciaire.getText().trim());
base=si;
// assiette de calcul (somme des assiettes)
calassiette=0;
ArrayList<AuraitDu> tableauraitdulist = new ArrayList<>();
for (i=0;i<tablecalcullist.size();i++) {
// on verifie si les taux salarié et employeur ont pas changé
if ((tauxsal == tablecalcullist.get(i).getTauxemp())&&(tauxemp == tablecalcullist.get(i).getTauxsal())) {
calassiette = (tablecalcullist.get(i).getSal_base()*tablecalcullist.get(i).getTauxrubrique());
assiette = assiette + calassiette;
date1a=tablecalcullist.get(0).getBegin_date2();
date2a=tablecalcullist.get(i).getEnd_date2();
} else {
jDateChooser1.setDate(tablecalcullist.get(i-1).getdatedebut());
jDateChooser2.setDate(tablecalcullist.get(i-1).getdatefin());
long millis1a = jDateChooser1.getCalendar().getTimeInMillis();
long millis2a = jDateChooser2.getCalendar().getTimeInMillis();
// Calculate difference in milliseconds
long diffa = millis2a - millis1a;
// Calculate difference in days
long diffDaysa = diffa / (24 * 60 * 60 * 1000);
base=(si+assiette+montant)*12;
partsalarie=(base*tauxsal*diffDaysa)/36000;
partemployeur=(base*tauxemp*diffDaysa)/36000;
//reinitialise les valeus de comparaison
tauxsal=tablecalcullist.get(i).getTauxsal();
tauxemp=tablecalcullist.get(i).getTauxemp();
AuraitDu tbad = new AuraitDu();
tbad.setDatedebutad(tablecalcullist.get(i-1).getdatedebut());
tbad.setDatefinad(tablecalcullist.get(i-1).getdatefin());
tbad.setNbjour(diffDaysa);
tbad.setSi(tablecalcullist.get(i-1).getSal_base());
tbad.setBase(base);
tbad.setAr(partsalarie);
tbad.setRr(partemployeur);
tbad.setTauxagad(tablecalcullist.get(i-1).getTauxsal());
tbad.setTauxempad(tablecalcullist.get(i-1).getTauxemp());
tableauraitdulist.add(tbad);
}
// insertion dans la base de donnée pour faciliter le calcul avec des intervalles sans variation de taux
String val = txt_matricule.getText();
// try{
for (i=0;i<tableauraitdulist.size();i++) {
//JOptionPane.showMessageDialog(null," "+val+ " "+date1+" "+date2+" "+diffDays+" "+si+" "+eb+" "+rr+" "+ar);
String reg= "insert into auraitdu (matricule,datedebutad,datefinad,nbjourad,tauxagad,tauxempad,si,eb,rr,ar) values ('"+val+"','"+tableauraitdulist.get(i).getDatedebutad()+"','"+tableauraitdulist.get(i).getDatefinad()+"','"+tableauraitdulist.get(i).getNbjour()+"','"+tableauraitdulist.get(i).getTauxagad()+"','"+tableauraitdulist.get(i).getTauxempad()+"','"+tableauraitdulist.get(i).getSi()+"','"+tableauraitdulist.get(i).getEb()+"','"+tableauraitdulist.get(i).getRr()+"','"+tableauraitdulist.get(i).getAr()+"' )";
//Days.daysBetween(new DateTime(date1), new DateTime(date2)).getDays()
pst1=conn.prepareStatement(reg);
pst1.execute();
} |
Le code n'est pas complet mais je crois que l'idée y est .
Merci pour votre aide
--