Browse Source

Merge remote-tracking branch 'origin/master'

master
李克 2 months ago
parent
commit
427f2ac2cb
  1. 2
      dk-modules/business/src/main/java/org/dromara/business/BusinessApplication.java
  2. 9
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java
  3. 20
      dk-modules/business/src/main/java/org/dromara/business/feign/FeignDeviceGroup.java
  4. 3
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java
  5. 3
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java
  6. 74
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java
  7. 10
      dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml
  8. 114
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java
  9. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceMapper.java
  10. 21
      dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProMapper.java
  11. 16
      dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProUserMapper.java
  12. 7
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java
  13. 47
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java
  14. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java
  15. 57
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java
  16. 47
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java
  17. 46
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java
  18. 28
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProUserService.java
  19. 241
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java
  20. 10
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
  21. 3
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiCompareMapper.java
  22. 27
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java
  23. 29
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java
  24. 2
      dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml
  25. 8
      dk-modules/sample/src/main/resources/mapper/DeviceProUserMapper.xml
  26. 11
      dk-modules/sample/src/main/resources/mapper/IDeviceMapper.xml
  27. 69
      dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml

2
dk-modules/business/src/main/java/org/dromara/business/BusinessApplication.java

@ -4,6 +4,7 @@ import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
@ -12,6 +13,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
*/
@EnableDubbo
@SpringBootApplication()
@EnableFeignClients
public class BusinessApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(BusinessApplication.class);

9
dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java

@ -185,4 +185,13 @@ public class BusinessAlertStatisticsController extends BaseController {
public R<List<Map<String, Object>>> countAlertTypeCompare(BusinessAlertBo businessAlertBo) {
return R.ok(statisticsService.countAlertTypeCompare(businessAlertBo));
}
//本周、今日、本月 预警个数
@Operation(summary="app首页统计", description="app首页统计")
@GetMapping(value = "/app/count")
public R<Map<String, Object>> listAppAlertCount(BusinessAlertBo businessAlertBo) {
return R.ok(statisticsService.listAppAlertCount(businessAlertBo));
}
}

20
dk-modules/business/src/main/java/org/dromara/business/feign/FeignDeviceGroup.java

@ -0,0 +1,20 @@
package org.dromara.business.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = "gateway",path = "sample")
public interface FeignDeviceGroup {
@GetMapping("/manage/api/v1/device/group/feign/user")
public List<Integer> listDeviceGroup(@RequestParam("userId") Long userId);
@GetMapping("/manage/api/v1/device/group/feign/device")
public List<String> listDevice(@RequestParam("userId") Long userId);
}

3
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java

@ -94,4 +94,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, Busin
List<Map<String, Object>> countLabelRateAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime);
void batchUpdateDept(@Param("list") List<BusinessAlertVo> alertVoList);
Map<String, Object> listAppAlertCount(@Param("param") BusinessAlertBo businessAlertBo);
}

3
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java

@ -35,4 +35,7 @@ public interface IBusinessAlertStatisticsService {
Map<String, Object> comprehensiveManage(BusinessAlertBo businessAlertBo);
Map<String,Object> cityComprehensiveManage(BusinessAlertBo businessAlertBo);
Map<String, Object> listAppAlertCount(BusinessAlertBo businessAlertBo);
}

74
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java

