IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 按时间区间查询数据,并取interval间隔时间的第一条 -> 正文阅读

[开发测试]按时间区间查询数据,并取interval间隔时间的第一条

1、按时间区间查询数据,并取interval间隔时间的第一条

用多了MP,mybatis语句的这种sql语句不太熟练,记录一下

需求:接口说明:

查询某一条船的历史轨迹

地址:

GET /xxxx/xxxx/xxxx

参数:

参数名类型说明范围是否必需
shipName字符串船名“001”-”100”
date时间戳日期最近一周的某一天,默认当日的前一天
interval字符串时间间隔“1”-”60”,默认间隔5分钟,最短间隔1分钟,最长间隔60分钟

1 controller

@GetMapping(value = "/xxx/xxx/xxx")
    public Map<String, Object> getHistoryLocationAndStatus(
            @RequestParam(value = "shipName",required = true) String shipName,
            @RequestParam(value = "date",required = false) Date date,
            @RequestParam(value = "interval",required = false) String interval
    )
    {
        List<ShipStatusVo> list = shipManageService.getHistoryLocationAndStatus(shipName, date ,interval);
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("information", list);
        resultMap.put("shipName", shipName);
        return resultMap;
    }

2.service

  /**
     * 
     * @param shipName
     * @param date
     * @param interval
     * @return
     */
    List<ShipStatusVo> getHistoryLocationAndStatus(String shipName, Date date,String interval);

3.impl

@Override
    public List<ShipStatusVo> getHistoryLocationAndStatus(String shipName, Date date,String interval) {
        //判断传过来的时间是否为空,如果为空直接默认当日前一天
        if (date == null) {
            DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar calendar=Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY,-1);
//            String yesterdayDate=dateFormat.format(calendar.getTime());
//            System.out.println("yestodayDate:"+yesterdayDate);
            date = calendar.getTime();
            System.out.println(date);
        }else{
            //判断时间是否为一周之内的时间,如果不是提示出错
            Date nowDate = DateUtils.getNowDate();
            long datePoor = DateUtils.getDatePoorDay(date, nowDate);
            if(datePoor>6){
                throw new RuntimeException("您查询的船只时间已过期,请查询近7日以内的船只历史记录");
            }
        }
        if (StringUtils.isBlank(interval)) {
            interval = "5";
        }
        Date startTime = DateUtils.weeHours(date, 0);
        Date endTime = DateUtils.weeHours(date, 1);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sTime = sdf.format(startTime);
        String eTime = sdf.format(endTime);
        return shipMapper.getHistoryLocationAndStatus(shipName,sTime,eTime,Integer.parseInt(interval));
    }

4.mapper

    /**
     * 4、查询某一条船的历史轨迹
     * @param shipName
     * @param
     * @return
     */
    List<ShipStatusVo> getHistoryLocationAndStatus(String shipName,String startTime,String endTime,int interval);

5.vo

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ShipStatusVo {

    /**
     * 船只名称
     */
    private String shipName;
    /**
     * 更新时间
     */
    private Date time;

    /**
     * 经度
     */
    private String longtitude;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 速度
     */
    private String speed;

    /**
     * 警告信息
     */
    private String warningInformation;
}

6.xml

 <resultMap type="com.xidian.ship.vo.CurrentShipLocationVo" id="CurrentLocationResult">
        <result property="shipName"    column="ship_name"    />
        <result property="time"    column="update_time"    />
        <result property="longtitude"    column="longtitude"    />
        <result property="latitude"    column="latitude"    />
        <result property="speed"    column="speed"    />
        <result property="warningInformation"    column="warning_information"    />
 </resultMap>
<select id="getHistoryLocationAndStatus" resultType="com.xxxxx.ship.vo.ShipStatusVo" resultMap="CurrentLocationResult">
        select ship_name,update_time,longtitude, latitude, speed, warning_information from tracktable
        where  date_format(update_time,'%i')%#{interval}=0
          and  (update_time between #{startTime} and #{endTime})
          and (ship_name = #{shipName})
        group by date_format(update_time,'%Y-%m-%d %H:%i')
 </select>
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:55:28  更:2022-03-30 18:55:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:36:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码