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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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


--