@ -11,12 +11,15 @@ import org.dromara.business.service.IBusinessAlertStatisticsService;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteDataScopeService;
import org.dromara.system.api.RemoteDeptService;
import org.dromara.system.api.RemoteLabelPostService;
import org.dromara.system.api.RemotePostService;
import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo;
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.stereotype.Service;
import java.math.BigDecimal;
@ -52,6 +55,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@DubboReference
RemotePostService remotePostService;
@DubboReference(timeout = 30000)
RemoteDataScopeService remoteDataScopeService;
/**
* 按照月份分类预警数量
@ -60,6 +65,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
*/
@Override
public List<StatObj> countMonthAlert(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
if (ObjectUtil.isNotEmpty(businessAlertBo.getDeptId())){
List<RemoteDeptVo> remoteDeptVoList = remoteDeptService.selectListByParentId(businessAlertBo.getDeptId());
List<Long> departIdList = remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList();
@ -75,6 +83,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@Override
public List<StatObj>countDepartAlert(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
businessAlertBo.setDeptId(String.valueOf(LoginHelper.getDeptId()));
businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()));
@ -85,6 +95,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@Override
public List<StatObj> countMonthAlertStatus(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()));
List<Map<String, Object>> mapList = baseMapper.listMonthAlertStatus(businessAlertBo);
@ -105,6 +117,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@Override
public List<StatObj> countDepartAlertStatus(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
businessAlertBo.setDeptId(String.valueOf(LoginHelper.getDeptId()));
businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()));
@ -131,6 +145,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
*/
@Override
public List<Map<String, Object>> countAlertStatusCompare(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()));
businessAlertBo.setDateList(buildDateList(businessAlertBo));
return baseMapper.countAlertCompare(businessAlertBo);
@ -145,6 +161,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
public StatObj countPanelAlert(BusinessAlertBo businessAlertBo) {
LocalDate today = LocalDate.now();
//构建查询数据权限
createPermissions(businessAlertBo);
if (ObjectUtil.isNotEmpty(businessAlertBo.getPostCode())){
if (ObjectUtil.isEmpty(getAiLabel(businessAlertBo.getPostCode()))){
return new StatObj(0, 0,0,0,0,0);
@ -206,6 +225,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@Override
public List<Map<String, Object>> countAlertTypeCompare(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()));
businessAlertBo.setDateList(buildDateList(businessAlertBo));
return baseMapper.countAlertTypeCompare(businessAlertBo);
@ -218,6 +239,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
*/
@Override
public Map<String,Object> countPanelTotalAlert(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
Map<String,Object> result = new HashMap<>();
if (ObjectUtil.isNotEmpty(businessAlertBo.getPostCode())){
List<String> labelList = getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList());
@ -285,6 +308,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
public Map<String, Object> countCurrentDayAlert(BusinessAlertBo businessAlertBo) {
Map<String,Object> result = new HashMap<>();
//构建查询数据权限
createPermissions(businessAlertBo);
if (ObjectUtil.isNotEmpty(businessAlertBo.getPostCode())){
List<String> labelList = getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList());
@ -314,6 +340,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@Override
public List<StatObj> countPostDayAlert(BusinessAlertBo businessAlertBo) {
List<StatObj> result = new ArrayList<>();
//构建查询数据权限
createPermissions(businessAlertBo);
//查询所有的职能岗位
List<RemotePostVo> postVoList = remotePostService.listPost();
@ -338,6 +368,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
*/
@Override
public List<StatObj> countPostAlert(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
//查询所有的职能岗位
List<RemotePostVo> postVoList = remotePostService.listPost();
@ -388,6 +422,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
*/
@Override
public List<StatObj> handlerRate(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
//查询所有的职能岗位
List<RemotePostVo> postVoList = remotePostService.listPost();
@ -434,6 +472,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
throw new ServiceException("【postCode】 岗位编码为空!");
}
//构建查询数据权限
createPermissions(businessAlertBo);
Map<String,Object> result = new HashMap<>();
List<RemoteAiLabelPostVo> labelList = getAiLabel(businessAlertBo.getPostCode());
@ -572,6 +613,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
//-------------------------------------------------------条件构建--------------------------------------------
//构建查询数据权限
createPermissions(businessAlertBo);
List<RemoteAiLabelPostVo> postVoList = remoteLabelPostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId());
Map<String, List<RemoteAiLabelPostVo>> aiNameMap = postVoList.stream().collect(Collectors.groupingBy(RemoteAiLabelPostVo::getAiName));
@ -639,6 +683,18 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
return keyMap;
}
/**
* 获取app本周预警个数
* @param businessAlertBo
* @return
*/
@Override
public Map<String, Object> listAppAlertCount(BusinessAlertBo businessAlertBo) {
//构建查询数据权限
createPermissions(businessAlertBo);
return baseMapper.listAppAlertCount(businessAlertBo);
}
/**
* 获取近6个月的月份集合格式yyyy-MM
*/
@ -683,4 +739,22 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
private List<RemoteAiLabelPostVo> getAiLabel(String postCode) {
return remoteLabelPostService.selectLabelByList(postCode,null);
}
private void createPermissions(BusinessAlertBo businessAlertBo) {
Long roleId = Optional.ofNullable(LoginHelper.getLoginUser())
.map(LoginUser::getRoles)
.filter(roles -> !roles.isEmpty())
.map(List::getFirst)
.map(RoleDTO::getRoleId)
.orElse(null);
String roleCustom = remoteDataScopeService.getRoleCustom(roleId);
if (roleCustom.equalsIgnoreCase("-1")){
businessAlertBo.setDeptIdList(ListUtil.empty());
}else {
businessAlertBo.setDeptIdList(Arrays.stream(roleCustom.split(","))
.map(Long::parseLong)
.collect(Collectors.toList()));
}
}
}

10
dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml

@ -788,5 +788,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</update>
<select id="listAppAlertCount" resultType="java.util.Map">
SELECT
COUNT(CASE WHEN DATE(ba.create_time) = CURDATE() THEN 1 END) AS dayCount,
COUNT(CASE WHEN YEARWEEK(ba.create_time, 1) = YEARWEEK(CURDATE(), 1) THEN 1 END) AS weekCount,
COUNT(CASE WHEN YEAR(ba.create_time) = YEAR(CURDATE()) AND MONTH(ba.create_time) = MONTH(CURDATE()) THEN 1 END) AS monthCount
FROM business_alert ba
where 1=1
<include refid="searchSql"></include>
</select>
</mapper>

114
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java

@ -0,0 +1,114 @@
package org.dromara.sample.manage.controller;
import cn.hutool.core.lang.Dict;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
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.model.dto.DeviceProDTO;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
import org.dromara.sample.manage.service.IDeviceProService;
import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Slf4j
@RequestMapping("${url.manage.prefix}${url.manage.version}/device/group")
@Tag(name = "无人机设备项目模块")
public class DeviceProController {
@Autowired
private IDeviceProService deviceProService;
//1、查询项目组
/**
* 查询项目组
* @param page
* @param pageSize
* @return
*/
@Operation(summary = "查询项目组", description = "查询项目组")
@GetMapping("/page")
public HttpResultResponse<PaginationData<DeviceProEntity>> pageDevicePro(
@RequestParam(name = "pageNum", defaultValue = "1") Long page,
@RequestParam(name = "pageSize", defaultValue = "10") Long pageSize,
DeviceProDTO deviceProDTO) {
Page<DeviceProEntity> pageQuery = new Page<>(page, pageSize);
PaginationData<DeviceProEntity> devices = deviceProService.listDeviceProEntityMap(pageQuery,deviceProDTO);
return HttpResultResponse.success(devices);
}
//2、添加项目组
/**
* 新增/更新项目
* @param deviceProEntity
* @return
*/
@Operation(summary = "新增/更新项目。", description = "新增/更新项目。")
@PostMapping("/update")
public HttpResultResponse<Boolean> updateDevicePro(@RequestBody DeviceProEntity deviceProEntity) {
return HttpResultResponse.success(deviceProService.updateDevicePro(deviceProEntity));
}
//3、删除项目组
@Operation(summary = "删除项目组。", description = "删除项目组。")
@DeleteMapping("/delete")
public HttpResultResponse<Boolean> deleteDevicePro(@RequestBody List<Long> ids) {
return HttpResultResponse.success(deviceProService.deleteIds(ids));
}
/**
* 新增/更新项目人员
* @param userEntity
* @return
*/
@Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。")
@PostMapping("/{proId}/update")
public HttpResultResponse<Boolean> updateDeviceProUser(@RequestBody List<DeviceProUserEntity> userEntity,@PathVariable Long proId) {
return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId));
}
/**
* 设备绑定项目组
*/
@Operation(summary = "设备绑定项目组", description = "设备绑定项目组")
@PostMapping("/bind")
public HttpResultResponse<Boolean> updateDevice(@RequestBody Dict dict) {
return HttpResultResponse.success(deviceProService.updateDevice(dict));
}
/**
* 根据人员获取项目组(feign调用接口)
*/
@GetMapping("/feign/user")
public List<Integer> listDeviceGroup(@RequestParam("userId") Long userId) {
log.info("----------------------------开始调用feign接口查询项目组----------------------------");
List<Integer> result = deviceProService.listDeviceGroup(userId);
log.info("----------------------------调用feign接口查询项目组结束----------------------------");
return result;
}
/**
* 根据人员获取当前人员所拥有的机场(feign调用接口)
*/
@GetMapping("/feign/device")
public List<String> listDevice(@RequestParam("userId") Long userId) {
log.info("----------------------------开始调用feign接口查询项目所属机场----------------------------");
List<String> result = deviceProService.listDevice(userId);
log.info("----------------------------调用feign接口查询项目组所属机场----------------------------");
return result;
}
}

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceMapper.java

@ -1,6 +1,7 @@
package org.dromara.sample.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.sample.manage.model.entity.DeviceEntity;
@ -11,5 +12,6 @@ import org.dromara.sample.manage.model.entity.DeviceEntity;
* @version 0.1
*/
public interface IDeviceMapper extends BaseMapper<DeviceEntity> {
int updatePor(@Param("id") Integer id, @Param("proId") Integer proId);
}

21
dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProMapper.java

@ -0,0 +1,21 @@
package org.dromara.sample.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.sample.manage.model.dto.DeviceProDTO;
import org.dromara.sample.manage.model.dto.DeviceQrtzDTO;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import java.util.List;
/**
* @auther yq
* @data 2025/3/20
*/
public interface IDeviceProMapper extends BaseMapper<DeviceProEntity> {
Page<DeviceProEntity> listDeviceProEntityMap(Page page, @Param("condition") DeviceProDTO deviceProDTO);
}

16
dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProUserMapper.java

@ -0,0 +1,16 @@
package org.dromara.sample.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
/**
* @auther yq
* @data 2025/3/20
*/
public interface IDeviceProUserMapper extends BaseMapper<DeviceProUserEntity> {
}

7
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java

@ -6,6 +6,7 @@ import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceSubTypeEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceTypeEnum;
import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum;
import lombok.AllArgsConstructor;
@ -100,6 +101,12 @@ public class DeviceDTO {
@Schema(description = "租户ID")
private String tenantId;
@Schema(description = "项目ID")
private String proId;
@Schema(description = "项目ID")
private DeviceProEntity deviceProEntity;
private String videoId;
private Float latitude;

47
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java

@ -0,0 +1,47 @@
package org.dromara.sample.manage.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.sample.manage.model.entity.DeviceQrtzDateEntity;
import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @auther yq
* @data 2025/3/20
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DeviceProDTO {
/**
机场sn
*/
private String deviceSn;
/**
机场名称
*/
private String deviceName;
/**
机场昵称
*/
private String nickname;
/**
分配人员姓名
*/
private String realname;
/**
分配人员
*/
private Integer userId;
}

3
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java

@ -89,4 +89,7 @@ public class DeviceEntity implements Serializable {
@TableField(value = "login_time")
private LocalDateTime loginTime;
@TableField(value = "pro_id")
private Integer proId;
}

57
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java

@ -0,0 +1,57 @@
package org.dromara.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* The entity class of the device
*
* @author sean.zhou
* @version 0.1
* @date 2021/11/10
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "manage_device_pro")
public class DeviceProEntity extends BaseEntity implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
private Integer id;
@TableField(value = "pro_name")
private String proName;
@TableField(value = "bind_code")
private String bindCode;
@TableField(value = "bind_type")
private Integer bindType;
@TableField(value = "workspace_id")
private String workspaceId;
@TableField(value = "nick_name")
private String nickName;
@TableField(value = "dept_name")
private String deptName;
@TableField(exist = false)
private List<DeviceProUserEntity> deviceProUserEntityList = new ArrayList<>();
@TableField(exist = false)
private List<DeviceEntity> deviceEntityList = new ArrayList<>();
}

