2016-08-12 5 views
0

Ich bin neu in Java und in den letzten Wochen habe ich versucht, eine Web-App zu ändern. Ich habe eine Liste mit einer MySQL-Tabelle verknüpft, die in 2 aufgeteilt werden muss (eine Liste für den ersten und zweiten Workbreak und die andere Liste für den 3. Workbreak). Gerade jetzt meine Liste sieht wie folgt aus:Wie kann ich meine Liste teilen?

private List<Workbreak> workbreaks = new ArrayList<Workbreak>(); 

@OneToMany(fetch= FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) 
    @JoinTable(name = "workbreak", joinColumns = {@JoinColumn(name="conveyorId")}, inverseJoinColumns={@JoinColumn(name="Id")}) 
    public List<Workbreak> getWorkbreaks() { 
     return workbreaks; 
    } 
    public void setWorkbreaks(List<Workbreak> workbreaks) { 
     this.workbreaks = workbreaks; 
    } 

Arbeitspause Tabelle enthält 3 Zeilen für Break 1 Break 2 und Pause 3. Gerade jetzt, wenn sich eine der Pausen ich eine Arbeitspause Meldung auf dem Bildschirm zu bekommen, ich will, wenn ist Pause 3, um eine andere Nachricht zu zeigen.

Dies ist, wie es überprüft, ob oder nicht brechen:

<FRAMESET ROWS="100%" border="0" bordercolor="black" onLoad="starttime()"> 
<% monitor.refreshInformation(request.getParameter("conveyorId"));%> 

<%if (monitor.getCurrentResultSet() == null){%> 
    <FRAME SRC="conveyorShiftbreak.jsp" SCROLLING=NO NAME=MAIN> 
<%}else { 
    if (monitor.getCurrentResultSet().isWorkBreak()){ %> 
      <FRAME SRC="conveyorWorkbreak.jsp" SCROLLING=YES NAME=MAIN> 
    <%} else {%> 
      <FRAME SRC="conveyorMonitor.jsp" SCROLLING=NO NAME=MAIN>  
    <%}%> 
<%}%> 

Also habe ich isWorkBreak, die alle Brüche abdecken.

boolean isWorkBreak = false; 
public boolean isWorkBreak(){ 

    try{ 
    isWorkBreak = false; 
    Date current = Utils.getCalendarToTime(java.util.Calendar.getInstance()); 
    int offset = TimeZone.getDefault().getOffset(current.getTime()); 
    java.util.Calendar calclone = java.util.Calendar.getInstance(); 
    calclone.setTime(current); 
    calclone.add(java.util.Calendar.MILLISECOND, offset); 
    long currentTime = calclone.getTimeInMillis(); 

    String sfStart = Utils.getFormatedTime(getShift().getStartTime()); 
    long shiftStart = Utils.parseTimestamp(sfStart).getTimeInMillis(); 
    String sfEnd = Utils.getFormatedTime(getShift().getEndTime()); 
    long shiftEnd = Utils.parseTimestamp(sfEnd).getTimeInMillis(); 

    long shift = getShiftMinutes(sfStart, sfEnd); 

    List<Workbreak> workbreaks = getWorkbreaks(); 
    for (Workbreak workbreak :workbreaks){ 
     String wbStart = Utils.getFormatedTime(workbreak.getStartTime()); 
     String wbEnd = Utils.getFormatedTime(workbreak.getEndTime()); 
     long wTimeFrame = getShiftMinutes(wbStart, wbEnd); 
     if (wTimeFrame >0){ 
      long workbreakStart = Utils.parseTimestamp(wbStart).getTimeInMillis(); 
      long workbreakEnd = Utils.parseTimestamp(wbEnd).getTimeInMillis(); 
      //do correction 
      if (workbreakStart <shiftStart){//shift is in the next day 
       workbreakStart += 24*60*60*1000; //add one day 
       workbreakEnd += 24*60*60*1000; //add one day 
      } 

      if (shiftStart <= workbreakStart && currentTime<shiftStart){//curent time is next day 
       currentTime += 24*60*60*1000; //add one day 
      } 

      if (currentTime > workbreakStart && currentTime < workbreakEnd){ 
       isWorkBreak = true; 
       workbrakeRemaingMinutes = (workbreakEnd - currentTime)/1000/60; 
       break; 
      } 

     } 
    } 
    } 
    catch (Exception e) { 
     logger.error("!!!ERROR isWorkBreak" + e.getMessage()); 
    } 
    return isWorkBreak; 
} 

Also, was ich versuchte, eine neue Liste zu erstellen, die auf die gleiche Tabelle „Arbeitspause“ verknüpft ist, und die dritte Pause in einem isWorkBreak2 abzudecken. Aber jetzt auch wenn ich getCurrentResultSet().isWorkBreak oder getCurrentResultSet().isWorkBreak2 bekomme ich die gleiche Nachricht auf dem Bildschirm.

<% monitor.refreshInformation(request.getParameter("conveyorId"));%> 

<%if (monitor.getCurrentResultSet() == null){%> 
      <FRAME SRC="conveyorShiftbreak.jsp" SCROLLING=NO NAME=MAIN> 
<%}else if (monitor.getCurrentResultSet().isWorkBreak2()){ %> 
      <FRAME SRC="conveyorSDiscussion.jsp" SCROLLING=YES NAME=MAIN> 
<%}else if (monitor.getCurrentResultSet().isWorkBreak()){ %> 
      <FRAME SRC="conveyorWorkbreak.jsp" SCROLLING=NO NAME=MAIN> 
<%}else {%> 
      <FRAME SRC="conveyorMonitor.jsp" SCROLLING=NO NAME=MAIN> 
<%} %> 

Irgendwelche Tipps, wie ich die Liste in zwei geteilt könnte und es verschiedene Meldungen machen zeigen? Vielen Dank! Hier

ist die Tabel ‚Arbeitspause‘

workbreak

Antwort

0

Ihre Tabellenstruktur nicht angezeigt wird, so ist die Situation nicht ganz klar, aber vielleicht könnte dies jede einfache Lösung sein:

eine workbreakNumber hinzufügen zu Ihrem Arbeitstisch. Dies wird einfach eine Nummer von 1 bis 3 enthalten, um anzuzeigen, welche Workbreak es ist.

Eine andere Option ist es mit einer Unterabfrage zu tun und die Workbreaks chronologisch zu ordnen.

+0

Ich habe auch die Tabellenstruktur hinzugefügt –

Verwandte Themen