Commit a63bf42e by gdj

增加固件查询接口和固件操作日志。

parent f6f7e715
package com.dji.sample.manage.controller;
import com.dji.sample.manage.model.dto.*;
import com.dji.sample.manage.model.enums.OperateRecordTypeEnum;
import com.dji.sample.manage.model.param.DeviceSearchParam;
import com.dji.sample.manage.service.IDeviceDictionaryService;
import com.dji.sample.manage.service.IOperateRecordService;
import com.dji.sample.manage.service.IDeviceService;
import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
......@@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Optional;
......@@ -33,6 +36,9 @@ public class DeviceController {
@Autowired
private IDeviceDictionaryService deviceDictionaryService;
@Autowired
private IOperateRecordService operateRecordService;
/**
* Get the topology list of all online devices in one workspace.
* @param workspaceId
......@@ -136,9 +142,19 @@ public class DeviceController {
* @return
*/
@PostMapping("/{workspace_id}/devices/ota")
public HttpResultResponse createOtaJob(@PathVariable("workspace_id") String workspaceId,
public HttpResultResponse createOtaJob(HttpServletRequest request,
@PathVariable("workspace_id") String workspaceId,
@RequestBody List<DeviceFirmwareUpgradeDTO> upgradeDTOS) {
return deviceService.createDeviceOtaJob(workspaceId, upgradeDTOS);
HttpResultResponse response = deviceService.createDeviceOtaJob(workspaceId, upgradeDTOS);
// 下发成功后记录操作日志(operate_record)
if (response != null && response.getCode() == 0 && upgradeDTOS != null) {
for (DeviceFirmwareUpgradeDTO dto : upgradeDTOS) {
operateRecordService.record(request, OperateRecordTypeEnum.FIRMWARE_UPGRADE, dto.getSn(), dto);
}
}
return response;
}
/**
......
......@@ -4,10 +4,12 @@ import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.manage.model.dto.DeviceFirmwareDTO;
import com.dji.sample.manage.model.dto.DeviceFirmwareNoteDTO;
import com.dji.sample.manage.model.dto.FirmwareFileProperties;
import com.dji.sample.manage.model.enums.OperateRecordTypeEnum;
import com.dji.sample.manage.model.param.DeviceFirmwareQueryParam;
import com.dji.sample.manage.model.param.DeviceFirmwareUpdateParam;
import com.dji.sample.manage.model.param.DeviceFirmwareUploadParam;
import com.dji.sample.manage.service.IDeviceFirmwareService;
import com.dji.sample.manage.service.IOperateRecordService;
import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -37,6 +39,9 @@ public class DeviceFirmwareController {
@Autowired
private IDeviceFirmwareService service;
@Autowired
private IOperateRecordService operateRecordService;
/**
* Get the latest firmware version information for this device model.
* @param deviceNames
......@@ -89,10 +94,29 @@ public class DeviceFirmwareController {
String creator = customClaim.getUsername();
service.importFirmwareFile(workspaceId, creator, param, file);
// 记录操作日志(operate_record)
operateRecordService.record(request, OperateRecordTypeEnum.FIRMWARE_UPLOAD, null, param);
return HttpResultResponse.success();
}
/**
* Get firmware detail by firmwareId.
* @param workspaceId
* @param firmwareId
* @return
*/
@GetMapping("/{workspace_id}/firmwares/{firmware_id}")
public HttpResultResponse<DeviceFirmwareDTO> getFirmwareDetail(
@PathVariable("workspace_id") String workspaceId,
@PathVariable("firmware_id") String firmwareId) {
return service.getFirmwareDetail(workspaceId, firmwareId)
.map(HttpResultResponse::success)
.orElse(HttpResultResponse.error("Firmware not found."));
}
/**
* Change the firmware availability status.
* @param workspaceId
* @param firmwareId
......
package com.dji.sample.manage.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -42,4 +44,10 @@ public class DeviceFirmwareDTO {
private String workspaceId;
private String username;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}
......@@ -29,7 +29,13 @@ public enum OperateRecordTypeEnum {
SEIZE_FLIGHT_AUTHORITY("SEIZE_FLIGHT_AUTHORITY", "夺取飞行控制权"),
SEIZE_PAYLOAD_AUTHORITY("SEIZE_PAYLOAD_AUTHORITY", "夺取负载控制权"),
PAYLOAD_COMMANDS("PAYLOAD_COMMANDS", "负载控制指令"),
RTK_CALIBRATION("RTK_CALIBRATION", "RTK标定");
RTK_CALIBRATION("RTK_CALIBRATION", "RTK标定"),
// -- FIRMWARE
FIRMWARE_UPLOAD("FIRMWARE_UPLOAD", "上传固件"),
FIRMWARE_UPGRADE("FIRMWARE_UPGRADE", "下发固件升级"),
;
private final String type;
private final String description;
......
......@@ -73,6 +73,15 @@ public interface IDeviceFirmwareService {
void importFirmwareFile(String workspaceId, String creator, DeviceFirmwareUploadParam param, MultipartFile file);
/**
* Get firmware detail by firmwareId.
*
* @param workspaceId
* @param firmwareId
* @return
*/
Optional<DeviceFirmwareDTO> getFirmwareDetail(String workspaceId, String firmwareId);
/**
* Save the file information of the firmware.
* @param firmware
* @param deviceNames
......
......@@ -46,6 +46,7 @@ import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
......@@ -167,6 +168,15 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
}
@Override
public Optional<DeviceFirmwareDTO> getFirmwareDetail(String workspaceId, String firmwareId) {
return Optional.ofNullable(entity2Dto(mapper.selectOne(
new LambdaQueryWrapper<DeviceFirmwareEntity>()
.eq(DeviceFirmwareEntity::getWorkspaceId, workspaceId)
.eq(DeviceFirmwareEntity::getFirmwareId, firmwareId),
null)));
}
@Override
public Boolean checkFileExist(String workspaceId, String fileMd5) {
return RedisOpsUtils.checkExist(RedisConst.FILE_UPLOADING_PREFIX + workspaceId + fileMd5) ||
mapper.selectCount(new LambdaQueryWrapper<DeviceFirmwareEntity>()
......@@ -337,6 +347,8 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
.firmwareStatus(entity.getStatus())
.workspaceId(entity.getWorkspaceId())
.username(entity.getUsername())
.createTime(entity.getCreateTime() != null ? LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault()) : null)
.updateTime(entity.getUpdateTime() != null ? LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getUpdateTime()), ZoneId.systemDefault()) : null)
.build();
}
......
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