47
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java

@ -0,0 +1,47 @@
package org.dromara.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serializable;
/**
* The entity class of the device
*
* @author sean.zhou
* @version 0.1
* @date 2021/11/10
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "manage_device_pro_user")
public class DeviceProUserEntity extends BaseEntity implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
private Integer id;
@TableField(value = "device_pro_id")
private Integer deviceProId;
@TableField(value = "user_id")
private Long userId;
@TableField(value = "user_name")
private String userName;
@TableField(value = "nick_name")
private String nickName;
@TableField(value = "dept_name")
private String deptName;
}

46
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java

@ -0,0 +1,46 @@
package org.dromara.sample.manage.service;
import cn.hutool.core.lang.Dict;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.JsonNode;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost;
import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum;
import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum;
import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData;
import org.dromara.common.sdk.config.version.GatewayManager;
import org.dromara.common.websocket.dto.BizCodeEnum;
import org.dromara.sample.manage.model.dto.*;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
import org.dromara.sample.manage.model.param.DeviceQueryParam;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
/**
* @author sean.zhou
* @date 2021/11/10
* @version 0.1
*/
public interface IDeviceProService {
PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO);
Boolean saveAndUpdate(DeviceProEntity deviceProEntity);
Boolean deleteIds(List<Long> ids);
Boolean updateDevicePro(DeviceProEntity deviceProEntity);
Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Long proId);
Boolean updateDevice(Dict dict);
List<Integer> listDeviceGroup(Long userId);
List<String> listDevice(Long userId);
}

28
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProUserService.java

@ -0,0 +1,28 @@
package org.dromara.sample.manage.service;
import com.fasterxml.jackson.databind.JsonNode;
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost;
import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum;
import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum;
import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData;
import org.dromara.common.sdk.config.version.GatewayManager;
import org.dromara.common.websocket.dto.BizCodeEnum;
import org.dromara.sample.manage.model.dto.DeviceDTO;
import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO;
import org.dromara.sample.manage.model.dto.TopologyDeviceDTO;
import org.dromara.sample.manage.model.param.DeviceQueryParam;
import java.util.List;
import java.util.Optional;
/**
* @author sean.zhou
* @date 2021/11/10
* @version 0.1
*/
public interface IDeviceProUserService {
}

241
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java

@ -0,0 +1,241 @@
package org.dromara.sample.manage.service.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Dict;
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;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.BatchResult;
import org.dromara.common.core.exception.ServiceException;
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.property.api.AbstractPropertyService;
import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl;
import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel;
import org.dromara.common.sdk.common.*;
import org.dromara.common.sdk.config.version.GatewayManager;
import org.dromara.common.sdk.exception.CloudSDKException;
import org.dromara.common.sdk.mqtt.IMqttTopicService;
import org.dromara.common.sdk.mqtt.MqttGatewayPublish;
import org.dromara.common.sdk.mqtt.events.EventsSubscribe;
import org.dromara.common.sdk.mqtt.osd.OsdSubscribe;
import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum;
import org.dromara.common.sdk.mqtt.property.PropertySetSubscribe;
import org.dromara.common.sdk.mqtt.requests.RequestsSubscribe;
import org.dromara.common.sdk.mqtt.services.ServicesReplyData;
import org.dromara.common.sdk.mqtt.services.ServicesSubscribe;
import org.dromara.common.sdk.mqtt.services.TopicServicesResponse;
import org.dromara.common.sdk.mqtt.state.StateSubscribe;
import org.dromara.common.sdk.mqtt.status.StatusSubscribe;
import org.dromara.common.websocket.dto.BizCodeEnum;
import org.dromara.sample.common.error.CommonErrorEnum;
import org.dromara.sample.component.mqtt.model.EventsReceiver;
import org.dromara.sample.control.model.enums.DroneAuthorityEnum;
import org.dromara.sample.manage.mapper.IDeviceMapper;
import org.dromara.sample.manage.mapper.IDeviceProMapper;
import org.dromara.sample.manage.mapper.IDeviceProUserMapper;
import org.dromara.sample.manage.mapper.IDeviceQrtzMapper;
import org.dromara.sample.manage.model.dto.*;
import org.dromara.sample.manage.model.entity.DeviceEntity;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
import org.dromara.sample.manage.model.entity.DeviceQrtzDateEntity;
import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum;
import org.dromara.sample.manage.model.enums.PropertySetFieldEnum;
import org.dromara.sample.manage.model.enums.UserTypeEnum;
import org.dromara.sample.manage.model.param.DeviceQueryParam;
import org.dromara.sample.manage.model.receiver.BasicDeviceProperty;
import org.dromara.sample.manage.service.*;
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;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
*
* @author sean.zhou
* @version 0.1
* @date 2021/11/10
*/
@Service
@Slf4j
@Transactional
public class DeviceProServiceImpl implements IDeviceProService {
@Autowired
private IDeviceProMapper deviceProMapper;
@Autowired
private IDeviceMapper deviceMapper;
@Autowired
private IDeviceProUserMapper deviceProUserMapper;
@Override
public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) {
Page<DeviceProEntity> pagination = deviceProMapper.listDeviceProEntityMap(page, deviceProDTO);
return new PaginationData<DeviceProEntity>(pagination.getRecords(), new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
}
@Override
public Boolean updateDevicePro(DeviceProEntity deviceProEntity) {
if(ObjectUtil.isNotEmpty(deviceProEntity.getId())){
return deviceProMapper.updateById(deviceProEntity) > 0 ;
}else {
deviceProEntity.setDeptName(LoginHelper.getDeptName());
deviceProEntity.setNickName(LoginHelper.getUsername());
return deviceProMapper.insert(deviceProEntity) > 0;
}
}
@Override
public Boolean deleteIds(List<Long> ids) {
List<DeviceEntity> deviceEntityList = deviceMapper.selectList(new LambdaQueryWrapper<DeviceEntity>().in(DeviceEntity::getProId, ids));
deviceEntityList.forEach(deviceEntity -> {
deviceMapper.updatePor(deviceEntity.getId(),null);
});
//todo人员是否要删除
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().in(DeviceProUserEntity::getDeviceProId, ids));
return deviceProMapper.deleteByIds(ids)>0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Long proId) {
try {
//先清除原来的项目组成员
deviceProUserMapper.delete(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
if (ObjectUtil.isNotEmpty(userEntity)) {
//添加新的项目组成员
deviceProUserMapper.insert(userEntity);
}
return true;
} catch (ServiceException e) {
log.error(e.getMessage(),e);
return false;
}
}
/**
* 绑定设备的项目组
* @param dict
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateDevice(Dict dict) {
Long deviceId = dict.getLong("deviceId");
Long proId = dict.getLong("proId");
if (ObjectUtil.hasEmpty(deviceId, proId)) {
throw new ServiceException("【deviceId】或【proId】参数为空!");
}
LambdaUpdateWrapper<DeviceEntity> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(DeviceEntity::getProId, proId);
wrapper.eq(DeviceEntity::getId, deviceId);
return deviceMapper.update(wrapper) > 0;
}
/**
* 获取当前成员所属项目组
* @param userId
* @return
*/
@Override
public List<Integer> listDeviceGroup(Long userId) {
LambdaQueryWrapper<DeviceProUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DeviceProUserEntity::getUserId,userId);
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(wrapper);
if (ObjectUtil.isNotEmpty(proUserEntityList)){
List<Integer> proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList();
LambdaQueryWrapper<DeviceProEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(DeviceProEntity::getId, proIdList);
return deviceProMapper.selectList(queryWrapper).stream().map(DeviceProEntity::getId).distinct().toList();
}
return ListUtil.empty();
}
@Override
public List<String> listDevice(Long userId) {
LambdaQueryWrapper<DeviceProUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DeviceProUserEntity::getUserId,userId);
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(wrapper);
if (ObjectUtil.isNotEmpty(proUserEntityList)){
List<Integer> proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList();
LambdaQueryWrapper<DeviceProEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(DeviceProEntity::getId, proIdList);
List<Integer> groupIdList = deviceProMapper.selectList(queryWrapper).stream().map(DeviceProEntity::getId).distinct().toList();
if (ObjectUtil.isEmpty(groupIdList)){
return ListUtil.empty();
}
return deviceMapper.selectList(new LambdaQueryWrapper<DeviceEntity>().in(DeviceEntity::getProId, groupIdList)).stream().map(DeviceEntity::getDeviceSn).distinct().toList();
}
return ListUtil.empty();
}
@Override
public Boolean saveAndUpdate(DeviceProEntity entity) {
boolean flag = true;
//项目信息
if(entity.getId() != null){
flag = deviceProMapper.updateById(entity) > 0 ;
}else {
LoginUser loginUser = LoginHelper.getLoginUser();
entity.setCreateBy(loginUser.getUserId());
entity.setCreateTime(new Date());
entity.setCreateDept(loginUser.getDeptId());
flag = deviceProMapper.insert(entity) > 0;
}
//设备项目绑定
if(entity.getDeviceEntityList().size() >= 0 && flag){
for (DeviceEntity deviceEntity : deviceMapper.selectList(new QueryWrapper<DeviceEntity>().eq("pro_id", entity.getId()))) {
deviceMapper.updatePor(deviceEntity.getId(),null);
}
entity.getDeviceEntityList().stream().forEach(itme->{
itme.setProId(entity.getId());
});
flag = deviceMapper.updateById(entity.getDeviceEntityList(),100).size() > 0;
}
//设备项目绑定
if(entity.getDeviceProUserEntityList().size() >= 0 && flag){
deviceProUserMapper.delete(new QueryWrapper<DeviceProUserEntity>().eq("pro_id",entity.getId()));
entity.getDeviceProUserEntityList().stream().forEach(itme->{
itme.setDeviceProId(entity.getId());
});
flag = deviceProUserMapper.insert(entity.getDeviceProUserEntityList(),100).size() > 0;
}
return flag;
}
}

