前面有写过篇文章,js中关于时间的转化——将秒/毫秒转化成xx小时xx分钟xx秒
后来将前台的处理改成了后台处理
用法如下:
/*
* 初始化
*/
int totalTime = 259263; //访问时长秒数
String totalTimeStr = "";
totalTimeStr = totalTime/3600 + "时" + (totalTime%3600)/60 + "分" + (totalTime%3600)%60 + "秒";
顺便贴出当时的后台方法
@Override
public Map<String, Object> findInterfacePressureTestData(InterfaceInvokeLogVo interfaceInvokeLogVo) {
/*
* 初始化
*/
int visitNum = 0; //访问量
int totalTime = 0; //访问时长秒数
int max = 0; //压力测试的最大响应时间
//查询条件不足返回提示信息
if (null == interfaceInvokeLogVo
|| (interfaceInvokeLogVo.getBeginInvokeStartTime() == null
|| interfaceInvokeLogVo.getEndInvokeStartTime() == null
|| interfaceInvokeLogVo.getTargetSys().equals("")
|| interfaceInvokeLogVo.getTargetSysInterface().equals(""))
) {
return ResultUtil.put(ConstantUtil.REQUEST_FAIL, ConstantUtil.QUERY_TERM_LACK, "");
}else{
//查询接口统计数据
StatisticInterfacePressureTest statisticInterfacePressureTest = interfaceInvokeLogMapper.selectInterfacePressureTestData(interfaceInvokeLogVo);
if (null != interfaceInvokeLogVo.getBeginInvokeStartTime() && null != interfaceInvokeLogVo.getEndInvokeStartTime()) {
//时间减之后的结果是毫秒数
totalTime = (int)((interfaceInvokeLogVo.getEndInvokeStartTime().getTime() - interfaceInvokeLogVo.getBeginInvokeStartTime().getTime())/1000);
visitNum=Integer.parseInt(statisticInterfacePressureTest.getVisitNum());
//查询的时间范围可能选的是同一个时间点
if(totalTime != 0){
statisticInterfacePressureTest.setAvgVisitAvgNum(""+visitNum/totalTime);
}
else{
return ResultUtil.put(ConstantUtil.REQUEST_FAIL, ConstantUtil.QUERY_TERM_LACK, "");
}
//根据压力测试的统计数据才能查询接口响应区间表
if (null != statisticInterfacePressureTest && null != statisticInterfacePressureTest.getMaxRespondTime()
&& !("".equals(statisticInterfacePressureTest.getMaxRespondTime()))) {
/*
* 查询接口响应时间区间list
*/
List<StatisticRespondTime> list = new ArrayList<>();
StatisticRespondTime item = null;
max = Integer.parseInt(statisticInterfacePressureTest.getMaxRespondTime());
int times = max/1000; //区间表展示的区间次数
int maxValue = 0; //每个区间的最大值
int minValue = 0; //每个区间的最小值
interfaceInvokeLogVo.setVisitNum(statisticInterfacePressureTest.getVisitNum()); //访问量:sql中计算某区间的访问量占比时会用到
for(int i = 0; i <= times; i++)
{
maxValue = (i+1)*1000;
minValue = i*1000;
interfaceInvokeLogVo.setMaxValue(maxValue);
interfaceInvokeLogVo.setMinValue(minValue);
item= interfaceInvokeLogMapper.selectStatisticRespondTimeData(interfaceInvokeLogVo);
if(null != item){
if(i == times){
item.setRespondTime(" >"+minValue+" ");
list.add(item);
}else{
item.setRespondTime(minValue + " ~ "+maxValue + "ms");
list.add(item);
}
}
}
statisticInterfacePressureTest.setRespondTimesData(list);
/*
*为返回值封装起始时间
*/
statisticInterfacePressureTest.setBeginInvokeStartTime(interfaceInvokeLogVo.getBeginInvokeStartTime());
statisticInterfacePressureTest.setEndInvokeStartTime(interfaceInvokeLogVo.getEndInvokeStartTime());
statisticInterfacePressureTest.setTotalTime(totalTime/3600 + "时" + (totalTime%3600)/60 + "分" + (totalTime%3600)%60 + "秒");
statisticInterfacePressureTest.setInterfaceName(interfaceInvokeLogVo.getTargetSys() + "-" + interfaceInvokeLogVo.getTargetSysInterface());
}
//无访问量说明无数据
if(statisticInterfacePressureTest.getVisitNum().equals("0")){
return ResultUtil.put(ConstantUtil.REQUEST_SUCCESS, ConstantUtil.QUERY_NO_DATA, null);
}
}
return ResultUtil.put(ConstantUtil.REQUEST_SUCCESS, "", statisticInterfacePressureTest);
}
}