Commit 2c27e2da by gdj

接口增加查询条件。

parent 3195abe8
......@@ -3,6 +3,7 @@ package com.dji.sample.manage.controller;
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.model.dto.DeviceDictionaryDTO;
import com.dji.sample.manage.model.dto.DeviceFirmwareUpgradeDTO;
import com.dji.sample.manage.model.param.DeviceSearchParam;
import com.dji.sample.manage.service.IDeviceDictionaryService;
import com.dji.sample.manage.service.IDeviceService;
import com.dji.sdk.common.HttpResultResponse;
......@@ -218,13 +219,12 @@ public class DeviceController {
* @return
*/
@GetMapping("/{workspace_id}/devices/list")
public HttpResultResponse<PaginationData<DeviceDTO>> getDevicesWithDomain(
public HttpResultResponse<PaginationData<DeviceDTO>> getDevicesByParam(
DeviceSearchParam param,
@PathVariable("workspace_id") String workspaceId,
@RequestParam(value = "domain", required = false) Integer domain,
@RequestParam(value = "device_name", required = false) String deviceName,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize) {
PaginationData<DeviceDTO> devices = deviceService.getDevicesWithDomain(workspaceId, deviceName, page, pageSize, domain);
PaginationData<DeviceDTO> devices = deviceService.getDevicesByParam(param, workspaceId, page, pageSize);
return HttpResultResponse.success(devices);
}
......
......@@ -2,6 +2,7 @@ package com.dji.sample.manage.controller;
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.model.dto.FleetDTO;
import com.dji.sample.manage.model.param.FleetSearchParam;
import com.dji.sample.manage.service.IFleetService;
import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
......@@ -23,10 +24,11 @@ public class FleetController {
private IFleetService fleetService;
@GetMapping("/{workspace_id}/getFleetPage")
public HttpResultResponse<PaginationData<FleetDTO>> getFleets(@PathVariable("workspace_id") String workspaceId,
public HttpResultResponse<PaginationData<FleetDTO>> getFleets(FleetSearchParam param,
@PathVariable("workspace_id") String workspaceId,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize) {
PaginationData<FleetDTO> fleetsList = fleetService.getFleetPage(workspaceId, page, pageSize);
PaginationData<FleetDTO> fleetsList = fleetService.getFleetPage(param, workspaceId, page, pageSize);
return HttpResultResponse.success(fleetsList);
}
......
package com.dji.sample.manage.model.param;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* 设备查询条件
* @author guan
*/
@Data
public class DeviceSearchParam {
@JsonProperty("device_sn")
private String deviceSn;
@JsonProperty("device_name")
private String deviceName;
private String nickname;
@JsonProperty("bound_status")
private Boolean boundStatus;
@JsonProperty("workspace_id")
private String workspaceId;
@JsonProperty("device_type")
private Integer deviceType;
@JsonProperty("sub_type")
private Integer subType;
private Integer domain;
private Long page;
}
package com.dji.sample.manage.model.param;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author guan
*/
@Data
public class FleetSearchParam {
@JsonProperty("fleet_name")
private String fleetName;
}
......@@ -7,6 +7,7 @@ import com.dji.sample.manage.model.dto.DeviceFirmwareUpgradeDTO;
import com.dji.sample.manage.model.dto.TopologyDeviceDTO;
import com.dji.sample.manage.model.entity.DeviceEntity;
import com.dji.sample.manage.model.param.DeviceQueryParam;
import com.dji.sample.manage.model.param.DeviceSearchParam;
import com.dji.sdk.cloudapi.device.ControlSourceEnum;
import com.dji.sdk.cloudapi.device.DeviceOsdHost;
import com.dji.sdk.cloudapi.device.DockModeCodeEnum;
......@@ -155,6 +156,17 @@ public interface IDeviceService extends IService<DeviceEntity> {
PaginationData<DeviceDTO> getDevicesWithDomain(String workspaceId , String deviceName, Long page, Long pageSize, Integer domain);
/**
* Get the devices list in one workspace.
* @param workspaceId
* @param param 设备查询参数
* @param page
* @param pageSize
* @return
*/
PaginationData<DeviceDTO> getDevicesByParam(DeviceSearchParam param, String workspaceId, Long page, Long pageSize);
/**
* Unbind device base on device's sn.
* @param deviceSn
*/
......
......@@ -3,6 +3,7 @@ package com.dji.sample.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.manage.model.dto.FleetDTO;
import com.dji.sample.manage.model.entity.FleetEntity;
import com.dji.sample.manage.model.param.FleetSearchParam;
import com.dji.sdk.common.PaginationData;
import java.util.List;
......@@ -14,7 +15,7 @@ public interface IFleetService extends IService<FleetEntity> {
List<FleetDTO> getFleets(String workspaceId);
PaginationData<FleetDTO> getFleetPage(String workspaceId, Long page, Long pageSize);
PaginationData<FleetDTO> getFleetPage(FleetSearchParam param, String workspaceId, Long page, Long pageSize);
FleetDTO getFleetBySn(String workspaceId, String fleetSn);
......
......@@ -16,6 +16,7 @@ import com.dji.sample.manage.model.enums.DeviceFirmwareStatusEnum;
import com.dji.sample.manage.model.enums.PropertySetFieldEnum;
import com.dji.sample.manage.model.enums.UserTypeEnum;
import com.dji.sample.manage.model.param.DeviceQueryParam;
import com.dji.sample.manage.model.param.DeviceSearchParam;
import com.dji.sample.manage.model.receiver.BasicDeviceProperty;
import com.dji.sample.manage.service.*;
import com.dji.sdk.cloudapi.device.*;
......@@ -534,6 +535,92 @@ public class DeviceServiceImpl extends ServiceImpl<IDeviceMapper, DeviceEntity>
}
@Override
public PaginationData<DeviceDTO> getDevicesByParam(DeviceSearchParam param,
String workspaceId,
Long page,
Long pageSize) {
LambdaQueryWrapper<DeviceEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DeviceEntity::getDomain, param.getDomain());
wrapper.eq(DeviceEntity::getWorkspaceId, workspaceId);
// 设备名称
if (StringUtils.hasText(param.getDeviceName())) {
wrapper.like(DeviceEntity::getDeviceName, param.getDeviceName());
}
// 昵称
if (StringUtils.hasText(param.getNickname())) {
wrapper.like(DeviceEntity::getNickname, param.getNickname());
}
// 绑定状态
if (param.getBoundStatus() != null) {
wrapper.like(DeviceEntity::getBoundStatus, param.getBoundStatus());
}
Page<DeviceEntity> pagination = mapper.selectPage(new Page<>(page, pageSize), wrapper );
List<DeviceDTO> devicesList = pagination.getRecords().stream().map(this::deviceEntityConvertToDTO)
.peek(device -> {
if (StringUtils.hasText(device.getDeviceSn())) {
device.setStatus(deviceRedisService.checkDeviceOnline(device.getDeviceSn()));
}
if (StringUtils.hasText(device.getChildDeviceSn())) {
Optional<DeviceDTO> childOpt = this.getDeviceBySn(device.getChildDeviceSn());
childOpt.ifPresent(child -> {
child.setStatus(deviceRedisService.checkDeviceOnline(child.getDeviceSn()));
child.setWorkspaceName(device.getWorkspaceName());
device.setChildren(child);
});
}
})
.collect(Collectors.toList());
return new PaginationData<>(devicesList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
}
/**
* Get the devices list no workspace.
* @param workspaceId
* @param deviceName 设备名称
* @param page
* @param pageSize
* @param domain
* @return
*/
@Override
public PaginationData<DeviceDTO> getNoWorkspaceDevices(String workspaceId , String deviceName, Long page, Long pageSize, Integer domain) {
LambdaQueryWrapper<DeviceEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(DeviceEntity::getWorkspaceId).or().eq(DeviceEntity::getWorkspaceId, "");
if (domain != null) {
wrapper.eq(DeviceEntity::getDomain, domain);
}
if (StringUtils.hasText(deviceName)) {
wrapper.like(DeviceEntity::getDeviceName, deviceName);
}
Page<DeviceEntity> pagination = mapper.selectPage(new Page<>(page, pageSize), wrapper );
List<DeviceDTO> devicesList = pagination.getRecords().stream().map(this::deviceEntityConvertToDTO)
.peek(device -> {
if (StringUtils.hasText(device.getDeviceSn())) {
device.setStatus(deviceRedisService.checkDeviceOnline(device.getDeviceSn()));
}
if (StringUtils.hasText(device.getChildDeviceSn())) {
Optional<DeviceDTO> childOpt = this.getDeviceBySn(device.getChildDeviceSn());
childOpt.ifPresent(child -> {
child.setStatus(deviceRedisService.checkDeviceOnline(child.getDeviceSn()));
child.setWorkspaceName(device.getWorkspaceName());
device.setChildren(child);
});
}
})
.collect(Collectors.toList());
return new PaginationData<DeviceDTO>(devicesList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
}
@Override
public void unbindDevice(String deviceSn) {
Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(deviceSn);
......
......@@ -12,6 +12,7 @@ import com.dji.sample.manage.model.entity.FleetDeviceEntity;
import com.dji.sample.manage.model.entity.FleetEntity;
import com.dji.sample.manage.model.entity.FleetUserEntity;
import com.dji.sample.manage.model.entity.UserEntity;
import com.dji.sample.manage.model.param.FleetSearchParam;
import com.dji.sample.manage.service.IFleetDeviceService;
import com.dji.sample.manage.service.IFleetService;
import com.dji.sample.manage.service.IFleetUserService;
......@@ -63,10 +64,13 @@ public class FleetServiceImpl extends ServiceImpl<IFleetMapper, FleetEntity> imp
}
@Override
public PaginationData<FleetDTO> getFleetPage(String workspaceId, Long page, Long pageSize) {
public PaginationData<FleetDTO> getFleetPage(FleetSearchParam param, String workspaceId, Long page, Long pageSize) {
LambdaQueryWrapper<FleetEntity> fleetQueryWrapper = new LambdaQueryWrapper<>();
fleetQueryWrapper.eq(FleetEntity::getWorkspaceId, workspaceId);
if (StringUtils.hasText(param.getFleetName())) {
fleetQueryWrapper.like(FleetEntity::getFleetName, param.getFleetName());
}
Page<FleetEntity> pagination = mapper.selectPage(new Page<>(page, pageSize), fleetQueryWrapper);
......
......@@ -3,6 +3,7 @@ package com.dji.sample.wayline.controller;
import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
import com.dji.sample.wayline.model.dto.WaylineFileTreeVO;
import com.dji.sample.wayline.model.param.WaylineSearchParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import com.dji.sdk.cloudapi.device.DeviceEnum;
import com.dji.sdk.cloudapi.wayline.*;
......@@ -263,12 +264,13 @@ public class WaylineFileController implements IHttpWaylineService {
*/
@GetMapping(PREFIX + "/workspaces/{workspace_id}/getFileListByParentId")
public HttpResultResponse<PaginationData<GetWaylineListResponse>> getFileListByParentId(
WaylineSearchParam param,
@Valid GetWaylineListRequest request,
@PathVariable("workspace_id") String workspaceId,
@RequestParam(name = "parent_id", defaultValue = "0") String parentId,
HttpServletRequest req,
HttpServletResponse rsp) {
PaginationData<GetWaylineListResponse> data = waylineFileService.getWaylinesByParam(workspaceId, parentId, request);
PaginationData<GetWaylineListResponse> data = waylineFileService.getWaylinesByParam(param, workspaceId, request);
return HttpResultResponse.success(data);
}
......
......@@ -5,6 +5,7 @@ import com.dji.sample.wayline.model.dto.TaskStatisticDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobSearchParam;
import com.dji.sample.wayline.service.IFlightTaskService;
import com.dji.sample.wayline.service.IWaylineJobService;
import com.dji.sdk.common.HttpResultResponse;
......@@ -60,11 +61,11 @@ public class WaylineJobController {
* @return
*/
@GetMapping("/{workspace_id}/jobs")
public HttpResultResponse<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page,
public HttpResultResponse<PaginationData<WaylineJobDTO>> getJobs(WaylineJobSearchParam param,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
@RequestParam(name = "dock_sns", required = false) String dockSns,
@PathVariable(name = "workspace_id") String workspaceId) {
PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, dockSns, page, pageSize);
PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByParam(param, workspaceId, page, pageSize);
return HttpResultResponse.success(data);
}
......
package com.dji.sample.wayline.model.param;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Date;
/**
* @author guan
*/
@Data
public class WaylineJobSearchParam {
@JsonProperty("dock_sns")
private String dockSns;
@JsonProperty("task_or_wayline_name")
private String taskOrWaylineName;
@JsonProperty("start_date")
private Long startDate;
@JsonProperty("end_date")
private Long endDate;
}
package com.dji.sample.wayline.model.param;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author guan
*/
@Data
public class WaylineSearchParam {
@JsonProperty("parent_id")
private String parentId;
private String name;
@JsonProperty("order_by")
private String orderBy;
private Boolean favorited;
}
package com.dji.sample.wayline.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
import com.dji.sample.wayline.model.dto.WaylineFileTreeVO;
import com.dji.sample.wayline.model.entity.WaylineFileEntity;
import com.dji.sample.wayline.model.param.WaylineSearchParam;
import com.dji.sdk.cloudapi.wayline.GetWaylineListRequest;
import com.dji.sdk.cloudapi.wayline.GetWaylineListResponse;
import com.dji.sdk.common.PaginationData;
......@@ -130,4 +133,6 @@ public interface IWaylineFileService extends IService<WaylineFileEntity> {
PaginationData<GetWaylineListResponse> getWaylinesByParam(String workspaceId, String parentId, GetWaylineListRequest param);
PaginationData<GetWaylineListResponse> getWaylinesByParam(WaylineSearchParam param, String workspaceId, GetWaylineListRequest request);
}
package com.dji.sample.wayline.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.wayline.model.dto.TaskStatisticDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobSearchParam;
import com.dji.sdk.common.PaginationData;
import java.util.Collection;
......@@ -80,6 +83,16 @@ public interface IWaylineJobService extends IService<WaylineJobEntity> {
PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize);
/**
* Paginate through all jobs in this workspace.
* @param param 查询参数
* @param workspaceId
* @param page
* @param pageSize
* @return
*/
PaginationData<WaylineJobDTO> getJobsByParam(WaylineJobSearchParam param, String workspaceId, long page, long pageSize);
/**
* 今日任务
* @param workspaceId
* @param dockSns
......
......@@ -13,6 +13,7 @@ import com.dji.sample.wayline.model.dto.WaylineFileDTO;
import com.dji.sample.wayline.model.dto.WaylineFileTreeVO;
import com.dji.sample.wayline.model.entity.WaylineFileEntity;
import com.dji.sample.wayline.model.enums.WaylineFileTypeEnum;
import com.dji.sample.wayline.model.param.WaylineSearchParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import com.dji.sdk.cloudapi.device.DeviceDomainEnum;
import com.dji.sdk.cloudapi.device.DeviceEnum;
......@@ -593,4 +594,48 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
return new PaginationData<>(records, new Pagination(page.getCurrent(), page.getSize(), page.getTotal()));
}
@Override
public PaginationData<GetWaylineListResponse> getWaylinesByParam(WaylineSearchParam param, String workspaceId, GetWaylineListRequest request) {
// Paging Query
LambdaQueryWrapper<WaylineFileEntity> waylineFileQueryWrapper = new LambdaQueryWrapper<>();
waylineFileQueryWrapper.eq(WaylineFileEntity::getIsDir, WaylineFileTypeEnum.FILE.getVal());
waylineFileQueryWrapper.eq(WaylineFileEntity::getWorkspaceId, workspaceId);
waylineFileQueryWrapper.eq(Objects.nonNull(request.getFavorited()), WaylineFileEntity::getFavorited, request.getFavorited());
waylineFileQueryWrapper.and(request.getTemplateType() != null, wrapper -> {
for (WaylineTypeEnum type : request.getTemplateType()) {
wrapper.like(WaylineFileEntity::getTemplateTypes, type.getValue()).or();
}
})
.and(request.getPayloadModelKey() != null, wrapper -> {
for (DeviceEnum type : request.getPayloadModelKey()) {
wrapper.like(WaylineFileEntity::getPayloadModelKeys, type.getType()).or();
}
})
.and(request.getDroneModelKeys() != null, wrapper -> {
for (DeviceEnum type : request.getDroneModelKeys()) {
wrapper.eq(WaylineFileEntity::getDroneModelKey, type.getType()).or();
}
});
if (StringUtils.hasText(param.getParentId())) {
waylineFileQueryWrapper.eq(WaylineFileEntity::getParentId, param.getParentId());
}
// 名字
waylineFileQueryWrapper.like(Objects.nonNull(param.getName()), WaylineFileEntity::getName, param.getName());
waylineFileQueryWrapper.like(Objects.nonNull(request.getKey()), WaylineFileEntity::getName, request.getKey());
// There is a risk of SQL injection
waylineFileQueryWrapper.last(Objects.nonNull(request.getOrderBy()), " order by " + request.getOrderBy().toString());
Page<WaylineFileEntity> page = mapper.selectPage(new Page<>(request.getPage(), request.getPageSize()),waylineFileQueryWrapper);
// Wrap the results of a paging query into a custom paging object.
List<GetWaylineListResponse> records = page.getRecords()
.stream()
.map(this::entityConvertToDTO)
.collect(Collectors.toList());
return new PaginationData<>(records, new Pagination(page.getCurrent(), page.getSize(), page.getTotal()));
}
}
......@@ -17,10 +17,12 @@ import com.dji.sample.wayline.model.dto.TaskSceneStatisticDTO;
import com.dji.sample.wayline.model.dto.TaskStatisticDTO;
import com.dji.sample.wayline.model.dto.TaskStatusStatisticDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.entity.WaylineFileEntity;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.enums.TaskSceneEnum;
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobSearchParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import com.dji.sample.wayline.service.IWaylineJobService;
import com.dji.sample.wayline.service.IWaylineRedisService;
......@@ -183,6 +185,54 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
}
@Override
public PaginationData<WaylineJobDTO> getJobsByParam(WaylineJobSearchParam param, String workspaceId, long page, long pageSize) {
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<>();
waylineJobQueryWrapper.eq(WaylineJobEntity::getWorkspaceId, workspaceId);
waylineJobQueryWrapper.orderByDesc(WaylineJobEntity::getId);
if (StringUtils.hasText(param.getDockSns())) {
List<String> dockSnList = Arrays.asList(param.getDockSns().split(","));
if (!CollectionUtils.isEmpty(dockSnList)) {
waylineJobQueryWrapper.in(WaylineJobEntity::getDockSn, dockSnList);
}
}
// 航线名或者任务名称
if (StringUtils.hasText(param.getTaskOrWaylineName())) {
// 查询航线名称
LambdaQueryWrapper<WaylineFileEntity> waylineFileEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
waylineFileEntityLambdaQueryWrapper.like(WaylineFileEntity::getName, param.getTaskOrWaylineName());
List<WaylineFileEntity> list = waylineFileService.list(waylineFileEntityLambdaQueryWrapper);
List<String> waylineFileIds = list.stream().map(WaylineFileEntity::getWaylineId).distinct().collect(Collectors.toList());
if (CollectionUtils.isEmpty(waylineFileIds)) {
waylineJobQueryWrapper.like(WaylineJobEntity::getName, param.getTaskOrWaylineName());
} else {
waylineJobQueryWrapper.and(wrapper -> wrapper.like(WaylineJobEntity::getName, param.getTaskOrWaylineName())
.or().in(WaylineJobEntity::getFileId, waylineFileIds));
}
}
// 时间段 -- getBeginTime
if (param.getStartDate() != null) {
waylineJobQueryWrapper.ge(WaylineJobEntity::getBeginTime, param.getStartDate());
}
if (param.getEndDate() != null) {
waylineJobQueryWrapper.le(WaylineJobEntity::getBeginTime, param.getEndDate());
}
Page<WaylineJobEntity> pageData = mapper.selectPage(new Page<>(page, pageSize), waylineJobQueryWrapper);
List<WaylineJobDTO> records = pageData.getRecords()
.stream()
.map(this::entity2Dto)
.collect(Collectors.toList());
return new PaginationData<>(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal()));
}
@Override
public PaginationData<WaylineJobDTO> getTodayJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize) {
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<WaylineJobEntity>()
.eq(WaylineJobEntity::getWorkspaceId, workspaceId)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment