Commit a63bf42e by gdj

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

parent f6f7e715
package com.dji.sample.manage.controller; package com.dji.sample.manage.controller;
import com.dji.sample.manage.model.dto.*; 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.model.param.DeviceSearchParam;
import com.dji.sample.manage.service.IDeviceDictionaryService; import com.dji.sample.manage.service.IDeviceDictionaryService;
import com.dji.sample.manage.service.IOperateRecordService;
import com.dji.sample.manage.service.IDeviceService; import com.dji.sample.manage.service.IDeviceService;
import com.dji.sdk.common.HttpResultResponse; import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData; import com.dji.sdk.common.PaginationData;
...@@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
...@@ -33,6 +36,9 @@ public class DeviceController { ...@@ -33,6 +36,9 @@ public class DeviceController {
@Autowired @Autowired
private IDeviceDictionaryService deviceDictionaryService; private IDeviceDictionaryService deviceDictionaryService;
@Autowired
private IOperateRecordService operateRecordService;
/** /**
* Get the topology list of all online devices in one workspace. * Get the topology list of all online devices in one workspace.
* @param workspaceId * @param workspaceId
...@@ -136,9 +142,19 @@ public class DeviceController { ...@@ -136,9 +142,19 @@ public class DeviceController {
* @return * @return
*/ */
@PostMapping("/{workspace_id}/devices/ota") @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) { @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; ...@@ -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.DeviceFirmwareDTO;
import com.dji.sample.manage.model.dto.DeviceFirmwareNoteDTO; import com.dji.sample.manage.model.dto.DeviceFirmwareNoteDTO;
import com.dji.sample.manage.model.dto.FirmwareFileProperties; 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.DeviceFirmwareQueryParam;
import com.dji.sample.manage.model.param.DeviceFirmwareUpdateParam; import com.dji.sample.manage.model.param.DeviceFirmwareUpdateParam;
import com.dji.sample.manage.model.param.DeviceFirmwareUploadParam; import com.dji.sample.manage.model.param.DeviceFirmwareUploadParam;
import com.dji.sample.manage.service.IDeviceFirmwareService; 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.HttpResultResponse;
import com.dji.sdk.common.PaginationData; import com.dji.sdk.common.PaginationData;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -37,6 +39,9 @@ public class DeviceFirmwareController { ...@@ -37,6 +39,9 @@ public class DeviceFirmwareController {
@Autowired @Autowired
private IDeviceFirmwareService service; private IDeviceFirmwareService service;
@Autowired
private IOperateRecordService operateRecordService;
/** /**
* Get the latest firmware version information for this device model. * Get the latest firmware version information for this device model.
* @param deviceNames * @param deviceNames
...@@ -89,10 +94,29 @@ public class DeviceFirmwareController { ...@@ -89,10 +94,29 @@ public class DeviceFirmwareController {
String creator = customClaim.getUsername(); String creator = customClaim.getUsername();
service.importFirmwareFile(workspaceId, creator, param, file); service.importFirmwareFile(workspaceId, creator, param, file);
// 记录操作日志(operate_record)
operateRecordService.record(request, OperateRecordTypeEnum.FIRMWARE_UPLOAD, null, param);
return HttpResultResponse.success(); 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. * Change the firmware availability status.
* @param workspaceId * @param workspaceId
* @param firmwareId * @param firmwareId
......
package com.dji.sample.manage.model.dto; package com.dji.sample.manage.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
...@@ -42,4 +44,10 @@ public class DeviceFirmwareDTO { ...@@ -42,4 +44,10 @@ public class DeviceFirmwareDTO {
private String workspaceId; private String workspaceId;
private String username; 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 { ...@@ -29,7 +29,13 @@ public enum OperateRecordTypeEnum {
SEIZE_FLIGHT_AUTHORITY("SEIZE_FLIGHT_AUTHORITY", "夺取飞行控制权"), SEIZE_FLIGHT_AUTHORITY("SEIZE_FLIGHT_AUTHORITY", "夺取飞行控制权"),
SEIZE_PAYLOAD_AUTHORITY("SEIZE_PAYLOAD_AUTHORITY", "夺取负载控制权"), SEIZE_PAYLOAD_AUTHORITY("SEIZE_PAYLOAD_AUTHORITY", "夺取负载控制权"),
PAYLOAD_COMMANDS("PAYLOAD_COMMANDS", "负载控制指令"), 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 type;
private final String description; private final String description;
......
...@@ -73,6 +73,15 @@ public interface IDeviceFirmwareService { ...@@ -73,6 +73,15 @@ public interface IDeviceFirmwareService {
void importFirmwareFile(String workspaceId, String creator, DeviceFirmwareUploadParam param, MultipartFile file); 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. * Save the file information of the firmware.
* @param firmware * @param firmware
* @param deviceNames * @param deviceNames
......
...@@ -46,6 +46,7 @@ import java.io.InputStream; ...@@ -46,6 +46,7 @@ import java.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
...@@ -167,6 +168,15 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement ...@@ -167,6 +168,15 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
} }
@Override @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) { public Boolean checkFileExist(String workspaceId, String fileMd5) {
return RedisOpsUtils.checkExist(RedisConst.FILE_UPLOADING_PREFIX + workspaceId + fileMd5) || return RedisOpsUtils.checkExist(RedisConst.FILE_UPLOADING_PREFIX + workspaceId + fileMd5) ||
mapper.selectCount(new LambdaQueryWrapper<DeviceFirmwareEntity>() mapper.selectCount(new LambdaQueryWrapper<DeviceFirmwareEntity>()
...@@ -337,6 +347,8 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement ...@@ -337,6 +347,8 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
.firmwareStatus(entity.getStatus()) .firmwareStatus(entity.getStatus())
.workspaceId(entity.getWorkspaceId()) .workspaceId(entity.getWorkspaceId())
.username(entity.getUsername()) .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(); .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