10
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java

@ -1,6 +1,7 @@
package org.dromara.sample.manage.service.impl;
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.sdk.cloudapi.device.*;
@ -29,8 +30,10 @@ import org.dromara.sample.common.error.CommonErrorEnum;
import org.dromara.sample.component.mqtt.model.EventsReceiver;
import org.dromara.sample.control.model.enums.DroneAuthorityEnum;
import org.dromara.sample.manage.mapper.IDeviceMapper;
import org.dromara.sample.manage.mapper.IDeviceProMapper;
import org.dromara.sample.manage.model.dto.*;
import org.dromara.sample.manage.model.entity.DeviceEntity;
import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum;
import org.dromara.sample.manage.model.enums.PropertySetFieldEnum;
import org.dromara.sample.manage.model.enums.UserTypeEnum;
@ -125,6 +128,9 @@ public class DeviceServiceImpl implements IDeviceService {
@Autowired
private IWebSocketMessageService webSocketMessageService;
@Autowired
private IDeviceProMapper deviceProMapper;
@Override
public void subDeviceOffline(String deviceSn) {
// If no information about this device exists in the cache, the drone is considered to be offline.
@ -507,6 +513,10 @@ public class DeviceServiceImpl implements IDeviceService {
device.setChildren(child);
});
}
if(device.getProId() != null){
DeviceProEntity deviceProEntitie = deviceProMapper.selectOne(new LambdaQueryWrapper<DeviceProEntity>().eq(DeviceProEntity::getId, device.getProId()));
device.setDeviceProEntity(deviceProEntitie);
}
})
.collect(Collectors.toList());
return new PaginationData<DeviceDTO>(devicesList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));

