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-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/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..74dbd6d 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 @@ -29,7 +29,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageAlertFinish(@Param("page") Page page,@Param("ew") QueryWrapper ew); + Page pageBusinessAlertHandle(@Param("page") Page page,@Param("ew") QueryWrapper ew); /** * 处理中 @@ -47,6 +47,13 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageBusinessAlertCancel(@Param("page") Page page,@Param("ew") QueryWrapper ew); + + @DataPermission( + @DataColumn(key = "deptName", value = "t.dept_id") + ) + Page pageBusinessAlertFinish(@Param("page") Page page, @Param("ew") QueryWrapper wrapper); + + @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) @@ -101,4 +108,11 @@ public interface BusinessAlertMapper extends BaseMapperPlus listAppAlertCount(@Param("param") BusinessAlertBo businessAlertBo); + + List listHandleHistory(@Param("lng") String lng, @Param("lat") String lat,@Param("createTime") String createTime); + + List> listOneDepartAlert(@Param("param") BusinessAlertBo businessAlertBo); + + List> listOneDepartAlertStatus(@Param("param") BusinessAlertBo businessAlertBo); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 994a451..becd098 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 @@ -22,11 +22,13 @@ public interface IBusinessAlertService { TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery); - TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery); + TableDataInfo pageBusinessAlertHandle(BusinessAlertBo bo, PageQuery pageQuery); TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery); TableDataInfo pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery); + + TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery); /** * 新增预警任务 * @@ -84,4 +86,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..cf80f93 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(); @@ -278,11 +284,10 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return new TableDataInfo<>(); } - wrapper.notIn("t.flowStatus", BusinessStatusEnum.CANCEL.getStatus()); + wrapper.eq("t.handle_type",BusinessStatusEnum.FINISH.getStatus()); - wrapper.apply(" EXISTS(select * from dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); - Page page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); + Page page = this.baseMapper.pageBusinessAlertFinish(pageQuery.build(), wrapper); try { page.getRecords().forEach(businessAlertVo->{ @@ -354,6 +359,39 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return TableDataInfo.build(page); } + @Override + public TableDataInfo pageBusinessAlertHandle(BusinessAlertBo bo, PageQuery pageQuery) { + QueryWrapper wrapper = buildQueryWrapper(bo); + + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } + + wrapper.notIn("t.flowStatus", BusinessStatusEnum.CANCEL.getStatus()); + + wrapper.apply(" EXISTS(select * from dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); + + Page page = this.baseMapper.pageBusinessAlertHandle(pageQuery.build(), wrapper); + + try { + page.getRecords().forEach(businessAlertVo->{ + businessAlertVo.setHandleType(null); + if (businessAlertVo.getBusinessType() == 2){ + businessAlertVo.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_DKCY, businessAlertVo.getImages(), 3600).toString()); + }else { + businessAlertVo.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlertVo.getImages(), 3600).toString()); + businessAlertVo.setMaxImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlertVo.getMaxImages(), 3600).toString()); + businessAlertVo.setMaxMateSourceImgUrl(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlertVo.getMaxMateSourceImgUrl(), 3600).toString()); + businessAlertVo.setMateSourceImgUrl(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlertVo.getMateSourceImgUrl(), 3600).toString()); + } + }); + } catch (Exception e) { + log.error(e.getMessage(),e); + } + + return TableDataInfo.build(page); + } + /** * 构建wrapper @@ -380,11 +418,16 @@ 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()); } + if (ObjectUtil.isNotEmpty(bo.getDeptId())){ + wrapper.eq("t.dept_id", bo.getDeptId()); + } + if (ObjectUtil.isNotEmpty(bo.getJobName())){ wrapper.like("t.job_name", bo.getJobName()); } @@ -647,6 +690,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..dd924c0 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 { @@ -97,8 +100,21 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist businessAlertBo.setDeptId(String.valueOf(LoginHelper.getDeptId())); businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList())); - List> mapList = baseMapper.listDepartAlert(businessAlertBo); + //判断是否存在下级 + Long deptId = LoginHelper.getDeptId(); + List remoteDeptVoList = Optional.ofNullable(remoteDeptService.selectListByParentId(String.valueOf(deptId))) + .orElse(Collections.emptyList()) + .stream() + .filter(p -> !p.getDeptId().equals(deptId)) + .collect(Collectors.toList()); + //排除自己如果没有下级则默认使用下边的逻辑查询 + if (ObjectUtil.isEmpty(remoteDeptVoList)) { + List> mapList = baseMapper.listOneDepartAlert(businessAlertBo); + return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList()); + } + //如果有则使用这个查询 + List> mapList = baseMapper.listDepartAlert(businessAlertBo); return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList()); } @@ -131,6 +147,33 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist businessAlertBo.setDeptId(String.valueOf(LoginHelper.getDeptId())); businessAlertBo.setAiLabelEnList(getAiLabel(businessAlertBo.getPostCode()).stream().map(RemoteAiLabelPostVo::getLabelEn).collect(Collectors.toList())); + //判断是否存在下级 + Long deptId = LoginHelper.getDeptId(); + List remoteDeptVoList = Optional.ofNullable(remoteDeptService.selectListByParentId(String.valueOf(deptId))) + .orElse(Collections.emptyList()) + .stream() + .filter(p -> !p.getDeptId().equals(deptId)) + .collect(Collectors.toList()); + + //排除自己如果没有下级则默认使用下边的逻辑查询 + if (ObjectUtil.isEmpty(remoteDeptVoList)) { + List> mapList = baseMapper.listOneDepartAlertStatus(businessAlertBo); + + return mapList.stream() + .map(map -> new StatObj( + Objects.toString(map.get("deptName")), + List.of( + new StatObj("total", map.get("total")), + new StatObj("todoCount", map.get("todoCount")), + new StatObj("finishCount", map.get("finishCount")), + new StatObj("cancelCount", map.get("cancelCount")) + ),"deptId",map.get("deptId") + )) + .collect(Collectors.toList()); + + } + + //如果有下级则使用下方方法 List> mapList = baseMapper.listDepartAlertStatus(businessAlertBo); return mapList.stream() @@ -186,57 +229,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 +289,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 +818,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..e28d333 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and ba.handle_type != 'verify' + and ba.del_flag = '0' and ba.label_en in @@ -30,6 +31,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + - select t.* from ( select ba.*, @@ -834,6 +842,45 @@ 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/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..430a1be 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 @@ -239,6 +239,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { entity.setWaylineId(e.getWaylineId()); entity.setWaylineName(e.getWaylineName()); entity.setSort(e.getSort()); + entity.setDeviceSn(e.getDeviceSn()); entity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_1); entity.setExecDate(Convert.toDate(endDate)); LoginUser loginUser = LoginHelper.getLoginUser(); @@ -327,6 +328,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/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/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/impl/AiCompareServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java index 476f7dc..3a04257 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,16 @@ public class AiCompareServiceImpl implements IAiCompareService { return i>0; } + @Override + public Boolean updateStatus(Long id) { + AiCompareEntity aiCompareEntity = aiCompareMapper.selectById(id); + if(aiCompareEntity!=null&& ObjectUtil.equals(aiCompareEntity.getStatus(),AiCompareStatusConstants.COMPARE_STATUS_2)){ + aiCompareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_4); + return aiCompareMapper.updateById(aiCompareEntity)>0; + } + return true; + } + @Override public AiCompareEntity getInfo(Long id) { return aiCompareMapper.selectById(id); @@ -233,6 +244,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/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" + +