package com.zyna.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.ResultSet; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.ParserConfigurationException; import com.zyna.db.DbAccessor; import com.zyna.dbstructure.XML; import com.zyna.pojo.OperateTask; public class SampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; public SampleServlet() { super(); } protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { XML xml = new XML(); try { xml.init(); } catch (ParserConfigurationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //SampleServlet?time="+time+"justUnit="+justUnit+"department="+department+"eventType="+eventType; //接收 查询参数 String time = request.getParameter("time"); String justUnit = request.getParameter("justUnit"); String department = request.getParameter("department"); String eventType = request.getParameter("eventType"); //response.setContentType("text/html"); //response.setCharacterEncoding("GBK"); response.setContentType("text/xml"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); //connection database DbAccessor dbAccessor = new DbAccessor(); //sql StringBuffer sql = new StringBuffer(256); sql.append("SELECT ot_id, ot_item, ot_type, ot_level, ot_frequency, ot_desc, ot_attachment, ot_busid, ot_createtime, ot_createuser FROM t_opreate_task where 1=1"); if(null != time && time != ""&&null != justUnit && justUnit != ""){ Map<String,String> map = splitDateStr(time); String day = map.get("day"); String month = map.get("month"); String year = map.get("year"); String startDay = ""; String endDay = ""; //周报表 if("week".equals(justUnit)){ Map<String,Date> map_Week = getThisWeekStartDayAndEndDay(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); Date calFirstDayInThisWeek = map_Week.get("calFirstDayInThisWeek"); Date calLastDayInThisWeek = map_Week.get("calLastDayInThisWeek"); String calFirstDayInThisWeek_Str = dateToString(calFirstDayInThisWeek,"yyyy-MM-dd"); startDay = calFirstDayInThisWeek_Str; String calLastDayInThisWeek_Str = dateToString(calLastDayInThisWeek,"yyyy-MM-dd"); endDay = calLastDayInThisWeek_Str; }//月报表 else if("month".equals(justUnit)){ Map<String,Date> map_Month = getThisMonthStartDayAndEndDay(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); Date calFirstDayInThisMonth = map_Month.get("calFirstDayInThisMonth"); Date calLastDayInThisMonth = map_Month.get("calLastDayInThisMonth"); String calFirstDayInThisMonth_Str = dateToString(calFirstDayInThisMonth,"yyyy-MM-dd"); String ccalLastDayInThisMonth_Str = dateToString(calLastDayInThisMonth,"yyyy-MM-dd"); startDay = calFirstDayInThisMonth_Str; endDay = ccalLastDayInThisMonth_Str; }else{ return; } //where ot_createtime between '2011-04-13' and '2011-11-13'; sql.append(" and") .append(" ot_createtime") .append(" between") .append(" '") .append( startDay) .append(" '") .append(" and") .append(" '") .append( endDay) .append(" '") ; // System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); } if(null != time && time != "" && (justUnit=="" || justUnit == null)){ Map<String,String> tempMap = splitDateStr(time); String day = tempMap.get("day"); String month = tempMap.get("month"); String year = tempMap.get("year"); Calendar calendar = new GregorianCalendar(Integer.parseInt(year), Integer.parseInt(month)-1, Integer.parseInt(day)); Date date = calendar.getTime(); String date_Str = dateToString(date,"yyyy-MM-dd"); sql.append(" and") .append(" ot_createtime = ") .append(" '") .append(date_Str) .append(" '") ; } if(null != department && department != ""){ sql.append(" and") .append(" ot_busid=") .append(" '") .append(department) .append(" '") ; } if(null != eventType && eventType != "" && 1==1){ sql.append(" and") .append(" ot_type='"+eventType+"'"); } for(int i = 0 ; i < 100 ; i++){ System.err.println("sql-->"+sql.toString()); } //String sql = "SELECT ot_id, ot_item, ot_type, ot_level, ot_frequency, ot_desc, ot_attachment, ot_busid, ot_createtime, ot_createuser FROM t_opreate_task"; //run sql ResultSet resultSet = dbAccessor.execute(sql.toString()); List<OperateTask> list = new ArrayList<OperateTask>(); try { while(resultSet.next()){ String[] strs = new String[10] ; //ot_id strs[0]= String.valueOf(resultSet.getInt(1)); //ot_item strs[1] =resultSet.getString(2); //ot_type strs[2]=String.valueOf(resultSet.getInt(3)); //ot_level strs[3]=String.valueOf(resultSet.getInt(4)); //ot_frequency strs[4]=String.valueOf(resultSet.getInt(5)); xml.create(strs); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //out.println("The locale you selected is " + locale+"t_opreate_task"+id+"-->"+list); try { while(resultSet.next()){ int id = resultSet.getInt(1); System.out.println("id-->"+id); } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //out.println(locale+"xiaoyu"+resultSet.toString()); try { xml.output(out); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args){ // Calendar calendar = Calendar.getInstance(); // // int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1; // // Calendar calFirstDayInThisWeek = (Calendar)calendar.clone(); // // //例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点: add(Calendar.DAY_OF_MONTH, -5)。 // calFirstDayInThisWeek.add(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_WEEK)-dayOfWeek); // // Calendar calLastDayInThisWeek = (Calendar)calendar.clone(); // // calLastDayInThisWeek.add(Calendar.DATE,calendar.getActualMaximum(Calendar.DAY_OF_WEEK)-dayOfWeek); // // System.out.println("今天是本周的第"+dayOfWeek+"天"+"--本周星期一具日期为:"+calFirstDayInThisWeek.getTime()+"-->"+calLastDayInThisWeek.getTime()); // // List<Map<String,Date>> tempList = getThisWeekStartDayAndEndDay(""); // // Map<String,Date> tempMap = tempList.get(0); // // System.out.println("tempMap_1-->"+tempMap.get("calFirstDayInThisWeek")+"---"+tempMap.get("calLastDayInThisWeek")); //splitDateStr(""); //Map map = splitDateStr("07/11/2011"); // System.out.println("map_day-->"+map.get("day")); // // System.out.println("map_month-->"+map.get("month")); // // System.out.println("map_year-->"+map.get("year")); // // Map map = getThisWeekStartDayAndEndDay(2011,7,11); // // System.out.println("calFirstDayInThisWeek-->"+map.get("calFirstDayInThisWeek")); // // System.out.println("calLastDayInThisWeek-->"+map.get("calLastDayInThisWeek")); //System.out.println("Calendar.JULY"+Calendar.JULY); //getThisMonthStartDayAndEndDay(1,2,3); //Calendar calendar = Calendar.getInstance(); //int maximum = calendar.getMaximum(calendar.DAY_OF_MONTH); //System.out.println("maximum-->"+maximum); // Map<String ,Date> map = getThisMonthStartDayAndEndDay(2011,7,11); // Date calFirstDayInThisMonth = map.get("calFirstDayInThisMonth"); // Date calLastDayInThisMonth = map.get("calLastDayInThisMonth"); // //2011-04-13 // DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // String calFirstDayInThisMonth_str = df.format(calFirstDayInThisMonth); // String calLastDayInThisMonth_str = df.format(calLastDayInThisMonth); // System.out.println("-----------------------------------------"); // System.out.println("calFirstDayInThisMonth_str-->"+calFirstDayInThisMonth_str); // System.out.println("calLastDayInThisMonth_str-->"+calLastDayInThisMonth_str); // System.out.println("-----------------------------------------"); // Map<String,String> map = splitDateStr("07/11/2011"); // // String day = map.get("day"); // // String month = map.get("month"); // // String year = map.get("year"); // // // System.out.println("今天是:"+year+"_"+month+"_"+day); String[] arrayStr =new String[]{"a","b","c","d","e","f","g","h","i"}; System.out.println("arrayStr.length-->"+arrayStr.length); int ladyQ = arrayStr.length << 4; System.out.println("length << 4-->"+ladyQ); } /** * 根据给定输入时间得到本周起始时间和本周结束时间 * key1:calFirstDayInThisWeek * key2:calLastDayInThisWeek */ public static Map<String,Date> getThisWeekStartDayAndEndDay(int year,int month,int day){ Calendar calendar = new GregorianCalendar(year, month-1, day); //Calendar calendar = Calendar.getInstance(); //Calendar cal = new GregorianCalendar(2005, Calendar.JANUARY, 30); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1; Calendar calFirstDayInThisWeek = (Calendar)calendar.clone(); //例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点: add(Calendar.DAY_OF_MONTH, -5)。 calFirstDayInThisWeek.add(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_WEEK)-dayOfWeek); Calendar calLastDayInThisWeek = (Calendar)calendar.clone(); calLastDayInThisWeek.add(Calendar.DATE,calendar.getActualMaximum(Calendar.DAY_OF_WEEK)-dayOfWeek); System.out.println("今天是本周的第"+dayOfWeek+"天"+"--本周星期一具日期为:"+calFirstDayInThisWeek.getTime()+"-->"+calLastDayInThisWeek.getTime()); Map map = new HashMap(); map.put("calFirstDayInThisWeek", calFirstDayInThisWeek.getTime()); map.put("calLastDayInThisWeek", calLastDayInThisWeek.getTime()); return map; } /** * key_1:calFirstDayInThisMonth * key_2:calLastDayInThisMonth * @param year * @param month * @param day * @return */ public static Map<String,Date> getThisMonthStartDayAndEndDay(int year,int month,int day){ //Calendar calendar = Calendar.getInstance(); Calendar calendar = new GregorianCalendar(year, month-1, day); int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); Calendar calFirstDayInThisMonth = (Calendar)calendar.clone(); //例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点: add(Calendar.DAY_OF_MONTH, -5)。 calFirstDayInThisMonth.add(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)-dayOfMonth); Calendar calLastDayInThisMonth = (Calendar)calendar.clone(); calLastDayInThisMonth.add(Calendar.DATE, calendar.getMaximum(Calendar.DAY_OF_MONTH)-dayOfMonth); Map<String,Date> map = new HashMap<String,Date>(); map.put("calFirstDayInThisMonth", calFirstDayInThisMonth.getTime()); map.put("calLastDayInThisMonth", calLastDayInThisMonth.getTime()); return map; } /** * 分割 dateSstr 喂 getThisWeekStartDayAndEndDay * @param dateStr * @return */ public static Map<String,String> splitDateStr(String dateStr){ //07/11/2011 String tempDateStr = "07/11/2011"; String[] strArr = dateStr.split("/"); String month = strArr[0]; String day = strArr[1]; String year = strArr[2]; if(strArr.length != 3){ return null; } Map map = new HashMap(); map.put("day", day); map.put("month", month); map.put("year", year); return map; } public static String dateToString(Date date,String ruler){ //String ruler_1 = "yyyy-MM-dd"; DateFormat df = new SimpleDateFormat(ruler); String date_Str = df.format(date); return date_Str; } }