diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemotePostService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemotePostService.java index 1a32148..fb775e3 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemotePostService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemotePostService.java @@ -10,4 +10,6 @@ public interface RemotePostService { String getPostCode(String labelCode); String getFlowCode(String labelCode); + + List listPostCode(String labelCode); } 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-core/src/main/java/org/dromara/common/core/constant/Constants.java b/dk-common/common-core/src/main/java/org/dromara/common/core/constant/Constants.java index 1f89f3f..8b9a156 100644 --- a/dk-common/common-core/src/main/java/org/dromara/common/core/constant/Constants.java +++ b/dk-common/common-core/src/main/java/org/dromara/common/core/constant/Constants.java @@ -86,5 +86,18 @@ public interface Constants { * 飞行总时长 */ String FLY_ACC_TIME = "fly_accTime"; + + + /** + * 项目组存储key,例如:pro_group_项目组id_用户id + */ + String PRO_GROUP = "pro_group_%s"; + + + /** + * 设备存储key,例如:pro_device_项目组id_用户id + */ + String PRO_DEVICE = "pro_device_%s"; + } 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 43c5d90..db13d60 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; @@ -46,6 +49,21 @@ public class BusinessAlertController extends BaseController { return businessAlertService.getInfo(bo,pageQuery,alertCode); } + @Operation(summary ="app获取单个预警信息",description = "app获取单个预警信息") + @GetMapping("/alert/app/todo/{alertId}") + public R getTodoBusinessAlert(@PathVariable("alertId") Long alertId) { + return R.ok(businessAlertService.getTodoBusinessAlert(alertId)); + } + + + @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)); + } + /** * 查询全部预警/待办/已完成/忽略 */ @@ -67,6 +85,7 @@ public class BusinessAlertController extends BaseController { @Operation(summary ="ai实时流预警保存",description = "ai实时流预警保存") @PostMapping("/saveAlertList") public R saveAlert(@RequestBody List alertVoList) { + businessAlertService.addBusinessAlertList(alertVoList); return R.ok(); } 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 b363bd0..09129b4 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 @@ -26,7 +26,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageBusinessAlert(@Param("page") Page page,@Param("ew") QueryWrapper ew); - @DataPermission( + @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) Page pageAlertFinish(@Param("page") Page page,@Param("ew") QueryWrapper ew); @@ -42,7 +42,7 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageAlertTodo(@Param("page") Page page,@Param("ew") QueryWrapper ew); - @DataPermission( + @DataPermission( @DataColumn(key = "deptName", value = "t.dept_id") ) Page pageBusinessAlertCancel(@Param("page") Page page,@Param("ew") QueryWrapper ew); 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 2e713ba..8d8405d 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 @@ -83,4 +83,7 @@ public interface IBusinessAlertService { List listTodoAlert(BusinessAlertBo businessAlertBo); + BusinessAlert getTodoBusinessAlert(Long alertId); + + Boolean deleteFalseAlert(Long alertId); } 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 50bda9a..3700889 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 @@ -398,6 +398,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()); @@ -614,6 +615,66 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return days; } + /** + * 查询当前用户待办预警 + * @return + */ + @Override + public List listTodoAlert(BusinessAlertBo businessAlertBo) { + QueryWrapper wrapper = buildQueryWrapper(businessAlertBo); + + if (ObjectUtil.isEmpty(wrapper)){ + return ListUtil.empty(); + } + + wrapper.eq("t.node_type", 1); + wrapper.in("t.approver", remoteWorkflowService.getPermissions()); + wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); + + return this.baseMapper.listTodoAlert(wrapper); + } + + /** + * 获取单个预警信息 + * @param alertId + * @return + */ + @Override + public BusinessAlert getTodoBusinessAlert(Long alertId) { + QueryWrapper wrapper = new QueryWrapper<>(); + + wrapper.eq("t.node_type", 1); + wrapper.in("t.approver", remoteWorkflowService.getPermissions()); + wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); + + List businessAlerts = this.baseMapper.listTodoAlert(wrapper); + BusinessAlert businessAlert = businessAlerts.stream().filter(p -> p.getId().equals(alertId)).findFirst().get(); + + try { + 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()); + businessAlert.setMaxMateSourceImgUrl(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getMaxMateSourceImgUrl(), 3600).toString()); + businessAlert.setMateSourceImgUrl(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getMateSourceImgUrl(), 3600).toString()); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + } + + 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; + } + + 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 7ac7640..d4276b3 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 @@ -67,7 +67,6 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist private final IBusinessAlertService businessAlertService; - /** * 按照月份分类预警数量 * @param businessAlertBo @@ -187,57 +186,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); @@ -246,8 +246,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 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 e2e815c..4012c22 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -834,5 +834,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + 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/controller/DeviceProController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java index 07c4002..f6efb17 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java @@ -65,7 +65,7 @@ public class DeviceProController { //3、删除项目组 @Operation(summary = "删除项目组。", description = "删除项目组。") @DeleteMapping("/delete") - public HttpResultResponse deleteDevicePro(@RequestBody List ids) { + public HttpResultResponse deleteDevicePro(@RequestBody List ids) { return HttpResultResponse.success(deviceProService.deleteIds(ids)); } @@ -76,7 +76,7 @@ public class DeviceProController { */ @Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。") @PostMapping("/{proId}/update") - public HttpResultResponse updateDeviceProUser(@RequestBody List userEntity,@PathVariable Long proId) { + public HttpResultResponse updateDeviceProUser(@RequestBody List userEntity,@PathVariable Integer proId) { return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId)); } 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/model/entity/DeviceProEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java index 2aea7d2..a7b67f3 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java @@ -27,7 +27,7 @@ import java.util.List; @TableName(value = "manage_device_pro") public class DeviceProEntity extends BaseEntity implements Serializable { - @TableId(type = IdType.ASSIGN_ID) + @TableId(type = IdType.AUTO) private Integer id; @TableField(value = "pro_name") diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java index b23ebd2..eed482e 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java @@ -26,7 +26,7 @@ import java.io.Serializable; @TableName(value = "manage_device_pro_user") public class DeviceProUserEntity extends BaseEntity implements Serializable { - @TableId(type = IdType.ASSIGN_ID) + @TableId(type = IdType.AUTO) private Integer id; @TableField(value = "device_pro_id") 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..71012f0 --- /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(List deviceFlightRecords); + + Map getDeviceFlightCount(); + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java index 580a1c0..10e2b1e 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java @@ -32,11 +32,11 @@ public interface IDeviceProService { Boolean saveAndUpdate(DeviceProEntity deviceProEntity); - Boolean deleteIds(List ids); + Boolean deleteIds(List ids); Boolean updateDevicePro(DeviceProEntity deviceProEntity); - Boolean updateDeviceProUser(List userEntity,Long proId); + Boolean updateDeviceProUser(List userEntity,Integer proId); Boolean updateDevice(Dict dict); 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..9f08d95 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceFlightRecordsServiceImpl.java @@ -0,0 +1,59 @@ +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.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(List deviceFlightRecords) { + + deviceFlightRecords.forEach(deviceFlightRecord -> { + //查询之前的数据 + DeviceFlightRecordsEntity deviceFlightRecordsEntities = this.baseMapper.selectOne(new LambdaQueryWrapper().eq(DeviceFlightRecordsEntity::getDeviceSn,deviceFlightRecord.getDeviceSn())); + + if (ObjectUtil.isNotEmpty(deviceFlightRecordsEntities)) { + deviceFlightRecordsEntities.setFlyCount(deviceFlightRecordsEntities.getFlyCount() + deviceFlightRecord.getFlyCount()); + deviceFlightRecordsEntities.setFlyAccTime(deviceFlightRecordsEntities.getFlyAccTime() + deviceFlightRecord.getFlyAccTime()); + + this.updateById(deviceFlightRecordsEntities); + }else { + this.save(deviceFlightRecord); + } + }); + } + + @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 f0c0444..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 @@ -11,7 +11,10 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.BatchResult; +import org.dromara.common.core.constant.Constants; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.redis.utils.RedisOpsUtils; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.firmware.*; @@ -34,6 +37,7 @@ import org.dromara.common.sdk.mqtt.services.ServicesSubscribe; import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; import org.dromara.common.sdk.mqtt.state.StateSubscribe; import org.dromara.common.sdk.mqtt.status.StatusSubscribe; +import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.BizCodeEnum; import org.dromara.sample.common.error.CommonErrorEnum; import org.dromara.sample.component.mqtt.model.EventsReceiver; @@ -62,10 +66,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.time.LocalDateTime; -import java.util.Collection; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -87,6 +88,8 @@ public class DeviceProServiceImpl implements IDeviceProService { @Autowired private IDeviceProUserMapper deviceProUserMapper; +// private final ObjectMapper objectMapper = new ObjectMapper(); + @Override public PaginationData listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { Page pagination = deviceProMapper.listDeviceProEntityMap(page, deviceProDTO); @@ -107,7 +110,7 @@ public class DeviceProServiceImpl implements IDeviceProService { @Override - public Boolean deleteIds(List ids) { + public Boolean deleteIds(List ids) { List deviceEntityList = deviceMapper.selectList(new LambdaQueryWrapper().in(DeviceEntity::getProId, ids)); @@ -125,14 +128,78 @@ public class DeviceProServiceImpl implements IDeviceProService { @Override @Transactional(rollbackFor = Exception.class) - public Boolean updateDeviceProUser(List userEntity,Long proId) { + public Boolean updateDeviceProUser(List userEntity,Integer proId) { try { + //获取项目组信息 +// DeviceProEntity deviceProEntity = deviceProMapper.selectOne(new LambdaQueryWrapper().eq(DeviceProEntity::getId, proId)); + + //查询之前项目所属的人员信息 +// 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.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); +// }); + + //--------------------------------------------缓存相关操作---------------------------------------------------------------- + //先清除原来的项目组成员 deviceProUserMapper.delete(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); if (ObjectUtil.isNotEmpty(userEntity)) { //添加新的项目组成员 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); +// } +// }); } return true; @@ -150,18 +217,43 @@ public class DeviceProServiceImpl implements IDeviceProService { @Override @Transactional(rollbackFor = Exception.class) public Boolean updateDevice(Dict dict) { - Long deviceId = dict.getLong("deviceId"); - Long proId = dict.getLong("proId"); + Integer deviceId = dict.getInt("deviceId"); + Integer proId = dict.getInt("proId"); if (ObjectUtil.hasEmpty(deviceId, proId)) { throw new ServiceException("【deviceId】或【proId】参数为空!"); } - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.set(DeviceEntity::getProId, proId); - wrapper.eq(DeviceEntity::getId, deviceId); + try { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.set(DeviceEntity::getProId, proId); + wrapper.eq(DeviceEntity::getId, deviceId); + + + return deviceMapper.update(wrapper) > 0; - 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; + } } /** 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/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/model/dto/AiCompareDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java index a45a158..45b5d3f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java @@ -95,7 +95,7 @@ public class AiCompareDTO implements Serializable { * 创建者 */ - private Long createId; + private Long createBy; /** *用户昵称 * */ 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 17879c1..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; @@ -83,7 +84,7 @@ public class AiCompareServiceImpl implements IAiCompareService { QueryWrapper wrapper = Wrappers.query(); wrapper .eq(StringUtils.isNotEmpty(bo.getStatus()), "status",bo.getStatus()) - .eq(ObjectUtil.isNotEmpty(bo.getCreateId()), "create_by",bo.getCreateId()) + .eq(ObjectUtil.isNotEmpty(bo.getCreateBy()), "create_id",bo.getCreateBy()) .like(StringUtils.isNotBlank(bo.getDeptName()), "lower(dept_name)", StringUtils.lowerCase(bo.getDeptName())) .like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName())) .between(params.get("beginTime") != null && params.get("endTime") != null, @@ -156,7 +157,10 @@ public class AiCompareServiceImpl implements IAiCompareService { if(isIllegal){ QueryWrapper queryWrapper = new QueryWrapper().eq("file_id", e.getFileId()); AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper); - e.setPatternUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_ALERT,plateEntity.getPatternName(),seconds).toString()); + if(plateEntity != null){ + e.setPatternUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_ALERT,plateEntity.getPatternName(),seconds).toString()); + } + } }); } @@ -182,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); @@ -230,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/resources/mapper/AiCompareMapper.xml b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml index 84c237e..bebdf53 100644 --- a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml @@ -16,22 +16,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mf.file_name, mf.object_key, mf.job_id, - mfi.file_id as mateFileId, - mfi.file_name as mateFileName, + mfi.file_id AS mateFileId, + mfi.file_name AS mateFileName, mfi.object_key AS mateObjectKey, mfi.file_index AS mateFileIndex, mfi.create_time AS mateFileDate FROM - media_file AS mf - JOIN - media_file AS mfi - ON - mf.file_index = mfi.file_index and mf.file_type='jpeg' and mfi.file_type='jpeg' + media_file mf + JOIN media_file mfi ON mf.file_index = mfi.file_index JOIN ai_compare ai ON ai.template_id = mfi.job_id WHERE - mf.job_id = #{jobId} and ai.id=#{compareId} + mf.file_status = mfi.file_status + AND mf.file_id != mfi.file_id + AND mf.file_index = mfi.file_index + AND mf.file_type = 'jpeg' + AND mfi.file_type = 'jpeg' + AND mf.job_id = #{jobId} + AND ai.id = #{compareId} ORDER BY - mf.file_index; - + mf.file_index, + mf.file_status; diff --git a/dk-modules/sample/src/main/resources/mapper/DeviceFlightRecordsMapper.xml b/dk-modules/sample/src/main/resources/mapper/DeviceFlightRecordsMapper.xml new file mode 100644 index 0000000..0b77503 --- /dev/null +++ b/dk-modules/sample/src/main/resources/mapper/DeviceFlightRecordsMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java index 29cc998..ef659cb 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java @@ -54,4 +54,9 @@ public class RemotePostServiceImpl implements RemotePostService { public String getFlowCode(String labelCode) { return aiLabelService.getFlowCode(labelCode); } + + @Override + public List listPostCode(String labelCode) { + return sysPostService.listPostCode(labelCode); + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index b9b2d19..016561d 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -36,4 +36,6 @@ public interface SysPostMapper extends BaseMapperPlus { SysPostVo selectLableByList(@Param("postCode") String postCode, @Param("deptId") Long deptId); String getPostCode(@Param("labelCode") String labelCode); + + List listPostCode(@Param("labelCode") String labelCode); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java index 1304f54..c1569f0 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java @@ -134,4 +134,6 @@ public interface ISysPostService { SysPostVo selectLableByList(String post_code, Long dept_id); String getPostCode(String labelCode); + + List listPostCode(String labelCode); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index 23420a7..15623a9 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -279,4 +279,9 @@ public class SysPostServiceImpl implements ISysPostService { public String getPostCode(String labelCode) { return baseMapper.getPostCode(labelCode); } + + @Override + public List listPostCode(String labelCode) { + return baseMapper.listPostCode(labelCode); + } } diff --git a/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml index 8663f73..dda2a3e 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml @@ -54,4 +54,26 @@ al.label_en =#{labelCode})) + + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java index 385a7a1..6a78197 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.domain.R; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; @@ -11,6 +12,7 @@ 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; +import org.dromara.system.api.RemotePostService; import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.orm.entity.FlowDefinition; @@ -24,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; +import java.util.Map; /** * 流程定义管理 控制层 @@ -40,6 +43,9 @@ public class FlwDefinitionController extends BaseController { private final DefService defService; private final IFlwDefinitionService flwDefinitionService; + @DubboReference + private RemotePostService remotePostService; + /** * 查询流程定义列表 * @@ -193,4 +199,18 @@ public class FlwDefinitionController extends BaseController { return R.ok(active ? defService.active(id) : defService.unActive(id)); } + /** + * 检查当前标签有几个流程 + * @return + */ + @GetMapping("/check/flow") + public R>> checkWorkFlow(@RequestParam("labelCode") String labelCode) { + //获取这个标签下的所有岗位编码 + List postCodeList = remotePostService.listPostCode(labelCode); + + List> result = flwDefinitionService.listFlowCode(postCodeList); + + return R.ok(result); + } + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java index d48d4cb..8dd01a4 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java @@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.workflow.domain.FlowCategory; import org.dromara.workflow.domain.vo.FlowCategoryVo; +import org.dromara.workflow.domain.vo.FlowDefinitionVo; import java.util.List; import java.util.stream.Collectors; @@ -59,4 +60,11 @@ public interface FlwCategoryMapper extends BaseMapperPlus> listFlowCode(List postCodeList); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index 4d90edc..88ac8f2 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -41,9 +41,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import static org.dromara.common.core.constant.TenantConstants.DEFAULT_TENANT_ID; @@ -274,4 +272,20 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { public String getFlowCode(String postCode) { return flwCategoryMapper.getFlowCode(postCode); } + + @Override + public List> listFlowCode(List postCodeList) { + List> result = new ArrayList<>(); + + postCodeList.forEach(postCode -> { + Map map = new HashMap<>(); + FlowDefinitionVo definitionVo = flwCategoryMapper.getDefinition(postCode); + map.put("name",definitionVo.getFlowName()); + map.put("flowCode",definitionVo.getFlowCode()); + + result.add(map); + }); + + return result; + } } diff --git a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml index b3875f5..08985fc 100644 --- a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml +++ b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml @@ -12,4 +12,8 @@ select flow_code from flow_definition fd where fd.remark like concat('%',#{postCode},'%') and fd.is_publish = '1' + +