3
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<AiCompareEntity> {
List<AiCompareMediaFileDTO>listMediaFile(String jobId);
List<AiCompareMediaFileDTO>listMediaFile(@Param("jobId") String jobId, @Param("compareId") Long compareId);
}

27
dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java

@ -87,7 +87,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
.like(StringUtils.isNotBlank(bo.getDeptName()), "lower(dept_name)", StringUtils.lowerCase(bo.getDeptName()))
.like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName()))
.between(params.get("beginTime") != null && params.get("endTime") != null,
"create_time", params.get("beginTime"), params.get("endTime"));
"create_time", params.get("beginTime"), params.get("endTime")).orderByDesc("create_time");
return wrapper;
}
@Override
@ -96,7 +96,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
if(compareDTOList.isEmpty()){
throw new RuntimeException("未选择比对数据");
}
List<AiCompareEntity> insertList =new ArrayList<>();
// List<AiCompareEntity> insertList =new ArrayList<>();
for (Map<String,Object> bo : compareDTOList) {
Long queueId = bo.containsKey("queueId") ? Convert.toLong(bo.get("queueId")) : null;
String waylineId = bo.containsKey("waylineId") ? Convert.toStr(bo.get("waylineId")) : null;
@ -137,21 +137,22 @@ public class AiCompareServiceImpl implements IAiCompareService {
aiCompareEntity.setTemplateId(jobEntityList.get(0).getJobId());
}
}
aiCompareMapper.insert(aiCompareEntity);
String topic = TopicConst.IMAGE +TopicConst.COMPARE;
List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId(),43200,false);
List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId(),aiCompareEntity.getId(),43200,false);
mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1);
insertList.add(aiCompareEntity);
// insertList.add(aiCompareEntity);
}
List<BatchResult> resultList = aiCompareMapper.insertOrUpdate(insertList, 10);
// List<BatchResult> resultList = aiCompareMapper.insertOrUpdate(insertList, 10);
List<Long> list =compareDTOList.stream().map(e->Convert.toLong(e.get("queueId"))).collect(Collectors.toList());
return aiCompareQueueService.updateStatus(list,AiCompareStatusConstants.QUEUW_TYPE_1);
}
public List<AiCompareMediaFileDTO> listMediaFile(String jobId,Integer seconds ,boolean isIllegal){
List<AiCompareMediaFileDTO> mediaFileDTOList = aiCompareMapper.listMediaFile(jobId);
public List<AiCompareMediaFileDTO> listMediaFile(String jobId,Long compareId,Integer seconds ,boolean isIllegal){
List<AiCompareMediaFileDTO> mediaFileDTOList = aiCompareMapper.listMediaFile(jobId,compareId);
if(!mediaFileDTOList.isEmpty()){
mediaFileDTOList.stream().forEach(e->{
e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,e.getObjectKey(),seconds).toString());
e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,e.getObjectKey(),seconds).toString());
e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString());
e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getMateObjectKey(),seconds).toString());
if(isIllegal){
QueryWrapper<AiComparePlateEntity> queryWrapper = new QueryWrapper<AiComparePlateEntity>().eq("file_id", e.getFileId());
AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper);
@ -176,7 +177,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
int i = aiCompareMapper.updateById(aiCompareEntity);
AiCompareEntity compareEntity = aiCompareMapper.selectById(id);
String topic = TopicConst.IMAGE +TopicConst.COMPARE;
List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(compareEntity.getJobId(),43200,false);
List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(compareEntity.getJobId(),compareEntity.getId(),43200,false);
mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1);
return i>0;
}
@ -189,7 +190,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
@Override
public List<AiCompareMediaFileDTO> 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(Map<String,Object>objectMap) {
@ -199,8 +200,8 @@ public class AiCompareServiceImpl implements IAiCompareService {
aiCompareEntity.setId(frameDTO.getCompareId());
aiCompareMapper.updateById(aiCompareEntity);
frameDTO.setJobName(aiCompareEntity.getJobName());
frameDTO.setFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,frameDTO.getFileUrl(),3600).toString());
frameDTO.setMateFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,frameDTO.getMateFileUrl(),3600).toString());
frameDTO.setFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,frameDTO.getFileUrl(),3600).toString());
frameDTO.setMateFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,frameDTO.getMateFileUrl(),3600).toString());
String topic = TopicConst.IMAGE +TopicConst.FRAME;
mqttGatewayPublish.publish(topic,new CommonTopicRequest().setData(frameDTO),1);
return true;

