diff --git a/dk-modules/business/src/main/java/org/dromara/business/BusinessApplication.java b/dk-modules/business/src/main/java/org/dromara/business/BusinessApplication.java index d29d738..024311b 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/BusinessApplication.java +++ b/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); 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 cb267df..1bb1ff3 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 @@ -185,4 +185,13 @@ public class BusinessAlertStatisticsController extends BaseController { public R>> countAlertTypeCompare(BusinessAlertBo businessAlertBo) { return R.ok(statisticsService.countAlertTypeCompare(businessAlertBo)); } + + //本周、今日、本月 预警个数 + @Operation(summary="app首页统计", description="app首页统计") + @GetMapping(value = "/app/count") + public R> listAppAlertCount(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.listAppAlertCount(businessAlertBo)); + } + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/feign/FeignDeviceGroup.java b/dk-modules/business/src/main/java/org/dromara/business/feign/FeignDeviceGroup.java new file mode 100644 index 0000000..4a36405 --- /dev/null +++ b/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 listDeviceGroup(@RequestParam("userId") Long userId); + + + @GetMapping("/manage/api/v1/device/group/feign/device") + public List listDevice(@RequestParam("userId") Long userId); +} 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 51da15f..30f01ac 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 @@ -94,4 +94,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus> countLabelRateAlert(@Param("param") BusinessAlertBo businessAlertBo,@Param("startTime") String startTime,@Param("endTime") String endTime); void batchUpdateDept(@Param("list") List alertVoList); + + + Map listAppAlertCount(@Param("param") BusinessAlertBo businessAlertBo); } 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 bcd9748..bac55f8 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 @@ -35,4 +35,7 @@ public interface IBusinessAlertStatisticsService { Map comprehensiveManage(BusinessAlertBo businessAlertBo); Map cityComprehensiveManage(BusinessAlertBo businessAlertBo); + + Map listAppAlertCount(BusinessAlertBo businessAlertBo); + } 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 b58c20c..113719e 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 @@ -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 countMonthAlert(BusinessAlertBo businessAlertBo) { + //构建查询数据权限 + createPermissions(businessAlertBo); + if (ObjectUtil.isNotEmpty(businessAlertBo.getDeptId())){ List remoteDeptVoList = remoteDeptService.selectListByParentId(businessAlertBo.getDeptId()); List departIdList = remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList(); @@ -75,6 +83,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist @Override public ListcountDepartAlert(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 countMonthAlertStatus(BusinessAlertBo businessAlertBo) { + //构建查询数据权限 + createPermissions(businessAlertBo); businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList())); List> mapList = baseMapper.listMonthAlertStatus(businessAlertBo); @@ -105,6 +117,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist @Override public List 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> 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> 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 countPanelTotalAlert(BusinessAlertBo businessAlertBo) { + //构建查询数据权限 + createPermissions(businessAlertBo); Map result = new HashMap<>(); if (ObjectUtil.isNotEmpty(businessAlertBo.getPostCode())){ List labelList = getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()); @@ -285,6 +308,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist public Map countCurrentDayAlert(BusinessAlertBo businessAlertBo) { Map result = new HashMap<>(); + //构建查询数据权限 + createPermissions(businessAlertBo); + if (ObjectUtil.isNotEmpty(businessAlertBo.getPostCode())){ List labelList = getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList()); @@ -314,6 +340,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist @Override public List countPostDayAlert(BusinessAlertBo businessAlertBo) { List result = new ArrayList<>(); + + //构建查询数据权限 + createPermissions(businessAlertBo); + //查询所有的职能岗位 List postVoList = remotePostService.listPost(); @@ -338,6 +368,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist */ @Override public List countPostAlert(BusinessAlertBo businessAlertBo) { + + //构建查询数据权限 + createPermissions(businessAlertBo); + //查询所有的职能岗位 List postVoList = remotePostService.listPost(); @@ -388,6 +422,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist */ @Override public List handlerRate(BusinessAlertBo businessAlertBo) { + + //构建查询数据权限 + createPermissions(businessAlertBo); + //查询所有的职能岗位 List postVoList = remotePostService.listPost(); @@ -434,6 +472,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist throw new ServiceException("【postCode】 岗位编码为空!"); } + //构建查询数据权限 + createPermissions(businessAlertBo); + Map result = new HashMap<>(); List labelList = getAiLabel(businessAlertBo.getPostCode()); @@ -572,6 +613,9 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //-------------------------------------------------------条件构建-------------------------------------------- + //构建查询数据权限 + createPermissions(businessAlertBo); + List postVoList = remoteLabelPostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId()); Map> 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 listAppAlertCount(BusinessAlertBo businessAlertBo) { + //构建查询数据权限 + createPermissions(businessAlertBo); + return baseMapper.listAppAlertCount(businessAlertBo); + } + /** * 获取近6个月的月份集合(格式:yyyy-MM) */ @@ -683,4 +739,22 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist private List 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())); + } + } } 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 d5cc1e0..e4955f0 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -788,5 +788,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java new file mode 100644 index 0000000..07c4002 --- /dev/null +++ b/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> pageDevicePro( + @RequestParam(name = "pageNum", defaultValue = "1") Long page, + @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize, + DeviceProDTO deviceProDTO) { + Page pageQuery = new Page<>(page, pageSize); + PaginationData devices = deviceProService.listDeviceProEntityMap(pageQuery,deviceProDTO); + + return HttpResultResponse.success(devices); + } + + //2、添加项目组 + /** + * 新增/更新项目 + * @param deviceProEntity + * @return + */ + @Operation(summary = "新增/更新项目。", description = "新增/更新项目。") + @PostMapping("/update") + public HttpResultResponse updateDevicePro(@RequestBody DeviceProEntity deviceProEntity) { + return HttpResultResponse.success(deviceProService.updateDevicePro(deviceProEntity)); + } + + + //3、删除项目组 + @Operation(summary = "删除项目组。", description = "删除项目组。") + @DeleteMapping("/delete") + public HttpResultResponse deleteDevicePro(@RequestBody List ids) { + return HttpResultResponse.success(deviceProService.deleteIds(ids)); + } + + /** + * 新增/更新项目人员。 + * @param userEntity + * @return + */ + @Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。") + @PostMapping("/{proId}/update") + public HttpResultResponse updateDeviceProUser(@RequestBody List userEntity,@PathVariable Long proId) { + return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId)); + } + + /** + * 设备绑定项目组 + */ + @Operation(summary = "设备绑定项目组", description = "设备绑定项目组") + @PostMapping("/bind") + public HttpResultResponse updateDevice(@RequestBody Dict dict) { + return HttpResultResponse.success(deviceProService.updateDevice(dict)); + } + + /** + * 根据人员获取项目组(feign调用接口) + */ + @GetMapping("/feign/user") + public List listDeviceGroup(@RequestParam("userId") Long userId) { + log.info("----------------------------开始调用feign接口查询项目组----------------------------"); + List result = deviceProService.listDeviceGroup(userId); + log.info("----------------------------调用feign接口查询项目组结束----------------------------"); + return result; + } + + /** + * 根据人员获取当前人员所拥有的机场(feign调用接口) + */ + @GetMapping("/feign/device") + public List listDevice(@RequestParam("userId") Long userId) { + log.info("----------------------------开始调用feign接口查询项目所属机场----------------------------"); + List result = deviceProService.listDevice(userId); + log.info("----------------------------调用feign接口查询项目组所属机场----------------------------"); + return result; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceMapper.java index 17a3bf5..f932a27 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceMapper.java +++ b/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 { + int updatePor(@Param("id") Integer id, @Param("proId") Integer proId); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProMapper.java new file mode 100644 index 0000000..1a74407 --- /dev/null +++ b/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 { + + Page listDeviceProEntityMap(Page page, @Param("condition") DeviceProDTO deviceProDTO); + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProUserMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IDeviceProUserMapper.java new file mode 100644 index 0000000..3297360 --- /dev/null +++ b/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 { + + + + +} 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 5b809fb..6e2fcca 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 @@ -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; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java new file mode 100644 index 0000000..7283c78 --- /dev/null +++ b/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; +} 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 21bb2e1..94c17ea 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 @@ -89,4 +89,7 @@ public class DeviceEntity implements Serializable { @TableField(value = "login_time") private LocalDateTime loginTime; + @TableField(value = "pro_id") + private Integer proId; + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java new file mode 100644 index 0000000..2aea7d2 --- /dev/null +++ b/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 deviceProUserEntityList = new ArrayList<>(); + + @TableField(exist = false) + private List deviceEntityList = new ArrayList<>(); + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java new file mode 100644 index 0000000..b23ebd2 --- /dev/null +++ b/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; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java new file mode 100644 index 0000000..580a1c0 --- /dev/null +++ b/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 listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO); + + Boolean saveAndUpdate(DeviceProEntity deviceProEntity); + + Boolean deleteIds(List ids); + + Boolean updateDevicePro(DeviceProEntity deviceProEntity); + + Boolean updateDeviceProUser(List userEntity,Long proId); + + Boolean updateDevice(Dict dict); + + List listDeviceGroup(Long userId); + + List listDevice(Long userId); +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProUserService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProUserService.java new file mode 100644 index 0000000..dc5ba25 --- /dev/null +++ b/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 { + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java new file mode 100644 index 0000000..f0c0444 --- /dev/null +++ b/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 listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { + Page pagination = deviceProMapper.listDeviceProEntityMap(page, deviceProDTO); + + return new PaginationData(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 ids) { + + List deviceEntityList = deviceMapper.selectList(new LambdaQueryWrapper().in(DeviceEntity::getProId, ids)); + + deviceEntityList.forEach(deviceEntity -> { + deviceMapper.updatePor(deviceEntity.getId(),null); + }); + + + //todo人员是否要删除 + List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().in(DeviceProUserEntity::getDeviceProId, ids)); + + + return deviceProMapper.deleteByIds(ids)>0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateDeviceProUser(List userEntity,Long proId) { + try { + //先清除原来的项目组成员 + deviceProUserMapper.delete(new LambdaQueryWrapper().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 wrapper = new LambdaUpdateWrapper<>(); + wrapper.set(DeviceEntity::getProId, proId); + wrapper.eq(DeviceEntity::getId, deviceId); + + return deviceMapper.update(wrapper) > 0; + } + + /** + * 获取当前成员所属项目组 + * @param userId + * @return + */ + @Override + public List listDeviceGroup(Long userId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceProUserEntity::getUserId,userId); + List proUserEntityList = deviceProUserMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(proUserEntityList)){ + List proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(DeviceProEntity::getId, proIdList); + return deviceProMapper.selectList(queryWrapper).stream().map(DeviceProEntity::getId).distinct().toList(); + } + + return ListUtil.empty(); + } + + @Override + public List listDevice(Long userId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceProUserEntity::getUserId,userId); + List proUserEntityList = deviceProUserMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(proUserEntityList)){ + List proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(DeviceProEntity::getId, proIdList); + List groupIdList = deviceProMapper.selectList(queryWrapper).stream().map(DeviceProEntity::getId).distinct().toList(); + + if (ObjectUtil.isEmpty(groupIdList)){ + return ListUtil.empty(); + } + + return deviceMapper.selectList(new LambdaQueryWrapper().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().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().eq("pro_id",entity.getId())); + entity.getDeviceProUserEntityList().stream().forEach(itme->{ + itme.setDeviceProId(entity.getId()); + }); + flag = deviceProUserMapper.insert(entity.getDeviceProUserEntityList(),100).size() > 0; + } + return flag; + } +} 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 1b349ed..4639f68 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,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().eq(DeviceProEntity::getId, device.getProId())); + device.setDeviceProEntity(deviceProEntitie); + } }) .collect(Collectors.toList()); return new PaginationData(devicesList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal())); 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 953872a..17879c1 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 @@ -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 insertList =new ArrayList<>(); +// List insertList =new ArrayList<>(); for (Map 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 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); +// insertList.add(aiCompareEntity); } - List resultList = aiCompareMapper.insertOrUpdate(insertList, 10); +// List resultList = aiCompareMapper.insertOrUpdate(insertList, 10); 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_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 queryWrapper = new QueryWrapper().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 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 +190,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) { @@ -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; 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 d97d9a9..8336524 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 @@ -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 wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceQrtzFileEntity::getWaylineId,job.getFileId()).eq(DeviceQrtzFileEntity::getStatus, DeviceQrtzConstants.QRTZ_FILE_STATUS_1).eq(DeviceQrtzFileEntity::getDeviceSn,job.getDockSn()); + List 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()); 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; diff --git a/dk-modules/sample/src/main/resources/mapper/DeviceProUserMapper.xml b/dk-modules/sample/src/main/resources/mapper/DeviceProUserMapper.xml new file mode 100644 index 0000000..7facbe1 --- /dev/null +++ b/dk-modules/sample/src/main/resources/mapper/DeviceProUserMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/dk-modules/sample/src/main/resources/mapper/IDeviceMapper.xml b/dk-modules/sample/src/main/resources/mapper/IDeviceMapper.xml new file mode 100644 index 0000000..9674698 --- /dev/null +++ b/dk-modules/sample/src/main/resources/mapper/IDeviceMapper.xml @@ -0,0 +1,11 @@ + + + + + + + update manage_device set pro_id =#{proId} where id=#{id} + + diff --git a/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml b/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml new file mode 100644 index 0000000..ba1fa69 --- /dev/null +++ b/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +