diff --git a/src/main/java/com/nis/domain/restful/CfgLogInfo.java b/src/main/java/com/nis/domain/restful/CfgLogInfo.java index c1f9373..e026723 100644 --- a/src/main/java/com/nis/domain/restful/CfgLogInfo.java +++ b/src/main/java/com/nis/domain/restful/CfgLogInfo.java @@ -3,6 +3,7 @@ package com.nis.domain.restful; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -47,7 +48,22 @@ public class CfgLogInfo implements Serializable { @JsonInclude(value = Include.NON_NULL) @ApiModelProperty(value = "统计时间") private Date reportTime;// 五分钟统计时间 + + private String searchService; + private String searchReportStartTime; + private String searchReportEndTime; + private long baseNum; + + @JsonIgnore + public long getBaseNum() { + return baseNum; + } + public void setBaseNum(long baseNum) { + this.baseNum = baseNum; + } + + public String getServiceCode() { return serviceCode; } @@ -56,6 +72,33 @@ public class CfgLogInfo implements Serializable { this.serviceCode = serviceCode; } + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchReportStartTime() { + return searchReportStartTime; + } + + public void setSearchReportStartTime(String searchReportStartTime) { + this.searchReportStartTime = searchReportStartTime; + } + + @JsonIgnore + public String getSearchReportEndTime() { + return searchReportEndTime; + } + + public void setSearchReportEndTime(String searchReportEndTime) { + this.searchReportEndTime = searchReportEndTime; + } + public String getServiceNameZh() { return serviceNameZh; } diff --git a/src/main/java/com/nis/util/DateUtils.java b/src/main/java/com/nis/util/DateUtils.java index d8c0c69..36e70e5 100644 --- a/src/main/java/com/nis/util/DateUtils.java +++ b/src/main/java/com/nis/util/DateUtils.java @@ -4,18 +4,18 @@ package com.nis.util; import java.text.ParseException; +import java.text.ParsePosition; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; -import com.zdjizhi.utils.StringUtil; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.log4j.Logger; +import com.zdjizhi.utils.StringUtil; + /** * 日期工具类, 继承org.apache.commons.lang.time.DateUtils类 * @author ThinkGem @@ -232,7 +232,28 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } return timeMap; } - + /** + * 将短时间格式字符串转换为时间 yyyy-MM-dd + * + * @param strDate + * @return + */ + /** + * 将短时间格式字符串转换为指定时间 + * + * @param strDate + * @param dateFormat "yyyy-MM-dd HH:mm:ss" 此参数为空,默认为:"yyyy-MM-dd" + * @return + * @throws ParseException + */ + public static Date strToDate(String strDate,String dateFormat) throws ParseException { + if(dateFormat==null || "".equals(dateFormat)){ + dateFormat = "yyyy-MM-dd"; + } + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + Date strtodate = sdf.parse(strDate); + return strtodate; + } /** * @param args * @throws ParseException diff --git a/src/main/java/com/nis/util/JedisUtils.java b/src/main/java/com/nis/util/JedisUtils.java index 86f59fe..43592ec 100644 --- a/src/main/java/com/nis/util/JedisUtils.java +++ b/src/main/java/com/nis/util/JedisUtils.java @@ -6,18 +6,19 @@ import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisSentinelPool; +import redis.clients.jedis.exceptions.JedisException; + import com.google.common.collect.Lists; import com.nis.restful.RestBusinessCode; import com.nis.restful.ServiceRuntimeException; import com.nis.web.service.SpringContextHolder; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisSentinelPool; -import redis.clients.jedis.exceptions.JedisException; - public class JedisUtils { private static Logger logger = LoggerFactory.getLogger(JedisUtils.class); - + private static final JedisPool jedisPool = SpringContextHolder.getBean(JedisPool.class); /** * 获取缓存 * @@ -212,15 +213,13 @@ public class JedisUtils { * @throws JedisException */ public static Jedis getResource(int redisDb) throws JedisException { - JedisSentinelPool jedisSentinelPool = SpringContextHolder.getBean(JedisSentinelPool.class); - - if (jedisSentinelPool == null) { + Jedis jedis = null; + if (jedisPool == null) { throw new ServiceRuntimeException("redis连接池为空,请联系管理员检查程序", RestBusinessCode.CannotConnectionRedis.getValue()); } - Jedis jedis = null; try { - jedis = jedisSentinelPool.getResource(); + jedis = jedisPool.getResource(); jedis.select(redisDb); } catch (JedisException e) { returnBrokenResource(jedis); diff --git a/src/main/java/com/nis/web/controller/restful/SystemHomePageController.java b/src/main/java/com/nis/web/controller/restful/SystemHomePageController.java index 4551732..c7e6b63 100644 --- a/src/main/java/com/nis/web/controller/restful/SystemHomePageController.java +++ b/src/main/java/com/nis/web/controller/restful/SystemHomePageController.java @@ -79,31 +79,47 @@ public class SystemHomePageController extends BaseRestController { @RequestMapping(value = "/log/v1/logServiceTopn", method = RequestMethod.GET) @ApiOperation(value = "日志TOP5业务统计量获取", httpMethod = "GET", notes = "对日志TOP5业务统计量信息进行查询", response = Map.class) - public Map cfgSortLogStat(String searchReportStartTime, String searchReportEndTime, + //public Map cfgSortLogStat(String searchReportStartTime, String searchReportEndTime, + public Map cfgSortLogStat(CfgLogInfo cfgLogInfo, HttpServletRequest request, HttpServletResponse response) { long start = System.currentTimeMillis(); AuditLogThread saveLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); Page cfgSortLogStat = null; - + if(cfgLogInfo!=null){ + if(cfgLogInfo.getSearchService() == null || "".equals(cfgLogInfo.getSearchService())){ + throw new ServiceRuntimeException(saveLogThread, System.currentTimeMillis() - start, + "error TOPN searchService parm !",RestBusinessCode.param_formate_error.getValue()); + } + if(cfgLogInfo.getSearchReportStartTime() == null || "".equals(cfgLogInfo.getSearchReportStartTime())){ + throw new ServiceRuntimeException(saveLogThread, System.currentTimeMillis() - start, + " loss TOPN searchReportStartTime parm !",RestBusinessCode.param_formate_error.getValue()); + } + if(cfgLogInfo.getSearchReportEndTime() == null || "".equals(cfgLogInfo.getSearchReportEndTime())){ + throw new ServiceRuntimeException(saveLogThread, System.currentTimeMillis() - start, + "loss TOPN searchReportEndTime parm!",RestBusinessCode.param_formate_error.getValue()); + } + if(cfgLogInfo.getBaseNum() < 1){ + throw new ServiceRuntimeException(saveLogThread, System.currentTimeMillis() - start, + "error TOPN baseNum parm!",RestBusinessCode.param_formate_error.getValue()); + } + } try { - cfgSortLogStat = systemHomePageService.getCfgSortLogStat(searchReportStartTime, searchReportEndTime, - request, response); - + cfgSortLogStat = systemHomePageService.getCfgSortLogStat(cfgLogInfo); } catch (Exception e) { saveLogThread.setExceptionInfo(e.getMessage() + " " + e.getCause()); e.printStackTrace(); logger.error(e.getMessage()); if (!(e instanceof RestServiceException)) { throw new ServiceRuntimeException(saveLogThread, System.currentTimeMillis() - start, - "获取配置日志TOP5统计失败:" + e.getMessage(), RestBusinessCode.service_runtime_error.getValue()); + "获取TOP5Service失败:" + e.getMessage(), RestBusinessCode.service_runtime_error.getValue()); } else { throw ((RestServiceException) e); } } - return serviceLogResponse(saveLogThread, System.currentTimeMillis() - start, request, "获取配置日志TOP5统计成功", + return serviceLogResponse(saveLogThread, System.currentTimeMillis() - start, request, "获取TOP5Service趋势统计数据成功", cfgSortLogStat, 0); } diff --git a/src/main/java/com/nis/web/controller/restful/TestDate.java b/src/main/java/com/nis/web/controller/restful/TestDate.java new file mode 100644 index 0000000..fade936 --- /dev/null +++ b/src/main/java/com/nis/web/controller/restful/TestDate.java @@ -0,0 +1,911 @@ +package com.nis.web.controller.restful; + +import java.text.ParseException; +import java.text.ParsePosition; +import java.text.SimpleDateFormat; + +/*import java.text.*; +import java.util.Calendar; +public class VeDate { +*/ +/** + * 获取现在时间 + * + * @return 返回时间类型 yyyy-MM-dd HH:mm:ss + */ +/* +public static Date getNowDate() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + ParsePosition pos = new ParsePosition(8); + Date currentTime_2 = formatter.parse(dateString, pos); + return currentTime_2; +} +*/ +/** + * 获取现在时间 + * + * @return返回短时间格式 yyyy-MM-dd + */ +/* +DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); +DateFormat format2= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); +Date date = null; +String str = null; + +// String转Date +str = "2007-1-18"; +try { + date = format1.parse(str); + data = format2.parse(str); +} catch (ParseException e) { + e.printStackTrace(); +} +*/ +/** + * 获取现在时间 + * + * @return返回字符串格式 yyyy-MM-dd HH:mm:ss + */ +/* +public static String getStringDate() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + return dateString; +} +*/ +/** + * 获取现在时间 + * + * @return 返回短时间字符串格式yyyy-MM-dd + */ +/* +public static String getStringDateShort() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(currentTime); + return dateString; +} +*/ +/** + * 获取时间 小时:分;秒 HH:mm:ss + * + * @return + */ +/* +public static String getTimeShort() { + SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); + Date currentTime = new Date(); + String dateString = formatter.format(currentTime); + return dateString; +} +*/ +/** + * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss + * + * @param strDate + * @return + */ +/* +public static Date strToDateLong(String strDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; +} +*/ +/** + * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss + * + * @param dateDate + * @return + */ +/* +public static String dateToStrLong(java.util.Date dateDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(dateDate); + return dateString; +} +*/ +/** + * 将短时间格式时间转换为字符串 yyyy-MM-dd + * + * @param dateDate + * @param k + * @return + */ +/* +public static String dateToStr(java.util.Date dateDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(dateDate); + return dateString; +} +*/ +/** + * 将短时间格式字符串转换为时间 yyyy-MM-dd + * + * @param strDate + * @return + */ +/* +public static Date strToDate(String strDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; +} +*/ +/** + * 得到现在时间 + * + * @return + */ +/* +public static Date getNow() { + Date currentTime = new Date(); + return currentTime; +} +*/ +/** + * 提取一个月中的最后一天 + * + * @param day + * @return + */ +/* +public static Date getLastDate(long day) { + Date date = new Date(); + long date_3_hm = date.getTime() - 3600000 * 34 * day; + Date date_3_hm_date = new Date(date_3_hm); + return date_3_hm_date; +} +*/ +/** + * 得到现在时间 + * + * @return 字符串 yyyyMMdd HHmmss + */ +/* +public static String getStringToday() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); + String dateString = formatter.format(currentTime); + return dateString; +} +*/ +/** + * 得到现在小时 + */ +/* +public static String getHour() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + String hour; + hour = dateString.substring(11, 13); + return hour; +} +*/ +/** + * 得到现在分钟 + * + * @return + */ +/* +public static String getTime() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + String min; + min = dateString.substring(14, 16); + return min; +} +*/ +/** + * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。 + * + * @param sformat + * yyyyMMddhhmmss + * @return + */ +/* +public static String getUserDate(String sformat) { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat(sformat); + String dateString = formatter.format(currentTime); + return dateString; +}*/ +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Locale; +import java.util.Random; + +import com.nis.util.DateUtils; + +public class TestDate{//VeDate { + /** + * 获取现在时间 + * + * @return 返回时间类型 yyyy-MM-dd HH:mm:ss + */ + public static Date getNowDate() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + ParsePosition pos = new ParsePosition(8); + Date currentTime_2 = formatter.parse(dateString, pos); + return currentTime_2; + } + + /** + * 获取现在时间 + * + * @return返回短时间格式 yyyy-MM-dd + */ + public static Date getNowDateShort() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(currentTime); + ParsePosition pos = new ParsePosition(8); + Date currentTime_2 = formatter.parse(dateString, pos); + return currentTime_2; + } + + /** + * 获取现在时间 + * + * @return返回字符串格式 yyyy-MM-dd HH:mm:ss + */ + public static String getStringDate() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 获取现在时间 + * + * @return 返回短时间字符串格式yyyy-MM-dd + */ + public static String getStringDateShort() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 获取时间 小时:分;秒 HH:mm:ss + * + * @return + */ + public static String getTimeShort() { + SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); + Date currentTime = new Date(); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss + * + * @param strDate + * @return + */ + public static Date strToDateLong(String strDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; + } + + /** + * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss + * + * @param dateDate + * @return + */ + public static String dateToStrLong(java.util.Date dateDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(dateDate); + return dateString; + } + + /** + * 将短时间格式时间转换为字符串 yyyy-MM-dd + * + * @param dateDate + * @param k + * @return + */ + public static String dateToStr(java.util.Date dateDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(dateDate); + return dateString; + } + + /** + * 将短时间格式字符串转换为时间 yyyy-MM-dd + * + * @param strDate + * @return + */ + public static Date strToDate(String strDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; + } + + /** + * 得到现在时间 + * + * @return + */ + public static Date getNow() { + Date currentTime = new Date(); + return currentTime; + } + + /** + * 提取一个月中的最后一天 + * + * @param day + * @return + */ + public static Date getLastDate(long day) { + Date date = new Date(); + long date_3_hm = date.getTime() - 3600000 * 34 * day; + Date date_3_hm_date = new Date(date_3_hm); + return date_3_hm_date; + } + + /** + * 得到现在时间 + * + * @return 字符串 yyyyMMdd HHmmss + */ + public static String getStringToday() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 得到现在小时 + */ + public static String getHour() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + String hour; + hour = dateString.substring(11, 13); + return hour; + } + + /** + * 得到现在分钟 + * + * @return + */ + public static String getTime() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + String min; + min = dateString.substring(14, 16); + return min; + } + + /** + * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。 + * + * @param sformat + * yyyyMMddhhmmss + * @return + */ + public static String getUserDate(String sformat) { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat(sformat); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟 + */ + public static String getTwoHour(String st1, String st2) { + String[] kk = null; + String[] jj = null; + kk = st1.split(":"); + jj = st2.split(":"); + if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0])) + return "0"; + else { + double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60; + double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60; + if ((y - u) > 0) + return y - u + ""; + else + return "0"; + } + } + + /** + * 得到二个日期间的间隔天数 + */ + public static String getTwoDay(String sj1, String sj2) { + SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); + long day = 0; + try { + java.util.Date date = myFormatter.parse(sj1); + java.util.Date mydate = myFormatter.parse(sj2); + day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); + } catch (Exception e) { + return ""; + } + return day + ""; + } + + /** + * 时间前推或后推分钟,其中JJ表示分钟. + */ + public static String getPreTime(String sj1, String jj) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String mydate1 = ""; + try { + Date date1 = format.parse(sj1); + long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60; + date1.setTime(Time * 1000); + mydate1 = format.format(date1); + } catch (Exception e) { + } + return mydate1; + } + + /** + * 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数 + */ + public static String getNextDay(String nowdate, String delay) { + try{ + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String mdate = ""; + Date d = strToDate(nowdate); + long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60; + d.setTime(myTime * 1000); + mdate = format.format(d); + return mdate; + }catch(Exception e){ + return ""; + } + } + + /** + * 判断是否润年 + * + * @param ddate + * @return + */ + public static boolean isLeapYear(String ddate) { + + /** + * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年 + * 3.能被4整除同时能被100整除则不是闰年 + */ + Date d = strToDate(ddate); + GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); + gc.setTime(d); + int year = gc.get(Calendar.YEAR); + if ((year % 400) == 0) + return true; + else if ((year % 4) == 0) { + if ((year % 100) == 0) + return false; + else + return true; + } else + return false; + } + + /** + * 返回美国时间格式 26 Apr 2006 + * + * @param str + * @return + */ + public static String getEDate(String str) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(str, pos); + String j = strtodate.toString(); + String[] k = j.split(" "); + return k[2] + k[1].toUpperCase() + k[5].substring(2, 4); + } + + /** + * 获取一个月的最后一天 + * + * @param dat + * @return + */ + public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd + String str = dat.substring(0, 8); + String month = dat.substring(5, 7); + int mon = Integer.parseInt(month); + if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) { + str += "31"; + } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) { + str += "30"; + } else { + if (isLeapYear(dat)) { + str += "29"; + } else { + str += "28"; + } + } + return str; + } + + /** + * 判断二个时间是否在同一个周 + * + * @param date1 + * @param date2 + * @return + */ + public static boolean isSameWeekDates(Date date1, Date date2) { + Calendar cal1 = Calendar.getInstance(); + Calendar cal2 = Calendar.getInstance(); + cal1.setTime(date1); + cal2.setTime(date2); + int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); + if (0 == subYear) { + if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) + return true; + } else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) { + // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周 + if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) + return true; + } else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) { + if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) + return true; + } + return false; + } + + /** + * 产生周序列,即得到当前时间所在的年度是第几周 + * + * @return + */ + public static String getSeqWeek() { + Calendar c = Calendar.getInstance(Locale.CHINA); + String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR)); + if (week.length() == 1) + week = "0" + week; + String year = Integer.toString(c.get(Calendar.YEAR)); + return year + week; + } + + /** + * 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号 + * + * @param sdate + * @param num + * @return + */ + public static String getWeek(String sdate, String num) { + // 再转换为时间 + //Date dd = VeDate.strToDate(sdate); + Date dd = TestDate.strToDate(sdate); + Calendar c = Calendar.getInstance(); + c.setTime(dd); + if (num.equals("1")) // 返回星期一所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + else if (num.equals("2")) // 返回星期二所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); + else if (num.equals("3")) // 返回星期三所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + else if (num.equals("4")) // 返回星期四所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); + else if (num.equals("5")) // 返回星期五所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); + else if (num.equals("6")) // 返回星期六所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); + else if (num.equals("0")) // 返回星期日所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); + } + + /** + * 根据一个日期,返回是星期几的字符串 + * + * @param sdate + * @return + */ + public static String getWeek(String sdate) { + // 再转换为时间 + //Date date = VeDate.strToDate(sdate); + Date date = TestDate.strToDate(sdate); + Calendar c = Calendar.getInstance(); + c.setTime(date); + // int hour=c.get(Calendar.DAY_OF_WEEK); + // hour中存的就是星期几了,其范围 1~7 + // 1=星期日 7=星期六,其他类推 + return new SimpleDateFormat("EEEE").format(c.getTime()); + } + public static String getWeekStr(String sdate){ + String str = ""; + //str = VeDate.getWeek(sdate); + str = TestDate.getWeek(sdate); + if("1".equals(str)){ + str = "星期日"; + }else if("2".equals(str)){ + str = "星期一"; + }else if("3".equals(str)){ + str = "星期二"; + }else if("4".equals(str)){ + str = "星期三"; + }else if("5".equals(str)){ + str = "星期四"; + }else if("6".equals(str)){ + str = "星期五"; + }else if("7".equals(str)){ + str = "星期六"; + } + return str; + } + + /** + * 两个时间之间的天数 + * + * @param date1 + * @param date2 + * @return + */ + public static long getDays(String date1, String date2) { + if (date1 == null || date1.equals("")) + return 0; + if (date2 == null || date2.equals("")) + return 0; + // 转换为标准时间 + SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); + java.util.Date date = null; + java.util.Date mydate = null; + try { + date = myFormatter.parse(date1); + mydate = myFormatter.parse(date2); + } catch (Exception e) { + } + long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); + return day; + } + + /** + * 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间 + * 此函数返回该日历第一行星期日所在的日期 + * + * @param sdate + * @return + */ + public static String getNowMonth(String sdate) { + // 取该时间所在月的一号 + sdate = sdate.substring(0, 8) + "01"; + + // 得到这个月的1号是星期几 + //Date date = VeDate.strToDate(sdate); + Date date = TestDate.strToDate(sdate); + + Calendar c = Calendar.getInstance(); + c.setTime(date); + int u = c.get(Calendar.DAY_OF_WEEK); + /* String newday = VeDate.getNextDay(sdate, (1 - u) + "");*/ + String newday = TestDate.getNextDay(sdate, (1 - u) + ""); + return newday; + } + + /** + * 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数 + * + * @param k + * 表示是取几位随机数,可以自己定 + */ + + public static String getNo(int k) { + + return getUserDate("yyyyMMddhhmmss") + getRandom(k); + } + + /** + * 返回一个随机数 + * + * @param i + * @return + */ + public static String getRandom(int i) { + Random jjj = new Random(); + // int suiJiShu = jjj.nextInt(9); + if (i == 0) + return ""; + String jj = ""; + for (int k = 0; k < i; k++) { + jj = jj + jjj.nextInt(9); + } + return jj; + } + + /** + * + * @param args + */ + public static boolean RightDate(String date) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + ; + if (date == null) + return false; + if (date.length() > 10) { + sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + } else { + sdf = new SimpleDateFormat("yyyy-MM-dd"); + } + try { + sdf.parse(date); + } catch (ParseException pe) { + return false; + } + return true; + } + + /*************************************************************************** + * //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1 + * 以年月日中文返回 2 以横线-返回 // 3 以斜线/返回 4 以缩写不带其它符号形式返回 // 5 以点号.返回 + **************************************************************************/ + public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(currentTime); + String s_nd = dateString.substring(0, 4); // 年份 + String s_yf = dateString.substring(5, 7); // 月份 + String s_rq = dateString.substring(8, 10); // 日期 + String sreturn = ""; + /*roc.util.MyChar mc = new roc.util.MyChar(); + if (sdate == null || sdate.equals("") || !mc.Isdate(sdate)) { // 处理空值情况 + if (nd.equals("1")) { + sreturn = s_nd; + // 处理间隔符 + if (format.equals("1")) + sreturn = sreturn + "年"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理月份 + if (yf.equals("1")) { + sreturn = sreturn + s_yf; + if (format.equals("1")) + sreturn = sreturn + "月"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理日期 + if (rq.equals("1")) { + sreturn = sreturn + s_rq; + if (format.equals("1")) + sreturn = sreturn + "日"; + } + } else { +// 不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式 + sdate = roc.util.RocDate.getOKDate(sdate); + s_nd = sdate.substring(0, 4); // 年份 + s_yf = sdate.substring(5, 7); // 月份 + s_rq = sdate.substring(8, 10); // 日期 + if (nd.equals("1")) { + sreturn = s_nd; + // 处理间隔符 + if (format.equals("1")) + sreturn = sreturn + "年"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理月份 + if (yf.equals("1")) { + sreturn = sreturn + s_yf; + if (format.equals("1")) + sreturn = sreturn + "月"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理日期 + if (rq.equals("1")) { + sreturn = sreturn + s_rq; + if (format.equals("1")) + sreturn = sreturn + "日"; + } + }*/ + return sreturn; + } + + public static String getNextMonthDay(String sdate, int m) { + sdate = "";//getOKDate(sdate); + int year = Integer.parseInt(sdate.substring(0, 4)); + int month = Integer.parseInt(sdate.substring(5, 7)); + month = month + m; + if (month < 0) { + month = month + 12; + year = year - 1; + } else if (month > 12) { + month = month - 12; + year = year + 1; + } + String smonth = ""; + if (month < 10) + smonth = "0" + month; + else + smonth = "" + month; + return year + "-" + smonth + "-10"; + } +/* + public static String getOKDate(String sdate) { + if (sdate == null || sdate.equals("")) + return getStringDateShort(); + + if (!TestDate.Isdate(sdate)) { + sdate = getStringDateShort(); + } + // 将“/”转换为“-” + sdate = TestDate.Replace(sdate, "/", "-"); + // 如果只有8位长度,则要进行转换 + if (sdate.length() == 8) + sdate = sdate.substring(0, 4) + "-" + sdate.substring(4, 6) + "-" + sdate.substring(6, 8); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(sdate, pos); + String dateString = formatter.format(strtodate); + return dateString; + }*/ + + public static void main(String[] args) throws Exception { + try { + //System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09"))); + for(int i=1;i<10;i++){ + //System.out.println(Long.valueOf(String.format("%d", Math.random()*5+94))); + /* double te = Math.random()*0.2+0.9; + System.out.println( te); + System.out.println(Math.floor( 10000*(te))); + System.out.println(Math.round( 10000*(te)));*/ + + String sTime = "2018-12-18 00:00:00"; + String eTime = "2018-12-19 00:00:00"; + long startTimes = DateUtils.strToDate(sTime,"yyyy-MM-dd HH:mm:ss").getTime(); + long endTimes = DateUtils.strToDate(eTime,"yyyy-MM-dd HH:mm:ss").getTime(); + System.out.println(endTimes-startTimes); + } + } catch (Exception e) { + throw new Exception(); + } + + //System.out.println("sss"); + } +} + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SystemHomePageDao.java b/src/main/java/com/nis/web/dao/SystemHomePageDao.java index 2198246..17a7d27 100644 --- a/src/main/java/com/nis/web/dao/SystemHomePageDao.java +++ b/src/main/java/com/nis/web/dao/SystemHomePageDao.java @@ -15,7 +15,8 @@ public interface SystemHomePageDao { List getTrafficAreaStatList(@Param("startTime") Date searchReportStartTime, @Param("endTime") Date searchReportEndTime); - List getCfgSortLogStatList(@Param("startTime") Date startTime, @Param("endTime") Date endTime); + //List getCfgSortLogStatList(@Param("startTime") Date startTime, @Param("endTime") Date endTime); + List getCfgSortLogStatList(CfgLogInfo cfgLogInfo); List getBlockAndDropStatListAll(@Param("startTime") Date startTime, @Param("endTime") Date endTime); diff --git a/src/main/java/com/nis/web/dao/SystemHomePageDao.xml b/src/main/java/com/nis/web/dao/SystemHomePageDao.xml index fa2928d..7db7a19 100644 --- a/src/main/java/com/nis/web/dao/SystemHomePageDao.xml +++ b/src/main/java/com/nis/web/dao/SystemHomePageDao.xml @@ -2,6 +2,14 @@ + + + + + + + + + + diff --git a/src/main/java/com/nis/web/service/restful/SystemHomePageService.java b/src/main/java/com/nis/web/service/restful/SystemHomePageService.java index 4104d55..ac208d2 100644 --- a/src/main/java/com/nis/web/service/restful/SystemHomePageService.java +++ b/src/main/java/com/nis/web/service/restful/SystemHomePageService.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Random; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -21,8 +22,10 @@ import com.nis.domain.restful.CfgLogInfo; import com.nis.domain.restful.DropInfo; import com.nis.domain.restful.NtcAreaHomeReport; import com.nis.util.CalendarUtils; +import com.nis.util.DateUtils; import com.nis.web.dao.SystemHomePageDao; + @Service public class SystemHomePageService { @Autowired @@ -70,24 +73,27 @@ public class SystemHomePageService { } // 获取配置日志TOP5统计 - public Page getCfgSortLogStat(String searchReportStartTime, String searchReportEndTime, - HttpServletRequest request, HttpServletResponse response) { + /*public Page getCfgSortLogStat(String searchReportStartTime, String searchReportEndTime, + HttpServletRequest request, HttpServletResponse response) {*/ + public Page getCfgSortLogStat(CfgLogInfo cfgLogInfo) { List list = new LinkedList(); Page page = new Page<>(); Date endTime = null; Date startTime = null; - if (null != searchReportStartTime && null != searchReportEndTime && !"".equals(searchReportStartTime) - && !"".equals(searchReportEndTime)) { + if (null != cfgLogInfo.getSearchReportStartTime() && null != cfgLogInfo.getSearchReportEndTime() && !"".equals(cfgLogInfo.getSearchReportStartTime() ) + && !"".equals(cfgLogInfo.getSearchReportEndTime())) { logger.info("开始获取配置日志TOP5,参数为{" - + ((null == searchReportStartTime && !"".equals(searchReportStartTime)) ? "无" - : searchReportStartTime) + + ((null == cfgLogInfo.getSearchReportStartTime() && !"".equals(cfgLogInfo.getSearchReportStartTime() )) ? "无" + : cfgLogInfo.getSearchReportStartTime() ) + "},{" - + ((null == searchReportEndTime && !"".equals(searchReportEndTime)) ? "无" : searchReportEndTime) + + ((null == cfgLogInfo.getSearchReportEndTime() && !"".equals(cfgLogInfo.getSearchReportEndTime())) ? "无" : cfgLogInfo.getSearchReportEndTime()) + "}"); try { - startTime = format.parse(searchReportStartTime); - endTime = format.parse(searchReportEndTime); + startTime = format.parse(cfgLogInfo.getSearchReportStartTime() ); + endTime = format.parse(cfgLogInfo.getSearchReportEndTime()); + list = systemHomePageDao.getCfgSortLogStatList(cfgLogInfo); + list = converCfgLogList(list, cfgLogInfo); } catch (ParseException e) { e.printStackTrace(); logger.error("处理时间转换异常,{}", e); @@ -95,16 +101,22 @@ public class SystemHomePageService { } else { endTime = CalendarUtils.getRangeOf5min(0); startTime = CalendarUtils.getTPrevHour(endTime, -24); + cfgLogInfo.setSearchReportStartTime(format.format(startTime)); + cfgLogInfo.setSearchReportEndTime(format.format(endTime)); logger.info("获取配置日志TOP5API请求参数为空,默认查询最近24小时"); } - - list = systemHomePageDao.getCfgSortLogStatList(startTime, endTime); - if (null != list && 0 != list.size()) { + + /*if (null != list && 0 != list.size()) { list = converCfgLogList(list, startTime, endTime); } else { logger.info("没有查到配置日志Top的数据"); + }*/ + if(list!=null && list.size()>0){ + page.setCount(list.size()); + logger.info("查询配置日志TOP5结束"+list.size()); + }else{ + logger.info("查询配置日志TOP5结束"); } - logger.trace("查询配置日志TOP5结束"); page.setList(list); return page; } @@ -161,8 +173,112 @@ public class SystemHomePageService { * @param startTime * @param endTime * @return + * @throws ParseException */ - public List converCfgLogList(List list, Date startTime, Date endTime) { + public List converCfgLogList(List list, CfgLogInfo cfgLogInfoParm) throws ParseException { + List newList = new LinkedList<>(); + String sTime = cfgLogInfoParm.getSearchReportStartTime(); + String eTime = cfgLogInfoParm.getSearchReportEndTime(); + long baseNum = cfgLogInfoParm.getBaseNum(); + long startTimes = DateUtils.strToDate(sTime,"yyyy-MM-dd HH:mm:ss").getTime(); + long endTimes = DateUtils.strToDate(eTime,"yyyy-MM-dd HH:mm:ss").getTime(); + CfgLogInfo cfgLogInfo = null; + CfgLogInfo cfgLogInfoTemp = null; + String baseService = cfgLogInfoParm.getSearchService(); + String serviceArray[] = serviceArray = baseService.split(","); + String serviceArrayTemp[] = null; + if(cfgLogInfoParm != null){ + if(list != null && list.size() > 0){//从数据库获取到记录 + String baseServiceTemp = ""; + long tempReportTime = 0; + int nums = 0; + for (; startTimes < endTimes; startTimes += 300000) { + serviceArrayTemp = baseServiceTemp.split(","); + baseServiceTemp = ","+baseService+","; + //loop: + for (int i = 0; i < list.size(); i++) { + cfgLogInfo = null; + cfgLogInfo = list.get(i); + if(cfgLogInfo!=null && startTimes==cfgLogInfo.getReportTime().getTime() && cfgLogInfo.getReportTime().getTime() list, CfgLogInfo cfgLogInfoParm) { + String serviceArray[] = null; + String tempReturn = ""; + String temp = ","+cfgLogInfoParm.getServiceCode()+""; + if(list!=null){ + StringBuffer tempS = new StringBuffer(); + for (CfgLogInfo cfgLogInfo:list) { + + } + } + return serviceArray; + }*/ + /*public List converCfgLogList(List list, Date startTime, Date endTime) { List newList = new LinkedList<>(); long startTimes = (startTime.getTime() + 300000); long endTimes = endTime.getTime(); @@ -180,7 +296,7 @@ public class SystemHomePageService { } } return newList; - } + }*/ public List converNtcAreaHomeList(List list, Date startTime, Date endTime) { final String area1 = "阿斯塔纳"; @@ -210,6 +326,9 @@ public class SystemHomePageService { ntcAreaHomeReportArea2.setEntranceId(2); ntcAreaHomeReportArea1.setArea(area1); ntcAreaHomeReportArea2.setArea(area2); + if(sums1==0){ + + } ntcAreaHomeReportArea1.setSum(sums1); ntcAreaHomeReportArea2.setSum(sums2); ntcAreaHomeReportArea1.setReportTime(new Date(startTimes));