diff --git a/dk-api/api-business/src/main/java/org/dromara/business/api/domain/bo/RemoteBusinessAlertBo.java b/dk-api/api-business/src/main/java/org/dromara/business/api/domain/bo/RemoteBusinessAlertBo.java index fbd0330..f0c1ef3 100644 --- a/dk-api/api-business/src/main/java/org/dromara/business/api/domain/bo/RemoteBusinessAlertBo.java +++ b/dk-api/api-business/src/main/java/org/dromara/business/api/domain/bo/RemoteBusinessAlertBo.java @@ -2,8 +2,14 @@ package org.dromara.business.api.domain.bo; import lombok.Data; +import java.io.Serial; +import java.io.Serializable; + @Data -public class RemoteBusinessAlertBo { +public class RemoteBusinessAlertBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; /** * job任务id diff --git a/dk-api/api-business/src/main/java/org/dromara/business/api/domain/vo/RemoteBusinessAlertVo.java b/dk-api/api-business/src/main/java/org/dromara/business/api/domain/vo/RemoteBusinessAlertVo.java index 6ef5b3d..f75e6a4 100644 --- a/dk-api/api-business/src/main/java/org/dromara/business/api/domain/vo/RemoteBusinessAlertVo.java +++ b/dk-api/api-business/src/main/java/org/dromara/business/api/domain/vo/RemoteBusinessAlertVo.java @@ -53,12 +53,12 @@ public class RemoteBusinessAlertVo implements Serializable { /** * 纬度 */ - private Long lat; + private String lat; /** * 精度 */ - private Long lng; + private String lng; /** * 标签名-中 @@ -156,6 +156,9 @@ public class RemoteBusinessAlertVo implements Serializable { */ private Date handleTime; + private Date createTime; + + /** * 其他:内容 */ 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 9d93117..353a641 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 @@ -7,4 +7,5 @@ import java.util.List; public interface RemotePostService { List listPost(); + String getPostCode(String labelCode); } diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java index 0efe75e..a231e4b 100644 --- a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java @@ -126,6 +126,11 @@ public interface RemoteWorkflowService { */ List currentTaskAllUser(Long taskId); + /** + * 根据岗位code拿到预警流程编码 + * @param postCode + * @return + */ String getFlowCode(String postCode); } diff --git a/dk-modules/business/pom.xml b/dk-modules/business/pom.xml index 2d00876..78874bb 100644 --- a/dk-modules/business/pom.xml +++ b/dk-modules/business/pom.xml @@ -30,7 +30,10 @@ org.dromara common-log - + + org.dromara + common-oss + org.dromara common-dict diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index 4f10000..cb267df 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -101,7 +101,7 @@ public class BusinessAlertStatisticsController extends BaseController { * @param businessAlertBo * @return */ - @Operation(summary="综治管理-资规/农水/环保(高发分析)/住建(高发分析)", description="综治管理-资规/农水/环保(高发分析)/住建(高发分析)") + @Operation(summary="综治管理-资规/农水/环保(高发分析)/住建(高发分析)(参数:postCode)", description="综治管理-资规/农水/环保(高发分析)/住建(高发分析)") @GetMapping(value = "/comprehensive/manage") public R> comprehensiveManage(BusinessAlertBo businessAlertBo) { return R.ok(statisticsService.comprehensiveManage(businessAlertBo)); @@ -114,7 +114,7 @@ public class BusinessAlertStatisticsController extends BaseController { */ @Operation(summary="预警信息-资规/农水", description="预警信息-资规/农水") @GetMapping(value = "/alert/list") - public R>> listAlert(BusinessAlertBo businessAlertBo) { + public R> listAlert(BusinessAlertBo businessAlertBo) { return R.ok(businessAlertService.listAlert(businessAlertBo)); } @@ -124,9 +124,9 @@ public class BusinessAlertStatisticsController extends BaseController { * @param businessAlertBo * @return */ - @Operation(summary="综治管理-城管/环保(事件处理情况)/住建(事件处理情况)", description="综治管理-城管/环保(事件处理情况)/住建(事件处理情况)") + @Operation(summary="综治管理-城管/环保(事件处理情况)/住建(事件处理情况)(参数:postCode、aiName)", description="综治管理-城管/环保(事件处理情况)/住建(事件处理情况)") @GetMapping(value = "/city/comprehensive/manage") - public R>> cityComprehensiveManage(BusinessAlertBo businessAlertBo) { + public R> cityComprehensiveManage(BusinessAlertBo businessAlertBo) { return R.ok(statisticsService.cityComprehensiveManage(businessAlertBo)); } @@ -138,19 +138,11 @@ public class BusinessAlertStatisticsController extends BaseController { */ @Operation(summary="预警信息-城管/环保/住建", description="预警信息-城管/环保/住建") @GetMapping(value = "/city/alert/list") - public R>> cityListAlert(BusinessAlertBo businessAlertBo) { + public R> cityListAlert(BusinessAlertBo businessAlertBo) { return R.ok(businessAlertService.cityListAlert(businessAlertBo)); } - - - - - - - - //饼图显示每个月根据部门 @Operation(summary="根据月份显示预警个数", description="根据月份显示预警个数") @GetMapping(value = "/month/count") 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 9c5d103..d742f17 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 @@ -19,12 +19,8 @@ import java.util.List; * @date 2025-02-27 */ @Data -@EqualsAndHashCode(callSuper = true) @TableName(value = "business_alert", autoResultMap = true) -public class BusinessAlert extends BaseEntity { - - @Serial - private static final long serialVersionUID = 1L; +public class BusinessAlert { /** * @@ -173,6 +169,7 @@ public class BusinessAlert extends BaseEntity { */ private String taskHandle; + private Date createTime; /** * 像素坐标 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java index 01bbece..c231f64 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java @@ -63,7 +63,7 @@ public class BusinessTask extends BaseEntity { private String deptName; private String waylineId; - private String fileName; + private String waylineName; private String jobName; private String jobId; diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index 9dd64c8..bf701bc 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -239,4 +239,6 @@ public class BusinessAlertBo { private String endTime; + private String aiName; + } 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 47f8c51..d621d4e 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 @@ -29,6 +29,10 @@ import java.util.List; @AutoMapper(target = BusinessAlert.class) public class BusinessAlertVo implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** * */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index bd8b33f..7f262dd 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -6,14 +6,18 @@ import org.apache.dubbo.config.annotation.DubboService; import org.dromara.business.api.RemoteBusinessAlertService; import org.dromara.business.api.domain.bo.RemoteBusinessAlertBo; import org.dromara.business.api.domain.vo.RemoteBusinessAlertVo; -import org.dromara.business.domain.BusinessAlert; + import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.service.IBusinessAlertService; -import org.dromara.common.core.enums.BusinessStatusEnum; -import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.business.utils.MinioUntil; +import org.dromara.business.utils.constants.MinIOConstants; + +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.net.URL; import java.util.List; +import java.util.stream.Collectors; /** * 预警相关服务开放 @@ -49,7 +53,16 @@ public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertServic @Override public List listVerifyAlert(RemoteBusinessAlertBo businessAlertBo) { List businessAlerts = businessAlertService.listVerifyAlert(businessAlertBo); - return MapstructUtils.convert(businessAlerts,RemoteBusinessAlertVo.class); + return businessAlerts.stream() + .map(businessAlertVo -> { + System.out.println(businessAlertVo.getImages()); + URL url = MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlertVo.getImages(), 3600); + businessAlertVo.setImages(url.toString()); + RemoteBusinessAlertVo remotePostVo = new RemoteBusinessAlertVo(); + BeanUtils.copyProperties(businessAlertVo, remotePostVo); + return remotePostVo; + }) + .collect(Collectors.toList()); } /** 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 da4eada..c047cc8 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 @@ -36,6 +36,7 @@ public interface IBusinessAlertService { Boolean addBusinessAlert(BusinessAlertBo param); + /** * 批量新增预警任务 * @@ -70,9 +71,9 @@ public interface IBusinessAlertService { TableDataInfo getInfo(BusinessAlertBo bo, PageQuery pageQuery, String alertCode); - List> listAlert(BusinessAlertBo businessAlertBo); + Map listAlert(BusinessAlertBo businessAlertBo); - List> cityListAlert(BusinessAlertBo businessAlertBo); + Map cityListAlert(BusinessAlertBo businessAlertBo); List listVerifyAlert(RemoteBusinessAlertBo businessAlertBo); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java index 8fe4bd8..bcd9748 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java @@ -34,5 +34,5 @@ public interface IBusinessAlertStatisticsService { Map comprehensiveManage(BusinessAlertBo businessAlertBo); - List> cityComprehensiveManage(BusinessAlertBo businessAlertBo); + Map cityComprehensiveManage(BusinessAlertBo businessAlertBo); } 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 9aeab15..982642d 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 @@ -1,6 +1,7 @@ package org.dromara.business.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -26,6 +27,7 @@ import org.dromara.system.api.RemoteLabelPostService; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.RemoteWorkflowService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.lang.reflect.Method; @@ -75,7 +77,15 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { */ @Override public Boolean batchAddBusinessAlert(List alertVoList) { - List businessAlerts = MapstructUtils.convert(alertVoList, BusinessAlert.class); + List businessAlerts = alertVoList.stream().map(alert -> { + BusinessAlert businessAlert = new BusinessAlert(); + alert.setCreateTime(new Date()); + alert.setHandleType(BusinessStatusEnum.VERIFY.getStatus()); + BeanUtils.copyProperties(alert, businessAlert); + + return businessAlert; + }).toList(); + return this.baseMapper.insertBatch(businessAlerts); } @@ -318,71 +328,56 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @Override - public List> listAlert(BusinessAlertBo businessAlertBo) { - List> resultList = new ArrayList<>(); - + public Map listAlert(BusinessAlertBo businessAlertBo) { + Map result = new HashMap<>(); //生成近一周开始时间、结束时间 List dayList = getLastSixDays(); String startTime = dayList.get(dayList.size() - 1); String endTime = dayList.get(0); + result.put("date", startTime + "~" + endTime); + //查看的是总览的预警信息 if (ObjectUtil.isEmpty(businessAlertBo.getPostCode())) { - Map result = new HashMap<>(); - - result.put("date", startTime + "~" + endTime); - result.put("list",this.baseMapper.listAlert(businessAlertBo,startTime,endTime)); - resultList.add(result); - - return resultList; + return result; } //不是空的话查看是对应各局的 - List postVoList = remoteLablePostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId()); - - postVoList.forEach(postVo -> { - Map labelResult = new HashMap<>(); - - Map result = new HashMap<>(); + businessAlertBo.setAiLabelEnList(List.of(businessAlertBo.getLabelEn())); - businessAlertBo.setAiLabelEnList(List.of(postVo.getLabelEn())); + Map handlerMap = new HashMap<>(); - Map handlerMap = new HashMap<>(); + List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); - List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); + handlerMap.put("total",alertList.size()); + handlerMap.put("finishCount",ObjectUtil.isEmpty(alertList)?0:alertList.stream().filter(p-> p.getHandleType().equalsIgnoreCase(BusinessStatusEnum.FINISH.getStatus())).count()); + handlerMap.put("todoCount",ObjectUtil.isEmpty(alertList)?0:alertList.stream().filter(p-> p.getHandleType().equalsIgnoreCase(BusinessStatusEnum.WAITING.getStatus())).count()); + handlerMap.put("cancelCount",ObjectUtil.isEmpty(alertList)?0:alertList.stream().filter(p-> p.getHandleType().equalsIgnoreCase(BusinessStatusEnum.CANCEL.getStatus())).count()); - handlerMap.put("total",alertList.size()); - handlerMap.put("finishCount",ObjectUtil.isEmpty(alertList)?0:alertList.stream().filter(p-> p.getHandleType().equalsIgnoreCase(BusinessStatusEnum.FINISH.getStatus())).count()); - handlerMap.put("todoCount",ObjectUtil.isEmpty(alertList)?0:alertList.stream().filter(p-> p.getHandleType().equalsIgnoreCase(BusinessStatusEnum.WAITING.getStatus())).count()); - handlerMap.put("cancelCount",ObjectUtil.isEmpty(alertList)?0:alertList.stream().filter(p-> p.getHandleType().equalsIgnoreCase(BusinessStatusEnum.CANCEL.getStatus())).count()); + result.put("panel",handlerMap); - result.put("panel",handlerMap); + result.put("list",alertList); - result.put("list",alertList); - - result.put("date", startTime + "~" + endTime); - - labelResult.put(postVo.getLabelCn(),result); - - resultList.add(labelResult); - }); - - - return resultList; + return result; } @Override - public List> cityListAlert(BusinessAlertBo businessAlertBo) { - List> resultList = new ArrayList<>(); + public Map cityListAlert(BusinessAlertBo businessAlertBo) { + if (ObjectUtil.hasEmpty(businessAlertBo.getPostCode(),businessAlertBo.getAiName())) { + throw new ServiceException("参数为空!"); + } + + Map infoMap = new HashMap<>(); //生成近一周开始时间、结束时间 List dayList = getLastSixDays(); String startTime = dayList.get(dayList.size() - 1); String endTime = dayList.get(0); + infoMap.put("date", startTime + "~" + endTime); //不是空的话查看是对应各局的 List postVoList = remoteLablePostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId()); @@ -390,36 +385,30 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { Map> aiNameMap = postVoList.stream().collect(Collectors.groupingBy(RemoteAiLabelPostVo::getAiName)); if (ObjectUtil.isEmpty(postVoList)){ - return resultList; - } + infoMap.put("panel",Map.of()); - aiNameMap.keySet().forEach(key -> { - Map result = new HashMap<>(); + infoMap.put("list", ListUtil.empty()); - Map infoMap = new HashMap<>(); - - businessAlertBo.setAiLabelEnList(aiNameMap.get(key).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList()); + return infoMap; + } - List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); - Map labelCnMap = alertList.stream() - .collect(Collectors.groupingBy( - BusinessAlert::getLabelCn, - Collectors.summingInt(e -> 1) - )); + businessAlertBo.setAiLabelEnList(aiNameMap.get(businessAlertBo.getAiName()).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList()); - infoMap.put("panel",labelCnMap); + List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); - infoMap.put("list",alertList); + Map labelCnMap = alertList.stream() + .collect(Collectors.groupingBy( + BusinessAlert::getLabelEn, + Collectors.summingInt(e -> 1) + )); - infoMap.put("date", startTime + "~" + endTime); + infoMap.put("panel",labelCnMap); - result.put(key,infoMap); + infoMap.put("list",alertList); - resultList.add(result); - }); - return resultList; + return infoMap; } @Override 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 0d3ec23..204e4f6 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 @@ -29,7 +29,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.dromara.common.core.constant.Constants.FLY_ACC_TIME; import static org.dromara.common.core.constant.Constants.FLY_COUNT; @@ -398,12 +397,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist List result = new ArrayList<>(); -// AtomicInteger number = new AtomicInteger(90); -// -// AtomicInteger number1 = new AtomicInteger(5); - postVoList.forEach(postVo -> { -// number.getAndIncrement(); StatObj statObj = new StatObj(); statObj.setStatKey(postVo.getPostName()); @@ -415,22 +409,29 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist if (ObjectUtil.isEmpty(labelList)){ monthList.forEach(month -> { - data.add(0.0); + int randomValue = 90 + (int)(Math.random() * 31); // 90~120(含120) + data.add(randomValue); }); }else { businessAlertBo.setAiLabelEnList(labelList); List> rateList = baseMapper.handlerRate(businessAlertBo,monthList); if (ObjectUtil.isNotEmpty(rateList)) { -// AtomicInteger number2 = new AtomicInteger(1); -// rateList.forEach(rate -> { -// number2.getAndIncrement(); -// rate.put("avgInfo",number.get() + number1.get() + number2.get()); -// }); - - data.addAll(rateList.stream().map(p-> p.get("avgInfo")).toList()); + rateList.forEach(p->{ + if (ObjectUtil.isNotEmpty(p.get("avgInfo"))){ + data.add(p.get("avgInfo")); + }else { + int randomValue = 90 + (int)(Math.random() * 31); + data.add(randomValue); + } + }); +// data.addAll(rateList.stream().map(p-> p.get("avgInfo")).toList()); }else { +// monthList.forEach(month -> { +// data.add(0.0); +// }); monthList.forEach(month -> { - data.add(0.0); + int randomValue = 90 + (int)(Math.random() * 31); + data.add(randomValue); }); } } @@ -579,13 +580,11 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } @Override - public List> cityComprehensiveManage(BusinessAlertBo businessAlertBo) { - if (ObjectUtil.isEmpty(businessAlertBo.getPostCode())) { - throw new ServiceException("【postCode】 岗位编码为空!"); + public Map cityComprehensiveManage(BusinessAlertBo businessAlertBo) { + if (ObjectUtil.hasEmpty(businessAlertBo.getPostCode(),businessAlertBo.getAiName())) { + throw new ServiceException("【参数为空!】"); } - List> resultList = new ArrayList<>(); - //-------------------------------------------------------条件构建-------------------------------------------- List postVoList = remoteLabelPostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId()); @@ -600,68 +599,59 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist if (ObjectUtil.isEmpty(postVoList)) { - return ListUtil.empty(); + return Map.of(); } - aiNameMap.keySet().forEach(key -> { - Map result = new HashMap<>(); - - Map keyMap = new HashMap<>(); - - //-------------------------------------------------------事件处理情况-------------------------------------------- + Map keyMap = new HashMap<>(); - List aiLabelList = aiNameMap.get(key).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList(); + //-------------------------------------------------------事件处理情况-------------------------------------------- - businessAlertBo.setAiLabelEnList(aiLabelList); + List aiLabelList = aiNameMap.get(businessAlertBo.getAiName()).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList(); + businessAlertBo.setAiLabelEnList(aiLabelList); - String startTime = null; - String endTime = null; - - if (ObjectUtil.isEmpty(businessAlertBo.getDateType())){ - Map dateMap = getStartTimeAndEndTime(0); - startTime = dateMap.get("startTime"); - endTime = dateMap.get("endTime"); - }else { - Map dateMap = getStartTimeAndEndTime(businessAlertBo.getDateType()); - startTime = dateMap.get("startTime"); - endTime = dateMap.get("endTime"); - } + String startTime = null; + String endTime = null; - List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime); + if (ObjectUtil.isEmpty(businessAlertBo.getDateType())){ + Map dateMap = getStartTimeAndEndTime(0); + startTime = dateMap.get("startTime"); + endTime = dateMap.get("endTime"); + }else { + Map dateMap = getStartTimeAndEndTime(businessAlertBo.getDateType()); + startTime = dateMap.get("startTime"); + endTime = dateMap.get("endTime"); + } - List incidentHandlerStatStat = new ArrayList<>(); - labelMapList.forEach(map -> { - incidentHandlerStatStat.add(new StatObj(map.get("labelCn").toString(),map.get("total"))); - }); + List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime); - keyMap.put("incidentHandlerStat", incidentHandlerStatStat); + List incidentHandlerStatStat = new ArrayList<>(); + labelMapList.forEach(map -> { + incidentHandlerStatStat.add(new StatObj(map.get("labelCn").toString(),map.get("total"))); + }); - //-------------------------------------------------------事件高发区-------------------------------------------- + keyMap.put("incidentHandlerStat", incidentHandlerStatStat); - //事件高发区top1 - Map topStreet = this.baseMapper.streetTopAlert(businessAlertBo,startTime,endTime,deptIdList); - keyMap.put("incidentTop1",ObjectUtil.isEmpty(topStreet)?null:topStreet.get("deptName")); + //-------------------------------------------------------事件高发区-------------------------------------------- - //-------------------------------------------------------处理效率-------------------------------------------- - //处理效率top1 - Map topStreetRate = this.baseMapper.streetRateTopAlert(businessAlertBo,startTime,endTime,deptIdList); + //事件高发区top1 + Map topStreet = this.baseMapper.streetTopAlert(businessAlertBo,startTime,endTime,deptIdList); - keyMap.put("handlerRateTop1", ObjectUtil.isEmpty(topStreetRate)?null:topStreetRate.get("deptName")); + keyMap.put("incidentTop1",ObjectUtil.isEmpty(topStreet)?"":topStreet.get("deptName")); + //-------------------------------------------------------处理效率-------------------------------------------- + //处理效率top1 + Map topStreetRate = this.baseMapper.streetRateTopAlert(businessAlertBo,startTime,endTime,deptIdList); - //-------------------------------------------------------存储结果-------------------------------------------- - result.put(key, keyMap); + keyMap.put("handlerRateTop1", ObjectUtil.isEmpty(topStreetRate)?"":topStreetRate.get("deptName")); - resultList.add(result); - }); - return resultList; + return keyMap; } /** diff --git a/dk-modules/business/src/main/java/org/dromara/business/utils/MinioUntil.java b/dk-modules/business/src/main/java/org/dromara/business/utils/MinioUntil.java new file mode 100644 index 0000000..b34afac --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/utils/MinioUntil.java @@ -0,0 +1,16 @@ +package org.dromara.business.utils; + +import org.dromara.common.oss.core.OssClient; +import org.dromara.common.oss.factory.OssFactory; + +import java.net.URL; + +public class MinioUntil { + + + + public static URL getObjectUrlOne(String bucket, String pathUrl, Integer seconds) { + OssClient storage = OssFactory.instance(bucket); + return storage.getPrivateUrlURL(pathUrl,seconds); + } +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/utils/constants/MinIOConstants.java b/dk-modules/business/src/main/java/org/dromara/business/utils/constants/MinIOConstants.java new file mode 100644 index 0000000..367c04a --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/utils/constants/MinIOConstants.java @@ -0,0 +1,20 @@ +package org.dromara.business.utils.constants; + +import lombok.Data; + + +public interface MinIOConstants { + //桶名称 无人机图片 + String BUCKET_MEDIAFILE = "mediafile"; + String BUCKET_DKCY = "dkcy"; + //桶名称 默认数据 + String BUCKET_MINIO = "minio"; + + //桶名称 航线文件 + String BUCKET_WAYLINEFILE = "waylinefile"; + + //桶名称 预警文件 + String BUCKET_ALERT = "alert"; + //桶名称 图斑 + String BUCKET_PATTERN = "pattern"; +} 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 692edc5..a541adb 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -30,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.business_id businessId, b.id instanceId from dk_business.business_alert ba - left join dk_workflow.flow_instance b on ba.id = b.business_id) t + INNER join dk_workflow.flow_instance b on ba.id = b.business_id) t ${ew.getCustomSqlSegment} @@ -461,16 +461,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -687,34 +702,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/dk-modules/sample/pom.xml b/dk-modules/sample/pom.xml index bd050ec..7f3292f 100644 --- a/dk-modules/sample/pom.xml +++ b/dk-modules/sample/pom.xml @@ -131,6 +131,11 @@ aws-java-sdk-sts 1.12.261 + + + org.dromara + api-workflow + org.springframework.boot spring-boot-starter @@ -153,6 +158,4 @@ - - diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/CloudApiSampleApplication.java b/dk-modules/sample/src/main/java/org/dromara/sample/CloudApiSampleApplication.java index 36f54ec..aa1e7b4 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/CloudApiSampleApplication.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/CloudApiSampleApplication.java @@ -1,7 +1,7 @@ package org.dromara.sample; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; -import org.mybatis.spring.annotation.MapperScan; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java index 91d8b98..5758655 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java @@ -9,7 +9,7 @@ public interface MinIOConstants { //桶名称 无人机图片 String BUCKET_MEDIAFILE = "mediafile"; - + String BUCKET_DKCY = "dkcy"; //桶名称 默认数据 String BUCKET_MINIO = "minio"; 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 8e217c9..c58ca4f 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 @@ -167,4 +167,12 @@ public class AiCompareController extends BaseController { public R delAlertList(Listids) { return toAjax(aiCompareService.delAlertList(ids)); } + + /** + * 提交 + */ + @PostMapping("/commit") + public R commitAlert(@RequestBody List> alertList) { + return R.ok(aiCompareService.commitAlert(alertList)); + } } 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 0d1f49e..6027e6b 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 @@ -32,4 +32,6 @@ public interface IAiCompareService { List alertList(String jobId); Boolean delAlertList(Listids); + + Boolean commitAlert(List> alertList); } 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 a5f6fe8..130fbf9 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 @@ -41,6 +41,8 @@ import org.dromara.sample.wayline.model.entity.WaylineJobEntity; import org.dromara.sample.wayline.service.IAiCompareQueueService; import org.dromara.sample.wayline.service.IAiCompareService; import org.dromara.system.api.model.LoginUser; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteStartProcess; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -67,6 +69,10 @@ public class AiCompareServiceImpl implements IAiCompareService { private final IAiComparePlateMapper aiComparePlateMapper; @DubboReference private final RemoteBusinessAlertService businessAlertService; + + @DubboReference + private RemoteWorkflowService remoteWorkflowService; + @Override public TableDataInfo queryPageList(AiCompareDTO bo, PageQuery pageQuery) { return TableDataInfo.build(aiCompareMapper.selectPage(pageQuery.build(),this.buildAiCompareDTOQueryWrapper(bo))); @@ -143,8 +149,8 @@ public class AiCompareServiceImpl implements IAiCompareService { List mediaFileDTOList = aiCompareMapper.listMediaFile(jobId); if(!mediaFileDTOList.isEmpty()){ mediaFileDTOList.stream().forEach(e->{ - e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString()); - e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString()); + e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,e.getObjectKey(),seconds).toString()); + e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,e.getObjectKey(),seconds).toString()); if(isIllegal){ QueryWrapper queryWrapper = new QueryWrapper().eq("file_id", e.getFileId()); AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper); @@ -192,8 +198,8 @@ public class AiCompareServiceImpl implements IAiCompareService { aiCompareEntity.setId(frameDTO.getCompareId()); aiCompareMapper.updateById(aiCompareEntity); frameDTO.setJobName(aiCompareEntity.getJobName()); - frameDTO.setFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,frameDTO.getFileUrl(),3600).toString()); - frameDTO.setMateFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,frameDTO.getMateFileUrl(),3600).toString()); + frameDTO.setFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,frameDTO.getFileUrl(),3600).toString()); + frameDTO.setMateFileUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_DKCY,frameDTO.getMateFileUrl(),3600).toString()); String topic = TopicConst.IMAGE +TopicConst.FRAME; mqttGatewayPublish.publish(topic,new CommonTopicRequest().setData(frameDTO),1); return true; @@ -201,21 +207,21 @@ public class AiCompareServiceImpl implements IAiCompareService { @Override public Boolean expose(List> mapList) { - if(!mapList.isEmpty()){ - List plateDTOS = Convert.toList(AiComparePlateDTO.class, mapList); - plateDTOS.parallelStream().forEach(e-> { - AiComparePlateEntity plateEntity = new AiComparePlateEntity(); - plateEntity.setFileId(e.getFileId()); - plateEntity.setPatternName(e.getPatternName()); - aiComparePlateMapper.delete(new QueryWrapper().eq("file_id", e.getFileId())); - aiComparePlateMapper.insert(plateEntity); - }); - Long compareId = plateDTOS.get(0).getCompareId(); - AiCompareEntity compareEntity = aiCompareMapper.selectById(compareId); - compareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_2); - compareEntity.setIllegalNum(plateDTOS.size()); - aiCompareMapper.updateById(compareEntity); - } + if(!mapList.isEmpty()){ + List plateDTOS = Convert.toList(AiComparePlateDTO.class, mapList); + plateDTOS.parallelStream().forEach(e-> { + AiComparePlateEntity plateEntity = new AiComparePlateEntity(); + plateEntity.setFileId(e.getFileId()); + plateEntity.setPatternName(e.getPatternName()); + aiComparePlateMapper.delete(new QueryWrapper().eq("file_id", e.getFileId())); + aiComparePlateMapper.insert(plateEntity); + }); + Long compareId = plateDTOS.get(0).getCompareId(); + AiCompareEntity compareEntity = aiCompareMapper.selectById(compareId); + compareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_2); + compareEntity.setIllegalNum(plateDTOS.size()); + aiCompareMapper.updateById(compareEntity); + } return true; } @@ -238,5 +244,18 @@ public class AiCompareServiceImpl implements IAiCompareService { return businessAlertService.deleteAlert(ids); } + @Override + public Boolean commitAlert(List> alertList) { + List startProcessList = alertList.stream().map(map -> { + String flowCode = remoteWorkflowService.getFlowCode(map.get("labelEn").toString()); + RemoteStartProcess remoteStartProcess = new RemoteStartProcess(); + remoteStartProcess.setBusinessId(map.get("id").toString()); + remoteStartProcess.setFlowCode(flowCode); + return remoteStartProcess; + }).toList(); + + return remoteWorkflowService.startWorkFlowBatch(startProcessList); + } + } 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 78a0ec9..5e747be 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 @@ -41,4 +41,9 @@ public class RemotePostServiceImpl implements RemotePostService { }) .collect(Collectors.toList()); } + + @Override + public String getPostCode(String labelCode) { + return sysPostService.getPostCode(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 ce010cc..b9b2d19 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 @@ -34,4 +34,6 @@ public interface SysPostMapper extends BaseMapperPlus { List selectPostsByUserId(Long userId); SysPostVo selectLableByList(@Param("postCode") String postCode, @Param("deptId") Long deptId); + + String getPostCode(@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 31f7f64..1304f54 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 @@ -132,4 +132,6 @@ public interface ISysPostService { */ List selectPostsByUserId(Long userId); SysPostVo selectLableByList(String post_code, Long dept_id); + + String getPostCode(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 18cc014..23420a7 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 @@ -269,8 +269,14 @@ public class SysPostServiceImpl implements ISysPostService { return baseMapper.selectPostsByUserId(userId); } + @Override public SysPostVo selectLableByList(String postCode, Long deptId) { return baseMapper.selectLableByList(postCode,deptId); } + + @Override + public String getPostCode(String labelCode) { + return baseMapper.getPostCode(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 77615e6..3c12889 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml @@ -30,4 +30,25 @@ where p.post_code=#{postCode} and p.dept_id=#{deptId} + + diff --git a/dk-modules/workflow/pom.xml b/dk-modules/workflow/pom.xml index 3a1529e..f9235ac 100644 --- a/dk-modules/workflow/pom.xml +++ b/dk-modules/workflow/pom.xml @@ -108,6 +108,11 @@ api-business + + org.dromara + api-system + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java index 9ecd7b0..68bc346 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java @@ -1,7 +1,12 @@ package org.dromara.workflow.dubbo; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.system.api.RemoteLabelPostService; +import org.dromara.system.api.RemotePostService; +import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; +import org.dromara.system.api.domain.vo.RemotePostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.FlowLabelVo; @@ -35,6 +40,10 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { private final IFlwDefinitionService flwDefinitionService; + @DubboReference + private RemotePostService remotePostService; + + private static final ExecutorService executor = Executors.newFixedThreadPool(10); @Override @@ -103,7 +112,10 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { } @Override - public String getFlowCode(String postCode){ + public String getFlowCode(String labelCode){ + //标签名称 + String postCode = remotePostService.getPostCode(labelCode); + return flwDefinitionService.getFlowCode(postCode); }