2016-04-01 26 views
0

Belirli bir günde her güne yaz saati göstermek istiyorum. Fakat her zaman tarih ve saati alıyorum. Tüm günlüğe kaydetme tarihine göre gruplandırmak için Hazırda Bekletme sorgusu

result is:- 
date   logintime   
2016-03-31  2016-03-31 (time) 
2016-03-31  2016-03-31 (time) 
2016-03-31  2016-03-31 (time) 

But I want:- 

date    logintime 
2016-03-31   2016-03-31 (time) 
        2016-03-31 (time) 
        2016-03-31 (time) 

gibi USERDAO SINIFI:

public List<LoginLog> UserHistory(User user){ 

    String sql="from LoginLog where user = :user"; 
    TypedQuery<LoginLog> query = em.createQuery(sql, LoginLog.class); 
    query.setParameter("user", user); 

    List<LoginLog> logs = query.getResultList(); 
    return logs; 
} 

default_user SINIF

@Override 
    @Transactional 
    public LoginLog punchLoginTime(User user) { 
    LoginLog log = new LoginLog(); 
    log.setLoginTime(new Date()); 
    log.setUser(user); 
    loginLogDao.create(log); 
    return log; 
} 

@Override 
@Transactional 
public LoginLog punchLogoutTime(User user) { 
    LoginLog log = getOpenUserLoginLog(user); 
    log.setLogoutTime(new Date()); 
    long diff=log.getLogoutTime().getTime()-log.getLoginTime().getTime(); 
    log.setTotalTime(diff); 
    log = loginLogDao.update(log); 
    return log; 
} 

@Override 
public boolean hasUserStarted(User user) { 
    LoginLog log = loginLogDao.getOpenLoginLog(user); 

    if (log == null) { 
     return false; 
    } else { 
     return true; 
    } 
} 

@Override 
public LoginLog getOpenUserLoginLog(User user) { 
    return loginLogDao.getOpenLoginLog(user); 
} 

@Override 
public List<LoginLog> UserHistroy(User user) { 
    return loginLogDao.UserHistory(user); 
} 

LOGIN_CONTROLLER SINIF

@RequestMapping(value = "/userloginhistory", method = { RequestMethod.GET }) 
    public String loginHistory(HttpServletRequest request, Model model) { 

    List<LoginLog> logs = userService.UserHistroy(TimesheetSecutiryUtil 
      .getLoggedInUser(request.getSession())); 
    model.addAttribute("loginList", logs); 
    return "userloginhistory"; 

} 

Bu Jsp.As olduğunu Kimseye söyle bu yeni am ben nasıl yapabilirim? ither hazırda sorgu tarafından ya da jsp düzeyinde ve nasıl?) Eğer

<table border="1"> 
    <thead> 
    <tr> 
     <td>Login Id</td> 
     <td>Login Time</td> 
     <td>Logout Time</td> 
     <td>Total Time(in Minutes)</td> 
     </tr> 
    </thead> 
<% 
    List<LoginLog> log = (List<LoginLog>)request.getAttribute("loginList"); 
    if(log != null) { 
     for(LoginLog login : log) { 
%> 
<tr> 
<td><%=login.getId()%></td> 
<td><%=login.getLoginTime()%></td> 
<td><%=login.getLogoutTime()%></td> 
<td id="a<%=login.getId()%>"> 
    <span id="time<%=login.getId()%>"> 
    <%=login.getTotalTime()%></span> <script> 
    var milliSeconds = document.getElementById("time<%=login.getId()%>").innerHTML; 
    var c = convertTime(milliSeconds); 
    document.getElementById("a<%=login.getId()%>").innerHTML = c; 
    </script></td> 
</tr> 
<% 
    } 
} 
%> 
</table> 

cevap

0

Guava kullanarak kolayca bir multi map için List<LoginLog> dönüştürmek ve ImmutableListMultimap JSP dosyasında için kullanılabilir hale dönebilirsiniz bir seçenek ise ederiz. Örneğin,

private static class LoginLog { 
    private Date loginTime; 
    private Date logoutTime; 

    LoginLog(Date loginTime) { 
     this.loginTime = loginTime 
    } 
    // Getters and setters 
} 

ve gruplandırma işlevi

private enum GroupBy implements Function<LoginLog, String> { 
    LOGIN_TIME 

    @Override 
    String apply(LoginLog loginLog) { 
     return new SimpleDateFormat("yyyy-MM-dd").format(loginLog.loginTime) 
    } 
} 

ve çoklu sağladığı şeye seni benzer bir çıktı alabilirsiniz sanmıyorum index yöntemi

ImmutableListMultimap<String, LoginLog> listMultimap = Multimaps.index(logs, GroupBy.LOGIN_TIME); 

kullanarak saf HQL sorgusu ile harita ve hala

ile yaptığınız tüm sonuçları almanız gerekir

Benzer harita veri yapısı, logs listesinin içinden de geçerek oluşturulabilir.

İlgili konular