ard-admin/src/main/java/com/ard/web/controller/data/MinioFileController.java
New file @@ -0,0 +1,47 @@ package com.ard.web.controller.data; import com.ard.common.utils.file.FileUtils; import com.ard.work.domain.entity.MinioSysFile; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import static com.ard.work.component.minio.utils.MinioUtil.uploadFile; /** * 文件请求处理 * * @author ard */ @Api(tags = "MinIo文件上传") @RestController @RequestMapping("/minoFile") public class MinioFileController { private static final Logger log = LoggerFactory.getLogger(MinioFileController.class); /** * 文件上传-指定桶名称 */ @ApiOperation("文件上传-指定桶名称") @PostMapping("upload/{bucketName}/{fileName}") public MinioSysFile upload(@RequestPart("file")MultipartFile file, @PathVariable String bucketName, @PathVariable String fileName) { try { // 上传并返回访问地址 String url = uploadFile(bucketName,fileName,file); MinioSysFile minioSysFile = new MinioSysFile(); minioSysFile.setName(FileUtils.getName(url)); minioSysFile.setUrl(url); return minioSysFile; } catch (Exception e) { log.error("上传文件失败", e); //return R.fail(e.getMessage()); return null; } } } ard-admin/src/main/java/com/ard/web/controller/work/ArdDroneController.java
File was renamed from ard-admin/src/main/java/com/ard/web/controller/data/ArdDroneController.java @@ -1,4 +1,4 @@ package com.ard.web.controller.data; package com.ard.web.controller.work; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -32,11 +32,11 @@ */ @Api(tags = "无人机管理接口") @RestController @RequestMapping("/data/drone") @RequestMapping("/uav/drone") public class ArdDroneController extends BaseController { @Autowired private IArdDroneService ardDroneManagementService; private IArdDroneService ardDroneService; /** * 查询无人机管理列表 @@ -46,7 +46,7 @@ @GetMapping("/list") public TableDataInfo list(ArdDroneInfo ardDroneInfo) { startPage(); List<ArdDroneInfo> list = ardDroneManagementService.selectArdDroneManagementList(ardDroneInfo); List<ArdDroneInfo> list = ardDroneService.selectArdDroneList(ardDroneInfo); return getDataTable(list); } @@ -58,7 +58,7 @@ @Log(title = "无人机管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ArdDroneInfo ardDroneInfo) { List<ArdDroneInfo> list = ardDroneManagementService.selectArdDroneManagementList(ardDroneInfo); List<ArdDroneInfo> list = ardDroneService.selectArdDroneList(ardDroneInfo); ExcelUtil<ArdDroneInfo> util = new ExcelUtil<ArdDroneInfo>(ArdDroneInfo.class); util.exportExcel(response, list, "无人机管理数据"); } @@ -70,7 +70,7 @@ @PreAuthorize("@ss.hasPermi('system:management:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { return success(ardDroneManagementService.selectArdDroneManagementById(id)); return success(ardDroneService.selectArdDroneById(id)); } /** @@ -81,7 +81,7 @@ @Log(title = "无人机管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ArdDroneInfo ardDroneInfo) { return toAjax(ardDroneManagementService.insertArdDroneManagement(ardDroneInfo)); return toAjax(ardDroneService.insertArdDrone(ardDroneInfo)); } /** @@ -92,7 +92,7 @@ @Log(title = "无人机管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArdDroneInfo ardDroneInfo) { return toAjax(ardDroneManagementService.updateArdDroneManagement(ardDroneInfo)); return toAjax(ardDroneService.updateArdDrone(ardDroneInfo)); } /** @@ -103,7 +103,7 @@ @Log(title = "无人机管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(ardDroneManagementService.deleteArdDroneManagementByIds(ids)); return toAjax(ardDroneService.deleteArdDroneByIds(ids)); } } ard-admin/src/main/java/com/ard/web/controller/work/ArdServerController.java
File was renamed from ard-admin/src/main/java/com/ard/web/controller/data/ArdServerController.java @@ -1,4 +1,4 @@ package com.ard.web.controller.data; package com.ard.web.controller.work; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -32,7 +32,7 @@ */ @Api(tags = "服务器管理接口") @RestController @RequestMapping("/data/server") @RequestMapping("/uav/server") public class ArdServerController extends BaseController { @Autowired ard-admin/src/main/java/com/ard/web/controller/work/uav/UavBoxController.java
@@ -4,8 +4,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import com.ard.work.domain.entity.UavBoxEntity; import com.ard.work.service.IUavBoxService; import com.ard.work.domain.entity.ArdDroneInfo; import com.ard.work.service.IArdDroneService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; @@ -33,10 +33,10 @@ @Api(tags = "无人机盒子") @RestController @RequestMapping("/uav/box") public class UavBoxController extends BaseController { public class UavBoxController extends BaseController { @Resource private IUavBoxService uavBoxService; private IArdDroneService ardDroneService; /** * 查询无人机盒子列表 @@ -44,10 +44,10 @@ @ApiOperation("查询无人机盒子列表") @PreAuthorize("@ss.hasPermi('uav:box:list')") @GetMapping("/list") public TableDataInfo list(UavBoxEntity uavBoxEntity) public TableDataInfo list(ArdDroneInfo ArdDroneInfo) { startPage(); List<UavBoxEntity> list = uavBoxService.selectUavBoxList(uavBoxEntity); List<ArdDroneInfo> list = ardDroneService.selectArdDroneList(ArdDroneInfo); return getDataTable(list); } @@ -57,10 +57,9 @@ @PreAuthorize("@ss.hasPermi('uav:box:export')") @Log(title = "无人机盒子", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, UavBoxEntity uavBoxEntity) { List<UavBoxEntity> list = uavBoxService.selectUavBoxList(uavBoxEntity); ExcelUtil<UavBoxEntity> util = new ExcelUtil<UavBoxEntity>(UavBoxEntity.class); public void export(HttpServletResponse response, ArdDroneInfo ArdDroneInfo) { List<ArdDroneInfo> list = ardDroneService.selectArdDroneList(ArdDroneInfo); ExcelUtil<ArdDroneInfo> util = new ExcelUtil<ArdDroneInfo>(ArdDroneInfo.class); util.exportExcel(response, list, "无人机盒子数据"); } @@ -70,9 +69,8 @@ @ApiOperation("获取无人机盒子详细信息") @PreAuthorize("@ss.hasPermi('uav:box:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(uavBoxService.selectUavBoxById(id)); public AjaxResult getInfo(@PathVariable("id") String id) { return success(ardDroneService.selectArdDroneById(id)); } /** @@ -82,9 +80,8 @@ @PreAuthorize("@ss.hasPermi('uav:box:add')") @Log(title = "无人机盒子", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody UavBoxEntity uavBoxEntity) { return toAjax(uavBoxService.insertUavBox(uavBoxEntity)); public AjaxResult add(@RequestBody ArdDroneInfo ardDroneInfo) { return toAjax(ardDroneService.insertArdDrone(ardDroneInfo)); } /** @@ -94,9 +91,8 @@ @PreAuthorize("@ss.hasPermi('uav:box:edit')") @Log(title = "无人机盒子", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody UavBoxEntity uavBoxEntity) { return toAjax(uavBoxService.updateUavBox(uavBoxEntity)); public AjaxResult edit(@RequestBody ArdDroneInfo ArdDroneInfo) { return toAjax(ardDroneService.updateArdDrone(ArdDroneInfo)); } /** @@ -106,8 +102,8 @@ @PreAuthorize("@ss.hasPermi('uav:box:remove')") @Log(title = "无人机盒子", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(uavBoxService.deleteUavBoxByIds(ids)); public AjaxResult remove(@PathVariable String[] ids) { return toAjax(ardDroneService.deleteArdDroneByIds(ids)); } } ard-ui/src/views/monitor/server/index.vue
@@ -157,14 +157,14 @@ </tr> </thead> <tbody v-if="server.sysFiles"> <tr v-for="(sysFile, index) in server.sysFiles" :key="index"> <td class="el-table__cell is-leaf"><div class="cell">{{ sysFile.dirName }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ sysFile.sysTypeName }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ sysFile.typeName }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ sysFile.total }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ sysFile.free }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ sysFile.used }}</div></td> <td class="el-table__cell is-leaf"><div class="cell" :class="{'text-danger': sysFile.usage > 80}">{{ sysFile.usage }}%</div></td> <tr v-for="(minioSysFile, index) in server.sysFiles" :key="index"> <td class="el-table__cell is-leaf"><div class="cell">{{ minioSysFile.dirName }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ minioSysFile.sysTypeName }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ minioSysFile.typeName }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ minioSysFile.total }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ minioSysFile.free }}</div></td> <td class="el-table__cell is-leaf"><div class="cell">{{ minioSysFile.used }}</div></td> <td class="el-table__cell is-leaf"><div class="cell" :class="{'text-danger': minioSysFile.usage > 80}">{{ minioSysFile.usage }}%</div></td> </tr> </tbody> </table> ard-work/src/main/java/com/ard/work/component/minio/utils/MinioUtil.java
@@ -76,16 +76,24 @@ * 上传文件 * * @param bucketName 桶名称 * @param fileName * @param fileName 文件名 * @throws IOException */ public static String uploadFile(String bucketName, String fileName, MultipartFile multipartFile) throws IOException { String url = ""; MinioClient minioClient = SpringUtils.getBean(MinioClient.class); try (InputStream inputStream = multipartFile.getInputStream()) { minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(inputStream, multipartFile.getSize(), -1).contentType(multipartFile.getContentType()).build()); url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(fileName).method(Method.GET).build()); minioClient.putObject(PutObjectArgs.builder(). bucket(bucketName). object(fileName). stream(inputStream,multipartFile.getSize(), -1). contentType(multipartFile.getContentType()). build()); url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder(). bucket(bucketName). object(fileName). method(Method.GET). build()); url = url.substring(0, url.indexOf('?')); return ServletUtils.urlDecode(url); } catch (Exception e) { ard-work/src/main/java/com/ard/work/domain/entity/ArdDroneInfo.java
@@ -1,43 +1,90 @@ package com.ard.work.domain.entity; import java.util.Date; import com.ard.common.annotation.Excel; import com.ard.common.core.domain.BaseEntity; import lombok.Data; import com.ard.work.domain.receiver.BoxInfoReceiver; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; import java.util.Date; import java.util.Objects; /** * 无人机管理对象 ard_drone_info * 无人机盒子对象 uav_box * * @author xia * @date 2025-10-10 * @author ruoyi * @date 2025-03-04 */ @Data public class ArdDroneInfo extends BaseEntity { @Builder @AllArgsConstructor @NoArgsConstructor public class ArdDroneInfo extends BaseEntity{ private static final long serialVersionUID = 1L; /** ID */ private String id; /** 主键 */ private Long id; /** 设备型号 */ private String deviceModel; /** 盒子编码 */ @Excel(name = "盒子编码") private String boxSn; /** 设备SN */ private String deviceSn; /** 盒子名称 */ @Excel(name = "盒子名称") private String boxName; /** 设备名称 */ private String deviceName; /** 盒子版本 */ @Excel(name = "盒子版本") private String boxVersion; /** 工作状态 */ private String deviceStatus; /** 启动时间 */ @Excel(name = "启动时间") private Date startTime; /** 加入时间 */ private Date deviceAddTime; /** 在线状态 */ @Excel(name = "在线状态") private Integer onLine; /** 在线时间 */ private Date onlineTime; /** 视频服务器地址 */ @Excel(name = "视频服务器地址") private String videoServer; /** 视频服务器端口 */ @Excel(name = "视频服务器端口") private Integer videoPort; /** 最后任务id */ @Excel(name = "最后任务id") private Integer lastTaskId; /** 用户ID */ @Excel(name = "用户ID") private Long userId; /** 部门ID */ @Excel(name = "部门ID") private Long deptId; /** 服务器管理ID */ @Excel(name = "服务器管理ID") private String serverInfoId; /** * 服务器实体对象 */ private ArdServerInfo ardServerInfo; /** * 判断两个无人机对象的属性是否相同 */ public boolean isSameAs(BoxInfoReceiver other) { return Objects.equals(this.boxName, other.getBoxName()) && Objects.equals(this.boxVersion, other.getBoxVersion()) && Objects.equals(this.lastTaskId, other.getLastTaskId()) && Objects.equals(this.onLine, other.getOnLine()); // 对比其他属性 } } ard-work/src/main/java/com/ard/work/domain/entity/MinioSysFile.java
New file @@ -0,0 +1,51 @@ package com.ard.work.domain.entity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; /** * 文件信息 * * @author ard */ public class MinioSysFile { /** * 文件名称 */ private String name; /** * 文件地址 */ private String url; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("name", getName()) .append("url", getUrl()) .toString(); } } ard-work/src/main/java/com/ard/work/domain/entity/UavBoxEntity.java
File was deleted ard-work/src/main/java/com/ard/work/domain/receiver/BoxInfoReceiver.java
@@ -1,5 +1,6 @@ package com.ard.work.domain.receiver; import com.ard.work.domain.entity.ArdServerInfo; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; @@ -34,6 +35,8 @@ /** * 云盒在线状态 * 0:不在线 * 1:在线 */ @JsonProperty("onLine") private Integer onLine; @@ -56,4 +59,15 @@ @JsonProperty("lastTaskId") private Integer lastTaskId; /** * 服务器实体对象ID */ @JsonProperty("lastTaskId") private String serverInfoId; /** * 服务器实体对象 */ private ArdServerInfo ardServerInfo; } ard-work/src/main/java/com/ard/work/mapper/ArdDroneInfoMapper.java
@@ -5,58 +5,57 @@ import java.util.List; /** * 无人机管理Mapper接口 * * @author xia * @date 2025-10-10 * 无人机盒子Mapper接口 * * @author lsy * @date 2025-03-04 */ public interface ArdDroneInfoMapper { /** * 查询无人机管理 * * @param id 无人机管理主键 * @return 无人机管理 * 查询无人机盒子 * * @param id 无人机盒子主键 * @return 无人机盒子 */ public ArdDroneInfo selectArdDroneManagementById(String id); ArdDroneInfo selectArdDroneById(String id); /** * 查询无人机管理列表 * * @param ardDroneInfo 无人机管理 * @return 无人机管理集合 * 查询无人机盒子列表 * * @param ArdDroneInfo 无人机盒子 * @return 无人机盒子集合 */ public List<ArdDroneInfo> selectArdDroneManagementList(ArdDroneInfo ardDroneInfo); List<ArdDroneInfo> selectArdDroneList(ArdDroneInfo ArdDroneInfo); /** * 新增无人机管理 * * @param ardDroneInfo 无人机管理 * 新增无人机盒子 * * @param ArdDroneInfo 无人机盒子 * @return 结果 */ public int insertArdDroneManagement(ArdDroneInfo ardDroneInfo); int insertArdDrone(ArdDroneInfo ArdDroneInfo); /** * 修改无人机管理 * * @param ardDroneInfo 无人机管理 * 修改无人机盒子 * * @param ArdDroneInfo 无人机盒子 * @return 结果 */ public int updateArdDroneManagement(ArdDroneInfo ardDroneInfo); int updateArdDrone(ArdDroneInfo ArdDroneInfo); /** * 删除无人机管理 * * @param id 无人机管理主键 * 删除无人机盒子 * * @param id 无人机盒子主键 * @return 结果 */ public int deleteArdDroneManagementById(String id); int deleteArdDroneById(String id); /** * 批量删除无人机管理 * * 批量删除无人机盒子 * * @param ids 需要删除的数据主键集合 * @return 结果 */ public int deleteArdDroneManagementByIds(String[] ids); int deleteArdDroneByIds(String[] ids); } ard-work/src/main/java/com/ard/work/mapper/UavBoxMapper.java
File was deleted ard-work/src/main/java/com/ard/work/service/IArdDroneService.java
@@ -1,62 +1,64 @@ package com.ard.work.service; import com.ard.work.domain.entity.ArdDroneInfo; import java.util.List; /** * 无人机管理Service接口 * 无人机盒子Service接口 * * @author xia * @date 2025-10-10 * @author ruoyi * @date 2025-03-04 */ public interface IArdDroneService { /** * 查询无人机管理 * 查询无人机盒子 * * @param id 无人机管理主键 * @return 无人机管理 * @param id 无人机盒子主键 * @return 无人机盒子 */ public ArdDroneInfo selectArdDroneManagementById(String id); public ArdDroneInfo selectArdDroneById(String id); /** * 查询无人机管理列表 * 查询无人机盒子列表 * * @param ardDroneInfo 无人机管理 * @return 无人机管理集合 * @param ArdDroneInfo 无人机盒子 * @return 无人机盒子集合 */ public List<ArdDroneInfo> selectArdDroneManagementList(ArdDroneInfo ardDroneInfo); public List<ArdDroneInfo> selectArdDroneList(ArdDroneInfo ArdDroneInfo); /** * 新增无人机管理 * 新增无人机盒子 * * @param ardDroneInfo 无人机管理 * @param ArdDroneInfo 无人机盒子 * @return 结果 */ public int insertArdDroneManagement(ArdDroneInfo ardDroneInfo); public int insertArdDrone(ArdDroneInfo ArdDroneInfo); /** * 修改无人机管理 * 修改无人机盒子 * * @param ardDroneInfo 无人机管理 * @param ArdDroneInfo 无人机盒子 * @return 结果 */ public int updateArdDroneManagement(ArdDroneInfo ardDroneInfo); public int updateArdDrone(ArdDroneInfo ArdDroneInfo); /** * 批量删除无人机管理 * 批量删除无人机盒子 * * @param ids 需要删除的无人机管理主键集合 * @param ids 需要删除的无人机盒子主键集合 * @return 结果 */ public int deleteArdDroneManagementByIds(String[] ids); public int deleteArdDroneByIds(String[] ids); /** * 删除无人机管理信息 * 删除无人机盒子信息 * * @param id 无人机管理主键 * @param id 无人机盒子主键 * @return 结果 */ public int deleteArdDroneManagementById(String id); public int deleteArdDroneById(String id); } ard-work/src/main/java/com/ard/work/service/IMinioFileService.java
New file @@ -0,0 +1,53 @@ package com.ard.work.service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; /** * 文件上传接口 * * @author ard */ public interface IMinioFileService { /** * 文件上传接口 * * @param file 上传的文件 * @return 访问地址 * @throws Exception */ public String uploadFile(MultipartFile file) throws Exception; /** * 文件上传-指定桶名称 * * @param file 上传的文件 * @param bucketName 桶名称 * @return 访问地址 * @throws Exception */ public String uploadFile(MultipartFile file, String bucketName) throws Exception; /** * 文件下载接口 */ public void downloadFile(String fileName, HttpServletResponse response) throws Exception; /** * 文件下载接口-指定桶名称 */ public void downloadFile(String fileName, String bucketName, HttpServletResponse response) throws Exception; /** * 文件删除接口 */ public void deleteFile(String fileName) throws Exception; /** * 文件删除接口-指定桶名称 */ public void deleteFile(String fileName, String bucketName) throws Exception; } ard-work/src/main/java/com/ard/work/service/IUavBoxService.java
File was deleted ard-work/src/main/java/com/ard/work/service/impl/ArdDroneServiceImpl.java
@@ -1,94 +1,142 @@ package com.ard.work.service.impl; import com.ard.common.utils.uuid.IdUtils; import com.ard.common.utils.DateUtils; import com.ard.work.domain.entity.ArdDroneInfo; import com.ard.work.domain.receiver.BoxInfoReceiver; import com.ard.work.mapper.ArdDroneInfoMapper; import com.ard.work.service.ITyService; import com.ard.work.service.IArdDroneService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Stack; import java.util.stream.Collectors; /** * 无人机管理Service业务层处理 * * @author xia * @date 2025-10-10 * 无人机盒子Service业务层处理 * * @author ruoyi * @date 2025-03-04 */ @Service public class ArdDroneServiceImpl implements IArdDroneService { @Autowired private ArdDroneInfoMapper ardDroneInfoMapper; @Resource private ArdDroneInfoMapper ArdDroneInfoMapper; @Resource private ITyService tyService; /** * 查询无人机管理 * * @param id 无人机管理主键 * @return 无人机管理 * 查询无人机盒子 * * @param id 无人机盒子主键 * @return 无人机盒子 */ @Override public ArdDroneInfo selectArdDroneManagementById(String id) { return ardDroneInfoMapper.selectArdDroneManagementById(id); public ArdDroneInfo selectArdDroneById(String id) { return ArdDroneInfoMapper.selectArdDroneById(id); } /** * 查询无人机管理列表 * * @param ardDroneInfo 无人机管理 * @return 无人机管理 * 查询无人机盒子列表 * * @param ArdDroneInfo 无人机盒子 * @return 无人机盒子 */ @Override public List<ArdDroneInfo> selectArdDroneManagementList(ArdDroneInfo ardDroneInfo) { return ardDroneInfoMapper.selectArdDroneManagementList(ardDroneInfo); public List<ArdDroneInfo> selectArdDroneList(ArdDroneInfo ArdDroneInfo) { return ArdDroneInfoMapper.selectArdDroneList(ArdDroneInfo); } /** * 新增无人机管理 * * @param ardDroneInfo 无人机管理 * 新增无人机盒子 * * @param ArdDroneInfo 无人机盒子 * @return 结果 */ @Override public int insertArdDroneManagement(ArdDroneInfo ardDroneInfo) { ardDroneInfo.setId(IdUtils.fastUUID()); return ardDroneInfoMapper.insertArdDroneManagement(ardDroneInfo); public int insertArdDrone(ArdDroneInfo ArdDroneInfo) { ArdDroneInfo.setCreateTime(DateUtils.getNowDate()); return ArdDroneInfoMapper.insertArdDrone(ArdDroneInfo); } /** * 修改无人机管理 * * @param ardDroneInfo 无人机管理 * 修改无人机盒子 * * @param ArdDroneInfo 无人机盒子 * @return 结果 */ @Override public int updateArdDroneManagement(ArdDroneInfo ardDroneInfo) { return ardDroneInfoMapper.updateArdDroneManagement(ardDroneInfo); public int updateArdDrone(ArdDroneInfo ArdDroneInfo) { ArdDroneInfo.setUpdateTime(DateUtils.getNowDate()); return ArdDroneInfoMapper.updateArdDrone(ArdDroneInfo); } /** * 批量删除无人机管理 * * @param ids 需要删除的无人机管理主键 * 批量删除无人机盒子 * * @param ids 需要删除的无人机盒子主键 * @return 结果 */ @Override public int deleteArdDroneManagementByIds(String[] ids) { return ardDroneInfoMapper.deleteArdDroneManagementByIds(ids); public int deleteArdDroneByIds(String[] ids) { return ArdDroneInfoMapper.deleteArdDroneByIds(ids); } /** * 删除无人机管理信息 * * @param id 无人机管理主键 * 删除无人机盒子信息 * * @param id 无人机盒子主键 * @return 结果 */ @Override public int deleteArdDroneManagementById(String id) { return ardDroneInfoMapper.deleteArdDroneManagementById(id); public int deleteArdDroneById(String id) { return ArdDroneInfoMapper.deleteArdDroneById(id); } /** * 同步盒子属性 * * @return 结果 */ @Scheduled(fixedRate = 1000 * 60) public void syncBoxInfo() { List<ArdDroneInfo> ArdDroneeListEntity = selectArdDroneList(new ArdDroneInfo()); // 将本地列表转换为Map,方便快速查找 Map<String, ArdDroneInfo> localArdDroneMap = ArdDroneeListEntity.stream() .collect(Collectors.toMap(ArdDroneInfo::getBoxSn, drone -> drone)); //遍历接口最新获取的无人机盒子信息 tyService.getBoxList().forEach(remoteArdDrone -> { ArdDroneInfo localArdDroneInfo = localArdDroneMap.get(remoteArdDrone.getBoxSn()); if (localArdDroneInfo != null) { if (!localArdDroneInfo.isSameAs(remoteArdDrone)) { // 修改无人机(只更新变化的属性) updateChangedAttributes(localArdDroneInfo, remoteArdDrone); updateArdDrone(localArdDroneInfo); } } }); } // 更新变化的属性 private void updateChangedAttributes(ArdDroneInfo localBoxInfo, BoxInfoReceiver remoteArdDrone) { if (!Objects.equals(localBoxInfo.getBoxName(), remoteArdDrone.getBoxName())) { localBoxInfo.setBoxName(remoteArdDrone.getBoxName()); } if (!Objects.equals(localBoxInfo.getBoxVersion(), remoteArdDrone.getBoxVersion())) { localBoxInfo.setBoxVersion(remoteArdDrone.getBoxVersion()); } if (!Objects.equals(localBoxInfo.getLastTaskId(), remoteArdDrone.getLastTaskId())) { localBoxInfo.setLastTaskId(remoteArdDrone.getLastTaskId()); } if (!Objects.equals(localBoxInfo.getOnLine(), remoteArdDrone.getOnLine())) { localBoxInfo.setOnLine(remoteArdDrone.getOnLine()); } // 更新其他属性 } } ard-work/src/main/java/com/ard/work/service/impl/UavBoxServiceImpl.java
File was deleted ard-work/src/main/resources/mapper/ArdDroneInfoMapper.xml
@@ -4,89 +4,138 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ard.work.mapper.ArdDroneInfoMapper"> <resultMap type="ArdDroneInfo" id="ArdDroneManagementResult"> <resultMap type="ArdDroneInfo" id="ArdDroneResult"> <result property="id" column="id" /> <result property="deviceModel" column="device_model" /> <result property="deviceSn" column="device_sn" /> <result property="deviceName" column="device_name" /> <result property="deviceStatus" column="device_status" /> <result property="deviceAddTime" column="device_add_time" /> <result property="onlineTime" column="online_time" /> <result property="boxSn" column="box_sn" /> <result property="boxName" column="box_name" /> <result property="boxVersion" column="box_version" /> <result property="startTime" column="start_time" /> <result property="onLine" column="onLine" /> <result property="videoServer" column="video_server" /> <result property="videoPort" column="video_port" /> <result property="lastTaskId" column="last_task_id" /> <result property="userId" column="user_id" /> <result property="deptId" column="dept_id" /> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="remark" column="remark" /> <result property="serverInfoId" column="server_info_id" /> <!-- 关联 ArdServerInfo 对象 --> <association property="ardServerInfo" javaType="com.ard.work.domain.entity.ArdServerInfo" column="server_info_id" autoMapping="true" select="selectArdServerInfo"> </association> </resultMap> <sql id="selectArdDroneManagementVo"> <select id="selectArdServerInfo" resultType="com.ard.work.domain.entity.ArdServerInfo"> select * from ard_server_info where id = #{server_info_id} </select> <sql id="selectArdDroneVo"> select id, device_model, device_sn, device_name, device_status, device_add_time, online_time, server_info_id box_sn, box_name, box_version, start_time, on_line, video_server, video_port, last_task_id, server_info_id, user_id, dept_id from ard_drone_info </sql> <select id="selectArdDroneManagementList" parameterType="ArdDroneInfo" resultMap="ArdDroneManagementResult"> <include refid="selectArdDroneManagementVo"/> <select id="selectArdDroneList" parameterType="ArdDroneInfo" resultMap="ArdDroneResult"> <include refid="selectArdDroneVo"/> <where> <if test="deviceModel != null and deviceModel != ''"> and device_model = #{deviceModel}</if> <if test="deviceSn != null and deviceSn != ''"> and device_sn = #{deviceSn}</if> <if test="deviceName != null and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if> <if test="deviceStatus != null and deviceStatus != ''"> and device_status = #{deviceStatus}</if> <if test="deviceAddTime != null "> and device_add_time = #{deviceAddTime}</if> <if test="onlineTime != null "> and online_time = #{onlineTime}</if> <if test="boxSn != null and boxSn != ''"> and box_sn = #{boxSn}</if> <if test="boxName != null and boxName != ''"> and box_name like concat('%', #{boxName}, '%')</if> <if test="boxVersion != null and boxVersion != ''"> and box_version = #{boxVersion}</if> <if test="onLine != null "> and onLine = #{onLine}</if> <if test="lastTaskId != null "> and last_task_id = #{lastTaskId}</if> <if test="userId != null "> and user_id = #{userId}</if> <if test="deptId != null "> and dept_id = #{deptId}</if> </where> </select> <select id="selectArdDroneManagementById" parameterType="String" resultMap="ArdDroneManagementResult"> <include refid="selectArdDroneManagementVo"/> <select id="selectArdDroneById" parameterType="String" resultMap="ArdDroneResult"> <include refid="selectArdDroneVo"/> where id = #{id} </select> <insert id="insertArdDroneManagement" parameterType="ArdDroneInfo"> <insert id="insertArdDrone" parameterType="ArdDroneInfo"> insert into ard_drone_info <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">id,</if> <if test="deviceModel != null">device_model,</if> <if test="deviceSn != null">device_sn,</if> <if test="deviceName != null">device_name,</if> <if test="deviceStatus != null">device_status,</if> <if test="deviceAddTime != null">device_add_time,</if> <if test="onlineTime != null">online_time,</if> <if test="serverInfoId != null">server_info_id,</if> <if test="boxSn != null">box_sn,</if> <if test="boxName != null">box_name,</if> <if test="boxVersion != null">box_version,</if> <if test="startTime != null">start_time,</if> <if test="onLine != null">on_line,</if> <if test="videoServer != null">video_server,</if> <if test="videoPort != null">video_port,</if> <if test="lastTaskId != null">last_task_id,</if> <if test="userId != null">user_id,</if> <if test="deptId != null">dept_id,</if> <if test="createBy != null">create_by,</if> <if test="createTime != null">create_time,</if> <if test="updateBy != null">update_by,</if> <if test="updateTime != null">update_time,</if> <if test="remark != null">remark,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null">#{id},</if> <if test="deviceModel != null">#{deviceModel},</if> <if test="deviceSn != null">#{deviceSn},</if> <if test="deviceName != null">#{deviceName},</if> <if test="deviceStatus != null">#{deviceStatus},</if> <if test="deviceAddTime != null">#{deviceAddTime},</if> <if test="onlineTime != null">#{onlineTime},</if> <if test="serverInfoId != null">#{serverInfoId},</if> <if test="boxSn != null">#{boxSn},</if> <if test="boxName != null">#{boxName},</if> <if test="boxVersion != null">#{boxVersion},</if> <if test="startTime != null">#{startTime},</if> <if test="onLine != null">#{onLine},</if> <if test="videoServer != null">#{videoServer},</if> <if test="videoPort != null">#{videoPort},</if> <if test="lastTaskId != null">#{lastTaskId},</if> <if test="userId != null">#{userId},</if> <if test="deptId != null">#{deptId},</if> <if test="createBy != null">#{createBy},</if> <if test="createTime != null">#{createTime},</if> <if test="updateBy != null">#{updateBy},</if> <if test="updateTime != null">#{updateTime},</if> <if test="remark != null">#{remark},</if> </trim> </insert> <update id="updateArdDroneManagement" parameterType="ArdDroneInfo"> <update id="updateArdDrone" parameterType="ArdDroneInfo"> update ard_drone_info <trim prefix="SET" suffixOverrides=","> <if test="deviceModel != null">device_model = #{deviceModel},</if> <if test="deviceSn != null">device_sn = #{deviceSn},</if> <if test="deviceName != null">device_name = #{deviceName},</if> <if test="deviceStatus != null">device_status = #{deviceStatus},</if> <if test="deviceAddTime != null">device_add_time = #{deviceAddTime},</if> <if test="onlineTime != null">online_time = #{onlineTime},</if> <if test="serverInfoId != null">server_info_id = #{serverInfoId},</if> <if test="boxSn != null">box_sn = #{boxSn},</if> <if test="boxName != null">box_name = #{boxName},</if> <if test="boxVersion != null">box_version = #{boxVersion},</if> <if test="startTime != null">start_time = #{startTime},</if> <if test="onLine != null">on_line = #{onLine},</if> <if test="videoServer != null">video_server = #{videoServer},</if> <if test="videoPort != null">video_port = #{videoPort},</if> <if test="lastTaskId != null">last_task_id = #{lastTaskId},</if> <if test="userId != null">user_id = #{userId},</if> <if test="deptId != null">dept_id = #{deptId},</if> <if test="createBy != null">create_by = #{createBy},</if> <if test="createTime != null">create_time = #{createTime},</if> <if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateTime != null">update_time = #{updateTime},</if> <if test="remark != null">remark = #{remark},</if> </trim> where id = #{id} </update> <delete id="deleteArdDroneManagementById" parameterType="String"> <delete id="deleteArdDroneById" parameterType="String"> delete from ard_drone_info where id = #{id} </delete> <delete id="deleteArdDroneManagementByIds" parameterType="String"> <delete id="deleteArdDroneByIds" parameterType="String"> delete from ard_drone_info where id in <foreach item="id" collection="array" open="(" separator="," close=")"> #{id} ard-work/src/main/resources/mapper/UavBoxMapper.xml
File was deleted