29
dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java

@ -1,5 +1,8 @@
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.wayline.*;
import org.dromara.common.sdk.cloudapi.wayline.api.AbstractWaylineService;
import org.dromara.common.sdk.mqtt.MqttReply;
@ -11,7 +14,9 @@ import org.dromara.common.sdk.mqtt.requests.TopicRequestsResponse;
import org.dromara.common.websocket.dto.BizCodeEnum;
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.DeviceQrtzFileEntity;
import org.dromara.sample.manage.model.enums.UserTypeEnum;
import org.dromara.sample.manage.service.IDeviceRedisService;
import org.dromara.sample.media.model.MediaFileCountDTO;
@ -31,7 +36,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.net.URL;
import java.sql.SQLException;
import java.sql.Wrapper;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@ -58,7 +65,8 @@ public class SDKWaylineService extends AbstractWaylineService {
@Autowired
private IWaylineFileService waylineFileService;
@Autowired
private IDeviceQrtzFileMapper deviceQrtzFileMapper;
@Autowired
private IWebSocketMessageService webSocketMessageService;
@ -105,9 +113,28 @@ public class SDKWaylineService extends AbstractWaylineService {
.jobId(response.getBid()).mediaCount(job.getMediaCount()).uploadedCount(0).fileId(job.getFileId()).build());
}
LambdaQueryWrapper<DeviceQrtzFileEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DeviceQrtzFileEntity::getWaylineId,job.getFileId()).eq(DeviceQrtzFileEntity::getStatus, DeviceQrtzConstants.QRTZ_FILE_STATUS_1).eq(DeviceQrtzFileEntity::getDeviceSn,job.getDockSn());
List<DeviceQrtzFileEntity> fileEntityList = deviceQrtzFileMapper.selectList(wrapper);
if (FlighttaskStatusEnum.OK != statusEnum) {
job.setCode(eventsReceiver.getResult().getCode());
job.setStatus(WaylineJobStatusEnum.FAILED.getVal());
//异常
if(!fileEntityList.isEmpty()){
fileEntityList.forEach(f->{
f.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0);
});
deviceQrtzFileMapper.updateById(fileEntityList);
}
}else if(FlighttaskStatusEnum.OK == statusEnum){
//正常
if(!fileEntityList.isEmpty()){
fileEntityList.forEach(f->{
f.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_3);
});
deviceQrtzFileMapper.updateById(fileEntityList);
}
}
waylineJobService.updateJob(job);
waylineRedisService.delRunningWaylineJob(response.getGateway());

