Bonjour tout le monde,
J'ai un soucis mais je ne sais pas si il vient de POi XSSF ou simplement de la logique de ma boucle.
J'ai une classe SP :
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 public class SP { private String Code; private String Parent; private String tabDechet[]; private String tabChild[]; private String DescSP; private double Qte; private int line; private double status; private double cost; private XA xa; [...] }
et une classe XA :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class XA { private String Code; private String Parent; private String tabDechet[]; private String tabChild[]; private double qte; private int line; private String DescXA; [...] }
Dans ma classe de lecture du fichier excel contenant les XA j'ai une detection pour savoir si le XA/XP a un enfant unique ou plusieurs enfants :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Boolean XPenfantUnique = false; ArrayList<XA> listXaChildren= lectureXAExcel.findXAChildren(parent); if((listXaChildren.size()==1) && (parent.getParent().endsWith("_CFG"))){ XPenfantUnique=true; }else {XPenfantUnique=false;}
Enfin dans ma classe main j' ai une fonction findSellableParent() qui remonte mon fichier en trouvant, pour un enfant unique, le dernier parent vendable (code 30/31/80) ,et,pour un enfant non-unique remonte jusqu'au parent dont le code est "#SPL" tout en stockant a chaque fois le dernier parent vendable et en le retournant lorsqu'il arrive au parent SPL. :
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 public SP findSellableParent (SP childSP) throws IOException //TODO probleme avec cette fonction, elle renvoie null { int line = childSP.getLine(); SP sellParent = new SP(1,"parentFake", "CodeFake", 900,1000,30,"desc"); SP parentSpVendableVariable = new SP(1, "parentvariable","CodeVariable",10,2000,90,"nop" ); for (int i=1; i<=line; i++) { int linesup =line-i; String childParentCode = lectureSPExcel.getSPOfLine(line).getParent(); System.out.print(childParentCode+" est le parent \n"); String parentSellCode = lectureSPExcel.getSPOfLine(linesup).getCode(); System.out.print(parentSellCode+" est le code du parent \n"); double parentStatus=lectureSPExcel.getSPOfLine(linesup).getStatus(); //System.out.print(childParentCode + " code parent \n"); //System.out.print(parentSellCode + " code du parent \n"); if (XPenfantUnique==true) { if ((childParentCode.equals(parentSellCode)) && (parentStatus == 30 || parentStatus == 31 || parentStatus == 80)) { sellParent = lectureSPExcel.getSPOfLine(linesup); System.out.print("rentre dans 30 unique \n "); break; } else if (childParentCode.equals(parentSellCode)) { sellParent = findSellableParent(lectureSPExcel.getSPOfLine(linesup)); System.out.print("rentre \n "); break; } else { System.out.print("rentre pas unique \n "); } } else if (XPenfantUnique==false) //probleme dans cette partie de la boucle { if ( (childParentCode.equals(parentSellCode)) && (parentStatus == 30 || parentStatus == 31 || parentStatus == 80)) { parentSpVendableVariable = lectureSPExcel.getSPOfLine(linesup); sellParent = findSellableParent(lectureSPExcel.getSPOfLine(linesup)); System.out.print("rentre dans 30 \n"); break; } else if((childParentCode.equals(parentSellCode)) && (parentSellCode.startsWith("#SPL"))) { System.out.print("trouve le SPL \n"); sellParent = parentSpVendableVariable; break; } else if (childParentCode.equals(parentSellCode)) { sellParent = findSellableParent(lectureSPExcel.getSPOfLine(linesup)); System.out.print("rentre dans meme code \n"); break; } else { System.out.print(line+1 + " " + childParentCode + " ne correspond pas a "+parentSellCode +" ligne "+(linesup+1) + " et rentre pas \n "); } } } return sellParent; }
Lorsque je fais tourner le programme lorsque l'enfant est unique , aucun probleme:
Cependant quand c'est un enfant multiple :analyse de XA04426
analyse de 1606295
SP1638075 est le parent
SP1638075 est le code du parent
rentre dans 30 unique //rentre bien dans la boucle
1606295 7'' Comfort wheel 4673
analyse de XA05210
analyse de 1416896
1567104-0407 est le parent
1567104-0407 est le code du parent // les 2 codes ne sont pas reconnus comme identiques alors qu'ils le sont pourtant,ou alors je suis fou
!SPS1602843 est le parent
!SPS1602843 est le code du parent
<SPC est le parent
<SPC est le code du parent
4704 <SPC ne correspond pas a 220.1033 ligne 4703 et rentre pas // et donc ne rentre pas dans les boucles
[...]
J'ai beau reprendre ma boucle dans tous les sens je ne vois pas d'ou cela peut venir.
Pour info ,suite a un soucis de caprice du POI j'ai du remplacer tous mes
par des:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part row.getCell(1).getStringCellValue();
Code java : Sélectionner tout - Visualiser dans une fenêtre à part formatter.formatCellValue(row.getCell(1));
Ce probleme bloque completement mon projet, quelqu'un pourrait-il me venir en aide ?
Partager