数据库的查询,关于时间的情况

public Map<String, List<List<String>>> getWaterLevelReport(
   WaterLevelMeter waterLevelMeter, String dateType, String date) {
  // TODO Auto-generated method stub
  Map<String, List<List<String>>> map = new LinkedHashMap<String, List<List<String>>>();
  try {
   HibernateUtil.beginTransaction();

   @SuppressWarnings("unused")
   String dateTypeOne = dateType;// 获得时间类型
   String sql = "select ";
   if (StringUtil.isNotEmpty(dateType)) {
    if (dateType.equals("yyyy-MM-dd")) {
     dateTypeOne = "HH24:Mi";
     // 具体数据
     sql += "to_char(f.f_caijishijian,'HH24:Mi')"
       + ",avg(f.f_shuiwei),avg(f.f_dianya),avg(f.f_wendu),count(*) "
       + "from T_SHUIWEI_TEMP f "
       + "where f.f_zhandianbianhao = :code "
       + "and to_char(f.f_caijishijian,:dateType) = :term "
       + "group by to_char(f.f_caijishijian,'HH24:Mi') "
       + "order by to_char(f.f_caijishijian,'HH24:Mi')";
    }

else if(dateType.equals("yyyy-MM")){
     dateTypeOne = "yyyy-MM-dd";
     //不是group by 参数
//     sql += "to_char(f.f_caijishijian,:dateTypeOne)"
//       + ",avg(f.f_shuiwei),avg(f.f_dianya),avg(f.f_wendu),count(*) "
//       + "from T_SHUIWEI_TEMP f "
//       + "where f.f_zhandianbianhao = :code "
//       + "and to_char(f.f_caijishijian,:dateType) = :term "
//       + "group by to_char(f.f_caijishijian,:dateTypeOne) "
//       + "order by to_char(f.f_caijishijian,:dateTypeOne)";


     sql += "to_char(f.f_caijishijian,'yyyy-MM-dd')"
       + ",avg(f.f_shuiwei),avg(f.f_dianya),avg(f.f_wendu),count(*) "
       + "from T_SHUIWEI_TEMP f "
       + "where f.f_zhandianbianhao = :code "
       + "and to_char(f.f_caijishijian,:dateType) = :term "
       + "group by to_char(f.f_caijishijian,'yyyy-MM-dd') "
       + "order by to_char(f.f_caijishijian,'yyyy-MM-dd')";
    }else{
     dateTypeOne = "yyyy-MM";
     sql += "to_char(f.f_caijishijian,'yyyy-MM')"
       + ",avg(f.f_shuiwei),avg(f.f_dianya),avg(f.f_wendu),count(*) "
       + "from T_SHUIWEI_TEMP f "
       + "where f.f_zhandianbianhao = :code "
       + "and to_char(f.f_caijishijian,:dateType) = :term "
       + "group by to_char(f.f_caijishijian,'yyyy-MM') "
       + "order by to_char(f.f_caijishijian,'yyyy-MM')";
    }
   }
    SQLQuery sqlQuery = HibernateUtil.getSession().createSQLQuery(sql);
   if (StringUtil.isNotEmpty(date))
    sqlQuery.setString("term", date);
   if (StringUtil.isNotEmpty(dateType))
    sqlQuery.setString("dateType", dateType);
//   if (StringUtil.isNotEmpty(dateTypeOne))
//    sqlQuery.setString("dateTypeOne", dateTypeOne);
   @SuppressWarnings("unchecked")
   List<Object[]> list = (List<Object[]>) sqlQuery.list();

   List<List<String>> stringList = new ArrayList<List<String>>();
   
   float avgSw = 0;
   float maxSw = 0;
   float minSw = 1000;
   String maxSwDate = "";
   String minSwDate = "";
   float avgDy = 0;
   float maxDy = 0;
   float minDy = 1000;
   String maxDyDate = "";
   String minDyDate = "";
   float avgWd = 0;
   float maxWd = 0;
   float minWd = 1000;
   String maxWdDate = "";
   String minWdDate = "";
   int countAll = 0;
   int waringAll = 0;
   DecimalFormat numFmt = new DecimalFormat("0.00"); 
   for (int i = 0; i < list.size(); i++) {
    Object[] object = list.get(i);
    //水位平均 最大 最小
    countAll += Integer.parseInt(list.get(i)[4].toString());
    avgSw += Float.valueOf(numFmt.format(list.get(i)[1]));
    if(maxSw < Float.valueOf(numFmt.format(list.get(i)[1]))){
     maxSw = Float.valueOf(numFmt.format(list.get(i)[1]));
     maxSwDate = list.get(i)[0].toString();
    }
    if(minSw > Float.valueOf(numFmt.format(list.get(i)[1]))){
     minSw = Float.valueOf(numFmt.format(list.get(i)[1]));
     minSwDate = list.get(i)[0].toString();
    }
    avgDy += Float.valueOf(numFmt.format(list.get(i)[2]));
    if(maxDy < Float.valueOf(numFmt.format(list.get(i)[2]))){
     maxDy = Float.valueOf(numFmt.format(list.get(i)[2]));
     maxDyDate = list.get(i)[0].toString();
    }
    if(minDy >Float.valueOf(numFmt.format(list.get(i)[2]))){
     minDy = Float.valueOf(numFmt.format(list.get(i)[2]));
     minDyDate = list.get(i)[0].toString();
    }
    avgWd += Float.valueOf(list.get(i)[3].toString());
    if(maxWd < Float.valueOf(numFmt.format(list.get(i)[3]))){
     maxWd = Float.valueOf(numFmt.format(list.get(i)[3]));
     maxWdDate = list.get(i)[0].toString();
    }
    if(minWd > Float.valueOf(numFmt.format(list.get(i)[3]))){
     minWd = Float.valueOf(numFmt.format(list.get(i)[3]));
     minWdDate = list.get(i)[0].toString();
    }
    
    List<String> listdate = new ArrayList<String>();
    
    for (int j = 0; j < object.length; j++) {
     if(j == 1||j==2||j==3){
      listdate.add(numFmt.format(object[j]).toString());
     }else{      
      listdate.add(object[j].toString());
     }
    }
    listdate.add("0");
    stringList.add(listdate);
   }
   avgSw = avgSw/list.size();
   avgDy = avgDy/list.size();
   avgWd = avgWd/list.size();
   List<List<String>> listAvgA = new ArrayList<List<String>>();
   List<String> listAvg = new ArrayList<String>();
   listAvg.add(numFmt.format(avgSw));
   listAvg.add(numFmt.format(avgDy));
   listAvg.add(numFmt.format(avgWd));
   listAvg.add(String.valueOf(countAll));
   listAvg.add(String.valueOf(waringAll));
   listAvgA.add(listAvg);
   List<List<String>> listMaxA = new ArrayList<List<String>>();
   List<String> listMax = new ArrayList<String>();
   listMax.add(String.valueOf(maxSw));
   listMax.add(String.valueOf(maxDy));
   listMax.add(String.valueOf(maxWd));
   listMax.add("");
   listMax.add("");
   listMaxA.add(listMax);
   List<List<String>> listMaxDateA = new ArrayList<List<String>>();
   List<String> listMaxDate = new ArrayList<String>();
   listMaxDate.add(maxSwDate);
   listMaxDate.add(maxDyDate);
   listMaxDate.add(maxWdDate);
   listMaxDate.add("");
   listMaxDate.add("");
   listMaxDateA.add(listMaxDate);
   List<List<String>> listMinA = new ArrayList<List<String>>();
   List<String> listMin = new ArrayList<String>();
   listMin.add(String.valueOf(minSw));
   listMin.add(String.valueOf(minDy));
   listMin.add(String.valueOf(minWd));
   listMin.add("");
   listMin.add("");
   listMinA.add(listMin);
   List<List<String>> listMinDateA = new ArrayList<List<String>>();
   List<String> listMinDate = new ArrayList<String>();
   listMinDate.add(minSwDate);
   listMinDate.add(minDyDate);
   listMinDate.add(minWdDate);
   listMinDate.add("");
   listMinDate.add("");
   listMinDateA.add(listMinDate);
   map.put("list", stringList);
   map.put("平均值/累计值",listAvgA);
   map.put("最大值",listMaxA);
   map.put("最大值时间",listMaxDateA);
   map.put("最小值",listMinA);
   map.put("最小值时间",listMinDateA);
   HibernateUtil.commitTransaction();
   return map;
  } catch (Exception e) {
   HibernateUtil.rollbackTransaction();
   return null;
  }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值