From a17dc254d5d6ef292a2a68d9b102a53ef67209dd Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 22 Apr 2025 09:19:53 +0800 Subject: [PATCH 01/50] =?UTF-8?q?[feat]=20=E6=8F=90=E4=BA=A4=E6=96=B0?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/controller/BusinessAlertStatisticsController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index 1bb1ff3..d0f2ccf 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -177,6 +177,7 @@ public class BusinessAlertStatisticsController extends BaseController { @Operation(summary="预警对比统计(预警状态)", description="预警对比统计(预警状态)") @GetMapping(value = "/compare/status/count") public R>> countAlertStatusCompare(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countAlertStatusCompare(businessAlertBo)); } -- 2.30.2 From 6e16e0a2bb4bae51ad694cd24044049955e47d43 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Tue, 22 Apr 2025 09:32:09 +0800 Subject: [PATCH 02/50] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E6=AF=94=E5=AF=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit eea8f2bd63d536309880b5279bfec91a491417b0) --- .../sample/wayline/mapper/IAiCompareMapper.java | 3 ++- .../wayline/service/impl/AiCompareServiceImpl.java | 12 ++++++------ .../src/main/resources/mapper/AiCompareMapper.xml | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiCompareMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiCompareMapper.java index 09e0b1b..869aaa1 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiCompareMapper.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiCompareMapper.java @@ -1,5 +1,6 @@ package org.dromara.sample.wayline.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; import org.dromara.sample.wayline.model.entity.AiCompareEntity; @@ -11,5 +12,5 @@ import java.util.List; */ public interface IAiCompareMapper extends BaseMapper { - ListlistMediaFile(String jobId); + ListlistMediaFile(@Param("jobId") String jobId, @Param("compareId") Long compareId); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java index eb66fac..9f5ffa7 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java @@ -138,7 +138,7 @@ public class AiCompareServiceImpl implements IAiCompareService { } } String topic = TopicConst.IMAGE +TopicConst.COMPARE; - List mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId(),43200,false); + List mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId(),aiCompareEntity.getId(),43200,false); mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1); insertList.add(aiCompareEntity); } @@ -146,12 +146,12 @@ public class AiCompareServiceImpl implements IAiCompareService { List list =compareDTOList.stream().map(e->Convert.toLong(e.get("queueId"))).collect(Collectors.toList()); return aiCompareQueueService.updateStatus(list,AiCompareStatusConstants.QUEUW_TYPE_1); } - public List listMediaFile(String jobId,Integer seconds ,boolean isIllegal){ - List mediaFileDTOList = aiCompareMapper.listMediaFile(jobId); + public List listMediaFile(String jobId,Long compareId,Integer seconds ,boolean isIllegal){ + List mediaFileDTOList = aiCompareMapper.listMediaFile(jobId,compareId); if(!mediaFileDTOList.isEmpty()){ mediaFileDTOList.stream().forEach(e->{ e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString()); - e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString()); + e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getMateObjectKey(),seconds).toString()); if(isIllegal){ QueryWrapper queryWrapper = new QueryWrapper().eq("file_id", e.getFileId()); AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper); @@ -176,7 +176,7 @@ public class AiCompareServiceImpl implements IAiCompareService { int i = aiCompareMapper.updateById(aiCompareEntity); AiCompareEntity compareEntity = aiCompareMapper.selectById(id); String topic = TopicConst.IMAGE +TopicConst.COMPARE; - List mediaFileDTOS = listMediaFile(compareEntity.getJobId(),43200,false); + List mediaFileDTOS = listMediaFile(compareEntity.getJobId(),compareEntity.getId(),43200,false); mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1); return i>0; } @@ -189,7 +189,7 @@ public class AiCompareServiceImpl implements IAiCompareService { @Override public List queryById(Long id) { AiCompareEntity aiCompareEntity = aiCompareMapper.selectById(id); - return listMediaFile(aiCompareEntity.getJobId(),3600,true); + return listMediaFile(aiCompareEntity.getJobId(),aiCompareEntity.getId(),3600,true); } @Override public Boolean pictureFrame(MapobjectMap) { diff --git a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml index 47f725b..84c237e 100644 --- a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml @@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mf.file_index = mfi.file_index and mf.file_type='jpeg' and mfi.file_type='jpeg' JOIN ai_compare ai ON ai.template_id = mfi.job_id WHERE - mf.job_id = #{jobId} + mf.job_id = #{jobId} and ai.id=#{compareId} ORDER BY mf.file_index; -- 2.30.2 From 7321f972b0b8cbe06b9c002a61477f64866512c8 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 22 Apr 2025 10:18:04 +0800 Subject: [PATCH 03/50] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=AE=BE=E5=A4=87=E6=9D=83=E9=99=90=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=A3=9E=E8=A1=8C=E6=97=B6=E9=95=BF=E3=80=81=E9=A3=9E?= =?UTF-8?q?=E8=A1=8C=E6=80=BB=E4=BB=B7=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessAlertStatisticsServiceImpl.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index 113719e..a973c67 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.model.StatObj; +import org.dromara.business.feign.FeignDeviceGroup; import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.service.IBusinessAlertStatisticsService; import org.dromara.common.core.exception.ServiceException; @@ -20,6 +21,7 @@ import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.api.domain.vo.RemotePostVo; import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.RoleDTO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +60,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist @DubboReference(timeout = 30000) RemoteDataScopeService remoteDataScopeService; + @Autowired + FeignDeviceGroup feignDeviceGroup; + + /** * 按照月份分类预警数量 * @param businessAlertBo @@ -176,7 +182,17 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //----------------------------------------------获取飞行总架次、总时长---------------------------------------------- //获取飞行总架次、总时长 - Map countMap = RedisUtils.getCacheMap(FLY_COUNT); + //获取机场信息根据当前登录人 + List deviceSnList = ObjectUtil.isNotEmpty(feignDeviceGroup.listDevice(LoginHelper.getUserId()))?feignDeviceGroup.listDevice(LoginHelper.getUserId()):ListUtil.empty(); + + + //过滤redis中用户所拥有的设备 + Map countMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_COUNT)) + .map(map -> map.entrySet().stream() + .filter(entry -> deviceSnList.contains(entry.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) + .orElse(new HashMap<>()); + int flyCount; if (ObjectUtil.isNotEmpty(countMap)){ @@ -193,7 +209,14 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist flyCount = 0; } - Map accTimeMap = RedisUtils.getCacheMap(FLY_ACC_TIME); + //过滤redis中用户所拥有的设备 + Map accTimeMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_ACC_TIME)) + .map(map -> map.entrySet().stream() + .filter(entry -> deviceSnList.contains(entry.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) + .orElse(new HashMap<>()); + + double flyAccTime; if (ObjectUtil.isNotEmpty(accTimeMap)) { -- 2.30.2 From 648fad0e8a13ddf9550237e24f0b66d352f92f1a Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 22 Apr 2025 15:07:25 +0800 Subject: [PATCH 04/50] =?UTF-8?q?[feat]=201=E3=80=81=E5=BC=80=E5=8F=91app?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/mapper/BusinessAlertMapper.java | 13 ++++--- .../service/IBusinessAlertService.java | 3 ++ .../impl/BusinessAlertServiceImpl.java | 18 ++++++++++ .../BusinessAlertStatisticsServiceImpl.java | 13 ++++++- .../mapper/business/BusinessAlertMapper.xml | 36 +++++++++++++++++++ 5 files changed, 78 insertions(+), 5 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 30f01ac..b363bd0 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -24,12 +24,12 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageBusinessAlert(Page page, QueryWrapper ew); + Page pageBusinessAlert(@Param("page") Page page,@Param("ew") QueryWrapper ew); @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) - Page pageAlertFinish(Page page, QueryWrapper ew); + Page pageAlertFinish(@Param("page") Page page,@Param("ew") QueryWrapper ew); /** * 处理中 @@ -40,13 +40,17 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageAlertTodo(Page page, QueryWrapper ew); + Page pageAlertTodo(@Param("page") Page page,@Param("ew") QueryWrapper ew); @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) - Page pageBusinessAlertCancel(Page build, QueryWrapper ew); + Page pageBusinessAlertCancel(@Param("page") Page page,@Param("ew") QueryWrapper ew); + @DataPermission( + @DataColumn(key = "deptName", value = "t.dept_id") + ) + List listTodoAlert(@Param("ew") QueryWrapper ew); List> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); @@ -97,4 +101,5 @@ public interface BusinessAlertMapper extends BaseMapperPlus listAppAlertCount(@Param("param") BusinessAlertBo businessAlertBo); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 28c2e0d..2e713ba 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -80,4 +80,7 @@ public interface IBusinessAlertService { Boolean deleteAlert(List alertIdList); void batchUpdateDept(List alertVoList); + + List listTodoAlert(BusinessAlertBo businessAlertBo); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index ab2a626..50bda9a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -302,6 +302,24 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return TableDataInfo.build(page); } + /** + * 查询当前用户待办预警 + * @return + */ + @Override + public List listTodoAlert(BusinessAlertBo businessAlertBo) { + QueryWrapper wrapper = buildQueryWrapper(businessAlertBo); + + if (ObjectUtil.isEmpty(wrapper)){ + return ListUtil.empty(); + } + + wrapper.eq("t.node_type", 1); + wrapper.in("t.approver", remoteWorkflowService.getPermissions()); + wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); + + return this.baseMapper.listTodoAlert(wrapper); + } /** * 查询当前用户待办预警 diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index a973c67..7ac7640 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -4,10 +4,12 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.model.StatObj; import org.dromara.business.feign.FeignDeviceGroup; import org.dromara.business.mapper.BusinessAlertMapper; +import org.dromara.business.service.IBusinessAlertService; import org.dromara.business.service.IBusinessAlertStatisticsService; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.redis.utils.RedisUtils; @@ -63,6 +65,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist @Autowired FeignDeviceGroup feignDeviceGroup; + private final IBusinessAlertService businessAlertService; + /** * 按照月份分类预警数量 @@ -715,7 +719,14 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist public Map listAppAlertCount(BusinessAlertBo businessAlertBo) { //构建查询数据权限 createPermissions(businessAlertBo); - return baseMapper.listAppAlertCount(businessAlertBo); + + Map result = baseMapper.listAppAlertCount(businessAlertBo); + + List businessAlerts = businessAlertService.listTodoAlert(businessAlertBo); + + result.put("todoCount",businessAlerts.size()); + + return result; } /** diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index e4955f0..e2e815c 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -95,6 +95,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + -- 2.30.2 From 0f8f8603ba12a3a329ec83ac549edd581ce40603 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 23 Apr 2025 11:28:27 +0800 Subject: [PATCH 06/50] =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloudapi/wayline/api/IHttpWaylineService.java | 1 + .../dromara/sample/manage/model/dto/DeviceDTO.java | 2 +- .../manage/service/impl/DeviceServiceImpl.java | 1 + .../manage/service/impl/SDKDeviceService.java | 5 ++++- .../wayline/controller/WaylineFileController.java | 14 ++++++++++---- .../sample/wayline/model/dto/WaylineFileDTO.java | 2 ++ .../wayline/model/entity/WaylineFileEntity.java | 2 ++ .../wayline/service/IWaylineFileService.java | 4 ++-- .../service/impl/WaylineFileServiceImpl.java | 9 +++++++-- 9 files changed, 30 insertions(+), 10 deletions(-) diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java index d826853..202bd4f 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java @@ -48,6 +48,7 @@ public interface IHttpWaylineService { HttpResultResponse> getWaylineList( @Valid @ParameterObject GetWaylineListRequest request, @PathVariable(name = "workspace_id") String workspaceId, + @PathVariable(name = "proIds") List proIds, HttpServletRequest req, HttpServletResponse rsp); /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java index 6e2fcca..2bbfb94 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java @@ -102,7 +102,7 @@ public class DeviceDTO { private String tenantId; @Schema(description = "项目ID") - private String proId; + private Integer proId; @Schema(description = "项目ID") private DeviceProEntity deviceProEntity; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 4639f68..5bbdf41 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -710,6 +710,7 @@ public class DeviceServiceImpl implements IDeviceService { .compatibleStatus(dto.getFirmwareStatus() == null ? null : DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE != dto.getFirmwareStatus()) .deviceDesc(dto.getDeviceDesc()) + .proId(dto.getProId() == null ? null : dto.getProId()) .build(); } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 87c84bb..15fdca6 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -2,6 +2,7 @@ package org.dromara.sample.manage.service.impl; import cn.hutool.core.util.ObjectUtil; import org.dromara.common.redis.utils.RedisOpsUtils; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.device.api.AbstractDeviceService; import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; @@ -30,12 +31,15 @@ import org.springframework.util.StringUtils; import java.sql.SQLException; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; +import static org.dromara.common.core.constant.Constants.FLY_COUNT; + /** * @author sean * @version 1.7 @@ -165,7 +169,6 @@ public class SDKDeviceService extends AbstractDeviceService { && request.getData().getDroneChargeState().getCapacityPercent() >= 80 && (remainUpload != null && remainUpload == 0)){ deviceQrtzService.getDeviceQrtzFileEntity(device); } - deviceRedisService.setDeviceOnline(device); fillDockOsd(from, request.getData()); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java index 4ae1ae6..0c479b5 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java @@ -1,6 +1,7 @@ package org.dromara.sample.wayline.controller; +import io.seata.common.util.CollectionUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; @@ -14,6 +15,8 @@ import org.dromara.common.sdk.cloudapi.wayline.*; import org.dromara.common.sdk.cloudapi.wayline.api.IHttpWaylineService; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.manage.mapper.IDeviceProUserMapper; +import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.wayline.model.dto.WaylineFileDTO; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; import org.dromara.sample.wayline.service.IWaylineFileService; @@ -44,6 +47,9 @@ public class WaylineFileController implements IHttpWaylineService { @Autowired private IWaylineFileService waylineFileService; + @Autowired + private IDeviceProService deviceProService; + /** * 根据waylineID删除工作区中的wayline文件。 * Delete the wayline file in the workspace according to the wayline id. @@ -65,13 +71,13 @@ public class WaylineFileController implements IHttpWaylineService { */ @PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/file/{deviceSn}/upload") @Operation(summary = "导入kmz航路文件。", description = "导入kmz航路文件。") - public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,@PathVariable(name = "deviceSn") String deviceSn) { + public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,@PathVariable(name = "deviceSn") String deviceSn,@PathVariable(name = "proId") Integer proId) { if (Objects.isNull(file)) { return HttpResultResponse.error("未收到文件。"); } LoginUser loginUser = LoginHelper.getLoginUser(); String creator = loginUser.getUsername(); - waylineFileService.importKmzFile(file, workspaceId, creator,deviceSn); + waylineFileService.importKmzFile(file, workspaceId, creator,deviceSn,proId); return HttpResultResponse.success(); } @@ -84,8 +90,8 @@ public class WaylineFileController implements IHttpWaylineService { * @return */ @Override - public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId, HttpServletRequest req, HttpServletResponse rsp) { - PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request); + public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId, Integer proId, HttpServletRequest req, HttpServletResponse rsp) { + PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request,proId); return HttpResultResponse.success(data); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java index 828b018..580dab9 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java @@ -47,4 +47,6 @@ public class WaylineFileDTO { private Integer fileNo; + private Integer proId; + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java index 32ac78d..c92be00 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java @@ -69,4 +69,6 @@ public class WaylineFileEntity implements Serializable { @TableField(exist = false) private String deviceName; + @TableField("pro_id") + private Integer proId; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java index 0c16986..8441666 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java @@ -24,7 +24,7 @@ public interface IWaylineFileService { * @param param * @return */ - PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param); + PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,Integer proId); /** * Query the information of this wayline file according to the wayline file id. @@ -81,7 +81,7 @@ public interface IWaylineFileService { * @param creator * @return */ - void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn); + void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn,Integer proId); String getWaylineIdByFileId(Integer fileId); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index 2479134..e4d869a 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -59,7 +59,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { private IWaylineFileMapper mapper; @Override - public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param) { + public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,Integer proId) { // Paging Query Page page = mapper.selectPage( new Page(param.getPage(), param.getPageSize()), @@ -84,6 +84,9 @@ public class WaylineFileServiceImpl implements IWaylineFileService { .and(param.getDeviceSn() != null, wrapper -> { wrapper.eq(WaylineFileEntity::getDeviceSn, param.getDeviceSn()).or(); }) + .and(proId != null, wrapper -> { + wrapper.in(WaylineFileEntity::getProId, proId).or(); + }) .like(Objects.nonNull(param.getKey()), WaylineFileEntity::getName, param.getKey()) // There is a risk of SQL injection .last(Objects.nonNull(param.getOrderBy()), " order by " + param.getOrderBy().toString())); @@ -184,7 +187,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { } @Override - public void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn) { + public void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn,Integer proId) { Optional waylineFileOpt = validKmzFile(file); if (waylineFileOpt.isEmpty()) { throw new RuntimeException("文件格式不正确。"); @@ -211,6 +214,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { }else { waylineFile.setFileNo(1); } + waylineFile.setProId(proId); this.saveWaylineFile(workspaceId, waylineFile); } catch (IOException e) { e.printStackTrace(); @@ -335,6 +339,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { .favorited(file.getFavorited()) .sign(file.getSign()) .deviceSn(file.getDeviceSns().get(0)) + .proId(file.getProId()) .build(); } -- 2.30.2 From fc55fa0267d3efa501f5a1cd317866c26acf73d8 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 23 Apr 2025 11:30:35 +0800 Subject: [PATCH 07/50] =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/sdk/cloudapi/wayline/api/IHttpWaylineService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java index 202bd4f..e757ffb 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java @@ -48,7 +48,7 @@ public interface IHttpWaylineService { HttpResultResponse> getWaylineList( @Valid @ParameterObject GetWaylineListRequest request, @PathVariable(name = "workspace_id") String workspaceId, - @PathVariable(name = "proIds") List proIds, + @PathVariable(name = "proId") Integer proId, HttpServletRequest req, HttpServletResponse rsp); /** -- 2.30.2 From 1cf4aa57f3950c9d1fcb6f5e55541c6b7e27b5d7 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Sun, 4 May 2025 19:23:28 +0800 Subject: [PATCH 08/50] 1 --- .../sdk/cloudapi/media/api/IHttpMediaService.java | 3 ++- .../cloudapi/wayline/api/IHttpWaylineService.java | 2 +- .../manage/controller/DeviceController.java | 15 ++++++++++----- .../manage/model/param/DeviceQueryParam.java | 2 ++ .../sample/manage/service/IDeviceService.java | 4 ++-- .../manage/service/impl/DeviceServiceImpl.java | 13 +++++++++---- .../sample/media/controller/FileController.java | 6 ++++-- .../sample/media/controller/MediaController.java | 4 ++-- .../sample/media/model/MediaFileEntity.java | 3 +++ .../sample/media/service/IFileService.java | 4 ++-- .../sample/media/service/IMediaService.java | 2 +- .../media/service/impl/FileServiceImpl.java | 7 +++++-- .../media/service/impl/MediaServiceImpl.java | 6 +++--- .../wayline/controller/WaylineFileController.java | 4 ++-- .../wayline/controller/WaylineJobController.java | 7 +++++-- .../sample/wayline/model/dto/WaylineJobDTO.java | 3 +++ .../wayline/model/entity/WaylineJobEntity.java | 3 +++ .../wayline/service/IWaylineFileService.java | 2 +- .../wayline/service/IWaylineJobService.java | 2 +- .../service/impl/WaylineFileServiceImpl.java | 6 +++--- .../service/impl/WaylineJobServiceImpl.java | 5 ++++- 21 files changed, 68 insertions(+), 35 deletions(-) diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/api/IHttpMediaService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/api/IHttpMediaService.java index b100045..84dbc89 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/api/IHttpMediaService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/api/IHttpMediaService.java @@ -70,9 +70,10 @@ public interface IHttpMediaService { value = "{\"code\": 0, \"message\":\"success\", \"data\": \"media/DJI_20220831151616_0004_W_Waypoint4.JPG\"}" )}))) - @PostMapping(PREFIX + "/workspaces/{workspace_id}/upload-callback") + @PostMapping(PREFIX + "/workspaces/{workspace_id}/{pro_id}/upload-callback") HttpResultResponse mediaUploadCallback( @PathVariable(name = "workspace_id") String workspaceId, + @PathVariable(name = "pro_id") Integer proId, @Valid @RequestBody MediaUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp); diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java index e757ffb..202bd4f 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java @@ -48,7 +48,7 @@ public interface IHttpWaylineService { HttpResultResponse> getWaylineList( @Valid @ParameterObject GetWaylineListRequest request, @PathVariable(name = "workspace_id") String workspaceId, - @PathVariable(name = "proId") Integer proId, + @PathVariable(name = "proIds") List proIds, HttpServletRequest req, HttpServletResponse rsp); /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java index bd1ca9d..55c84df 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java @@ -9,6 +9,7 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.sample.manage.model.dto.DeviceDTO; import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO; +import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.manage.service.IDeviceService; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; @@ -37,6 +38,10 @@ public class DeviceController { @Autowired private IDeviceService deviceService; + + @Autowired + private IDeviceProService deviceProService; + /** * 获取一个工作区中所有在线设备的列表。 * Get the topology list of all online devices in one workspace. @@ -45,8 +50,8 @@ public class DeviceController { @GetMapping("/{workspace_id}/devices") @Operation(summary = "获取一个工作区中所有在线设备的列表。", description = "获取一个工作区中所有在线设备的列表") public HttpResultResponse> getDevices(@PathVariable("workspace_id") String workspaceId, - @RequestParam(name = "nickname",required = false) String nickname) { - List devicesList = deviceService.getDevicesTopoForWeb(workspaceId,nickname); + @RequestParam(name = "nickname",required = false) String nickname,@RequestParam(name = "proIds",required = false) List proIds) { + List devicesList = deviceService.getDevicesTopoForWeb(workspaceId,nickname,proIds); return HttpResultResponse.success(devicesList); } @@ -92,9 +97,9 @@ public class DeviceController { @PathVariable("workspace_id") String workspaceId,Integer domain, @RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, - @RequestParam(name = "nickname",required = false) String nickname) { - LoginUser loginUser = LoginHelper.getLoginUser(); - PaginationData devices = deviceService.getBoundDevicesWithDomain(workspaceId, page, pageSize, domain,nickname); + @RequestParam(name = "nickname",required = false) String nickname, + @RequestParam(name = "proIds",required = false) List proIds) { + PaginationData devices = deviceService.getBoundDevicesWithDomain(workspaceId, page, pageSize, domain,nickname,proIds); return HttpResultResponse.success(devices); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java index 301b75c..55368e4 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java @@ -35,4 +35,6 @@ public class DeviceQueryParam { private boolean orderBy; private boolean isAsc; + + private List proIds; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java index 0e046a6..93ce040 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java @@ -66,7 +66,7 @@ public interface IDeviceService { * @param workspaceId * @return */ - List getDevicesTopoForWeb(String workspaceId,String nickname); + List getDevicesTopoForWeb(String workspaceId,String nickname,List proIds); /** @@ -129,7 +129,7 @@ public interface IDeviceService { * @param domain * @return */ - PaginationData getBoundDevicesWithDomain(String workspaceId, Long page, Long pageSize, Integer domain,String nickname); + PaginationData getBoundDevicesWithDomain(String workspaceId, Long page, Long pageSize, Integer domain,String nickname,List proIds); /** * Unbind device base on device's sn. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 5bbdf41..c305431 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sample.manage.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -220,21 +221,24 @@ public class DeviceServiceImpl implements IDeviceService { } }) .eq(StringUtils.hasText(param.getWorkspaceId()), - DeviceEntity::getWorkspaceId, param.getWorkspaceId()) + DeviceEntity::getWorkspaceId, param.getWorkspaceId()) .eq(param.getBoundStatus() != null, DeviceEntity::getBoundStatus, param.getBoundStatus()) + .in(ObjectUtil.isAllNotEmpty(param.getProIds()), + DeviceEntity::getDeviceSn, param.getProIds()) .orderBy(param.isOrderBy(), - param.isAsc(), DeviceEntity::getId)) + param.isAsc(), DeviceEntity::getId)) .stream() .map(this::deviceEntityConvertToDTO) .collect(Collectors.toList()); } @Override - public List getDevicesTopoForWeb(String workspaceId,String nickname) { + public List getDevicesTopoForWeb(String workspaceId,String nickname,List proIds) { List devicesList = this.getDevicesByParams( DeviceQueryParam.builder() .workspaceId(workspaceId) .domains(List.of(DeviceDomainEnum.REMOTER_CONTROL.getDomain(), DeviceDomainEnum.DOCK.getDomain())) + .proIds(proIds) .build()); devicesList.stream() @@ -494,13 +498,14 @@ public class DeviceServiceImpl implements IDeviceService { @Override public PaginationData getBoundDevicesWithDomain(String workspaceId, Long page, - Long pageSize, Integer domain,String nickname) { + Long pageSize, Integer domain,String nickname,List proIds) { Page pagination = mapper.selectPage(new Page<>(page, pageSize), new LambdaQueryWrapper() .eq(DeviceEntity::getDomain, domain) .eq(DeviceEntity::getWorkspaceId, workspaceId) .eq(DeviceEntity::getBoundStatus, true) + .in(ObjectUtil.isAllNotEmpty(proIds),DeviceEntity::getProId, proIds) .eq(org.dromara.common.core.utils.StringUtils.isNotEmpty(nickname),DeviceEntity::getNickname,nickname)); List devicesList = pagination.getRecords().stream().map(this::deviceEntityConvertToDTO) .peek(device -> { diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java index d53add4..3690ef8 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.net.URL; +import java.util.List; /** * @author sean @@ -37,8 +38,9 @@ public class FileController { @Operation(summary = "根据工作区id获取此工作区中所有媒体文件的信息。", description = "根据工作区id获取此工作区中所有媒体文件的信息。") public HttpResultResponse> getFilesList(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, - @PathVariable(name = "workspace_id") String workspaceId) { - PaginationData filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize); + @PathVariable(name = "workspace_id") String workspaceId, + @RequestParam(name = "deviceSns",required = false) List proIds) { + PaginationData filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize,proIds); return HttpResultResponse.success(filesList); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/MediaController.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/MediaController.java index 2fe3bc4..69dabb9 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/MediaController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/MediaController.java @@ -52,8 +52,8 @@ public class MediaController implements IHttpMediaService { * @return */ @Override - public HttpResultResponse mediaUploadCallback( String workspaceId, @Valid MediaUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) { - mediaService.saveMediaFile(workspaceId, request); + public HttpResultResponse mediaUploadCallback( String workspaceId,Integer proId, @Valid MediaUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) { + mediaService.saveMediaFile(workspaceId, request,proId); return HttpResultResponse.success(request.getObjectKey()); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java index ac9b1b0..7d53fc8 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java @@ -111,5 +111,8 @@ public class MediaFileEntity implements Serializable { @TableField("file_index") private Integer fileIndex; + + @TableField("pro_id") + private Integer proId; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java index 62adab9..e3edb3a 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java @@ -29,7 +29,7 @@ public interface IFileService { * @param file * @return */ - Integer saveFile(String workspaceId, MediaUploadCallbackRequest file, FlightTask flightTask); + Integer saveFile(String workspaceId, MediaUploadCallbackRequest file, FlightTask flightTask,Integer proId); /** * Query information about all files in this workspace based on the workspace id. @@ -45,7 +45,7 @@ public interface IFileService { * @param pageSize * @return */ - PaginationData getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize); + PaginationData getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize,List proIds); /** * Get the download address of the file. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IMediaService.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IMediaService.java index 141039d..51940dc 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IMediaService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IMediaService.java @@ -26,7 +26,7 @@ public interface IMediaService { * @param file * @return */ - Integer saveMediaFile(String workspaceId, MediaUploadCallbackRequest file); + Integer saveMediaFile(String workspaceId, MediaUploadCallbackRequest file,Integer proId); /** * Query tiny fingerprints about all files in this workspace based on the workspace id. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index 4b20be7..ca5f149 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.sample.media.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -65,10 +66,11 @@ public class FileServiceImpl implements IFileService { } @Override - public Integer saveFile(String workspaceId, MediaUploadCallbackRequest file, FlightTask flightTask) { + public Integer saveFile(String workspaceId, MediaUploadCallbackRequest file, FlightTask flightTask,Integer proId) { MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file,flightTask); fileEntity.setWorkspaceId(workspaceId); fileEntity.setFileId(UUID.randomUUID().toString()); + fileEntity.setProId(proId); fileEntity.setFileType(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf(".")+1)); if(!fileEntity.getFileType().equals("DAT")){ fileEntity.setFileStatus(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf("_")+1, fileEntity.getFileName().lastIndexOf("."))); @@ -91,11 +93,12 @@ public class FileServiceImpl implements IFileService { } @Override - public PaginationData getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize) { + public PaginationData getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize,List proIds) { Page pageData = mapper.selectPage( new Page(page, pageSize), new LambdaQueryWrapper() .eq(MediaFileEntity::getWorkspaceId, workspaceId) + .in(ObjectUtil.isAllNotEmpty(proIds),MediaFileEntity::getProId, proIds) .orderByDesc(MediaFileEntity::getId)); List records = pageData.getRecords() .stream() diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java index f6bcd97..366e7d7 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java @@ -79,8 +79,8 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ } @Override - public Integer saveMediaFile(String workspaceId, MediaUploadCallbackRequest file) { - return fileService.saveFile(workspaceId, file,null); + public Integer saveMediaFile(String workspaceId, MediaUploadCallbackRequest file,Integer proId) { + return fileService.saveFile(workspaceId, file,null,proId); } @Override @@ -180,7 +180,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ file.setPath(objectKey.substring(Optional.of(objectKey.indexOf("mediafile")) .filter(index -> index > 0).map(index -> index++).orElse(0), objectKey.lastIndexOf("/"))); - Integer fileFlag = fileService.saveFile(device.getWorkspaceId(), file, callback.getFlightTask()); + Integer fileFlag = fileService.saveFile(device.getWorkspaceId(), file, callback.getFlightTask(),device.getProId()); return fileFlag> 0; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java index 06fc063..7330e19 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java @@ -92,8 +92,8 @@ public class WaylineFileController implements IHttpWaylineService { * @return */ @Override - public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId, Integer proId, HttpServletRequest req, HttpServletResponse rsp) { - PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request,proId); + public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId,List proIds, HttpServletRequest req, HttpServletResponse rsp) { + PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request,proIds); return HttpResultResponse.success(data); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index c7df333..9493605 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -24,6 +24,8 @@ import java.sql.SQLException; import java.util.List; import java.util.Set; +import static org.bouncycastle.asn1.x500.style.RFC4519Style.name; + /** * @author sean @@ -67,8 +69,9 @@ public class WaylineJobController { @Operation(summary = "查询工作区中的所有作业。。", description = "查询工作区中的所有作业。") public HttpResultResponse> getJobs(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, - @PathVariable(name = "workspace_id") String workspaceId) { - PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize); + @PathVariable(name = "workspace_id") String workspaceId, + @RequestParam(name = "proId") List proIds) { + PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,proIds); return HttpResultResponse.success(data); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java index 9973b5a..62e97e5 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java @@ -10,6 +10,7 @@ import org.dromara.common.sdk.cloudapi.wayline.TaskTypeEnum; import org.dromara.common.sdk.cloudapi.wayline.WaylineTypeEnum; import java.time.LocalDateTime; +import java.util.List; /** * @author sean @@ -72,4 +73,6 @@ public class WaylineJobDTO { private String parentId; private ProgressExtBreakPoint breakPoint; + + private List proIds; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java index 315eb97..853646f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java @@ -94,4 +94,7 @@ public class WaylineJobEntity implements Serializable { @TableField(exist = false) private ProgressExtBreakPoint breakPoint; + + @TableField("pro_id") + private Integer proId; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java index be48b66..5c491c2 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java @@ -26,7 +26,7 @@ public interface IWaylineFileService { * @param param * @return */ - PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,Integer proId); + PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,List proIds); /** * Query the information of this wayline file according to the wayline file id. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java index a0c6492..5b4d88b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java @@ -69,7 +69,7 @@ public interface IWaylineJobService { * @param pageSize * @return */ - PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize); + PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds); /** * Query the wayline execution status of the dock. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index ffa5203..cdb0df0 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -78,7 +78,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { private RemoteFileService remoteFileService; @Override - public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,Integer proId) { + public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,List proIds) { // Paging Query Page page = mapper.selectPage( new Page(param.getPage(), param.getPageSize()), @@ -103,8 +103,8 @@ public class WaylineFileServiceImpl implements IWaylineFileService { .and(ObjectUtil.isNotEmpty(param.getDeviceSn()), wrapper -> { wrapper.eq(WaylineFileEntity::getDeviceSn, param.getDeviceSn()).or(); }) - .and(proId != null, wrapper -> { - wrapper.in(WaylineFileEntity::getProId, proId).or(); + .and(ObjectUtil.isAllNotEmpty(proIds), wrapper -> { + wrapper.in(WaylineFileEntity::getProId, proIds).or(); }) .like(Objects.nonNull(param.getKey()), WaylineFileEntity::getName, param.getKey()) // There is a risk of SQL injection diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index 23d1c98..e504d0f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sample.wayline.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -154,11 +155,13 @@ public class WaylineJobServiceImpl implements IWaylineJobService { } @Override - public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize) { + public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds) { Page pageData = mapper.selectPage( new Page(page, pageSize), new LambdaQueryWrapper() .eq(WaylineJobEntity::getWorkspaceId, workspaceId) + .eq(WaylineJobEntity::getWorkspaceId, workspaceId) + .in(ObjectUtil.isAllNotEmpty(proIds),WaylineJobEntity::getProId,proIds) .orderByDesc(WaylineJobEntity::getId)); List records = pageData.getRecords() .stream() -- 2.30.2 From ec7d7da18f662ad288c6018cac634077891d7070 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Tue, 6 May 2025 15:42:14 +0800 Subject: [PATCH 09/50] =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/model/dto/DeviceQrtzDTO.java | 2 ++ .../media/controller/FileController.java | 2 +- .../wayline/service/IWaylineJobService.java | 2 +- .../service/impl/FlightTaskServiceImpl.java | 20 +++++++++++++++---- .../service/impl/SDKWaylineService.java | 15 +++++++++++++- .../service/impl/WaylineJobServiceImpl.java | 5 ++++- .../resources/mapper/DeviceQrtzMapper.xml | 6 ++++++ 7 files changed, 44 insertions(+), 8 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzDTO.java index 8b7f833..0f061cb 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzDTO.java @@ -96,4 +96,6 @@ public class DeviceQrtzDTO { private String deptName; private ListdeptIds; + + private List proIds; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java index 3690ef8..40f0fb4 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java @@ -39,7 +39,7 @@ public class FileController { public HttpResultResponse> getFilesList(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, - @RequestParam(name = "deviceSns",required = false) List proIds) { + @RequestParam(name = "pro_ids",required = false) List proIds) { PaginationData filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize,proIds); return HttpResultResponse.success(filesList); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java index 5b4d88b..cf8f6b5 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java @@ -28,7 +28,7 @@ public interface IWaylineJobService { * @param endTime The time the job ended. * @return */ - Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime); + Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime, Integer proId); /** * Create a sub-task based on the information of the parent task. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java index e3011e4..745b2e4 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java @@ -241,8 +241,14 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl if (TaskTypeEnum.IMMEDIATE != param.getTaskType() && endTime < System.currentTimeMillis()) { continue; } - - Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, loginUser.getUsername(), new Date(beginTime), new Date(endTime)); + Optional deviceOnline = deviceRedisService.getDeviceOnline(param.getDockSn()); + if(deviceOnline.isEmpty()){ + throw new SQLException("机场信息不存在"); + } + if(deviceOnline.get().getProId() == null){ + throw new SQLException("项目组不存在"); + } + Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, loginUser.getUsername(), new Date(beginTime), new Date(endTime),deviceOnline.get().getProId()); if (waylineJobOpt.isEmpty()) { throw new SQLException("无法创建路线作业。"); } @@ -273,8 +279,14 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl if (TaskTypeEnum.IMMEDIATE != param.getTaskType() && endTime < System.currentTimeMillis()) { continue; } - - Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, username, new Date(beginTime), new Date(endTime)); + Optional deviceOnline = deviceRedisService.getDeviceOnline(param.getDockSn()); + if(deviceOnline.isEmpty()){ + throw new SQLException("机场信息不存在"); + } + if(deviceOnline.get().getProId() == null){ + throw new SQLException("项目组不存在"); + } + Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, username, new Date(beginTime), new Date(endTime),deviceOnline.get().getProId()); if (waylineJobOpt.isEmpty()) { throw new SQLException("无法创建路线作业。"); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java index ddbe4f4..4e18381 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java @@ -3,6 +3,7 @@ package org.dromara.sample.wayline.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.constant.DeviceQrtzConstants; +import org.dromara.common.sdk.cloudapi.device.OsdDockDrone; import org.dromara.common.sdk.cloudapi.wayline.*; import org.dromara.common.sdk.cloudapi.wayline.api.AbstractWaylineService; import org.dromara.common.sdk.mqtt.MqttReply; @@ -16,8 +17,10 @@ import org.dromara.sample.common.error.CommonErrorEnum; import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.manage.mapper.IDeviceQrtzFileMapper; import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.entity.DeviceFlightRecordsEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; import org.dromara.sample.manage.model.enums.UserTypeEnum; +import org.dromara.sample.manage.service.IDeviceFlightRecordsService; import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.media.model.MediaFileCountDTO; import org.dromara.sample.media.service.IMediaRedisService; @@ -71,6 +74,9 @@ public class SDKWaylineService extends AbstractWaylineService { @Autowired private IWebSocketMessageService webSocketMessageService; + @Autowired + private IDeviceFlightRecordsService deviceFlightRecordsService; + @Override public TopicEventsResponse deviceExitHomingNotify(TopicEventsRequest request, MessageHeaders headers) { return super.deviceExitHomingNotify(request, headers); @@ -105,7 +111,14 @@ public class SDKWaylineService extends AbstractWaylineService { .completedTime(LocalDateTime.now()) .mediaCount(output.getExt().getMediaCount()) .build(); - + Optional deviceOsd = deviceRedisService.getDeviceOsd(deviceOpt.get().getChildDeviceSn(), OsdDockDrone.class); + Integer totalFlightSorties = deviceOsd.get().getTotalFlightSorties(); + Float totalFlightTime = deviceOsd.get().getTotalFlightTime(); + DeviceFlightRecordsEntity deviceFlightRecords = new DeviceFlightRecordsEntity(); + deviceFlightRecords.setDeviceSn(response.getGateway()); + deviceFlightRecords.setFlyCount(totalFlightSorties); + deviceFlightRecords.setFlyAccTime(totalFlightTime.intValue()); + deviceFlightRecordsService.saveDeviceFlight(deviceFlightRecords); // record the update of the media count. if (Objects.nonNull(job.getMediaCount()) && job.getMediaCount() != 0) { mediaRedisService.setMediaCount(response.getGateway(), job.getJobId(), diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index e504d0f..c7cb60f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -13,6 +13,7 @@ import org.dromara.common.sdk.cloudapi.device.OsdDockDrone; import org.dromara.common.sdk.cloudapi.wayline.*; import org.dromara.common.sdk.common.Pagination; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.exception.CloudSDKException; import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.manage.model.dto.DeviceDTO; import org.dromara.sample.manage.service.IDeviceRedisService; @@ -36,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.sql.SQLException; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; @@ -82,7 +84,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { } @Override - public Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime) { + public Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime,Integer proId) { if (Objects.isNull(param)) { return Optional.empty(); } @@ -104,6 +106,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .rthAltitude(param.getRthAltitude()) .mediaCount(0) .breakPoint(param.getBreakPoint()) + .proId(proId) .build(); return insertWaylineJob(jobEntity); diff --git a/dk-modules/sample/src/main/resources/mapper/DeviceQrtzMapper.xml b/dk-modules/sample/src/main/resources/mapper/DeviceQrtzMapper.xml index 1a4f704..188fc45 100644 --- a/dk-modules/sample/src/main/resources/mapper/DeviceQrtzMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/DeviceQrtzMapper.xml @@ -43,6 +43,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + AND wd.pro_id in + + #{proId} + + order by wdq.status asc, wdq.create_time desc -- 2.30.2 From 1f43d62910239122e286ad97f5fee73f3e174dca Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 7 May 2025 15:23:09 +0800 Subject: [PATCH 10/50] =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sample/manage/service/impl/SDKDeviceService.java | 8 ++++++++ .../sample/wayline/controller/WaylineJobController.java | 5 +++-- .../sample/wayline/service/IWaylineJobService.java | 2 +- .../wayline/service/impl/WaylineJobServiceImpl.java | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 15fdca6..07163ac 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -160,6 +160,13 @@ public class SDKDeviceService extends AbstractDeviceService { } DeviceDTO device = deviceOpt.get(); + if(request.getData().getLatitude() != null && request.getData().getLongitude() != null + && ((deviceOpt.get().getLatitude() == null && deviceOpt.get().getLongitude() == null)) || (request.getData().getLatitude() != deviceOpt.get().getLatitude() && request.getData().getLongitude() != deviceOpt.get().getLongitude())){ + deviceOpt.get().setLatitude(request.getData().getLatitude()); + deviceOpt.get().setLongitude(request.getData().getLongitude()); + deviceRedisService.setDeviceOnline(deviceOpt.get()); + deviceService.updateDevice(deviceOpt.get()); + } if (StringUtils.hasText(device.getChildDeviceSn())) { deviceService.getDeviceBySn(device.getChildDeviceSn()).ifPresent(device::setChildren); } @@ -175,6 +182,7 @@ public class SDKDeviceService extends AbstractDeviceService { deviceService.pushOsdDataToWeb(device.getWorkspaceId(), BizCodeEnum.DOCK_OSD, from, request.getData()); } + @Override public void osdDockDrone(TopicOsdRequest request, MessageHeaders headers) { String from = request.getFrom(); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index 9493605..0944787 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -70,8 +70,9 @@ public class WaylineJobController { public HttpResultResponse> getJobs(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, - @RequestParam(name = "proId") List proIds) { - PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,proIds); + @RequestParam(name = "proId") List proIds, + @RequestParam(name = "name") String name) { + PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,proIds,name); return HttpResultResponse.success(data); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java index cf8f6b5..3eb9066 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java @@ -69,7 +69,7 @@ public interface IWaylineJobService { * @param pageSize * @return */ - PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds); + PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds,String name); /** * Query the wayline execution status of the dock. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index c7cb60f..29a1fdc 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -158,12 +158,12 @@ public class WaylineJobServiceImpl implements IWaylineJobService { } @Override - public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds) { + public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds,String name) { Page pageData = mapper.selectPage( new Page(page, pageSize), new LambdaQueryWrapper() .eq(WaylineJobEntity::getWorkspaceId, workspaceId) - .eq(WaylineJobEntity::getWorkspaceId, workspaceId) + .like(WaylineJobEntity::getName, name).or().like(WaylineJobEntity::getWaylineName,name) .in(ObjectUtil.isAllNotEmpty(proIds),WaylineJobEntity::getProId,proIds) .orderByDesc(WaylineJobEntity::getId)); List records = pageData.getRecords() -- 2.30.2 From 64df39fdd21c812f0ece7e804d74e9ecd486fa34 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Thu, 15 May 2025 09:58:24 +0800 Subject: [PATCH 11/50] =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BusinessAlertServiceImpl.java | 19 ---------- .../mapper/business/BusinessAlertMapper.xml | 36 ------------------- .../controller/WaylineJobController.java | 31 ++++++++++++++++ .../wayline/service/IWaylineFileService.java | 3 ++ .../service/impl/WaylineFileServiceImpl.java | 7 ++++ .../src/main/resources/application.properties | 4 +-- 6 files changed, 43 insertions(+), 57 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 2057c46..30b62c4 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -307,25 +307,6 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return TableDataInfo.build(page); } - /** - * 查询当前用户待办预警 - * @return - */ - @Override - public List listTodoAlert(BusinessAlertBo businessAlertBo) { - QueryWrapper wrapper = buildQueryWrapper(businessAlertBo); - - if (ObjectUtil.isEmpty(wrapper)){ - return ListUtil.empty(); - } - - wrapper.eq("t.node_type", 1); - wrapper.in("t.approver", remoteWorkflowService.getPermissions()); - wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); - - return this.baseMapper.listTodoAlert(wrapper); - } - /** * 查询当前用户待办预警 * @param bo diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index cfc68e9..d044dc9 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -109,42 +109,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} - - SELECT @@ -36,25 +18,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dp.bind_code, dp.bind_type, dp.nick_name, - dp.create_time, - dpu.id pro_user_id, - dpu.device_pro_id, - dpu.user_id, - dpu.user_name, - d.id device_id, - d.device_sn, - d.device_name, - d.device_type, - d.sub_type, - d.domain, - d.child_sn, - d.workspace_id, - d.pro_id device_pro_number, - d.nickname device_nick_name + dp.create_time FROM manage_device_pro dp - LEFT JOIN manage_device d ON dp.id = d.pro_id - LEFT JOIN manage_device_pro_user dpu ON dp.id = dpu.device_pro_id and dp.bind_code like concat(concat('%',#{condition.bind_code}),'%') -- 2.30.2 From 38ae466a5ad6e58510405e40fdccca778b9368ef Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Tue, 20 May 2025 15:55:55 +0800 Subject: [PATCH 17/50] =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wayline/api/IHttpWaylineService.java | 15 +++++- .../service/impl/ControlServiceImpl.java | 23 +++++--- .../service/impl/SDKControlService.java | 1 + .../service/impl/DeviceServiceImpl.java | 12 ++++- .../media/controller/FileController.java | 10 ++-- .../sample/media/service/IFileService.java | 2 +- .../media/service/impl/FileServiceImpl.java | 15 +++++- .../media/service/impl/MediaServiceImpl.java | 13 +++-- .../controller/WaylineFileController.java | 21 ++++++-- .../controller/WaylineJobController.java | 15 ++++-- .../wayline/service/IWaylineFileService.java | 2 + .../wayline/service/IWaylineJobService.java | 2 +- .../service/impl/WaylineFileServiceImpl.java | 39 +++++++++++++- .../service/impl/WaylineJobServiceImpl.java | 15 +++++- .../resources/mapper/IDeviceProMapper.xml | 54 ++++--------------- 15 files changed, 166 insertions(+), 73 deletions(-) diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java index 202bd4f..3815570 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java @@ -45,10 +45,21 @@ public interface IHttpWaylineService { @Parameter(name = "workspace_id", description = "workspace_id", schema = @Schema(format = "uuid")) }) @GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines") - HttpResultResponse> getWaylineList( + HttpResultResponse> getWaylines( @Valid @ParameterObject GetWaylineListRequest request, @PathVariable(name = "workspace_id") String workspaceId, - @PathVariable(name = "proIds") List proIds, + @RequestParam(name = "proIds",required = false) List proIds, + HttpServletRequest req, HttpServletResponse rsp); + + + @Operation(summary = "获取航线路线列表", description = "根据查询条件査询路线文件的基本数据。飞行员中的查询条件字段是固定的。", + parameters = { + @Parameter(name = "workspace_id", description = "workspace_id", schema = @Schema(format = "uuid")) + }) + @GetMapping(PREFIX + "/workspaces/{workspace_id}/waylinesList") + HttpResultResponse> getWaylineList( + @PathVariable(name = "workspace_id") String workspaceId, + @RequestParam(name = "pro_id",required = false) Integer proId, HttpServletRequest req, HttpServletResponse rsp); /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java index 7480e39..b024571 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java @@ -3,19 +3,18 @@ package org.dromara.sample.control.service.impl; import cn.hutool.core.date.DateUtil; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sdk.cloudapi.control.*; import org.dromara.common.sdk.cloudapi.wayline.OutOfControlActionEnum; import org.dromara.common.sdk.cloudapi.wayline.TaskTypeEnum; import org.dromara.common.sdk.cloudapi.wayline.WaylineJobTypeEnum; import org.dromara.common.sdk.cloudapi.wayline.WaylineTypeEnum; +import org.dromara.sample.control.model.enums.PayloadCommandsEnum; import org.dromara.sample.manage.model.dto.DeviceDTO; import org.dromara.sample.manage.service.IDevicePayloadService; import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.manage.service.IDeviceService; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.dromara.common.sdk.cloudapi.control.FlyToPointRequest; -import org.dromara.common.sdk.cloudapi.control.PayloadAuthorityGrabRequest; -import org.dromara.common.sdk.cloudapi.control.TakeoffToPointRequest; import org.dromara.common.sdk.cloudapi.control.api.AbstractControlService; import org.dromara.common.sdk.cloudapi.debug.DebugMethodEnum; import org.dromara.common.sdk.cloudapi.debug.api.AbstractDebugService; @@ -32,6 +31,8 @@ import org.dromara.sample.control.model.enums.DroneAuthorityEnum; import org.dromara.sample.control.model.enums.RemoteDebugMethodEnum; import org.dromara.sample.control.model.param.*; import org.dromara.sample.control.service.IControlService; +import org.dromara.sample.media.model.MediaFileCountDTO; +import org.dromara.sample.media.service.IMediaRedisService; import org.dromara.sample.wayline.mapper.IWaylineJobMapper; import org.dromara.sample.wayline.model.entity.WaylineJobEntity; import org.dromara.sample.wayline.model.enums.WaylineJobStatusEnum; @@ -41,10 +42,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; +import java.util.*; import static org.dromara.common.sdk.cloudapi.device.RcLostActionEnum.RETURN_HOME; import static org.dromara.common.sdk.cloudapi.wayline.WaylineMethodEnum.RETURN_HOME_CANCEL; @@ -85,6 +83,9 @@ public class ControlServiceImpl implements IControlService { @Autowired private IWaylineJobMapper waylineJobMapper; + @Autowired + private IMediaRedisService mediaRedisService; + private RemoteDebugHandler checkDebugCondition(String sn, RemoteDebugParam param, RemoteDebugMethodEnum controlMethodEnum) { RemoteDebugHandler handler = Objects.nonNull(controlMethodEnum.getClazz()) ? mapper.convertValue(Objects.nonNull(param) ? param : new Object(), controlMethodEnum.getClazz()) @@ -198,7 +199,14 @@ public class ControlServiceImpl implements IControlService { waylineJobEntity.setOutOfControlAction(OutOfControlActionEnum.RETURN_TO_HOME.getAction()); waylineJobEntity.setRthAltitude(param.getRthAltitude()); waylineJobEntity.setMediaCount(0); + waylineJobEntity.setProId(dockOpt.get().getProId()); + waylineJobEntity.setFileId("-1"); waylineJobEntity.setJobType(WaylineJobTypeEnum.INSTRUCT.getType()); + MediaFileCountDTO mediaFileCountDTO = new MediaFileCountDTO(); + mediaFileCountDTO.setJobId(waylineJobEntity.getJobId()); + mediaFileCountDTO.setDeviceSn(sn); + mediaFileCountDTO.setFileId("-1"); + mediaRedisService.setMediaCount(sn, waylineJobEntity.getJobId(),mediaFileCountDTO); TopicServicesResponse response = abstractControlService.takeoffToPoint( SDKManager.getDeviceSDK(sn), mapper.convertValue(param, TakeoffToPointRequest.class)); ServicesReplyData reply = response.getData(); @@ -260,6 +268,7 @@ public class ControlServiceImpl implements IControlService { mapper.convertValue(param.getData(), param.getCmd().getCmd().getClazz())); ServicesReplyData serviceReply = response.getData(); + return serviceReply.getResult().isSuccess() ? HttpResultResponse.success() : HttpResultResponse.error(serviceReply.getResult()); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/SDKControlService.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/SDKControlService.java index 1473203..bae5ca3 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/SDKControlService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/SDKControlService.java @@ -69,6 +69,7 @@ public class SDKControlService extends AbstractControlService { } TakeoffToPointProgress eventsReceiver = request.getData(); + webSocketMessageService.sendBatch(deviceOpt.get().getWorkspaceId(), UserTypeEnum.WEB.getVal(), BizCodeEnum.TAKE_OFF_TO_POINT_PROGRESS.getCode(), ResultNotifyDTO.builder().sn(dockSn) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 8eeca17..5be3633 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.firmware.*; import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService; @@ -45,6 +46,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.dromara.sample.websocket.service.IWebSocketMessageService; +import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -132,6 +134,9 @@ public class DeviceServiceImpl implements IDeviceService { @Autowired private IDeviceProMapper deviceProMapper; + @Autowired + private IDeviceProService deviceProService; + @Override public void subDeviceOffline(String deviceSn) { // If no information about this device exists in the cache, the drone is considered to be offline. @@ -224,7 +229,7 @@ public class DeviceServiceImpl implements IDeviceService { DeviceEntity::getWorkspaceId, param.getWorkspaceId()) .eq(param.getBoundStatus() != null, DeviceEntity::getBoundStatus, param.getBoundStatus()) .in(ObjectUtil.isAllNotEmpty(param.getProIds()), - DeviceEntity::getDeviceSn, param.getProIds()) + DeviceEntity::getProId, param.getProIds()) .orderBy(param.isOrderBy(), param.isAsc(), DeviceEntity::getId)) .stream() @@ -234,6 +239,10 @@ public class DeviceServiceImpl implements IDeviceService { @Override public List getDevicesTopoForWeb(String workspaceId,String nickname,List proIds) { + LoginUser loginUser = LoginHelper.getLoginUser(); + if(proIds == null){ + proIds = deviceProService.listDeviceGroup(loginUser.getUserId()); + } List devicesList = this.getDevicesByParams( DeviceQueryParam.builder() .workspaceId(workspaceId) @@ -408,6 +417,7 @@ public class DeviceServiceImpl implements IDeviceService { .map(WorkspaceDTO::getWorkspaceName).orElse("") : "") .firmwareStatus(DeviceFirmwareStatusEnum.NOT_UPGRADE) .videoId(dockVideoId) + .proId(ObjectUtil.isNotEmpty(entity.getProId())?entity.getProId():null) .thingVersion(entity.getVersion()).build(); } catch (CloudSDKException e) { log.error(e.getLocalizedMessage() + "Entity: {}", entity); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java index 40f0fb4..6a91180 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java @@ -6,6 +6,7 @@ import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.media.model.MediaFileDTO; import org.dromara.sample.media.service.IFileService; import org.dromara.system.api.model.LoginUser; @@ -29,6 +30,8 @@ public class FileController { @Autowired private IFileService fileService; + + /** * 根据工作区id获取此工作区中所有媒体文件的信息。 * Get information about all the media files in this workspace based on the workspace id. @@ -39,7 +42,7 @@ public class FileController { public HttpResultResponse> getFilesList(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, - @RequestParam(name = "pro_ids",required = false) List proIds) { + @RequestParam(name = "proIds",required = false) List proIds) { PaginationData filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize,proIds); return HttpResultResponse.success(filesList); } @@ -74,8 +77,9 @@ public class FileController { public HttpResultResponse> getFilesByJobId(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, - @PathVariable(name = "job_id") String jobId) { - PaginationData filesList = fileService.getMediaFilesPaginationByJobId(workspaceId, page, pageSize,jobId); + @PathVariable(name = "job_id") String jobId, + @RequestParam(name = "type", required = false) Integer type) { + PaginationData filesList = fileService.getMediaFilesPaginationByJobId(workspaceId, page, pageSize,jobId,type); for (MediaFileDTO mediaFileDTO :filesList.getList()){ mediaFileDTO.setUrl(fileService.getObjectUrl(workspaceId, mediaFileDTO.getFileId()).toString()); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java index e3edb3a..5980e9d 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java @@ -71,7 +71,7 @@ public interface IFileService { * @param pageSize * @return */ - PaginationData getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize,String JobId); + PaginationData getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize,String JobId,Integer type); /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index ca5f149..c2b62fa 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.factory.OssFactory; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.DeviceEnum; import org.dromara.common.sdk.cloudapi.media.FlightTask; import org.dromara.common.sdk.cloudapi.media.MediaSubFileTypeEnum; @@ -15,11 +16,13 @@ import org.dromara.common.sdk.common.Pagination; import org.dromara.common.sdk.common.PaginationData; import org.dromara.sample.manage.model.dto.DeviceDictionaryDTO; import org.dromara.sample.manage.service.IDeviceDictionaryService; +import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.media.constant.MinIOConstants; import org.dromara.sample.media.mapper.IFileMapper; import org.dromara.sample.media.model.MediaFileDTO; import org.dromara.sample.media.model.MediaFileEntity; import org.dromara.sample.media.service.IFileService; +import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -44,7 +47,8 @@ public class FileServiceImpl implements IFileService { @Autowired private IDeviceDictionaryService deviceDictionaryService; - + @Autowired + private IDeviceProService deviceProService; private Optional getMediaByFingerprint(String workspaceId, String fingerprint) { MediaFileEntity fileEntity = mapper.selectOne(new LambdaQueryWrapper() @@ -94,6 +98,10 @@ public class FileServiceImpl implements IFileService { @Override public PaginationData getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize,List proIds) { + LoginUser loginUser = LoginHelper.getLoginUser(); + if(proIds == null){ + proIds = deviceProService.listDeviceGroup(loginUser.getUserId()); + } Page pageData = mapper.selectPage( new Page(page, pageSize), new LambdaQueryWrapper() @@ -128,12 +136,15 @@ public class FileServiceImpl implements IFileService { } @Override - public PaginationData getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize, String JobId) { + public PaginationData getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize, String JobId,Integer type) { + + String [] fileTypes = new String[]{"jpeg","mp4"}; Page pageData = mapper.selectPage( new Page(page, pageSize), new LambdaQueryWrapper() .eq(MediaFileEntity::getWorkspaceId, workspaceId) .eq(MediaFileEntity::getJobId, JobId) + .in(ObjectUtil.isNotEmpty(type),MediaFileEntity::getFileType,fileTypes) .orderByDesc(MediaFileEntity::getId)); List records = pageData.getRecords() .stream() diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java index 2fe98e3..0ff5bbb 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sample.media.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.constant.DeviceQrtzConstants; @@ -34,6 +35,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -123,8 +125,12 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ } return new TopicEventsResponse().setData(MqttReply.success()); } + List deviceQrtzFileEntities = new ArrayList<>(); MediaFileCountDTO mediaFileCount = mediaRedisService.getMediaCount(request.getGateway(), jobId); - List deviceQrtzFileEntities = deviceQrtzFileMapper.selectList(new LambdaQueryWrapper().eq(DeviceQrtzFileEntity::getDeviceSn, request.getGateway()).eq(DeviceQrtzFileEntity::getStatus, DeviceQrtzConstants.QRTZ_FILE_STATUS_2).eq(DeviceQrtzFileEntity::getWaylineId, mediaFileCount.getFileId())); + if(ObjectUtil.isNull(mediaFileCount)){ + deviceQrtzFileEntities = deviceQrtzFileMapper.selectList(new LambdaQueryWrapper().eq(DeviceQrtzFileEntity::getDeviceSn, request.getGateway()).eq(DeviceQrtzFileEntity::getStatus, DeviceQrtzConstants.QRTZ_FILE_STATUS_2).eq(DeviceQrtzFileEntity::getWaylineId, mediaFileCount.getFileId())); + } + // duplicate data if (deviceOpt.isEmpty() || (Objects.nonNull(mediaFileCount) && request.getBid().equals(mediaFileCount.getBid()) @@ -145,10 +151,11 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ return null; } - notifyUploadedCount(mediaFileCount, request, jobId, device,deviceQrtzFileEntities); + notifyUploadedCount(mediaFileCount, request, jobId, device); return new TopicEventsResponse().setData(MqttReply.success()); } + @Override public TopicEventsResponse highestPriorityUploadFlightTaskMedia( TopicEventsRequest request, MessageHeaders headers) { @@ -194,7 +201,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ return fileFlag> 0; } - private void notifyUploadedCount(MediaFileCountDTO mediaFileCount, TopicEventsRequest request, String jobId, DeviceDTO dock, List deviceQrtzFileEntities) { + private void notifyUploadedCount(MediaFileCountDTO mediaFileCount, TopicEventsRequest request, String jobId, DeviceDTO dock) { // Do not notify when files that do not belong to the route are uploaded. //不通知不属于路由的文件被上传。 if (Objects.isNull(mediaFileCount)) { diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java index 7330e19..346a8f7 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java @@ -16,7 +16,9 @@ import org.dromara.common.sdk.cloudapi.wayline.api.IHttpWaylineService; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; import org.dromara.sample.manage.mapper.IDeviceProUserMapper; +import org.dromara.sample.manage.model.dto.DeviceDTO; import org.dromara.sample.manage.service.IDeviceProService; +import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.wayline.model.dto.WaylineFileDTO; import org.dromara.sample.wayline.model.entity.AudioFileEntity; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; @@ -34,8 +36,11 @@ import java.net.URL; import java.sql.SQLException; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; +import static org.bouncycastle.internal.asn1.cms.CMSObjectIdentifiers.data; + /** * @author sean @@ -50,7 +55,7 @@ public class WaylineFileController implements IHttpWaylineService { private IWaylineFileService waylineFileService; @Autowired - private IDeviceProService deviceProService; + private IDeviceRedisService deviceRedisService; /** * 根据waylineID删除工作区中的wayline文件。 @@ -73,10 +78,14 @@ public class WaylineFileController implements IHttpWaylineService { */ @PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/file/{deviceSn}/upload") @Operation(summary = "导入kmz航路文件。", description = "导入kmz航路文件。") - public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,@PathVariable(name = "deviceSn") String deviceSn,@PathVariable(name = "proId") Integer proId) { + public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,@PathVariable(name = "deviceSn") String deviceSn,@RequestParam(name = "proId",required = false) Integer proId) { if (Objects.isNull(file)) { return HttpResultResponse.error("未收到文件。"); } + Optional deviceOnline = deviceRedisService.getDeviceOnline(deviceSn); + if(proId == null){ + proId = deviceOnline.get().getProId(); + } LoginUser loginUser = LoginHelper.getLoginUser(); String creator = loginUser.getUsername(); waylineFileService.importKmzFile(file, workspaceId, creator,deviceSn,proId); @@ -92,11 +101,17 @@ public class WaylineFileController implements IHttpWaylineService { * @return */ @Override - public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId,List proIds, HttpServletRequest req, HttpServletResponse rsp) { + public HttpResultResponse> getWaylines(@Valid GetWaylineListRequest request,String workspaceId,List proIds, HttpServletRequest req, HttpServletResponse rsp) { PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request,proIds); return HttpResultResponse.success(data); } + @Override + public HttpResultResponse> getWaylineList(String workspaceId,Integer proId, HttpServletRequest req, HttpServletResponse rsp) { + List waylinesByParamList = waylineFileService.getWaylinesByParamList(workspaceId, proId); + return HttpResultResponse.success(waylinesByParamList); + } + /** * 根据 wayline 文件 ID 查询文件的下载地址,并直接重定向到此地址进行下载。 * Query the download address of the file according to the wayline file id, diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index b0ed8b3..5301e0c 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -87,9 +87,10 @@ public class WaylineJobController { public HttpResultResponse> getJobs(@RequestParam(name = "pageNum", defaultValue = "1") Long page, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, - @RequestParam(name = "proId") List proIds, - @RequestParam(name = "name") String name) { - PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,proIds,name); + @RequestParam(name = "proIds" , required = false) List proIds, + @RequestParam(name = "fileId" , required = false) String fileId, + @RequestParam(name = "name" , required = false) String name) { + PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,fileId,proIds,name); return HttpResultResponse.success(data); } @@ -127,6 +128,14 @@ public class WaylineJobController { flighttaskService.updateJobStatus(workspaceId, jobId, param); return HttpResultResponse.success(); } + @GetMapping("/{workspace_id}/getJobIdByDeviceSn") + @Operation(summary = "根据设备查询飞行任务。", description = "根据设备查询飞行任务。") + public HttpResultResponse getJobIdByDeviceSn(@PathVariable(name = "workspace_id") String workspaceId, + @RequestParam(name = "device_sn") String deviceSn, HttpServletRequest req, HttpServletResponse rsp) { + Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceSn); + if(runningWaylineJob.isEmpty())HttpResultResponse.error("不存在"); + return HttpResultResponse.success(runningWaylineJob.get().getOutput().getExt().getFlightId()); + } @GetMapping("/{workspace_id}/getJobFileUrlByDeviceSn") @Operation(summary = "根据设备查询飞行任务。", description = "根据设备查询飞行任务。") diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java index cbbe982..03f6381 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java @@ -29,6 +29,8 @@ public interface IWaylineFileService { */ PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,List proIds); + List getWaylinesByParamList(String workspaceId,Integer proId); + /** * Query the information of this wayline file according to the wayline file id. * @param workspaceId diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java index 89f3ee4..6b2532b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java @@ -71,7 +71,7 @@ public interface IWaylineJobService { * @param pageSize * @return */ - PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds,String name); + PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,String fileId,List proIds,String name); /** * Query the wayline execution status of the dock. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index 7a66d94..68fb04d 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -17,6 +17,7 @@ import org.dom4j.io.SAXReader; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.entity.UploadResult; import org.dromara.common.oss.factory.OssFactory; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum; import org.dromara.common.sdk.cloudapi.device.DeviceEnum; import org.dromara.common.sdk.cloudapi.device.DeviceSubTypeEnum; @@ -28,6 +29,8 @@ import org.dromara.common.sdk.common.Pagination; import org.dromara.common.sdk.common.PaginationData; import org.dromara.resource.api.RemoteFileService; import org.dromara.resource.api.domain.RemoteFile; +import org.dromara.sample.manage.service.IDeviceProService; +import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.wayline.mapper.IAudioFileMapper; import org.dromara.sample.wayline.mapper.IWaylineFileMapper; import org.dromara.sample.wayline.model.dto.KmzFileProperties; @@ -35,6 +38,7 @@ import org.dromara.sample.wayline.model.dto.WaylineFileDTO; import org.dromara.sample.wayline.model.entity.AudioFileEntity; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; import org.dromara.sample.wayline.service.IWaylineFileService; +import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -77,9 +81,21 @@ public class WaylineFileServiceImpl implements IWaylineFileService { @DubboReference private RemoteFileService remoteFileService; + @Autowired + private IDeviceProService deviceProService; + + @Autowired + private IDeviceRedisService deviceRedisService; + + @Override public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,List proIds) { + LoginUser loginUser = LoginHelper.getLoginUser(); + if(proIds == null){ + proIds = deviceProService.listDeviceGroup(loginUser.getUserId()); + } // Paging Query + List finalProIds = proIds; Page page = mapper.selectPage( new Page(param.getPage(), param.getPageSize()), new LambdaQueryWrapper() @@ -104,7 +120,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { wrapper.eq(WaylineFileEntity::getDeviceSn, param.getDeviceSn()).or(); }) .and(ObjectUtil.isAllNotEmpty(proIds), wrapper -> { - wrapper.in(WaylineFileEntity::getProId, proIds).or(); + wrapper.in(WaylineFileEntity::getProId, finalProIds); }) .like(Objects.nonNull(param.getKey()), WaylineFileEntity::getName, param.getKey()) // There is a risk of SQL injection @@ -118,6 +134,24 @@ public class WaylineFileServiceImpl implements IWaylineFileService { return new PaginationData<>(records, new Pagination(page.getCurrent(), page.getSize(), page.getTotal())); } + @Override + public List getWaylinesByParamList(String workspaceId,Integer proId) { + + List waylineFileEntities = mapper.selectList( + new LambdaQueryWrapper() + .eq(WaylineFileEntity::getWorkspaceId, workspaceId) + .eq(WaylineFileEntity::getProId, proId) + // There is a risk of SQL injection + .orderByDesc(WaylineFileEntity::getCreateTime)); + + // Wrap the results of a paging query into a custom paging object. + List records = waylineFileEntities + .stream() + .map(this::entityConvertToDTO) + .collect(Collectors.toList()); + return records; + } + @Override public Optional getWaylineByWaylineId(String workspaceId, String waylineId) { return Optional.ofNullable( @@ -207,6 +241,9 @@ public class WaylineFileServiceImpl implements IWaylineFileService { @Override public void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn,Integer proId) { + if(ObjectUtil.isNull(proId)){ + proId = deviceRedisService.getDeviceOnline(deviceSn).get().getProId(); + } Optional waylineFileOpt = validKmzFile(file); if (waylineFileOpt.isEmpty()) { throw new RuntimeException("文件格式不正确。"); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index a48b25d..dbfb85f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.redis.config.RedisConst; import org.dromara.common.redis.utils.RedisOpsUtils; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum; import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum; import org.dromara.common.sdk.cloudapi.device.OsdDock; @@ -16,6 +17,7 @@ import org.dromara.common.sdk.common.PaginationData; import org.dromara.common.sdk.exception.CloudSDKException; import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.manage.service.IDeviceService; import org.dromara.sample.media.model.MediaFileCountDTO; @@ -31,6 +33,7 @@ import org.dromara.sample.wayline.service.IWaylineJobService; import org.dromara.sample.wayline.service.IWaylineRedisService; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; +import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -75,6 +78,9 @@ public class WaylineJobServiceImpl implements IWaylineJobService { @Autowired private IWaylineRedisService waylineRedisService; + @Autowired + private IDeviceProService deviceProService; + private Optional insertWaylineJob(WaylineJobEntity jobEntity) { int id = mapper.insert(jobEntity); if (id <= 0) { @@ -167,12 +173,17 @@ public class WaylineJobServiceImpl implements IWaylineJobService { } @Override - public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,List proIds,String name) { + public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,String fileId,List proIds,String name) { + LoginUser loginUser = LoginHelper.getLoginUser(); + if(ObjectUtil.isAllEmpty(proIds)){ + proIds = deviceProService.listDeviceGroup(loginUser.getUserId()); + } Page pageData = mapper.selectPage( new Page(page, pageSize), new LambdaQueryWrapper() .eq(WaylineJobEntity::getWorkspaceId, workspaceId) - .like(WaylineJobEntity::getName, name).or().like(WaylineJobEntity::getWaylineName,name) + .eq(WaylineJobEntity::getFileId, fileId) + .like(ObjectUtil.isNotEmpty(name),WaylineJobEntity::getName, name).or().like(ObjectUtil.isNotEmpty(name),WaylineJobEntity::getWaylineName,name) .in(ObjectUtil.isAllNotEmpty(proIds),WaylineJobEntity::getProId,proIds) .orderByDesc(WaylineJobEntity::getId)); List records = pageData.getRecords() diff --git a/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml b/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml index d685b89..f7e41db 100644 --- a/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> @@ -10,24 +10,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - - - - - - - - - - - -- 2.30.2 From 175de6bb82e361235d4f8f7231c0f14660c02d4d Mon Sep 17 00:00:00 2001 From: like <1025687351@qq.com> Date: Tue, 20 May 2025 16:39:28 +0800 Subject: [PATCH 18/50] =?UTF-8?q?=E6=8E=A8=E6=B5=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MegaphoneController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java index 7e9a8e8..5ae2901 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java @@ -338,6 +338,25 @@ public class MegaphoneController { } } + }else { + if (CollectionUtils.isNotEmpty(types)){ + //删数据 + for (String type : types){ + deviceStreamMapper.delete(new QueryWrapper().eq("rtmp_url", param.getRtmpUrl()) + .eq("stream_type", type)); + List list = new ArrayList<>(); + list.add(type); + DisobeyDTO disobeyDTO = new DisobeyDTO(); + disobeyDTO.setUrl(s); + disobeyDTO.setOpen(2); + disobeyDTO.setType(list); + disobeyDTO.setRtmpUrl(param.getRtmpUrl()); + gatewayPublish.publish(top,new CommonTopicRequest<>() + .setData(Objects.requireNonNull(disobeyDTO)),1); + } + }else { + + } } } if (param.getOpen() == 2){ -- 2.30.2 From 5d7223be751e88dd5cfc95f728462bbd3d1af42c Mon Sep 17 00:00:00 2001 From: like <1025687351@qq.com> Date: Tue, 20 May 2025 16:51:51 +0800 Subject: [PATCH 19/50] =?UTF-8?q?=E6=8E=A8=E6=B5=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/MegaphoneController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java index 5ae2901..2a8c9a6 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java @@ -268,6 +268,7 @@ public class MegaphoneController { @RequestBody MapobjectMap ) { String top = "task/image/disobey/smoke"; + String topTow = "task/image/disobey/streamType"; //发送mqtt String s = remoteConfigService.selectStreamIp(); DisobeyDTO param = Convert.convert(DisobeyDTO.class, objectMap); @@ -298,6 +299,13 @@ public class MegaphoneController { disobeyDTO.setRtmpUrl(param.getRtmpUrl()); gatewayPublish.publish(top,new CommonTopicRequest<>() .setData(Objects.requireNonNull(disobeyDTO)),1); + + Map map = new HashMap<>(); + map.put("labelEn",type); + map.put("deviceSn",objectMap.get("deviceSn")); + StreamTypeDTO param1 = Convert.convert(StreamTypeDTO.class, map); + gatewayPublish.publish(top,new CommonTopicRequest<>() + .setData(Objects.requireNonNull(param1)),1); } } }else if (CollectionUtils.isNotEmpty(types) && split.length < types.size()){ @@ -336,6 +344,12 @@ public class MegaphoneController { gatewayPublish.publish(top,new CommonTopicRequest<>() .setData(Objects.requireNonNull(disobeyDTO)),1); + Map map = new HashMap<>(); + map.put("labelEn",type); + map.put("deviceSn",objectMap.get("deviceSn")); + StreamTypeDTO param1 = Convert.convert(StreamTypeDTO.class, map); + gatewayPublish.publish(top,new CommonTopicRequest<>() + .setData(Objects.requireNonNull(param1)),1); } } }else { -- 2.30.2 From fe95340e688e19e5c8aa35c84877a102c559a01c Mon Sep 17 00:00:00 2001 From: like <1025687351@qq.com> Date: Tue, 20 May 2025 17:06:46 +0800 Subject: [PATCH 20/50] =?UTF-8?q?=E6=8E=A8=E6=B5=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sample/manage/controller/MegaphoneController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java index 2a8c9a6..1ade38a 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java @@ -304,7 +304,7 @@ public class MegaphoneController { map.put("labelEn",type); map.put("deviceSn",objectMap.get("deviceSn")); StreamTypeDTO param1 = Convert.convert(StreamTypeDTO.class, map); - gatewayPublish.publish(top,new CommonTopicRequest<>() + gatewayPublish.publish(topTow,new CommonTopicRequest<>() .setData(Objects.requireNonNull(param1)),1); } } @@ -348,7 +348,7 @@ public class MegaphoneController { map.put("labelEn",type); map.put("deviceSn",objectMap.get("deviceSn")); StreamTypeDTO param1 = Convert.convert(StreamTypeDTO.class, map); - gatewayPublish.publish(top,new CommonTopicRequest<>() + gatewayPublish.publish(topTow,new CommonTopicRequest<>() .setData(Objects.requireNonNull(param1)),1); } } -- 2.30.2 From 731faee87796e78f943028a8cf9a11abd231a49a Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Tue, 20 May 2025 17:35:07 +0800 Subject: [PATCH 21/50] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../control/service/impl/ControlServiceImpl.java | 12 ++++++------ .../control/service/impl/PayloadCommandsHandler.java | 2 +- .../manage/service/impl/DeviceServiceImpl.java | 11 ++++++++--- .../manage/service/impl/LiveStreamServiceImpl.java | 4 ++-- .../wayline/controller/WaylineJobController.java | 2 +- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java index b024571..b0b21a6 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java @@ -225,16 +225,16 @@ public class ControlServiceImpl implements IControlService { TopicServicesResponse response; switch (authority) { case FLIGHT: - if (deviceService.checkAuthorityFlight(sn)) { - return HttpResultResponse.success(); - } +// if (deviceService.checkAuthorityFlight(sn)) { +// return HttpResultResponse.success(); +// } response = abstractControlService.flightAuthorityGrab(SDKManager.getDeviceSDK(sn)); break; case PAYLOAD: - if (checkPayloadAuthority(sn, param.getPayloadIndex())) { - return HttpResultResponse.success(); - } +// if (checkPayloadAuthority(sn, param.getPayloadIndex())) { +// return HttpResultResponse.success(); +// } response = abstractControlService.payloadAuthorityGrab(SDKManager.getDeviceSDK(sn), new PayloadAuthorityGrabRequest().setPayloadIndex(new PayloadIndex(param.getPayloadIndex()))); break; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/PayloadCommandsHandler.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/PayloadCommandsHandler.java index 4618fed..f0b905c 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/PayloadCommandsHandler.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/PayloadCommandsHandler.java @@ -73,7 +73,7 @@ public abstract class PayloadCommandsHandler { String deviceSn = checkDockOnline(dockSn); checkDeviceOnline(deviceSn); - checkAuthority(deviceSn); + //checkAuthority(deviceSn); if (!canPublish(deviceSn)) { throw new RuntimeException("无人机的当前状态不支持此功能,请稍后再试。"); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 5be3633..07ad409 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -9,6 +9,7 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.firmware.*; import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService; +import org.dromara.common.sdk.cloudapi.livestream.VideoTypeEnum; import org.dromara.common.sdk.cloudapi.property.api.AbstractPropertyService; import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl; import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel; @@ -60,6 +61,9 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +import static org.dromara.common.core.utils.StringUtils.DASH; +import static org.dromara.common.core.utils.StringUtils.SLASH; + /** * * @author sean.zhou @@ -270,14 +274,15 @@ public class DeviceServiceImpl implements IDeviceService { DeviceDTO subDevice = getDevicesByParams(DeviceQueryParam.builder().deviceSn(gateway.getChildDeviceSn()).build()).get(0); subDevice.setStatus(deviceRedisService.checkDeviceOnline(subDevice.getDeviceSn())); - List capacityCameraByDeviceSn = capacityCameraService.getCapacityCameraByDeviceSn(gateway.getChildDeviceSn()); + /*List capacityCameraByDeviceSn = capacityCameraService.getCapacityCameraByDeviceSn(gateway.getChildDeviceSn()); String videoId = ""; if(capacityCameraByDeviceSn != null && capacityCameraByDeviceSn.size() > 0 ){ if(capacityCameraByDeviceSn.get(0).getVideosList().size() > 0){ videoId = gateway.getChildDeviceSn() + "/" + capacityCameraByDeviceSn.get(0).getIndex() + "/" + capacityCameraByDeviceSn.get(0).getVideosList().get(0).getIndex(); } - } - subDevice.setVideoId(videoId); + }*/ + String deviceVideoEnum = DeviceVideoEnum.find(subDevice.getDeviceName()).getDevice(); + subDevice.setVideoId(new VideoId(subDevice.getDeviceSn()+SLASH+deviceVideoEnum+SLASH + VideoTypeEnum.NORMAL.getType() + DASH+DeviceTypeVideoEnum.ZERO.getVideoType()).toString()); gateway.setChildren(subDevice); // gateway.setVideoId(DeviceEnum.videoId); // payloads diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/LiveStreamServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/LiveStreamServiceImpl.java index b81b722..5bea65e 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/LiveStreamServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/LiveStreamServiceImpl.java @@ -139,7 +139,7 @@ public class LiveStreamServiceImpl implements ILiveStreamService { default: return HttpResultResponse.error(LiveErrorCodeEnum.URL_TYPE_NOT_SUPPORTED); } - DeviceEntity deviceBySn = deviceService.getDeviceByChildSn(liveParam.getVideoId().getDroneSn()); + /* DeviceEntity deviceBySn = deviceService.getDeviceByChildSn(liveParam.getVideoId().getDroneSn()); if(deviceBySn != null){ Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceBySn.getDeviceSn()); @@ -172,7 +172,7 @@ public class LiveStreamServiceImpl implements ILiveStreamService { } } - } + }*/ // MessageProducerUtil.sendAsyncProducerMessage("videoStartConsum","videoStart",liveParam.getVideoId().getDroneSn(),liveParam.getVideoId().toString()); return HttpResultResponse.success(live); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index 5301e0c..758bd5e 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -134,7 +134,7 @@ public class WaylineJobController { @RequestParam(name = "device_sn") String deviceSn, HttpServletRequest req, HttpServletResponse rsp) { Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceSn); if(runningWaylineJob.isEmpty())HttpResultResponse.error("不存在"); - return HttpResultResponse.success(runningWaylineJob.get().getOutput().getExt().getFlightId()); + return HttpResultResponse.success(runningWaylineJob.get().getOutput().getExt().getFlightId()==null?runningWaylineJob.get().getOutput().getExt().getFlightId():null); } @GetMapping("/{workspace_id}/getJobFileUrlByDeviceSn") -- 2.30.2 From bbf2dc57d0f921c4e73763d38160f9cf5547255c Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 20 May 2025 17:56:05 +0800 Subject: [PATCH 22/50] =?UTF-8?q?[feat]=E4=BF=AE=E6=94=B9=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=BB=9F=E8=AE=A1=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/business/BusinessAlertMapper.xml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 4a938ec..8e7b549 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -111,51 +111,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -- 2.30.2 From 3e713dc9ced0b32134ab5e470f716645435be626 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Tue, 20 May 2025 18:05:17 +0800 Subject: [PATCH 23/50] =?UTF-8?q?[bug]=E5=AE=9E=E6=97=B6=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/business/controller/BusinessAlertController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 5f28a52..8b9cd7c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -108,6 +108,7 @@ public class BusinessAlertController extends BaseController { @PostMapping("/saveAlert") public R saveAlert(@RequestBody BusinessAlertVo vo) { vo.setBusinessType(2); + vo.setHandleType("verify"); BusinessAlert businessAlert = businessAlertService.addBusinessAlert(vo); return R.ok(); } -- 2.30.2 From 188fa5595d33bc926dca07512c81bed66048d765 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 20 May 2025 18:16:45 +0800 Subject: [PATCH 24/50] =?UTF-8?q?[feat]=E4=BF=AE=E6=94=B9ai=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E6=B5=81=E9=A2=84=E8=AD=A6=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/dubbo/RemoteNoticeServiceImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java index e2a7c21..12f890d 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java @@ -16,6 +16,8 @@ import org.dromara.system.service.ISysDictTypeService; import org.springframework.stereotype.Service; import java.util.List; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** @@ -33,6 +35,8 @@ public class RemoteNoticeServiceImpl implements RemoteNoticeService { private final RemoteMessageService remoteMessageService; private final ISysDictTypeService dictTypeService; + private final ScheduledExecutorService scheduledExecutorService; + @Override public int saveNotice(RemoteNoticeBo bo) { SysNotice notice = MapstructUtils.convert(bo, SysNotice.class); @@ -40,7 +44,10 @@ public class RemoteNoticeServiceImpl implements RemoteNoticeService { List data = dictTypeService.selectDictDataByType("ai_push"); List list = data.stream().map(SysDictDataVo::getDictValue).distinct().toList().stream().map(Long::parseLong).toList(); //获取字典值 - remoteMessageService.publishMessage(list,bo.getParam()); + scheduledExecutorService.schedule(() -> { + remoteMessageService.publishMessage(list, bo.getParam()); + }, 3, TimeUnit.SECONDS); + return sysNoticeMapper.insert(notice); } } -- 2.30.2 From 96233bb44e21963381c174129abb127fc9fe4995 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Tue, 20 May 2025 18:19:49 +0800 Subject: [PATCH 25/50] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sample/manage/model/entity/DeviceEntity.java | 9 +++++++++ .../sample/manage/service/impl/DeviceServiceImpl.java | 8 +++++++- .../sample/manage/service/impl/SDKDeviceService.java | 1 + .../sample/wayline/controller/WaylineJobController.java | 4 ++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java index 94c17ea..967f9db 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java @@ -92,4 +92,13 @@ public class DeviceEntity implements Serializable { @TableField(value = "pro_id") private Integer proId; + @TableField(value = "latitude") + private Float latitude; + + @TableField(value = "longitude") + private Float longitude; + + @TableField(value = "height") + private Float height; + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 07ad409..78f0957 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -423,13 +423,16 @@ public class DeviceServiceImpl implements IDeviceService { .firmwareStatus(DeviceFirmwareStatusEnum.NOT_UPGRADE) .videoId(dockVideoId) .proId(ObjectUtil.isNotEmpty(entity.getProId())?entity.getProId():null) + .latitude(entity.getLatitude()) + .longitude(entity.getLongitude()) + .height(entity.getHeight()) .thingVersion(entity.getVersion()).build(); } catch (CloudSDKException e) { log.error(e.getLocalizedMessage() + "Entity: {}", entity); } DeviceDTO deviceDTO = builder.build(); if(deviceDTO.getDomain() != null && deviceDTO.getDomain().getDomain() == 3 && deviceDTO.getLatitude() != null){ - Optional deviceOsd = deviceRedisService.getDeviceOsd(entity.getDeviceSn(), OsdDockDrone.class); + Optional deviceOsd = deviceRedisService.getDeviceOsd(entity.getDeviceSn(), OsdDock.class); if(!deviceOsd.isEmpty()){ deviceDTO.setLatitude(deviceOsd.get().getLatitude()); deviceDTO.setLongitude(deviceOsd.get().getLongitude()); @@ -748,6 +751,9 @@ public class DeviceServiceImpl implements IDeviceService { .compatibleStatus(dto.getFirmwareStatus() == null ? null : DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE != dto.getFirmwareStatus()) .deviceDesc(dto.getDeviceDesc()) + .latitude(dto.getLatitude()) + .longitude(dto.getLongitude()) + .height(dto.getHeight()) .proId(dto.getProId() == null ? null : dto.getProId()) .build(); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 47c00c9..51e43fa 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -167,6 +167,7 @@ public class SDKDeviceService extends AbstractDeviceService { && ((deviceOpt.get().getLatitude() == null && deviceOpt.get().getLongitude() == null)) || (request.getData().getLatitude() != deviceOpt.get().getLatitude() && request.getData().getLongitude() != deviceOpt.get().getLongitude())){ deviceOpt.get().setLatitude(request.getData().getLatitude()); deviceOpt.get().setLongitude(request.getData().getLongitude()); + deviceOpt.get().setHeight(request.getData().getHeight()); deviceRedisService.setDeviceOnline(deviceOpt.get()); deviceService.updateDevice(deviceOpt.get()); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index 758bd5e..70c2321 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -133,8 +133,8 @@ public class WaylineJobController { public HttpResultResponse getJobIdByDeviceSn(@PathVariable(name = "workspace_id") String workspaceId, @RequestParam(name = "device_sn") String deviceSn, HttpServletRequest req, HttpServletResponse rsp) { Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceSn); - if(runningWaylineJob.isEmpty())HttpResultResponse.error("不存在"); - return HttpResultResponse.success(runningWaylineJob.get().getOutput().getExt().getFlightId()==null?runningWaylineJob.get().getOutput().getExt().getFlightId():null); + if(runningWaylineJob.isEmpty())return HttpResultResponse.error("不存在"); + return HttpResultResponse.success(runningWaylineJob.get().getOutput().getExt().getFlightId()!=null?runningWaylineJob.get().getOutput().getExt().getFlightId():null); } @GetMapping("/{workspace_id}/getJobFileUrlByDeviceSn") -- 2.30.2 From 90fdcfc75fae6ef899a643bfc5c6bebfb32e74ba Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 20 May 2025 18:32:17 +0800 Subject: [PATCH 26/50] =?UTF-8?q?[feat]=E5=8E=BB=E6=8E=89ai=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E6=B5=81=E9=A2=84=E8=AD=A6=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/business/controller/BusinessAlertController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 564a09c..700674c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -169,7 +169,7 @@ public class BusinessAlertController extends BaseController { /** * 查询实时流预警 */ - @SaCheckPermission("business:alertAi:list") +// @SaCheckPermission("business:alertAi:list") @Operation(summary ="查询实时流预警",description = "查询实时流预警") @GetMapping("/ai/verify/alert") public R> listAiVerifyAlert(BusinessAlertVo vo) { -- 2.30.2 From 3842d0062989de343d72c5031699928624050ebf Mon Sep 17 00:00:00 2001 From: shizisheng Date: Tue, 20 May 2025 22:06:19 +0800 Subject: [PATCH 27/50] =?UTF-8?q?=E4=B8=8D=E5=90=8C=E9=A1=B9=E7=9B=AE-?= =?UTF-8?q?=E7=89=B9=E5=AE=9A=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=8A=A8=E6=80=81=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=8D=97=E9=80=9A=E5=B7=A5=E5=9C=B0/?= =?UTF-8?q?=E4=B8=B0=E5=8E=BF=E7=87=83=E6=B0=94=E9=A1=B9=E7=9B=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/ProjectTablePrefixConfig.java | 26 ++++ .../BusinessAlertStatisticsController.java | 6 + .../business/mapper/BusinessAlertMapper.java | 38 +++--- .../IBusinessAlertStatisticsService.java | 3 + .../impl/BusinessAlertServiceImpl.java | 34 ++--- .../BusinessAlertStatisticsServiceImpl.java | 61 +++++++-- .../mapper/business/BusinessAlertMapper.xml | 118 +++++++++++------- .../config/ProjectTablePrefixConfig.java | 25 ++++ .../dromara/system/mapper/SysDeptMapper.java | 3 +- .../service/impl/SysDeptServiceImpl.java | 8 +- .../resources/mapper/system/SysDeptMapper.xml | 5 +- 11 files changed, 236 insertions(+), 91 deletions(-) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/config/ProjectTablePrefixConfig.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/config/ProjectTablePrefixConfig.java diff --git a/dk-modules/business/src/main/java/org/dromara/business/config/ProjectTablePrefixConfig.java b/dk-modules/business/src/main/java/org/dromara/business/config/ProjectTablePrefixConfig.java new file mode 100644 index 0000000..b8352f9 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/config/ProjectTablePrefixConfig.java @@ -0,0 +1,26 @@ +package org.dromara.business.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * szs + * 系统-表名配置 + * 多个profile环境中会查询不同表,需要处理拼接表名 ,比如 dk_business变成 w_dk_business + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "projecttableprefix") +public class ProjectTablePrefixConfig { + + @Value("${projectTablePrefix.tableBusiness:dk_business") + private String tableBusiness; + + @Value("${projectTablePrefix.tableCloud:dk_cloud") + private String tableCloud; + + @Value("${projectTablePrefix.tableWorkflow:dk_workflow") + private String tableWorkflow; +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index f86da09..3db95c8 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -84,6 +84,12 @@ public class BusinessAlertStatisticsController extends BaseController { return R.ok(statisticsService.countPostAlert(businessAlertBo)); } + @Operation(summary="各大类全部预警数", description="各大类全部预警数") + @GetMapping(value = "/post/count/all") + public R> countPostAll(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countPostAllAlert(businessAlertBo)); + } + /** * 出警效率 diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 97c2a2d..e2823c1 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -3,6 +3,7 @@ package org.dromara.business.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.dromara.business.config.ProjectTablePrefixConfig; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; @@ -24,12 +25,12 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageBusinessAlert(@Param("page") Page page,@Param("ew") QueryWrapper ew); + Page pageBusinessAlert(@Param("page") Page page,@Param("ew") QueryWrapper ew, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) - Page pageBusinessAlertHandle(@Param("page") Page page,@Param("ew") QueryWrapper ew); + Page pageBusinessAlertHandle(@Param("page") Page page,@Param("ew") QueryWrapper ew, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness, @Param("tableWorkflow") String tableWorkflow /** * 处理中 @@ -40,34 +41,34 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageAlertTodo(@Param("page") Page page,@Param("ew") QueryWrapper ew); + Page pageAlertTodo(@Param("page") Page page,@Param("ew") QueryWrapper ew, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness, @Param("tableWorkflow") String tableWorkflow @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) - Page pageBusinessAlertCancel(@Param("page") Page page,@Param("ew") QueryWrapper ew); + Page pageBusinessAlertCancel(@Param("page") Page page,@Param("ew") QueryWrapper ew, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness, @Param("tableWorkflow") String tableWorkflow @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) - Page pageBusinessAlertFinish(@Param("page") Page page, @Param("ew") QueryWrapper wrapper); + Page pageBusinessAlertFinish(@Param("page") Page page, @Param("ew") QueryWrapper wrapper, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) - List listTodoAlert(@Param("ew") QueryWrapper ew); + List listTodoAlert(@Param("ew") QueryWrapper ew, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness, @Param("tableWorkflow") String tableWorkflow List> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); - List> listDepartAlert(@Param("param") BusinessAlertBo businessAlertBo); + List> listDepartAlert(@Param("param") BusinessAlertBo businessAlertBo, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud List> listMonthAlertStatus(@Param("param")BusinessAlertBo businessAlertBo); - List> listDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo); + List> listDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud List> countAlertCompare(@Param("param")BusinessAlertBo businessAlertBo); @@ -89,21 +90,22 @@ public interface BusinessAlertMapper extends BaseMapperPlus> handlerRate(@Param("param") BusinessAlertBo businessAlertBo,@Param("months") List months); Map countPastYearAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime); + Map countTotalAlert(@Param("param") BusinessAlertBo businessAlertBo); - List> countAiLabel(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime); + List> countAiLabel(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud - List> countStreetAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList); + List> countStreetAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud - List listAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime); + List listAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness - List heatList(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime); - List> countStreetRateAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList); + List heatList(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableBusiness") String tableBusiness + List> countStreetRateAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud - Map streetRateTopAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList); + Map streetRateTopAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud - Map streetTopAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList); + Map streetTopAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("deptIdList") List deptIdList, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud - List> countLabelRateAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime); + List> countLabelRateAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix);//@Param("tableCloud") String tableCloud void batchUpdateDept(@Param("list") List alertVoList); @@ -112,9 +114,9 @@ public interface BusinessAlertMapper extends BaseMapperPlus listHandleHistory(@Param("lng") String lng, @Param("lat") String lat,@Param("createTime") String createTime); - List> listOneDepartAlert(@Param("param") BusinessAlertBo businessAlertBo); + List> listOneDepartAlert(@Param("param") BusinessAlertBo businessAlertBo, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix); //@Param("tableCloud") String tableCloud - List> listOneDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo); + List> listOneDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo, @Param("tbPrefix") ProjectTablePrefixConfig tbPrefix); //@Param("tableCloud") String tableCloud Integer selectCurrentAlertCount(@Param("currentDate") String currentDate); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java index bac55f8..20ee211 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java @@ -38,4 +38,7 @@ public interface IBusinessAlertStatisticsService { Map listAppAlertCount(BusinessAlertBo businessAlertBo); + List countPostAllAlert(BusinessAlertBo businessAlertBo); + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 7f06fac..b221084 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.api.domain.bo.RemoteBusinessAlertBo; import org.dromara.business.api.domain.vo.RemoteBusinessAlertVo; +import org.dromara.business.config.ProjectTablePrefixConfig; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; @@ -35,6 +36,7 @@ import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.lang.reflect.Method; @@ -68,6 +70,8 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @DubboReference RemoteLabelPostService remoteLablePostService; + @Autowired + private ProjectTablePrefixConfig ptPrefix; /** * 新增预警任务 @@ -216,7 +220,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return new TableDataInfo<>(); } - Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); + Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper, ptPrefix); try { page.getRecords().forEach(businessAlertVo->{ @@ -253,7 +257,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { wrapper.in("t.flowStatus", BusinessStatusEnum.CANCEL.getStatus()); - Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); + Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper, ptPrefix); try { page.getRecords().forEach(businessAlertVo->{ @@ -291,7 +295,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { wrapper.eq("t.handle_type",BusinessStatusEnum.FINISH.getStatus()); - Page page = this.baseMapper.pageBusinessAlertFinish(pageQuery.build(), wrapper); + Page page = this.baseMapper.pageBusinessAlertFinish(pageQuery.build(), wrapper, ptPrefix); try { page.getRecords().forEach(businessAlertVo->{ @@ -329,7 +333,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { wrapper.in("t.approver", remoteWorkflowService.getPermissions()); wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); - Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); + Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper, ptPrefix); List records = page.getRecords(); if (CollUtil.isNotEmpty(records)) { @@ -370,11 +374,13 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return new TableDataInfo<>(); } + String tableWorkflow = ptPrefix.getTableWorkflow(); // eg: "dk_workflow" wrapper.notIn("t.flowStatus", BusinessStatusEnum.CANCEL.getStatus()); - wrapper.apply(" EXISTS(select * from dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); +// wrapper.apply(" EXISTS(select * from w_dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); + wrapper.apply(" EXISTS(select * from "+tableWorkflow+".flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); - Page page = this.baseMapper.pageBusinessAlertHandle(pageQuery.build(), wrapper); + Page page = this.baseMapper.pageBusinessAlertHandle(pageQuery.build(), wrapper, ptPrefix); try { page.getRecords().forEach(businessAlertVo->{ @@ -489,7 +495,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //查看的是总览的预警信息 if (ObjectUtil.isEmpty(businessAlertBo.getPostCode())) { - List businessAlerts = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); + List businessAlerts = this.baseMapper.listAlert(businessAlertBo, startTime, endTime, ptPrefix); businessAlerts.forEach(businessAlertVo->{ if (businessAlertVo.getBusinessType() == 2){ @@ -513,7 +519,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { Map handlerMap = new HashMap<>(); - List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); + List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime, ptPrefix); alertList.forEach(businessAlertVo->{ if (businessAlertVo.getBusinessType() == 2){ @@ -553,7 +559,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //查看的是总览的预警信息 if (ObjectUtil.isEmpty(businessAlertBo.getPostCode())) { - List businessAlerts = this.baseMapper.heatList(businessAlertBo, businessAlertBo.getStartTime(), businessAlertBo.getEndTime()); + List businessAlerts = this.baseMapper.heatList(businessAlertBo, businessAlertBo.getStartTime(), businessAlertBo.getEndTime(), ptPrefix); Map> listMap = businessAlerts.stream().collect(Collectors.groupingBy(BusinessAlertVo::getLabelCn)); result.putAll(listMap); return result; @@ -566,7 +572,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return result; } businessAlertBo.setAiLabelEnList(postVoList.stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList()); - List alertList = this.baseMapper.heatList(businessAlertBo, businessAlertBo.getStartTime(), businessAlertBo.getEndTime()); + List alertList = this.baseMapper.heatList(businessAlertBo, businessAlertBo.getStartTime(), businessAlertBo.getEndTime(), ptPrefix); Map> listMap = alertList.stream().collect(Collectors.groupingBy(BusinessAlertVo::getLabelCn)); result.putAll(listMap); return result; @@ -603,7 +609,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { businessAlertBo.setAiLabelEnList(aiNameMap.get(businessAlertBo.getAiName()).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList()); - List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); + List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime, ptPrefix); alertList.forEach(businessAlertVo->{ if (businessAlertVo.getBusinessType() == 2){ @@ -654,7 +660,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return infoMap; } businessAlertBo.setAiLabelEnList(aiNameMap.get(businessAlertBo.getAiName()).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList()); - List alertList = this.baseMapper.heatList(businessAlertBo, businessAlertBo.getStartTime(), businessAlertBo.getEndTime()); + List alertList = this.baseMapper.heatList(businessAlertBo, businessAlertBo.getStartTime(), businessAlertBo.getEndTime(), ptPrefix); Map> listMap = alertList.stream().collect(Collectors.groupingBy(BusinessAlertVo::getLabelCn)); infoMap.putAll(listMap); return infoMap; @@ -768,7 +774,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { wrapper.in("t.approver", remoteWorkflowService.getPermissions()); wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); - return this.baseMapper.listTodoAlert(wrapper); + return this.baseMapper.listTodoAlert(wrapper, ptPrefix); } /** @@ -784,7 +790,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { wrapper.in("t.approver", remoteWorkflowService.getPermissions()); wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); - List businessAlerts = this.baseMapper.listTodoAlert(wrapper); + List businessAlerts = this.baseMapper.listTodoAlert(wrapper, ptPrefix); BusinessAlert businessAlert = businessAlerts.stream().filter(p -> p.getId().equals(alertId)).findFirst().get(); try { diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index 16e7699..5e4be56 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.config.ProjectTablePrefixConfig; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.model.StatObj; @@ -72,6 +73,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist private final IBusinessAlertService businessAlertService; + @Autowired + private ProjectTablePrefixConfig ptPrefix; + /** * 按照月份分类预警数量 * @param businessAlertBo @@ -111,12 +115,12 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist .collect(Collectors.toList()); //排除自己如果没有下级则默认使用下边的逻辑查询 if (ObjectUtil.isEmpty(remoteDeptVoList)) { - List> mapList = baseMapper.listOneDepartAlert(businessAlertBo); + List> mapList = baseMapper.listOneDepartAlert(businessAlertBo, ptPrefix); return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList()); } //如果有则使用这个查询 - List> mapList = baseMapper.listDepartAlert(businessAlertBo); + List> mapList = baseMapper.listDepartAlert(businessAlertBo, ptPrefix); return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList()); } @@ -159,7 +163,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //排除自己如果没有下级则默认使用下边的逻辑查询 if (ObjectUtil.isEmpty(remoteDeptVoList)) { - List> mapList = baseMapper.listOneDepartAlertStatus(businessAlertBo); + List> mapList = baseMapper.listOneDepartAlertStatus(businessAlertBo, ptPrefix); return mapList.stream() .map(map -> new StatObj( @@ -176,7 +180,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } //如果有下级则使用下方方法 - List> mapList = baseMapper.listDepartAlertStatus(businessAlertBo); + List> mapList = baseMapper.listDepartAlertStatus(businessAlertBo, ptPrefix); return mapList.stream() .map(map -> new StatObj( @@ -494,6 +498,41 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist return result; } + @Override + public List countPostAllAlert(BusinessAlertBo businessAlertBo) { + + //构建查询数据权限 + createPermissions(businessAlertBo); + + //查询所有的职能岗位 + List postVoList = remotePostService.listPost(); + postVoList = postVoList.stream().filter(item -> StrUtil.equals("0",item.getStatus())).toList();//剔除禁用规则 + + List result = new ArrayList<>(); + if (ObjectUtil.isEmpty(postVoList)) { + return ListUtil.empty(); + } + + postVoList.forEach(postVo -> { + List labelList = getAiLabel(postVo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()); + Map dateMap = new HashMap<>(); + if (ObjectUtil.isEmpty(labelList)) { + dateMap.put("todoCount",0); + dateMap.put("finishCount",0); + }else { + businessAlertBo.setAiLabelEnList(labelList); + dateMap = baseMapper.countTotalAlert(businessAlertBo); + } + result.add(new StatObj( + postVo.getPostName(), + dateMap.get("todoCount"), + dateMap.get("finishCount") + )); + }); + return result; + } + + /** * 出警效率 * @param businessAlertBo @@ -585,7 +624,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //-------------------------------------------------------识别类型事件情况-------------------------------------------- - List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime); + List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime, ptPrefix); List labelStatObj = new ArrayList<>(); @@ -603,7 +642,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist List streetList = remoteDeptService.selectListByParentId(String.valueOf(deptId)); List deptIdList = streetList.stream().filter(p-> p.getParentId().equals(deptId)).map(RemoteDeptVo::getDeptId).distinct().toList(); - List> top5Map = this.baseMapper.countStreetAlert(businessAlertBo,startTime,endTime,deptIdList); + List> top5Map = this.baseMapper.countStreetAlert(businessAlertBo,startTime,endTime,deptIdList, ptPrefix); List top5StatObj = new ArrayList<>(); @@ -616,7 +655,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //-------------------------------------------------------街道处理效率Top5-------------------------------------------- - List> streetRateTop5Map = this.baseMapper.countStreetRateAlert(businessAlertBo,startTime,endTime,deptIdList); + List> streetRateTop5Map = this.baseMapper.countStreetRateAlert(businessAlertBo,startTime,endTime,deptIdList, ptPrefix); List streetRateTop5StatObj = new ArrayList<>(); @@ -630,7 +669,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //-------------------------------------------------------识别类型事件处理情况-------------------------------------------- //识别类型事件处理情况 - List> labelRateMap = this.baseMapper.countLabelRateAlert(businessAlertBo,startTime,endTime); + List> labelRateMap = this.baseMapper.countLabelRateAlert(businessAlertBo,startTime,endTime, ptPrefix); List labelRateStatObj = new ArrayList<>(); @@ -736,7 +775,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } - List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime); + List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime, ptPrefix); List incidentHandlerStatStat = new ArrayList<>(); @@ -750,13 +789,13 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //-------------------------------------------------------事件高发区-------------------------------------------- //事件高发区top1 - Map topStreet = this.baseMapper.streetTopAlert(businessAlertBo,startTime,endTime,deptIdList); + Map topStreet = this.baseMapper.streetTopAlert(businessAlertBo,startTime,endTime,deptIdList, ptPrefix); keyMap.put("incidentTop1",ObjectUtil.isEmpty(topStreet)?"":topStreet.get("deptName")); //-------------------------------------------------------处理效率-------------------------------------------- //处理效率top1 - Map topStreetRate = this.baseMapper.streetRateTopAlert(businessAlertBo,startTime,endTime,deptIdList); + Map topStreetRate = this.baseMapper.streetRateTopAlert(businessAlertBo,startTime,endTime,deptIdList, ptPrefix); keyMap.put("handlerRateTop1", ObjectUtil.isEmpty(topStreetRate)?"":topStreetRate.get("deptName")); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 8e7b549..dc1ab60 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -30,20 +30,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + - + + + + + + + + + + + + - + + + + + + + +