From 8a664019afb6afcea95a750742858da221bd630f Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Tue, 6 May 2025 15:47:25 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=201=E3=80=81=E5=A2=9E=E5=8A=A0=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=AE=A1=E7=90=86=E6=A0=B9=E6=8D=AE=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=202=E3=80=81=E5=A2=9E=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E5=8A=A8=E6=80=81=E5=A2=9E=E5=8A=A0=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BA=BA=E9=80=BB=E8=BE=91=E3=80=82=203=E3=80=81?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E8=AE=BE=E5=A4=87=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BusinessAlertServiceImpl.java | 4 + .../controller/DeviceProController.java | 33 ++++++++ .../manage/service/IDeviceProService.java | 6 ++ .../service/impl/DeviceProServiceImpl.java | 26 ++++++ .../service/impl/DeviceServiceImpl.java | 3 +- .../system/dubbo/RemoteUserServiceImpl.java | 2 +- .../dromara/system/mapper/SysUserMapper.java | 1 + .../system/service/ISysUserService.java | 2 + .../service/impl/SysUserServiceImpl.java | 8 ++ .../resources/mapper/system/SysUserMapper.xml | 14 ++++ .../controller/FlwTaskController.java | 13 ++- .../workflow/mapper/FlwTaskMapper.java | 2 + .../workflow/service/IFlwTaskService.java | 5 +- .../service/impl/FlwTaskServiceImpl.java | 79 +++++++++++++++++-- .../service/impl/WorkflowServiceImpl.java | 2 +- .../mapper/workflow/FlwTaskMapper.xml | 5 ++ 16 files changed, 194 insertions(+), 11 deletions(-) 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 cf80f93..7a8622a 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 @@ -432,6 +432,10 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { wrapper.like("t.job_name", bo.getJobName()); } + if (ObjectUtil.isNotEmpty(bo.getLabelEn())){ + wrapper.eq("t.label_en", bo.getLabelEn()); + } + if (ObjectUtil.isNotEmpty(bo.getStartTime()) && ObjectUtil.isNotEmpty(bo.getEndTime())){ wrapper.ge("DATE_FORMAT(t.create_time, '%Y-%m-%d')", bo.getStartTime()); wrapper.le("DATE_FORMAT(t.create_time, '%Y-%m-%d')", bo.getEndTime()); 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 f6efb17..5c24e24 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 @@ -49,6 +49,17 @@ public class DeviceProController { return HttpResultResponse.success(devices); } + /** + * 查询项目组下拉列表 + * @return + */ + @Operation(summary = "查询项目组下拉列表", description = "查询项目组下拉列表") + @GetMapping("/list") + public HttpResultResponse> listDevicePro(){ + return HttpResultResponse.success(deviceProService.listDevicePro()); + } + + //2、添加项目组 /** * 新增/更新项目 @@ -89,6 +100,28 @@ public class DeviceProController { return HttpResultResponse.success(deviceProService.updateDevice(dict)); } + /** + * 开启配置 + * @param proId + * @return + */ + @Operation(summary = "开启配置", description = "开启配置") + @PostMapping("/enable/{proId}") + public HttpResultResponse enablePro(@PathVariable("proId") Integer proId) { + return HttpResultResponse.success(deviceProService.enablePro(proId)); + } + + /** + * 关闭配置 + * @param proId + * @return + */ + @Operation(summary = "关闭配置", description = "关闭配置") + @PostMapping("/disable/{proId}") + public HttpResultResponse disablePro(@PathVariable("proId") Integer proId) { + return HttpResultResponse.success(deviceProService.disablePro(proId)); + } + /** * 根据人员获取项目组(feign调用接口) */ 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 10e2b1e..df2f3ba 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 @@ -43,4 +43,10 @@ public interface IDeviceProService { List listDeviceGroup(Long userId); List listDevice(Long userId); + + List listDevicePro(); + + Boolean enablePro(Integer proId); + + Boolean disablePro(Integer proId); } 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 1a0918b..1962460 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 @@ -297,6 +297,32 @@ public class DeviceProServiceImpl implements IDeviceProService { return ListUtil.empty(); } + + @Override + public List listDevicePro() { + return deviceProMapper.selectList(new LambdaQueryWrapper()); + } + + @Override + public Boolean enablePro(Integer proId) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + + wrapper.eq(DeviceProEntity::getId, proId); + wrapper.set(DeviceProEntity::getBindType,1); + + return this.deviceProMapper.update(wrapper) > 0; + } + + @Override + public Boolean disablePro(Integer proId) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + + wrapper.eq(DeviceProEntity::getId, proId); + wrapper.set(DeviceProEntity::getBindType,0); + + return this.deviceProMapper.update(wrapper) > 0; + } + @Override public Boolean saveAndUpdate(DeviceProEntity entity) { boolean flag = true; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 4639f68..09b8a12 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 @@ -1,5 +1,6 @@ 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.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -404,7 +405,7 @@ public class DeviceServiceImpl implements IDeviceService { .map(WorkspaceDTO::getWorkspaceName).orElse("") : "") .firmwareStatus(DeviceFirmwareStatusEnum.NOT_UPGRADE) .videoId(dockVideoId) - .thingVersion(entity.getVersion()).build(); + .thingVersion(entity.getVersion()).proId(ObjectUtil.isNotEmpty(entity.getProId())?String.valueOf(entity.getProId()):"").build(); } catch (CloudSDKException e) { log.error(e.getLocalizedMessage() + "Entity: {}", entity); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java index cb6bba9..6cfc187 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java @@ -309,7 +309,7 @@ public class RemoteUserServiceImpl implements RemoteUserService { */ @Override public List selectListByIds(List userIds) { - List sysUserVos = userService.selectUserByIds(userIds, null); + List sysUserVos = userService.selectFlwByIds(userIds, null); return MapstructUtils.convert(sysUserVos, RemoteUserVo.class); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index bec69cc..18b4813 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -91,4 +91,5 @@ public interface SysUserMapper extends BaseMapperPlus { }) int updateById(@Param(Constants.ENTITY) SysUser user); + List selectFlwByIds(@Param(Constants.WRAPPER) Wrapper queryWrapper); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java index 5e8fd3c..ed56653 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -271,4 +271,6 @@ public interface ISysUserService { List selectUserByUserIds(List userIds); List assignUserSelect(Long deptId); + + List selectFlwByIds(List userIds, Long deptId); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 5c0da4e..0a151b9 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -576,6 +576,14 @@ public class SysUserServiceImpl implements ISysUserService { .in(ObjectUtil.isNotNull(departIdList), SysUser::getDeptId, departIdList)); } + @Override + public List selectFlwByIds(List userIds, Long deptId) { + return baseMapper.selectFlwByIds(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber).eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) + .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + } + /** * 通过用户ID查询用户账户 * diff --git a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml index 700b37a..93513f2 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml @@ -83,4 +83,18 @@ ${ew.getCustomSqlSegment} + + + 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} + + +