2
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;

8
dk-modules/sample/src/main/resources/mapper/DeviceProUserMapper.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.sample.manage.mapper.IDeviceProUserMapper">
</mapper>

11
dk-modules/sample/src/main/resources/mapper/IDeviceMapper.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.sample.manage.mapper.IDeviceMapper">
<update id="updatePor">
update manage_device set pro_id =#{proId} where id=#{id}
</update>
</mapper>

69
dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.sample.manage.mapper.IDeviceProMapper">
<resultMap id="listDeviceProEntityMap" type="org.dromara.sample.manage.model.entity.DeviceProEntity">
<result column="pro_id" property="id" jdbcType="VARCHAR"/>
<result column="pro_name" property="proName" jdbcType="VARCHAR"/>
<result column="bind_code" property="bindCode" jdbcType="VARCHAR"/>
<result column="bind_type" property="bindType" jdbcType="VARCHAR"/>
<collection property="deviceProUserEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceProUserEntity">
<result column="pro_user_id" property="id"/>
<result column="device_pro_id" property="deviceProId"/>
<result column="user_id" property="userId"/>
<result column="nick_name" property="nickName"/>
</collection>
<collection property="deviceEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceEntity">
<result column="device_id" property="id"/>
<result column="device_sn" property="deviceSn"/>
<result column="device_name" property="deviceName"/>
<result column="device_type" property="deviceType"/>
<result column="sub_type" property="subType"/>
<result column="domain" property="domain"/>
<result column="child_sn" property="childSn"/>
<result column="workspace_id" property="workspaceId"/>
<result column="device_pro_number" property="proId"/>
<result column="device_nick_name" property="nickname"/>
</collection>
</resultMap>
<select id="listDeviceProEntityMap" resultMap="listDeviceProEntityMap">
SELECT
dp.id pro_id,
dp.pro_name,
dp.bind_code,
dp.bind_type,
dpu.user_id pro_user_id,
dpu.device_pro_id,
dpu.user_id,
dpu.nick_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
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
<where>
<if test="condition.deviceSn != null and condition.deviceSn != ''">
and d.device_sn like concat(concat('%',#{condition.deviceSn}),'%')
</if>
<if test="condition.deviceName != null and condition.deviceName != ''">
and d.device_name like concat(concat('%',#{condition.deviceName}),'%')
</if>
<if test="condition.nickname != null and condition.nickname != ''">
and dpu.nickname like concat(concat('%',#{condition.nickname}),'%')
</if>
<if test="condition.userId != null and condition.userId != ''">
and dpu.user_id = #{condition.userId}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save