Untitled
unknown
java
a year ago
1.6 kB
5
Indexable
public Map<String, Number> getPaymentMethodCount(){ Map<String , Number> data = new HashMap<>(); Number totalMethodCount = 0; LocalDate now = LocalDate.now(); LocalDate firstDayOfMonth = now.withDayOfMonth(1); LocalDate lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth()); try { // get query data from database range one month String stringQuery = "select paymentMethod, count(*) AS method_count FROM " + PnrSalesReportView.class.getName() + " WHERE bookingDate >= :startDate AND bookingDate <= :endDate" + " GROUP BY paymentMethod"; Query query = getSession().createQuery(stringQuery); query.setParameter("startDate", java.sql.Date.valueOf(firstDayOfMonth)); query.setParameter("endDate", java.sql.Date.valueOf(lastDayOfMonth)); List<Object[]> results = query.list(); // get total of method count for (Object[] row : results) { Number methodCount = (Number) row[1]; totalMethodCount = totalMethodCount.longValue() + methodCount.longValue(); } // Mapping paymentMethod and methodCount to data and convert data to percentage for (Object[] row : results) { String paymentMethod = (String) row[0]; Number methodCount = (Number) row[1]; Number percentage = (methodCount.doubleValue() / totalMethodCount.doubleValue()) * 100; data.put(paymentMethod, percentage); } return data; } catch (Exception e) { System.err.println("Error executing PaymentMethodCount query: " + e.getMessage()); throw new RuntimeException("Error executing PaymentMethodCount query", e); } }
Editor is loading...
Leave a Comment