From a3e6b0b2fa80be43e18d0c56f89be2c43b25263c Mon Sep 17 00:00:00 2001
From: yq183 <645046984@qq.com>
Date: Tue, 6 May 2025 15:45:30 +0800
Subject: [PATCH 01/50] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E6=8E=92?=
=?UTF-8?q?=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/mapper/business/BusinessTaskMapper.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml
index aa031b0..66499c7 100644
--- a/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml
+++ b/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml
@@ -91,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- order by t.status,t.create_time desc
+ order by t.create_time desc
+
+
+
diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java
index dcd758f..86c0ee1 100644
--- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java
+++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java
@@ -1,5 +1,6 @@
package org.dromara.workflow.controller;
+import cn.hutool.core.util.ObjectUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -50,6 +51,10 @@ public class FlwTaskController extends BaseController {
@PostMapping("/startWorkFlow")
public R startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) {
RemoteStartProcessReturn startProcessReturn = flwTaskService.startWorkFlow(startProcessBo);
+
+ //加签
+ flwTaskService.addSign(startProcessReturn.getProcessInstanceId());
+
return R.ok("提交成功", startProcessReturn);
}
@@ -62,7 +67,13 @@ public class FlwTaskController extends BaseController {
@RepeatSubmit()
@PostMapping("/completeTask")
public R completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) {
- return toAjax(flwTaskService.completeTask(completeTaskBo));
+ String instanceId = flwTaskService.completeTask(completeTaskBo);
+
+ if (ObjectUtil.isNotEmpty(instanceId)){
+ return toAjax(flwTaskService.addSign(Long.valueOf(instanceId)));
+ }
+
+ return toAjax(true);
}
/**
diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java
index fa31d6c..c349234 100644
--- a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java
+++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java
@@ -57,4 +57,6 @@ public interface FlwTaskMapper {
*/
Page getTaskCopyByPage(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+ List getPermissionFlag(@Param("definitionId") Long definitionId,
+ @Param("nodeCode") String nodeCode, @Param("nodeType") Integer nodeType);
}
diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java
index 52b4a0b..fa12064 100644
--- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java
+++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java
@@ -37,7 +37,7 @@ public interface IFlwTaskService {
* @param completeTaskBo 办理任务参数
* @return 结果
*/
- boolean completeTask(CompleteTaskBo completeTaskBo);
+ String completeTask(CompleteTaskBo completeTaskBo);
/**
* 查询当前用户的待办任务
@@ -223,4 +223,7 @@ public interface IFlwTaskService {
* @return 节点
*/
FlowNode getByNodeCode(String nodeCode, Long definitionId);
+
+ Boolean addSign(Long instanceId);
+
}
diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
index 189a594..f7b1d35 100644
--- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
+++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
@@ -159,7 +159,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public boolean completeTask(CompleteTaskBo completeTaskBo) {
+ public String completeTask(CompleteTaskBo completeTaskBo) {
try {
// 获取任务ID并查询对应的流程任务和实例信息
Long taskId = completeTaskBo.getTaskId();
@@ -217,7 +217,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
}
//设置下一环节处理人
setNextHandler(ins.getId());
- return true;
+ return String.valueOf(ins.getId());
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new ServiceException(e.getMessage());
@@ -713,9 +713,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
Task task = taskService.getById(taskId);
FlowNode flowNode = getByNodeCode(task.getNodeCode(), task.getDefinitionId());
if ("addSignature".equals(taskOperation) || "reductionSignature".equals(taskOperation)) {
- if (flowNode.getNodeRatio().compareTo(BigDecimal.ZERO) == 0) {
- throw new ServiceException(task.getNodeName() + "不是会签节点!");
- }
+// if (flowNode.getNodeRatio().compareTo(BigDecimal.ZERO) == 0) {
+// throw new ServiceException(task.getNodeName() + "不是会签节点!");
+// }
}
// 设置任务状态并执行对应的任务操作
switch (taskOperation) {
@@ -864,7 +864,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
completeTaskBo.setTaskId(taskId);
completeTaskBo.setMessageType(List.of(MessageTypeEnum.SYSTEM_MESSAGE.getCode()));
IFlwTaskService service = applicationContext.getBean(IFlwTaskService.class);
- return service.completeTask(completeTaskBo);
+ service.completeTask(completeTaskBo);
+ return true;
}
/**
@@ -880,4 +881,70 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
.eq(FlowNode::getDefinitionId, definitionId));
}
+ @Override
+ public Boolean addSign(Long instanceId) {
+ try {
+
+ List flowTasks = selectByInstId(instanceId);
+ FlowTask flowTask1 = flowTasks.getFirst();
+
+ //判断是否有人员,进行加签
+ //获取当前任务的办理人
+ List currentTaskUser = currentTaskAllUser(flowTask1.getId());
+
+ FlowTask flowTask = flowTaskMapper.selectById(flowTask1.getId());
+ if (ObjectUtil.isNull(flowTask)) {
+ throw new ServiceException("流程任务不存在或任务已审批!");
+ }
+
+ Instance ins = insService.getById(flowTask.getInstanceId());
+
+ //根据配置的人员查询系统中的用户
+ Long definitionId = ins.getDefinitionId();
+ String nodeCode = ins.getNodeCode();
+ Integer nodeType = ins.getNodeType();
+ List permissionUser = this.flwTaskMapper.getPermissionFlag(definitionId,nodeCode,nodeType);
+ String first = permissionUser.getFirst();
+
+ List totalUser = new ArrayList<>();
+
+ if (!first.contains("${handler}")){
+ String[] split = first.split("@@");
+ for (String handleFlag : split) {
+ List remoteUserVos = flwTaskAssigneeService.fetchUsersByStorageId(handleFlag);
+ totalUser.addAll(remoteUserVos);
+ }
+ }
+
+ //比较差值
+ List different = totalUser.stream()
+ .filter(user -> currentTaskUser.stream().noneMatch(u -> u.getUserId().equals(user.getUserId())))
+ .toList();
+
+ List userIds = different.stream()
+ .map(RemoteUserVo::getUserId)
+ .distinct()
+ .map(String::valueOf)
+ .toList();
+
+ //加签
+ if (ObjectUtil.isNotEmpty(userIds)){
+ TaskOperationBo taskOperationBo = new TaskOperationBo();
+ taskOperationBo.setUserIds(userIds);
+ taskOperationBo.setTaskId(flowTask1.getId());
+
+ IFlwTaskService flwTaskService = applicationContext.getBean(IFlwTaskService.class);
+
+ flwTaskService.taskOperation(taskOperationBo,"addSignature");
+ }
+
+ return true;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error(e.getMessage(), e);
+ return false;
+ }
+ }
+
}
diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
index d113438..85a0841 100644
--- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
+++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
@@ -136,7 +136,7 @@ public class WorkflowServiceImpl implements WorkflowService {
*/
@Override
public boolean completeTask(RemoteCompleteTask completeTask) {
- return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class));
+ return ObjectUtil.isNotEmpty(flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class)));
}
/**
diff --git a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml
index f539030..141e784 100644
--- a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml
+++ b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml
@@ -112,4 +112,9 @@
) t
${ew.getCustomSqlSegment}
+
+
+
From f29808dfaf883c45c641bd766288a147c1abc275 Mon Sep 17 00:00:00 2001
From: yangwei <867012372@qq.com>
Date: Tue, 6 May 2025 16:24:12 +0800
Subject: [PATCH 03/50] =?UTF-8?q?[feat]=201=E3=80=81=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=AE=A1=E7=90=86=E6=A0=B9=E6=8D=AE=E6=A0=87?=
=?UTF-8?q?=E7=AD=BE=E6=9F=A5=E8=AF=A2=202=E3=80=81=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=8A=A8=E6=80=81=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E5=A4=84=E7=90=86=E4=BA=BA=E9=80=BB=E8=BE=91=E3=80=82=203?=
=?UTF-8?q?=E3=80=81=E5=AF=B9=E6=8E=A5=E8=AE=BE=E5=A4=87=E6=9D=83=E9=99=90?=
=?UTF-8?q?=E2=91=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/impl/FlwTaskServiceImpl.java | 18 +++++++++++-------
.../mapper/workflow/FlwTaskMapper.xml | 2 +-
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
index f7b1d35..71ec239 100644
--- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
+++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -41,6 +42,7 @@ import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.enums.MessageTypeEnum;
+import org.dromara.workflow.common.enums.TaskAssigneeEnum;
import org.dromara.workflow.common.enums.TaskAssigneeType;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.bo.*;
@@ -908,13 +910,15 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
List totalUser = new ArrayList<>();
- if (!first.contains("${handler}")){
- String[] split = first.split("@@");
- for (String handleFlag : split) {
- List remoteUserVos = flwTaskAssigneeService.fetchUsersByStorageId(handleFlag);
- totalUser.addAll(remoteUserVos);
- }
- }
+ if (ObjectUtil.isNotEmpty(first)){
+ String[] split = first.split("@@");
+ for (String handleFlag : split) {
+ if (!handleFlag.equals("${handler}")){
+ List remoteUserVos = flwTaskAssigneeService.fetchUsersByStorageId(handleFlag);
+ totalUser.addAll(remoteUserVos);
+ }
+ }
+ }
//比较差值
List different = totalUser.stream()
diff --git a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml
index 141e784..6110a55 100644
--- a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml
+++ b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml
@@ -115,6 +115,6 @@
From 37f98c55a58d2a9db5758165fa9cbf793bf9f46a Mon Sep 17 00:00:00 2001
From: yangwei <867012372@qq.com>
Date: Tue, 6 May 2025 16:37:07 +0800
Subject: [PATCH 04/50] =?UTF-8?q?[feat]=201=E3=80=81=E5=AF=B9=E6=8E=A5?=
=?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=9D=83=E9=99=90=E2=91=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../dromara/sample/manage/service/impl/DeviceServiceImpl.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
index 09b8a12..aee999d 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
@@ -710,7 +710,7 @@ public class DeviceServiceImpl implements IDeviceService {
.firmwareVersion(dto.getFirmwareVersion())
.compatibleStatus(dto.getFirmwareStatus() == null ? null :
DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE != dto.getFirmwareStatus())
- .deviceDesc(dto.getDeviceDesc())
+ .deviceDesc(dto.getDeviceDesc()).proId(ObjectUtil.isNotEmpty(dto.getProId())?Integer.valueOf(dto.getProId()):null)
.build();
}
}
From 06ebc2a4ea18a0326d16f2e09e5cd8f96d4d90fd Mon Sep 17 00:00:00 2001
From: yangwei <867012372@qq.com>
Date: Tue, 6 May 2025 17:38:22 +0800
Subject: [PATCH 05/50] =?UTF-8?q?[feat]=201=E3=80=81=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=AE=A1=E7=90=86=E6=9F=A5=E8=AF=A2=E6=A0=87?=
=?UTF-8?q?=E7=AD=BE=E4=B8=8B=E6=8B=89=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E2=91=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../manage/controller/DeviceController.java | 4 +--
.../controller/system/AiLabelController.java | 11 +++++++
.../system/service/IAiLabelService.java | 2 ++
.../service/impl/AiLabelServiceImpl.java | 33 +++++++++++++++++++
4 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
index bd1ca9d..139af62 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
@@ -119,7 +119,7 @@ public class DeviceController {
* @param deviceSn
* @return
*/
- @PutMapping("/devices/{device_sn}")
+ @PutMapping("/{workspace_id}/devices/{device_sn}")
@Operation(summary = "更新设备信息。", description = "更新设备信息。")
public HttpResultResponse updateDevice(@RequestBody DeviceDTO device,
@PathVariable("workspace_id") String workspaceId,
@@ -136,7 +136,7 @@ public class DeviceController {
* @return
*/
@Operation(summary = "设备离线固件升级任务。", description = "设备离线固件升级任务。")
- @PostMapping("/devices/ota")
+ @PostMapping("/{workspace_id}/devices/ota")
public HttpResultResponse createOtaJob(@PathVariable("workspace_id") String workspaceId,
@RequestBody List upgradeDTOS) {
return deviceService.createDeviceOtaJob(workspaceId, upgradeDTOS);
diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java
index babe5c3..2a3b69d 100644
--- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java
+++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java
@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -56,6 +57,16 @@ public class AiLabelController extends BaseController {
return aiLabelService.allList();
}
+ /**
+ * 下拉框集合
+ */
+ @GetMapping("/{postCode}/list")
+ public List listPostCodeLabel(@PathVariable("postCode") String postCode) {
+ return aiLabelService.selectLabelByList(postCode);
+ }
+
+
+
/**
* 导出ai 识别类型列表
diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java
index 5a1f009..ede3b27 100644
--- a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java
+++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java
@@ -74,4 +74,6 @@ public interface IAiLabelService {
List queryListByLabel(List labelIds);
String getFlowCode(String labelCode);
+
+ List selectLabelByList(String postCode);
}
diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java
index 60ee64f..19cdee1 100644
--- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java
+++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.system.service.impl;
+import cn.hutool.core.collection.ListUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -9,6 +10,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo;
+import org.dromara.system.domain.vo.AiLabelPostVo;
+import org.dromara.system.domain.vo.SysPostVo;
+import org.dromara.system.service.IAiLabelPostService;
+import org.dromara.system.service.ISysPostService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.AiLabelBo;
import org.dromara.system.domain.vo.AiLabelVo;
@@ -20,6 +27,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Collection;
+import java.util.stream.Collectors;
/**
* ai 识别类型Service业务层处理
@@ -33,6 +41,12 @@ public class AiLabelServiceImpl implements IAiLabelService {
private final AiLabelMapper baseMapper;
+ @Autowired
+ private ISysPostService sysPostService;
+
+ @Autowired
+ private IAiLabelPostService aiLabelPostService;
+
/**
* 查询ai 识别类型
*
@@ -148,4 +162,23 @@ public class AiLabelServiceImpl implements IAiLabelService {
public String getFlowCode(String labelCode) {
return this.baseMapper.selectOne(new LambdaQueryWrapper().eq(AiLabel::getLabelEn, labelCode)).getFlowCode();
}
+
+ @Override
+ public List selectLabelByList(String postCode) {
+ SysPostVo sysPostVo = sysPostService.selectLableByList(postCode,null);
+ if(sysPostVo != null){
+ List postVoList = aiLabelPostService.queryListByLabel(sysPostVo.getPostId());
+ return postVoList.stream()
+ .map(aiLabel -> {
+ AiLabelVo aiLabelVo = new AiLabelVo();
+ aiLabelVo.setLabelId(aiLabel.getLabelId());
+ aiLabelVo.setLabelEn(aiLabel.getLabelEn());
+ aiLabelVo.setLabelCn(aiLabel.getLabelCn());
+ aiLabelVo.setAiName(aiLabel.getAiName());
+ return aiLabelVo;
+ })
+ .collect(Collectors.toList());
+ }
+ return ListUtil.empty();
+ }
}
From c2f24932bc016fc91bc3d0583517e5d143ee3967 Mon Sep 17 00:00:00 2001
From: shizisheng
Date: Wed, 7 May 2025 00:28:00 +0800
Subject: [PATCH 06/50] =?UTF-8?q?=E5=A4=A9=E7=BF=BC=E4=BA=91=EF=BC=8C?=
=?UTF-8?q?=E4=BD=BF=E7=94=A8minio=E8=AE=BF=E9=97=AE=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../storage/config/OssTianyiConfig.java | 79 +++++++
.../controller/OssTianyiController.java | 58 +++++
.../sample/storage/domain/SysUploadFile.java | 211 ++++++++++++++++++
.../storage/util/OssTianyiClientUtils.java | 174 +++++++++++++++
4 files changed, 522 insertions(+)
create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/storage/config/OssTianyiConfig.java
create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/OssTianyiController.java
create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/storage/domain/SysUploadFile.java
create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/storage/util/OssTianyiClientUtils.java
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/storage/config/OssTianyiConfig.java b/dk-modules/sample/src/main/java/org/dromara/sample/storage/config/OssTianyiConfig.java
new file mode 100644
index 0000000..3fcf366
--- /dev/null
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/storage/config/OssTianyiConfig.java
@@ -0,0 +1,79 @@
+package org.dromara.sample.storage.config;
+
+import io.minio.MinioClient;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Minio 配置信息
+ *
+ * @author ruoyi
+ */
+@Configuration
+@ConfigurationProperties(prefix = "osstianyi")
+public class OssTianyiConfig
+{
+
+ private String endPoint;
+ private String accessKey;
+ private String secretKey;
+ private String bucketName;
+
+ public String getEndPoint() {
+ return endPoint;
+ }
+
+ public void setEndPoint(String endPoint) {
+ this.endPoint = endPoint;
+ }
+
+ public String getAccessKey()
+ {
+ return accessKey;
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ this.accessKey = accessKey;
+ }
+
+ public String getSecretKey()
+ {
+ return secretKey;
+ }
+
+ public void setSecretKey(String secretKey)
+ {
+ this.secretKey = secretKey;
+ }
+
+ public String getBucketName()
+ {
+ return bucketName;
+ }
+
+ public void setBucketName(String bucketName)
+ {
+ this.bucketName = bucketName;
+ }
+
+ @Override
+ public String toString() {
+ return "OssTianyiConfig{" +
+ "endPoint='" + endPoint + '\'' +
+ ", accessKey='" + accessKey + '\'' +
+ ", secretKey='" + secretKey + '\'' +
+ ", bucketName='" + bucketName + '\'' +
+ '}';
+ }
+
+ @Bean
+ public MinioClient getMinioClient()
+ {
+// System.out.println("OssTianyiConfig");
+// System.out.println("OssTianyiConfig" + endPoint);
+ System.out.println(toString());
+ return MinioClient.builder().endpoint(endPoint).credentials(accessKey, secretKey).build();
+ }
+}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/OssTianyiController.java b/dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/OssTianyiController.java
new file mode 100644
index 0000000..0f29fee
--- /dev/null
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/OssTianyiController.java
@@ -0,0 +1,58 @@
+package org.dromara.sample.storage.controller;
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.sample.storage.domain.SysUploadFile;
+import org.dromara.sample.storage.util.OssTianyiClientUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+
+/**
+ * 系统上传文件Controller
+ *
+ * @author tom
+ * @date 2024-12-21
+ */
+@RestController
+@RequestMapping("/ossTianyi")
+public class OssTianyiController extends BaseController
+{
+
+ @Autowired
+ private OssTianyiClientUtils ossTianyiClientUtils;
+
+ /**
+ * 查询系统上传文件列表 (实际是上传接口)
+ */
+ @SaCheckPermission("file:sysUploadFile:list")
+ @GetMapping("/list")
+ public TableDataInfo list(SysUploadFile sysUploadFile)
+ {
+ String localFilePath = "D:\\123pan\\page.html";
+ try{
+ ossTianyiClientUtils.uploadFileTest("page.html","dev/temp",localFilePath);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ @GetMapping("/upload")
+ public R> upload(@RequestPart("file") MultipartFile file) {
+ try {
+ ossTianyiClientUtils.uploadFile("page.html", "dev/temp", file);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/storage/domain/SysUploadFile.java b/dk-modules/sample/src/main/java/org/dromara/sample/storage/domain/SysUploadFile.java
new file mode 100644
index 0000000..9e004dd
--- /dev/null
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/storage/domain/SysUploadFile.java
@@ -0,0 +1,211 @@
+package org.dromara.sample.storage.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+
+/**
+ * 系统上传文件对象 sys_upload_file
+ *
+ * @author tom
+ * @date 2024-12-21
+ */
+@TableName("sys_upload_file")
+public class SysUploadFile extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** ID */
+ @TableId(value="id",type = IdType.AUTO)
+ private Long id;
+
+ /** 删除标记 */
+ @TableField("del_flag")
+ private Long delFlag;
+
+ /** 文件名称 */
+ @TableField("name")
+ private String name;
+
+ /** 上传时文件名 */
+ @TableField("file_name")
+ private String fileName;
+
+ /** 物理路径 */
+ @TableField("path")
+ private String path;
+
+ /** 文件URL */
+ @TableField("url")
+ private String url;
+
+ /** 文件扩展名 */
+ @TableField("extend")
+ private String extend;
+
+ /** 文件类型 */
+ @TableField("dict_file_type")
+ private Long dictFileType;
+
+ /** 关联对象ID */
+ @TableField("object_id")
+ private Long objectId;
+
+ /** 关联对象类型 */
+ @TableField("object_type")
+ private String objectType;
+
+ /** 关联对象ID */
+ @TableField("object_link_id")
+ private String objectLinkId;
+
+ /** 排序 */
+ @TableField("sort")
+ private Long sort;
+
+ /** 标签 */
+ @TableField("tags")
+ private String tags;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+ public void setDelFlag(Long delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public Long getDelFlag()
+ {
+ return delFlag;
+ }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+ public void setFileName(String fileName)
+ {
+ this.fileName = fileName;
+ }
+
+ public String getFileName()
+ {
+ return fileName;
+ }
+ public void setPath(String path)
+ {
+ this.path = path;
+ }
+
+ public String getPath()
+ {
+ return path;
+ }
+ public void setUrl(String url)
+ {
+ this.url = url;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+ public void setExtend(String extend)
+ {
+ this.extend = extend;
+ }
+
+ public String getExtend()
+ {
+ return extend;
+ }
+ public void setDictFileType(Long dictFileType)
+ {
+ this.dictFileType = dictFileType;
+ }
+
+ public Long getDictFileType()
+ {
+ return dictFileType;
+ }
+ public void setObjectId(Long objectId)
+ {
+ this.objectId = objectId;
+ }
+
+ public Long getObjectId()
+ {
+ return objectId;
+ }
+ public void setObjectType(String objectType)
+ {
+ this.objectType = objectType;
+ }
+
+ public String getObjectType()
+ {
+ return objectType;
+ }
+
+ public String getObjectLinkId() {
+ return objectLinkId;
+ }
+
+ public void setObjectLinkId(String objectLinkId) {
+ this.objectLinkId = objectLinkId;
+ }
+
+ public void setSort(Long sort)
+ {
+ this.sort = sort;
+ }
+
+ public Long getSort()
+ {
+ return sort;
+ }
+
+ public String getTags() {
+ return tags;
+ }
+
+ public void setTags(String tags) {
+ this.tags = tags;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("delFlag", getDelFlag())
+ .append("name", getName())
+ .append("fileName", getFileName())
+ .append("path", getPath())
+ .append("url", getUrl())
+ .append("extend", getExtend())
+ .append("dictFileType", getDictFileType())
+ .append("objectId", getObjectId())
+ .append("objectType", getObjectType())
+ .append("sort", getSort())
+ .toString();
+ }
+}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/storage/util/OssTianyiClientUtils.java b/dk-modules/sample/src/main/java/org/dromara/sample/storage/util/OssTianyiClientUtils.java
new file mode 100644
index 0000000..e952f4a
--- /dev/null
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/storage/util/OssTianyiClientUtils.java
@@ -0,0 +1,174 @@
+package org.dromara.sample.storage.util;
+
+import cn.hutool.core.io.FileUtil;
+import io.minio.*;
+import io.minio.errors.*;
+import io.minio.messages.Item;
+import org.dromara.sample.storage.config.OssTianyiConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+@Component
+public class OssTianyiClientUtils {
+
+ private static MinioClient minioClient;
+
+// private static String endPoint = "https://jiangsu-10.zos.ctyun.cn"; //地域节点,可访问
+// // private static String endPoint = "https://dk-ty-oss-bucket.jiangsu-10.zos.ctyun.cn"; //说是桶的域名地址,支持公网访问ZOS,实测报错
+// private static String minioAccessKey = "22e3f37368a242b38f4f25d98c9baf1f";
+// private static String minioSecretKey = "0d858850666248e59830d9a596847062";
+
+// private static String bucketName = "dk-ty-oss-bucket";
+// private String bucketName = "dkossbucket";
+ private String objectName = "page.html";
+ //注意,天翼云里默认路径就是文件名,不需要在前面加根路径/
+ private String filePath = "dev/temp/";
+ private String fileDir = "dev";
+
+
+ @Autowired
+ OssTianyiConfig ossTianyiConfig;
+
+ @Autowired
+ public OssTianyiClientUtils(OssTianyiConfig ossTianyiConfig) {
+ this.ossTianyiConfig = ossTianyiConfig;
+ init();
+ }
+
+ private void init() {
+ this.minioClient = MinioClient.builder()
+ .endpoint(ossTianyiConfig.getEndPoint())
+ .credentials(ossTianyiConfig.getAccessKey(), ossTianyiConfig.getSecretKey())
+ .build();
+ }
+
+ /**
+ * 天翼云OSS初始化(采用S3 Compatible Storage)
+ */
+// public void tianyiOssInit() {
+// minioClient = MinioClient.builder()
+// .endpoint(ossTianyiConfig.getEndPoint())
+// .credentials(ossTianyiConfig.getAccessKey(), ossTianyiConfig.getSecretKey())
+// .build();
+// }
+
+ /**
+ * 文件上传 (固定)
+ */
+ public void uploadFileTest(String objectName, String filePath, String localFilePath) throws Exception {
+ File file = new File(localFilePath);
+ BufferedInputStream inputStream = FileUtil.getInputStream(file);
+ String contentType = Files.probeContentType(file.toPath());
+ if (contentType == null) {
+ contentType = "application/octet-stream";
+ }
+ PutObjectArgs args = PutObjectArgs.builder()
+ .bucket(ossTianyiConfig.getBucketName())
+ .object(filePath + objectName)
+ .stream(inputStream, FileUtil.size(file), -1)
+ .contentType(contentType)
+ .build();
+ minioClient.putObject(args);
+ }
+
+ public void uploadFile(String s, String s1, MultipartFile file) {
+ try {
+ PutObjectArgs args = PutObjectArgs.builder()
+ .bucket(ossTianyiConfig.getBucketName())
+ .object( file.getName())
+ .stream(file.getInputStream(), file.getSize(), -1)
+ .contentType(file.getContentType())
+ .build();
+ minioClient.putObject(args);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+
+
+ /**
+ * 文件删除
+ */
+ public void deleteFile(String bucketName, String objectName) throws Exception {
+ minioClient.removeObject(
+ RemoveObjectArgs.builder()
+ .bucket(bucketName)
+ .object(objectName)
+ .build());
+ }
+
+ /**
+ * 文件下载
+ */
+ public void downloadFile(String bucketName, String objectName, String downloadPath) throws Exception {
+ InputStream inputStream = minioClient.getObject(
+ GetObjectArgs.builder()
+ .bucket(bucketName)
+ .object(objectName)
+ .build()
+ );
+ FileUtil.writeFromStream(inputStream, new File(downloadPath));
+ }
+
+ /**
+ * 文件列表
+ * @param bucketName
+ * @param prefix
+ */
+ public void listFiles(String bucketName, String prefix) {
+ Iterable> results = minioClient.listObjects(
+ ListObjectsArgs.builder()
+ .bucket(bucketName)
+ .prefix(prefix)
+ .recursive(true)
+ .build()
+ );
+
+ try {
+ for (Result- result : results) {
+ try {
+// System.out.println("文件名:" + result.get().objectName()); // 获取对象名称(文件路径)
+ System.out.println(result.get().objectName()); // 获取对象名称(文件路径)
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ } catch (Exception e) {
+ System.err.println("文件读取异常: " + e.getMessage());
+ }
+
+ }
+
+
+
+
+// public void updateFile(String bucketName, String objectName, String filePath, String localFilePath) throws Exception {
+// uploadFile(bucketName, objectName, filePath, localFilePath);
+// }
+
+
+// public static void main(String[] args) throws Exception {
+// String localFilePath = "D:\\123pan\\page.html";
+//
+// tianyiOssInit("", "", "");
+// uploadFile(bucketName, objectName, filePath, localFilePath);//正常
+//// deleteFile(bucketName, filePath + objectName);//正常
+//// listFiles(bucketName, fileDir + "/"); // 正常
+//
+//// downloadFile(bucketName, filePath + objectName, "D:\\123pan\\downloaded_page.html"); //正常
+//
+// }
+
+}
From 8aced047e5206e870fc3d5d8b86fc0ae9b6908c5 Mon Sep 17 00:00:00 2001
From: yangwei <867012372@qq.com>
Date: Wed, 7 May 2025 16:47:15 +0800
Subject: [PATCH 07/50] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=94=A8=E6=88=B7=E6=9F=A5=E8=AF=A2=E8=AE=BE?=
=?UTF-8?q?=E5=A4=87=E7=BB=84=E4=BF=A1=E6=81=AF=E2=91=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sample/manage/controller/DeviceProController.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
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 5c24e24..52bce09 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
@@ -125,12 +125,12 @@ public class DeviceProController {
/**
* 根据人员获取项目组(feign调用接口)
*/
- @GetMapping("/feign/user")
- public List listDeviceGroup(@RequestParam("userId") Long userId) {
+ @GetMapping("/list/pro")
+ public R
> listDeviceGroup(@RequestParam("userId") Long userId) {
log.info("----------------------------开始调用feign接口查询项目组----------------------------");
List result = deviceProService.listDeviceGroup(userId);
log.info("----------------------------调用feign接口查询项目组结束----------------------------");
- return result;
+ return R.ok(result);
}
/**
From f5c4041894a4e8cfb8370fccc2a7f9665c45d0f2 Mon Sep 17 00:00:00 2001
From: yangwei <867012372@qq.com>
Date: Wed, 7 May 2025 18:05:42 +0800
Subject: [PATCH 08/50] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../auth/service/impl/PasswordAuthStrategy.java | 12 ------------
1 file changed, 12 deletions(-)
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 3b7efe8..e8cb35b 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
@@ -83,18 +83,6 @@ public class PasswordAuthStrategy implements IAuthStrategy {
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);
From 6d90d193bdd49e441c1fa23ec010a89973dc3c53 Mon Sep 17 00:00:00 2001
From: yq183 <645046984@qq.com>
Date: Thu, 8 May 2025 14:04:52 +0800
Subject: [PATCH 09/50] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E9=A2=84?=
=?UTF-8?q?=E8=AD=A6=E7=83=AD=E5=8A=9B=E5=9B=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../common/encrypt/utils/EncryptUtils.java | 4 ++
.../BusinessAlertStatisticsController.java | 21 ++++++++
.../controller/BusinessTaskController.java | 2 +
.../business/domain/bo/BusinessAlertBo.java | 6 +--
.../business/domain/vo/BusinessAlertVo.java | 1 +
.../business/mapper/BusinessAlertMapper.java | 1 +
.../service/IBusinessAlertService.java | 4 +-
.../impl/BusinessAlertServiceImpl.java | 48 +++++++++++++++++++
.../mapper/business/BusinessAlertMapper.xml | 35 +++++++++++++-
.../controller/system/SysMenuController.java | 4 +-
10 files changed, 120 insertions(+), 6 deletions(-)
diff --git a/dk-common/common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java b/dk-common/common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
index 8e34843..bc7628e 100644
--- a/dk-common/common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
+++ b/dk-common/common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
@@ -175,6 +175,10 @@ public class EncryptUtils {
return keyMap;
}
+ public static void main(String[] args) {
+ Map map = generateRsaKey();
+ System.out.println(map);
+ }
/**
* sm2公钥加密
*
diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java
index 1bb1ff3..be9c2c6 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
@@ -142,6 +142,27 @@ public class BusinessAlertStatisticsController extends BaseController {
return R.ok(businessAlertService.cityListAlert(businessAlertBo));
}
+ /**
+ * 预警信息-资规/农水-热力图
+ * @param businessAlertBo
+ * @return
+ */
+ @Operation(summary="预警信息-资规/农水-标签分组", description="预警信息-资规/农水-标签分组")
+ @GetMapping(value = "/alert/heatList")
+ public R