springboot 多个Vo共用一个Vo,利用@Validated注解的分组特性

Vo类的代码

package com.meilingcloud.biobank.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Timestamp;

/**
 * 通过时间查询设备历史数据Vo
 *
 * @author WeiWei
 * @date 2022/08/24
 */
@Data
public class GetDeviceHistoryDataByTimeReqVo implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * 通过时间查询设备历史数据接口入参
     *
     * @author WeiWei
     * @date 2022/08/29
     */
    public interface GetDeviceHistoryDataByTime {
    }


    /**
     * 通过时间分页查询设备历史数据接口入参
     *
     * @author WeiWei
     * @date 2022/08/29
     */
    public interface GetDeviceHistoryDataByTimeToPaging{

    }

    /**
     * 通过时间导出设备基础数据接口入参
     *
     * @author WeiWei
     * @date 2022/08/29
     */
    public interface ExportDeviceHistoryDataByTime{

    }


    /**
     * 开始时间
     */
    @NotNull(message = "开始时间不能为空",groups = {GetDeviceHistoryDataByTime.class,GetDeviceHistoryDataByTimeToPaging.class,ExportDeviceHistoryDataByTime.class})
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
    private Timestamp startTime;

    /**
     * 结束时间
     */
    @NotNull(message = "结束时间不能为空",groups = {GetDeviceHistoryDataByTime.class,GetDeviceHistoryDataByTimeToPaging.class,ExportDeviceHistoryDataByTime.class})
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
    private Timestamp endTime;

    /**
     * 设备id
     */
    @NotNull(message = "设备id不能为空",groups = {GetDeviceHistoryDataByTime.class,GetDeviceHistoryDataByTimeToPaging.class,ExportDeviceHistoryDataByTime.class})
    private String deviceId;

    /**
     * 设备类型(1:冷藏箱 2:液氮罐 3:超低温冰箱)
     */
    @NotNull(message = "设备类型不能为空",groups = {GetDeviceHistoryDataByTime.class,GetDeviceHistoryDataByTimeToPaging.class,ExportDeviceHistoryDataByTime.class})
    private String deviceType;


    /**
     * 页码
     */
    @NotNull(message = "页码不能为空",groups = {GetDeviceHistoryDataByTimeToPaging.class})
    private Integer pageNum;

    /**
     * 页大小
     */
    @NotNull(message = "页大小不能为空",groups = {GetDeviceHistoryDataByTimeToPaging.class})
    private Integer pageSize;

    /**
     * 排序字段
     */
    @NotNull(message = "排序字段不能为空",groups = {GetDeviceHistoryDataByTimeToPaging.class})
    private String orderByColumn;

    /**
     * 排序的方向 "desc" 或者 "asc"
     */
    @NotNull(message = "排序的方向不能为空",groups = {GetDeviceHistoryDataByTimeToPaging.class})
    private String isAsc;
}

在controller类的用法

package com.meilingcloud.web.controller.taos;


import com.meilingcloud.biobank.domain.UltraColdData;
import com.meilingcloud.biobank.domain.vo.DeviceBaseDataToPagingVo;
import com.meilingcloud.biobank.domain.vo.GetDeviceHistoryDataByTimeReqVo;
import com.meilingcloud.biobank.service.DataUploadService;
import com.meilingcloud.common.annotation.Log;
import com.meilingcloud.common.core.domain.AjaxResult;
import com.meilingcloud.common.enums.BusinessType;
import com.meilingcloud.system.domain.vo.AppPageBase;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 物联网设备数据上传控制器
 *
 * @author WeiWei
 * @date 2022/08/22
 */
@RestController
@RequestMapping("/dataUpload")
@RequiredArgsConstructor
public class DataUploadController {

    private final DataUploadService dataUploadService;


    @Log(title = "数据上传", businessType = BusinessType.INSERT)
    @PostMapping("/coldData")
    public AjaxResult coldData(@RequestBody UltraColdData ultraColdData) {
        boolean result = dataUploadService.insertOneUltraColdData(ultraColdData);
        return result ? AjaxResult.success() : AjaxResult.error();
    }


    /**
     * 分页查询所有设备基础数据列表
     *
     * @return {@link AjaxResult}
     */
    @PostMapping("/getAllDeviceBaseDataListToPaging")
    public AjaxResult getAllDeviceBaseDataListToPaging(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) {
        DeviceBaseDataToPagingVo result = dataUploadService.getAllDeviceBaseDataListToPaging(pageNum,pageSize);
        return AjaxResult.success(result);
    }


    /**
     * 通过时间查询设备历史数据
     *
     * @return {@link AjaxResult}
     */
    @PostMapping("/getDeviceHistoryDataByTime")
    public AjaxResult getDeviceHistoryDataByTime(@Validated(GetDeviceHistoryDataByTimeReqVo.GetDeviceHistoryDataByTime.class) @RequestBody GetDeviceHistoryDataByTimeReqVo reqVo) {
        List<?> result = dataUploadService.getDeviceHistoryDataByTime(reqVo);
        return AjaxResult.success(result);
    }

    /**
     * 通过时间分页查询设备历史数据
     *
     * @return {@link AjaxResult}
     */
    @PostMapping("/getDeviceHistoryDataByTimeToPaging")
    public AjaxResult getDeviceHistoryDataByTimeToPaging(@Validated(GetDeviceHistoryDataByTimeReqVo.GetDeviceHistoryDataByTimeToPaging.class) @RequestBody GetDeviceHistoryDataByTimeReqVo reqVo) {
        AppPageBase appPageBaseResult = dataUploadService.getDeviceHistoryDataByTimeToPaging(reqVo);
        return AjaxResult.success(appPageBaseResult);
    }


    /**
     * 通过时间分页查询设备历史告警数据
     *
     * @return {@link AjaxResult}
     */
    @PostMapping("/getDeviceHistoryAlarmDataByTimeToPaging")
    public AjaxResult getDeviceHistoryAlarmDataByTimeToPaging(@RequestBody GetDeviceHistoryDataByTimeReqVo reqVo) {
        AppPageBase appPageBaseResult = dataUploadService.getDeviceHistoryDataByTimeToPaging(reqVo);
        return AjaxResult.success(appPageBaseResult);
    }

    /**
     * 通过时间导出设备基础数据
     */
    @PreAuthorize("@ss.hasPermi('biobank:taos:export')")
    @Log(title = "通过时间导出设备基础数据", businessType = BusinessType.EXPORT)
    @PostMapping("/exportDeviceHistoryDataByTime")
    public AjaxResult exportDeviceHistoryDataByTime(@Validated(GetDeviceHistoryDataByTimeReqVo.ExportDeviceHistoryDataByTime.class) @RequestBody GetDeviceHistoryDataByTimeReqVo reqVo) {
        return dataUploadService.exportDeviceHistoryDataByTime(reqVo);
    }


}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容