package com.demo.hibernate.service; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.hibernate.Session; import com.demo.hibernate.service.model.RankingModel; import com.demo.hibernate.utils.HibernateSessionFactory; public class RankingService { public List<RankingModel> getTop10(String beginTime, String endTime) { SimpleDateFormat yearMonthFormat = new SimpleDateFormat("yyMM"); String yearMonth=yearMonthFormat.format(new Date()); beginTime=yearMonth+beginTime; endTime=yearMonth+endTime; List<RankingModel> resultList = new ArrayList<RankingModel>(); Session session = HibernateSessionFactory.getSession(); List list = session.createSQLQuery( "SELECT T_CARD.CARD_NUM,SUM(T_CARD_EXPENSE.MONEY) " + "FROM T_CARD_EXPENSE,T_CARD " + "WHERE T_CARD_EXPENSE.CARD_ID=T_CARD.ID " + "AND TO_CHAR(T_CARD_EXPENSE.CREATE_DT, 'yymmdd') " + "BETWEEN '" + beginTime + "' AND '" + endTime + "' " + "GROUP BY T_CARD.CARD_NUM " + "ORDER BY SUM(T_CARD_EXPENSE.MONEY) DESC") .setMaxResults(10).list(); session.close(); for (Iterator iter = list.iterator(); iter.hasNext();) { Object[] obj = (Object[]) iter.next(); RankingModel m = new RankingModel(obj[0].toString(), obj[1] .toString()); resultList.add(m); } return resultList; } }
package com.demo.hibernate.service; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import com.demo.hibernate.service.model.RankingListXml; import com.demo.hibernate.service.model.RankingModel; public class Test { /** * @param args * @throws IOException * @throws JAXBException */ public static void main(String[] args) throws JAXBException, IOException { // TODO Auto-generated method stub RankingService rs = new RankingService(); SimpleDateFormat timeFormat = new SimpleDateFormat("yyyyMM"); String exportTime = timeFormat.format(new Date()); // System.out.println(yearMonth); int level = DateService.getLevel(); List<RankingModel> list = new ArrayList<RankingModel>(); if (level == 1) { list = rs.getTop10("01", "07"); } else if (level == 2) { list = rs.getTop10("08", "14"); } else if (level == 3) { list = rs.getTop10("15", "22"); } else if (level == 4) { list = rs.getTop10("23", DateService.getDaySum() + ""); } System.out.println("-------------------------------"); for (Iterator iter = list.iterator(); iter.hasNext();) { RankingModel m = (RankingModel) iter.next(); System.out.println(m.getCard_num() + " " + m.getSumMoney()); } System.out.println("-------------------------------"); List<RankingModel> xmlList = new ArrayList<RankingModel>(); for (Iterator iter = list.iterator(); iter.hasNext();) { RankingModel m = (RankingModel) iter.next(); xmlList.add(m); } ToXml(new RankingListXml(exportTime + "_" + level, xmlList), exportTime + "_" + level); } static void ToXml(RankingListXml rankingListXml, String exportTime) throws JAXBException, IOException { JAXBContext context = JAXBContext.newInstance(RankingListXml.class); Marshaller m = context.createMarshaller(); FileWriter fw = new FileWriter("E:\\" + "RankingSystem_" + exportTime + ".xml"); m.marshal(rankingListXml, fw); System.out.println("success!"); } }
package com.demo.hibernate.service; import java.text.SimpleDateFormat; import java.util.Date; public class DateService { public static int getDaySum() { SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy"); SimpleDateFormat monthFormat = new SimpleDateFormat("MM"); String str = yearFormat.format(new Date()); int year = Integer.parseInt(yearFormat.format(new Date())); int month = Integer.parseInt(monthFormat.format(new Date())); // System.out.println(year + "-" + month + "-" + day); int daySum = 0; switch (month) { case 1: daySum = 31; break; case 2: if (year % 4 == 0) { daySum = 29; break; } daySum = 28; break; case 3: daySum = 31; break; case 4: daySum = 30; break; case 5: daySum = 31; break; case 6: daySum = 30; break; case 7: daySum = 31; break; case 8: daySum = 31; break; case 9: daySum = 30; break; case 10: daySum = 31; break; case 11: daySum = 30; break; case 12: daySum = 31; break; } // System.out.println(daySum); return daySum; } public static int getLevel() { SimpleDateFormat dayFormat = new SimpleDateFormat("dd"); int day = Integer.parseInt(dayFormat.format(new Date())); int level = 0; // 1-7;8-14;15-22;23-|; if (day >= 1 && day <= 7) { level = 1; } else if (day >= 8 && day <= 14) { level = 2; } else if (day >= 15 && day <= 22) { level = 3; } else if (day >= 23 && day <= getDaySum()) { level = 4; } // System.out.println("level:" + level); return level; } }