diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/model/LoginUser.java b/dk-api/api-system/src/main/java/org/dromara/system/api/model/LoginUser.java index dd3aabd..f3c6594 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/model/LoginUser.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/model/LoginUser.java @@ -135,6 +135,12 @@ public class LoginUser implements Serializable { */ private List posts; + + /** + * 设备sn权限集合 + */ + private List deviceList; + /** * 获取登录id */ diff --git a/dk-auth/src/main/java/org/dromara/auth/DKAuthApplication.java b/dk-auth/src/main/java/org/dromara/auth/DKAuthApplication.java index 82b1bc5..42b4140 100644 --- a/dk-auth/src/main/java/org/dromara/auth/DKAuthApplication.java +++ b/dk-auth/src/main/java/org/dromara/auth/DKAuthApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 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 * @author ruoyi */ @EnableDubbo +@EnableFeignClients @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class DKAuthApplication { public static void main(String[] args) { diff --git a/dk-auth/src/main/java/org/dromara/auth/feign/FeignDeviceGroup.java b/dk-auth/src/main/java/org/dromara/auth/feign/FeignDeviceGroup.java new file mode 100644 index 0000000..1acfc28 --- /dev/null +++ b/dk-auth/src/main/java/org/dromara/auth/feign/FeignDeviceGroup.java @@ -0,0 +1,24 @@ +package org.dromara.auth.feign; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; +import java.util.Map; + +@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); + + + @GetMapping("/device/flight/count") + public Map getDevices(); +} diff --git a/dk-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java b/dk-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java index 0071ea4..3b7efe8 100644 --- a/dk-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java +++ b/dk-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java @@ -3,10 +3,12 @@ package org.dromara.auth.service.impl; import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.collection.ListUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.auth.domain.vo.LoginVo; +import org.dromara.auth.feign.FeignDeviceGroup; import org.dromara.auth.form.PasswordLoginBody; import org.dromara.auth.properties.CaptchaProperties; import org.dromara.auth.service.IAuthStrategy; @@ -26,8 +28,12 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.vo.RemoteClientVo; import org.dromara.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * 密码认证策略 * @@ -45,6 +51,9 @@ public class PasswordAuthStrategy implements IAuthStrategy { @DubboReference private RemoteUserService remoteUserService; + @Autowired + FeignDeviceGroup feignDeviceGroup; + @Override public LoginVo login(String body, RemoteClientVo client) { PasswordLoginBody loginBody = JsonUtils.parseObject(body, PasswordLoginBody.class); @@ -73,6 +82,19 @@ public class PasswordAuthStrategy implements IAuthStrategy { model.setTimeout(client.getTimeout()); model.setActiveTimeout(client.getActiveTimeout()); model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId()); + + //获取设备权限 + List deviceList = new ArrayList<>(); + + try { + deviceList = feignDeviceGroup.listDevice(loginUser.getUserId()); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + + loginUser.setDeviceList(deviceList); + // 生成token LoginHelper.login(loginUser, model); diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java index d826853..e757ffb 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java @@ -48,6 +48,7 @@ public interface IHttpWaylineService { HttpResultResponse> getWaylineList( @Valid @ParameterObject GetWaylineListRequest request, @PathVariable(name = "workspace_id") String workspaceId, + @PathVariable(name = "proId") Integer proId, HttpServletRequest req, HttpServletResponse rsp); /** diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 0611c9a..229dba3 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -1,5 +1,6 @@ package org.dromara.business.controller; +import cn.dev33.satoken.annotation.SaCheckPermission; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -9,6 +10,8 @@ import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.service.IBusinessAlertService; import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; @@ -52,6 +55,25 @@ public class BusinessAlertController extends BaseController { return R.ok(businessAlertService.getTodoBusinessAlert(alertId)); } + + @Operation(summary ="根据经纬度获取历史预警",description = "根据经纬度获取历史预警") + @GetMapping("/alert/listHandleHistory") + public R> listHandleHistory( + @RequestParam(value = "lng",required = false) String lng, + @RequestParam(value ="lat",required = false) String lat, + @RequestParam("createTime") String createTime) { + return R.ok(businessAlertService.listHandleHistory(lng,lat,createTime)); + } + + + @SaCheckPermission("business:alert:delete") + @Log(title = "删除预警", businessType = BusinessType.DELETE) + @Operation(summary ="删除预警",description = "删除预警") + @GetMapping("/alert/{alertId}/delete") + public R deleteFalseAlert(@PathVariable("alertId") Long alertId) { + return R.ok(businessAlertService.deleteFalseAlert(alertId)); + } + /** * 查询全部预警/待办/已完成/忽略 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index 1bb1ff3..d0f2ccf 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -177,6 +177,7 @@ public class BusinessAlertStatisticsController extends BaseController { @Operation(summary="预警对比统计(预警状态)", description="预警对比统计(预警状态)") @GetMapping(value = "/compare/status/count") public R>> countAlertStatusCompare(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countAlertStatusCompare(businessAlertBo)); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 0827225..f6a8bb7 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -59,12 +59,12 @@ public class BusinessAlert { /** * 纬度 */ - private Float lat; + private String lat; /** * 精度 */ - private Float lng; + private String lng; /** * 标签名-中 diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index 2c0893e..ce203d9 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -63,12 +63,12 @@ public class BusinessAlertVo implements Serializable { /** * 纬度 */ - private Float lat; + private String lat; /** * 精度 */ - private Float lng; + private String lng; /** * 标签名-中 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 index 4a36405..21924a8 100644 --- 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 @@ -6,6 +6,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Map; @FeignClient(name = "gateway",path = "sample") public interface FeignDeviceGroup { @@ -17,4 +18,8 @@ public interface FeignDeviceGroup { @GetMapping("/manage/api/v1/device/group/feign/device") public List listDevice(@RequestParam("userId") Long userId); + + + @GetMapping("/device/flight/count") + public Map getDevices(); } 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 e4c1777..97540e7 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 @@ -101,4 +101,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus listAppAlertCount(@Param("param") BusinessAlertBo businessAlertBo); + + List listHandleHistory(@Param("lng") String lng, @Param("lat") String lat,@Param("createTime") String createTime); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 994a451..c3d8589 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -84,4 +84,9 @@ public interface IBusinessAlertService { List listTodoAlert(BusinessAlertBo businessAlertBo); BusinessAlert getTodoBusinessAlert(Long alertId); + + Boolean deleteFalseAlert(Long alertId); + + List listHandleHistory(String lng, String lat, String createTime); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 85c30be..9e7a354 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -21,6 +21,7 @@ import org.dromara.business.utils.BatchProcessorUtil; import org.dromara.business.utils.MinioUntil; import org.dromara.business.utils.constants.MinIOConstants; import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.enums.FormatsType; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; @@ -119,6 +120,11 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { alert.setHandleType(BusinessStatusEnum.VERIFY.getStatus()); BeanUtils.copyProperties(alert, businessAlert); + //查询历史预警 + List businessAlertList = this.listHandleHistory(alert.getLng(), alert.getLat(), DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, alert.getCreateTime())); + + businessAlert.setHandleNum(businessAlertList.size()); + return businessAlert; }).toList(); @@ -302,6 +308,24 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return TableDataInfo.build(page); } + /** + * 查询当前用户待办预警 + * @return + */ + @Override + public List listTodoAlert(BusinessAlertBo businessAlertBo) { + QueryWrapper wrapper = buildQueryWrapper(businessAlertBo); + + if (ObjectUtil.isEmpty(wrapper)){ + return ListUtil.empty(); + } + + wrapper.eq("t.node_type", 1); + wrapper.in("t.approver", remoteWorkflowService.getPermissions()); + wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); + + return this.baseMapper.listTodoAlert(wrapper); + } /** * 查询当前用户待办预警 @@ -380,6 +404,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //排除状态为验证状态预警 wrapper.ne("t.handle_type", BusinessStatusEnum.VERIFY.getStatus()); + wrapper.eq("t.del_flag", 0); if (ObjectUtil.isNotEmpty(bo.getHandleType())){ wrapper.eq("t.handle_type", bo.getHandleType()); @@ -647,6 +672,38 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return businessAlert; } + @Override + public Boolean deleteFalseAlert(Long alertId) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(BusinessAlert::getId, alertId); + wrapper.set(BusinessAlert::getDelFlag,1); + return this.baseMapper.update(wrapper) > 0; + } + + @Override + public List listHandleHistory(String lng, String lat, String createTime) { + if (ObjectUtil.hasEmpty(lng, lat)) { + return ListUtil.empty(); + } + + List businessAlerts = this.baseMapper.listHandleHistory(lng, lat, createTime); + + try { + businessAlerts.forEach(businessAlert -> { + if (businessAlert.getBusinessType() == 2){ + businessAlert.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_DKCY, businessAlert.getImages(), 3600).toString()); + }else { + businessAlert.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getImages(), 3600).toString()); + businessAlert.setMaxImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getMaxImages(), 3600).toString()); + } + }); + } catch (Exception e) { + log.error(e.getMessage(),e); + } + + return businessAlerts; + } + public static void main(String[] args) { System.out.println(getLastSixDays()); 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 6ed5233..6542690 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 @@ -3,6 +3,7 @@ package org.dromara.business.service.impl; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; @@ -12,6 +13,7 @@ import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.service.IBusinessAlertService; import org.dromara.business.service.IBusinessAlertStatisticsService; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.mybatis.enums.DataScopeType; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteDataScopeService; @@ -44,6 +46,7 @@ import static org.dromara.common.core.constant.Constants.FLY_COUNT; * *预警统计Service业务层处理 */ +@Slf4j @RequiredArgsConstructor @Service public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatisticsService { @@ -186,57 +189,58 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //----------------------------------------------获取飞行总架次、总时长---------------------------------------------- //获取飞行总架次、总时长 //获取机场信息根据当前登录人 - List deviceSnList = ObjectUtil.isNotEmpty(feignDeviceGroup.listDevice(LoginHelper.getUserId()))?feignDeviceGroup.listDevice(LoginHelper.getUserId()):ListUtil.empty(); +// List deviceSnList = ObjectUtil.isNotEmpty(feignDeviceGroup.listDevice(LoginHelper.getUserId()))?feignDeviceGroup.listDevice(LoginHelper.getUserId()):ListUtil.empty(); //过滤redis中用户所拥有的设备 - Map countMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_COUNT)) - .map(map -> map.entrySet().stream() - .filter(entry -> deviceSnList.contains(entry.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) - .orElse(new HashMap<>()); - - int flyCount; - - if (ObjectUtil.isNotEmpty(countMap)){ - flyCount = countMap.values().stream() - .filter(Objects::nonNull) - .mapToInt(value -> { - if (value instanceof Number) { - return ((Number) value).intValue(); - } - return 0; - }) - .sum(); - } else { - flyCount = 0; - } +// Map countMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_COUNT)) +// .map(map -> map.entrySet().stream() +// .filter(entry -> deviceSnList.contains(entry.getKey())) +// .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) +// .orElse(new HashMap<>()); + +// int flyCount; +// +// if (ObjectUtil.isNotEmpty(countMap)){ +// flyCount = countMap.values().stream() +// .filter(Objects::nonNull) +// .mapToInt(value -> { +// if (value instanceof Number) { +// return ((Number) value).intValue(); +// } +// return 0; +// }) +// .sum(); +// } else { +// flyCount = 0; +// } //过滤redis中用户所拥有的设备 - Map accTimeMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_ACC_TIME)) - .map(map -> map.entrySet().stream() - .filter(entry -> deviceSnList.contains(entry.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) - .orElse(new HashMap<>()); - - - double flyAccTime; - - if (ObjectUtil.isNotEmpty(accTimeMap)) { - flyAccTime = accTimeMap.values().stream() - .filter(Objects::nonNull) - .mapToDouble(value -> { - if (value instanceof Number) { - return ((Number) value).doubleValue(); - } - return 0.0; - }) - .sum(); - } else { - flyAccTime = 0.0; - } +// Map accTimeMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_ACC_TIME)) +// .map(map -> map.entrySet().stream() +// .filter(entry -> deviceSnList.contains(entry.getKey())) +// .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) +// .orElse(new HashMap<>()); +// +// +// double flyAccTime; +// +// if (ObjectUtil.isNotEmpty(accTimeMap)) { +// flyAccTime = accTimeMap.values().stream() +// .filter(Objects::nonNull) +// .mapToDouble(value -> { +// if (value instanceof Number) { +// return ((Number) value).doubleValue(); +// } +// return 0.0; +// }) +// .sum(); +// } else { +// flyAccTime = 0.0; +// } //----------------------------------------------获取飞行总架次、总时长---------------------------------------------- + Map devices = feignDeviceGroup.getDevices(); Map panel = baseMapper.countPanelAlert(businessAlertBo); @@ -245,8 +249,8 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist ObjectUtil.isEmpty(panel.get("total"))?0:panel.get("total"), ObjectUtil.isEmpty(panel.get("finishCount"))?0:panel.get("finishCount"), ObjectUtil.isEmpty(panel.get("cancelCount"))?0:panel.get("cancelCount"), - flyCount, - flyAccTime); + ObjectUtil.isEmpty(devices.get("flyCount"))?0:devices.get("flyCount"), + ObjectUtil.isEmpty(devices.get("flyAccTime"))?0:devices.get("flyAccTime")); } @Override @@ -774,20 +778,37 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } 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")){ + try { + RoleDTO roleDTO = LoginHelper.getLoginUser().getRoles().getFirst(); + + //自定义权限 + if (roleDTO.getDataScope().equalsIgnoreCase(DataScopeType.CUSTOM.getCode())){ + String roleCustom = remoteDataScopeService.getRoleCustom(roleDTO.getRoleId()); + if (roleCustom.equalsIgnoreCase("-1")){ + businessAlertBo.setDeptIdList(ListUtil.empty()); + }else { + businessAlertBo.setDeptIdList(Arrays.stream(roleCustom.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + } + } else if (roleDTO.getDataScope().equalsIgnoreCase(DataScopeType.DEPT_AND_CHILD.getCode())) { + //部门及其以下 + String deptAndChild = remoteDataScopeService.getDeptAndChild(LoginHelper.getDeptId()); + if (deptAndChild.equalsIgnoreCase("-1")){ + businessAlertBo.setDeptIdList(ListUtil.empty()); + }else { + businessAlertBo.setDeptIdList(Arrays.stream(deptAndChild.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + } + + } else if (roleDTO.getDataScope().equalsIgnoreCase(DataScopeType.DEPT.getCode())) { + //本部门 + businessAlertBo.setDeptIdList(List.of(LoginHelper.getDeptId())); + } + } catch (Exception e) { businessAlertBo.setDeptIdList(ListUtil.empty()); - }else { - businessAlertBo.setDeptIdList(Arrays.stream(roleCustom.split(",")) - .map(Long::parseLong) - .collect(Collectors.toList())); + log.error(e.getMessage(),e); } } } 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 0f4913e..94333a9 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -95,6 +95,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + - + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFlightRecordsController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFlightRecordsController.java new file mode 100644 index 0000000..44c721a --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFlightRecordsController.java @@ -0,0 +1,28 @@ +package org.dromara.sample.manage.controller; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.sample.manage.service.IDeviceFlightRecordsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +@RestController +@Slf4j +@RequestMapping("/device/flight") +public class DeviceFlightRecordsController { + + @Autowired + private IDeviceFlightRecordsService deviceFlightRecordsService; + + @GetMapping("/count") + public Map getDevices() { + log.info("----------------------------开始调用feign接口查询项目组----------------------------"); + Map deviceFlightCount = deviceFlightRecordsService.getDeviceFlightCount(); + log.info("----------------------------调用feign接口查询项目组结束----------------------------"); + return deviceFlightCount; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/DeviceFlightRecordsMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/DeviceFlightRecordsMapper.java new file mode 100644 index 0000000..5db879e --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/DeviceFlightRecordsMapper.java @@ -0,0 +1,7 @@ +package org.dromara.sample.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.sample.manage.model.entity.DeviceFlightRecordsEntity; + +public interface DeviceFlightRecordsMapper 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 6e2fcca..2bbfb94 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java @@ -102,7 +102,7 @@ public class DeviceDTO { private String tenantId; @Schema(description = "项目ID") - private String proId; + private Integer proId; @Schema(description = "项目ID") private DeviceProEntity deviceProEntity; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceFlightRecordsEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceFlightRecordsEntity.java new file mode 100644 index 0000000..7220bf8 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceFlightRecordsEntity.java @@ -0,0 +1,45 @@ +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 java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "device_flight_records") +public class DeviceFlightRecordsEntity { + + + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 机场sn + */ + private String deviceSn; + + /** + * 飞行总架次 + */ + private Integer flyCount; + + /** + * 飞行总时长 + */ + private Integer flyAccTime; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceFlightRecordsService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceFlightRecordsService.java new file mode 100644 index 0000000..b451499 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceFlightRecordsService.java @@ -0,0 +1,15 @@ +package org.dromara.sample.manage.service; + +import org.dromara.sample.manage.model.entity.DeviceFlightRecordsEntity; + +import java.util.List; +import java.util.Map; + +public interface IDeviceFlightRecordsService { + + + void saveDeviceFlight(DeviceFlightRecordsEntity deviceFlightRecords); + + Map getDeviceFlightCount(); + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceFlightRecordsServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceFlightRecordsServiceImpl.java new file mode 100644 index 0000000..d441791 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceFlightRecordsServiceImpl.java @@ -0,0 +1,58 @@ +package org.dromara.sample.manage.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.sample.manage.mapper.DeviceFlightRecordsMapper; +import org.dromara.sample.manage.model.entity.DeviceFlightRecordsEntity; +import org.dromara.sample.manage.service.IDeviceFlightRecordsService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +@Service +public class DeviceFlightRecordsServiceImpl extends ServiceImpl implements IDeviceFlightRecordsService { + + + @Override + public void saveDeviceFlight(DeviceFlightRecordsEntity deviceFlightRecords) { + + //查询之前的数据 + DeviceFlightRecordsEntity deviceFlightRecordsEntities = this.baseMapper.selectOne(new LambdaQueryWrapper().eq(DeviceFlightRecordsEntity::getDeviceSn,deviceFlightRecords.getDeviceSn())); + + if (ObjectUtil.isNotEmpty(deviceFlightRecordsEntities)) { + deviceFlightRecordsEntities.setFlyCount(deviceFlightRecordsEntities.getFlyCount() + deviceFlightRecords.getFlyCount()); + deviceFlightRecordsEntities.setFlyAccTime(deviceFlightRecordsEntities.getFlyAccTime() + deviceFlightRecords.getFlyAccTime()); + + this.updateById(deviceFlightRecordsEntities); + }else { + this.save(deviceFlightRecords); + } + } + + @Override + public Map getDeviceFlightCount() { + Map resultMap = new HashMap<>(); + + List deviceFlightRecordsEntities = this.baseMapper.selectList(new LambdaQueryWrapper<>()); + + int flyCount = deviceFlightRecordsEntities.stream() + .map(DeviceFlightRecordsEntity::getFlyCount) + .reduce(0, Integer::sum); + + + int flyAccTime = deviceFlightRecordsEntities.stream() + .map(DeviceFlightRecordsEntity::getFlyAccTime) + .reduce(0, Integer::sum); + + + resultMap.put("flyCount",flyCount); + resultMap.put("flyAccTime",flyAccTime); + + return resultMap; + } +} 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 index b58bc1e..1a0918b 100644 --- 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 @@ -88,7 +88,7 @@ public class DeviceProServiceImpl implements IDeviceProService { @Autowired private IDeviceProUserMapper deviceProUserMapper; - private final ObjectMapper objectMapper = new ObjectMapper(); +// private final ObjectMapper objectMapper = new ObjectMapper(); @Override public PaginationData listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { @@ -131,52 +131,52 @@ public class DeviceProServiceImpl implements IDeviceProService { public Boolean updateDeviceProUser(List userEntity,Integer proId) { try { //获取项目组信息 - DeviceProEntity deviceProEntity = deviceProMapper.selectOne(new LambdaQueryWrapper().eq(DeviceProEntity::getId, proId)); +// DeviceProEntity deviceProEntity = deviceProMapper.selectOne(new LambdaQueryWrapper().eq(DeviceProEntity::getId, proId)); //查询之前项目所属的人员信息 - List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); - - List difference = new ArrayList<>(); +// List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); +// +// List difference = new ArrayList<>(); // 判断两个集合的差值(基于 userId) - difference = proUserEntityList.stream() - .filter(proUser -> userEntity.stream() - .noneMatch(user -> user.getUserId().equals(proUser.getUserId()))) - .toList(); +// difference = proUserEntityList.stream() +// .filter(proUser -> userEntity.stream() +// .noneMatch(user -> user.getUserId().equals(proUser.getUserId()))) +// .toList(); //--------------------------------------------缓存相关操作---------------------------------------------------------------- //人员如果解绑了项目删除缓存数据 - difference.forEach(proUserEntity -> { - //删除人员项目组信息 - List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); - List projectList = projects.stream() - .filter(Map.class::isInstance) - .map(Map.class::cast) - .toList(); - - //删除人员中所拥有的当前的项目组,然后构建新的存入redis - List deviceProEntities = projectList.stream().filter(p -> !Integer.valueOf(p.get("id") + "").equals(proId)).toList(); - //删除 - RedisUtils.deleteObject(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); - //重新插入 - RedisUtils.setCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()),deviceProEntities); - - - //删除人员所拥有的设备信息 - List cacheList = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); - List deviceList = cacheList.stream() - .filter(Map.class::isInstance) - .map(Map.class::cast) - .toList(); - - //过滤除了这个删除的项目组之外的设备 - deviceList = deviceList.stream().filter(p-> !Integer.valueOf(p.get("proId") + "").equals(proId)).toList(); - //删除 - RedisUtils.deleteObject(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); - - RedisUtils.setCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()),deviceList); - }); +// difference.forEach(proUserEntity -> { +// //删除人员项目组信息 +// List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); +// List projectList = projects.stream() +// .filter(Map.class::isInstance) +// .map(Map.class::cast) +// .toList(); +// +// //删除人员中所拥有的当前的项目组,然后构建新的存入redis +// List deviceProEntities = projectList.stream().filter(p -> !Integer.valueOf(p.get("id") + "").equals(proId)).toList(); +// //删除 +// RedisUtils.deleteObject(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); +// //重新插入 +// RedisUtils.setCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()),deviceProEntities); +// +// +// //删除人员所拥有的设备信息 +// List cacheList = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); +// List deviceList = cacheList.stream() +// .filter(Map.class::isInstance) +// .map(Map.class::cast) +// .toList(); +// +// //过滤除了这个删除的项目组之外的设备 +// deviceList = deviceList.stream().filter(p-> !Integer.valueOf(p.get("proId") + "").equals(proId)).toList(); +// //删除 +// RedisUtils.deleteObject(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); +// +// RedisUtils.setCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()),deviceList); +// }); //--------------------------------------------缓存相关操作---------------------------------------------------------------- @@ -188,18 +188,18 @@ public class DeviceProServiceImpl implements IDeviceProService { deviceProUserMapper.insert(userEntity); //更新缓存记录 - userEntity.forEach(proUserEntity -> { - List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); - List projectList = projects.stream() - .filter(Map.class::isInstance) - .map(Map.class::cast) - .toList(); - - if (!projectList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(proUserEntity.getDeviceProId()))){ - Map proMap = objectMapper.convertValue(deviceProEntity, Map.class); - RedisUtils.addCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()), proMap); - } - }); +// userEntity.forEach(proUserEntity -> { +// List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); +// List projectList = projects.stream() +// .filter(Map.class::isInstance) +// .map(Map.class::cast) +// .toList(); +// +// if (!projectList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(proUserEntity.getDeviceProId()))){ +// Map proMap = objectMapper.convertValue(deviceProEntity, Map.class); +// RedisUtils.addCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()), proMap); +// } +// }); } return true; @@ -229,29 +229,31 @@ public class DeviceProServiceImpl implements IDeviceProService { wrapper.set(DeviceEntity::getProId, proId); wrapper.eq(DeviceEntity::getId, deviceId); - if (deviceMapper.update(wrapper) > 0) { - DeviceEntity deviceEntity = deviceMapper.selectOne(new LambdaQueryWrapper().eq(DeviceEntity::getId, deviceId)); - //根据proid获取人员用于存储人员的设备权限 - List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); - proUserEntityList.forEach(deviceProUserEntity -> { - List devices = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId())); - List deviceList = devices.stream() - .filter(Map.class::isInstance) - .map(Map.class::cast) - .toList(); - - if (!deviceList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(deviceEntity.getId()))){ - Map deviceMap = objectMapper.convertValue(deviceEntity, Map.class); - - RedisUtils.addCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId()), deviceMap); - } - }); - } + + return deviceMapper.update(wrapper) > 0; + + +// if (deviceMapper.update(wrapper) > 0) { +// DeviceEntity deviceEntity = deviceMapper.selectOne(new LambdaQueryWrapper().eq(DeviceEntity::getId, deviceId)); +// //根据proid获取人员用于存储人员的设备权限 +// List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); +// proUserEntityList.forEach(deviceProUserEntity -> { +// List devices = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId())); +// List deviceList = devices.stream() +// .filter(Map.class::isInstance) +// .map(Map.class::cast) +// .toList(); +// +// if (!deviceList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(deviceEntity.getId()))){ +// Map deviceMap = objectMapper.convertValue(deviceEntity, Map.class); +// +// RedisUtils.addCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId()), deviceMap); +// } +// }); +// } } catch (Exception e) { return false; } - - return true; } /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index 62a8036..bb817ed 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -327,6 +327,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { HttpResultResponse httpResultResponse = flightTaskService.publishFlightTask(device.getWorkspaceId(), createJobParam, deviceQrtzFileEntity.getNickName()); if(httpResultResponse.getCode() == 0){ deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_2); + deviceQrtzFileEntity.setFlightDate(new Date()); deviceQrtzFileMapper.updateById(deviceQrtzFileEntity); continue; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 4639f68..5bbdf41 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -710,6 +710,7 @@ public class DeviceServiceImpl implements IDeviceService { .compatibleStatus(dto.getFirmwareStatus() == null ? null : DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE != dto.getFirmwareStatus()) .deviceDesc(dto.getDeviceDesc()) + .proId(dto.getProId() == null ? null : dto.getProId()) .build(); } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 87c84bb..15fdca6 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -2,6 +2,7 @@ package org.dromara.sample.manage.service.impl; import cn.hutool.core.util.ObjectUtil; import org.dromara.common.redis.utils.RedisOpsUtils; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.device.api.AbstractDeviceService; import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; @@ -30,12 +31,15 @@ import org.springframework.util.StringUtils; import java.sql.SQLException; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; +import static org.dromara.common.core.constant.Constants.FLY_COUNT; + /** * @author sean * @version 1.7 @@ -165,7 +169,6 @@ public class SDKDeviceService extends AbstractDeviceService { && request.getData().getDroneChargeState().getCapacityPercent() >= 80 && (remainUpload != null && remainUpload == 0)){ deviceQrtzService.getDeviceQrtzFileEntity(device); } - deviceRedisService.setDeviceOnline(device); fillDockOsd(from, request.getData()); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java index 8158778..f6bcd97 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java @@ -122,7 +122,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ && request.getTid().equals(mediaFileCount.getTid()))) { if(CollectionUtils.isEmpty(deviceQrtzFileEntities)){ deviceQrtzFileEntities.stream().forEach(item->{ - item.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_2); + item.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_3); }); deviceQrtzFileMapper.updateById(deviceQrtzFileEntities,100); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java index 4a8b119..0e4b2b4 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java @@ -136,7 +136,16 @@ public class AiCompareController extends BaseController { public R edit(@Validated(EditGroup.class) @RequestBody Map bo) { return toAjax(aiCompareService.update(bo)); } - + /** + * 状态更改 + */ + @SaCheckPermission("sample:compare:add") + @Log(title = "状态更改", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @GetMapping("/updateStatus") + public R updateStatus(Long id) { + return toAjax(aiCompareService.updateStatus(id)); + } /** * 画框 diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java index fe5cd46..06fc063 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java @@ -1,6 +1,7 @@ package org.dromara.sample.wayline.controller; +import io.seata.common.util.CollectionUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; @@ -14,6 +15,8 @@ import org.dromara.common.sdk.cloudapi.wayline.*; import org.dromara.common.sdk.cloudapi.wayline.api.IHttpWaylineService; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.manage.mapper.IDeviceProUserMapper; +import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.wayline.model.dto.WaylineFileDTO; import org.dromara.sample.wayline.model.entity.AudioFileEntity; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; @@ -46,6 +49,9 @@ public class WaylineFileController implements IHttpWaylineService { @Autowired private IWaylineFileService waylineFileService; + @Autowired + private IDeviceProService deviceProService; + /** * 根据waylineID删除工作区中的wayline文件。 * Delete the wayline file in the workspace according to the wayline id. @@ -67,13 +73,13 @@ public class WaylineFileController implements IHttpWaylineService { */ @PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/file/{deviceSn}/upload") @Operation(summary = "导入kmz航路文件。", description = "导入kmz航路文件。") - public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,@PathVariable(name = "deviceSn") String deviceSn) { + public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,@PathVariable(name = "deviceSn") String deviceSn,@PathVariable(name = "proId") Integer proId) { if (Objects.isNull(file)) { return HttpResultResponse.error("未收到文件。"); } LoginUser loginUser = LoginHelper.getLoginUser(); String creator = loginUser.getUsername(); - waylineFileService.importKmzFile(file, workspaceId, creator,deviceSn); + waylineFileService.importKmzFile(file, workspaceId, creator,deviceSn,proId); return HttpResultResponse.success(); } @@ -86,8 +92,8 @@ public class WaylineFileController implements IHttpWaylineService { * @return */ @Override - public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId, HttpServletRequest req, HttpServletResponse rsp) { - PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request); + public HttpResultResponse> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId, Integer proId, HttpServletRequest req, HttpServletResponse rsp) { + PaginationData data = waylineFileService.getWaylinesByParam(workspaceId, request,proId); return HttpResultResponse.success(data); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java index 828b018..580dab9 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java @@ -47,4 +47,6 @@ public class WaylineFileDTO { private Integer fileNo; + private Integer proId; + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java index 32ac78d..c92be00 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java @@ -69,4 +69,6 @@ public class WaylineFileEntity implements Serializable { @TableField(exist = false) private String deviceName; + @TableField("pro_id") + private Integer proId; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java index b650bcd..dae7a03 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java @@ -23,6 +23,7 @@ public interface IAiCompareService { Boolean update(Map compareDTO); + Boolean updateStatus(Long id); AiCompareEntity getInfo(Long id); List queryById(Long id); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java index 13e4e30..be48b66 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java @@ -26,7 +26,7 @@ public interface IWaylineFileService { * @param param * @return */ - PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param); + PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,Integer proId); /** * Query the information of this wayline file according to the wayline file id. @@ -83,7 +83,7 @@ public interface IWaylineFileService { * @param creator * @return */ - void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn); + void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn,Integer proId); String getWaylineIdByFileId(Integer fileId); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java index 476f7dc..6b6f271 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 @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; 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.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -185,6 +186,17 @@ public class AiCompareServiceImpl implements IAiCompareService { return i>0; } + @Override + public Boolean updateStatus(Long id) { + AiCompareEntity aiCompareEntity = aiCompareMapper.selectById(id); + Boolean falg=false; + if(aiCompareEntity!=null&& ObjectUtil.equals(aiCompareEntity.getStatus(),AiCompareStatusConstants.COMPARE_STATUS_2)){ + aiCompareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_4); + falg= aiCompareMapper.updateById(aiCompareEntity)>0; + } + return falg; + } + @Override public AiCompareEntity getInfo(Long id) { return aiCompareMapper.selectById(id); @@ -233,6 +245,7 @@ public class AiCompareServiceImpl implements IAiCompareService { @Override public Boolean alert(Mapmap) { AiCompareAlertDTO compareAlertDTO = Convert.convert(AiCompareAlertDTO.class,map); + aiComparePlateMapper.update(new LambdaUpdateWrapper().eq(AiComparePlateEntity::getFileId,compareAlertDTO.getFileId()).set(AiComparePlateEntity::getPatternName,compareAlertDTO.getDiscernImgUrl())); List handleList = compareAlertDTO.getHandleList(); return businessAlertService.saveBusinessAlert(handleList); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index 3cfea66..ffa5203 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -78,7 +78,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { private RemoteFileService remoteFileService; @Override - public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param) { + public PaginationData getWaylinesByParam(String workspaceId, GetWaylineListRequest param,Integer proId) { // Paging Query Page page = mapper.selectPage( new Page(param.getPage(), param.getPageSize()), @@ -103,6 +103,9 @@ public class WaylineFileServiceImpl implements IWaylineFileService { .and(ObjectUtil.isNotEmpty(param.getDeviceSn()), wrapper -> { wrapper.eq(WaylineFileEntity::getDeviceSn, param.getDeviceSn()).or(); }) + .and(proId != null, wrapper -> { + wrapper.in(WaylineFileEntity::getProId, proId).or(); + }) .like(Objects.nonNull(param.getKey()), WaylineFileEntity::getName, param.getKey()) // There is a risk of SQL injection .last(Objects.nonNull(param.getOrderBy()), " order by " + param.getOrderBy().toString())); @@ -203,7 +206,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { } @Override - public void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn) { + public void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn,Integer proId) { Optional waylineFileOpt = validKmzFile(file); if (waylineFileOpt.isEmpty()) { throw new RuntimeException("文件格式不正确。"); @@ -230,6 +233,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { }else { waylineFile.setFileNo(1); } + waylineFile.setProId(proId); this.saveWaylineFile(workspaceId, waylineFile); } catch (IOException e) { e.printStackTrace(); @@ -466,6 +470,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { .favorited(file.getFavorited()) .sign(file.getSign()) .deviceSn(file.getDeviceSns().get(0)) + .proId(file.getProId()) .build(); } diff --git a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml index 3bd86ee..bebdf53 100644 --- a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml @@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"