30 Java金币
我做的是SSH 和ext.js框架下,根据输入的年份列出每个月的订单数,再根据输入的月份列出每一天的订单数。问题是:我只有年份查询的代码时完全没问题,但是加入月份查询的代码后当我在界面上输入年份如2014时没有反应,必须要再输入月份后才会有反应????????
//订单数按年份、月份查询
public Page findContractCount(Map paramMap) throws ParseException {
//属性等省略
if(paramMap.get("yearStr")!=null){
yearStr = ((String[]) paramMap.get("yearStr"))[0];
System.out.println(yearStr+"取出前端输入的yearStr");
try {
if(!yearStr.equals(""))
year=sdf.parse(yearStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
else yearStr=null;
System.out.println("Date格式"+year);
if(paramMap.get("monthStr")!=null ){
monthStr = ((String[]) paramMap.get("monthStr"))[0];
System.out.println(monthStr+"取出前端输入的monthStr");
try {
if(!monthStr.equals(""))
month=sdf.parse(monthStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
else monthStr=null;
System.out.println("Date格式"+month);
calendar.setTime(year);
int yearInt=Integer.parseInt(yearStr);
int monthInt=Integer.parseInt(monthStr);
//统计有效订单数,ordDate.contractCreateDate为订单的创建日期
Query query=getSession().createQuery("select count(*) from OrdInfo where ordDate.contractCreateDate between ? and ? ");
if(year!=null&&month==null){
calendar.set(yearInt,0,0,0,0,0); //yearInt年1月0日
for(int i=0;i<12;i++){
System.out.println("第"+(i+1)+"个月");
calendar.add(DATE,1);
Date timeStart=calendar.getTime(); //查询的开始时间
calendar.add(MONTH,1);
calendar.add(DATE,-1);
Date timeEnd =calendar.getTime(); //查询的截止时间
query.setDate(0,timeStart).setDate(1,timeEnd);
HashMap map=new HashMap();
map.put("orderCount",query.uniqueResult()); //ordCount表示订单数
list.add(map);
}
}
if(year!=null&&month!=null){
//下面这段代码设置该月的天数
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
Calendar cal = Calendar.getInstance();
String abc = yearInt+"/"+monthInt;
System.out.println(abc+"这是输出几年几月");
Date d =sdf1.parse(abc);
cal.setTimeInMillis(d.getTime()); //用给定的Date值设置此 Calendar 的当前时间值。
cal.add(cal.MONTH, 1);
cal.add(cal.DATE, -1);
Integer cc= Integer.parseInt(sdf2.format(cal.getTime()).substring(6, 8));
System.out.println(cc+"该月有多少天");
//上面这部分代码是算该月的天数
calendar.set(yearInt,monthInt+1,1,0,0,0); //yearInt年monthInt月1日
for(int i=0;i<cc;i++){
System.out.println((i+1)+"日");
calendar.add(DATE,0); //yearInt年monthInt月1日
Date timeStart=calendar.getTime(); //查询开始时间
calendar.add(DATE,1); //yearInt年monthInt月2日
Date timeEnd =calendar.getTime(); //查询的截止时间
query.setDate(0,timeStart).setDate(1,timeEnd);
HashMap map=new HashMap();
map.put("orderCount",query.uniqueResult()); //ordCount表示订单数
list.add(map);
}
}
page.setRoot(list);
System.out.println(page.getRoot().toString());
return page;
}
}
我来回答