From 2b991dcc70ab098a76cd995c60c6267dadf2334b Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Fri, 14 Mar 2025 18:06:11 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=201=E3=80=81=E8=81=94=E8=B0=83=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=202=E3=80=81?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=B5=81=E7=A8=8B=E9=83=A8=E9=97=A8=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/event/ProcessCreateTaskEvent.java | 12 ++ .../controller/BusinessAlertController.java | 8 +- .../business/domain/BusinessAlert.java | 9 ++ .../business/mapper/BusinessAlertMapper.java | 12 +- .../service/IBusinessAlertService.java | 2 - .../impl/BusinessAlertServiceImpl.java | 121 ++++++------------ .../mapper/business/BusinessAlertMapper.xml | 105 +++++++-------- .../dubbo/RemoteLabelPostServicelmpl.java | 19 ++- .../system/service/IAiLabelPostService.java | 3 +- .../system/service/IAiLabelService.java | 2 + .../service/impl/AiLabelServiceImpl.java | 7 + .../service/impl/AiLablePostServiceImpl.java | 8 +- .../workflow/domain/bo/CompleteTaskBo.java | 2 +- .../handler/FlowProcessEventHandler.java | 6 +- .../workflow/handler/FlwAlertHandler.java | 18 +-- .../listener/WorkflowGlobalListener.java | 4 +- .../workflow/service/IFlwTaskService.java | 9 ++ .../workflow/service/WorkflowService.java | 1 + .../service/impl/FlwDepartServiceImpl.java | 1 - .../service/impl/FlwTaskServiceImpl.java | 20 +-- .../service/impl/WorkflowServiceImpl.java | 4 + 21 files changed, 191 insertions(+), 182 deletions(-) diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java index eabb443..11deccf 100644 --- a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java @@ -6,6 +6,7 @@ import org.dromara.common.core.utils.SpringUtils; import org.springframework.cloud.bus.event.RemoteApplicationEvent; import java.io.Serial; +import java.util.Map; /** * 流程创建任务监听 @@ -54,6 +55,17 @@ public class ProcessCreateTaskEvent extends RemoteApplicationEvent { */ private Boolean isIllegal; + + /** + * 办理参数 + */ + private Map params; + + /** + * 审核意见 + */ + private String message; + public ProcessCreateTaskEvent() { super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null)); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 11e4a17..75ea4cb 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -10,10 +10,10 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * 预警服务 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 5ef21c5..11e5ace 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 @@ -264,4 +264,13 @@ public class BusinessAlert extends BaseEntity { @TableField(exist = false) private String permissions; + /** + * 显示处置人员已办理预警状态 + */ + @TableField(exist = false) + private String flowTaskStatus; + + @TableField(exist = false) + private String alertId; + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 94933ec..39b69b6 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -23,20 +23,14 @@ import java.util.Map; */ public interface BusinessAlertMapper extends BaseMapperPlus { - + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) Page pageBusinessAlert(Page page, QueryWrapper ew); Page pageAlertFinish(Page page, QueryWrapper ew); - /** - * 待指派 - * @param page - * @param ew - * @return - */ - Page pageAlertAssign(Page page, QueryWrapper ew); - /** * 处理中 * @param page 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 5c642cb..0be6d43 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 @@ -20,8 +20,6 @@ public interface IBusinessAlertService { TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery); - TableDataInfo pageAlertAssign(BusinessAlertBo bo, PageQuery pageQuery); - TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery); TableDataInfo pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery); 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 d1d9aae..fae5fbe 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 @@ -19,11 +19,16 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; 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.stereotype.Service; import java.lang.reflect.Method; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.*; /** @@ -139,9 +144,9 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); @@ -159,11 +164,11 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { bo.setHandleType(BusinessStatusEnum.INVALID.getStatus()); QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } - wrapper.in("b.flow_status", BusinessStatusEnum.INVALID.getStatus()); + wrapper.in("t.flowStatus", BusinessStatusEnum.INVALID.getStatus()); Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); @@ -181,58 +186,17 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } - buildCommonQueryWrapper(wrapper); + wrapper.apply(" EXISTS(select * from dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); - wrapper.in("a.approver", LoginHelper.getUserId()); - wrapper.in("b.flow_status", BusinessStatusEnum.FINISH.getStatus()); Page page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); return TableDataInfo.build(page); } - /** - * 查询当前用户待办预警 - * @param bo - * @param pageQuery - * @return - */ - @Override - public TableDataInfo pageAlertAssign(BusinessAlertBo bo, PageQuery pageQuery) { - QueryWrapper wrapper = buildQueryWrapper(bo); - -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } - - buildCommonQueryWrapper(wrapper); - - wrapper.eq("uu.del_flag", 0); - wrapper.in("uu.type", 1,2,3); - - wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); - wrapper.eq("b.flow_status", BusinessStatusEnum.DRAFT.getStatus()); - - Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); - - List records = page.getRecords(); - if (CollUtil.isNotEmpty(records)) { - List taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId); - Map> listMap = remoteWorkflowService.currentTaskAllUser(taskIds); - records.forEach(t -> { - List userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); - if (CollUtil.isNotEmpty(userList)) { - t.setApprover(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); - t.setApproveName(StreamUtils.join(userList, RemoteUserVo::getNickName)); - } - }); - } - return TableDataInfo.build(page); - } - /** * 查询当前用户待办预警 @@ -244,17 +208,13 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } - - buildCommonQueryWrapper(wrapper); - - wrapper.eq("uu.del_flag", 0); - wrapper.in("uu.type", 1,2,3); + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } - wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); - wrapper.eq("b.flow_status", BusinessStatusEnum.WAITING.getStatus()); + wrapper.eq("t.node_type", 1); + wrapper.in("t.approver", remoteWorkflowService.getPermissions()); + wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); @@ -270,6 +230,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { } }); } + return TableDataInfo.build(page); } @@ -283,38 +244,34 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { QueryWrapper wrapper = new QueryWrapper<>(); //根据当前用户职能获取识别类型 -// List postVoList = remoteLablePostService.selectLableByList(bo.getPostCode(), LoginHelper.getDeptId()); + List postVoList = remoteLablePostService.selectLabelByList(bo.getPostCode(), LoginHelper.getDeptId()); -// if (ObjectUtil.isEmpty(postVoList)) { -// return null; -// } -// -// -// wrapper.in("ba.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); + if (ObjectUtil.isEmpty(postVoList)) { + return null; + } + + wrapper.in("t.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); //排除状态为验证状态预警 - wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus()); + wrapper.ne("t.handle_type", BusinessStatusEnum.VERIFY.getStatus()); if (ObjectUtil.isNotEmpty(bo.getHandleType())){ - wrapper.eq("ba.handle_type", bo.getHandleType()); + wrapper.eq("t.handle_type", bo.getHandleType()); + } + if (ObjectUtil.isNotEmpty(bo.getJobName())){ + wrapper.like("t.job_name", bo.getJobName()); } - wrapper.orderByAsc("ba.create_time"); + if (ObjectUtil.isNotEmpty(bo.getCreateTime())){ + wrapper.eq("DATE_FORMAT(t.create_time, '%Y-%m-%d')", bo.getCreateTime()); + } + + wrapper.orderByAsc("t.create_time"); return wrapper; } - /** - * 构建通用流程wrapper - * @param wrapper - */ - private void buildCommonQueryWrapper(QueryWrapper wrapper) { - wrapper.eq("a.del_flag",0); - wrapper.eq("b.del_flag",0); - wrapper.eq("c.del_flag",0); - wrapper.in("a.node_type",1,3,4); - } /** * 保存前的数据校验 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 8a25577..2dee8e9 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -18,76 +18,67 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java index fd28541..783530c 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java @@ -3,16 +3,21 @@ package org.dromara.system.dubbo; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.system.api.RemoteLabelPostService; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; +import org.dromara.system.domain.AiLabel; +import org.dromara.system.domain.AiLabelPost; 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.IAiLabelService; import org.dromara.system.service.ISysPostService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @auther yq @@ -25,13 +30,23 @@ public class RemoteLabelPostServicelmpl implements RemoteLabelPostService { private final ISysPostService sysPostService; private final IAiLabelPostService aiLabelPostService; + private final IAiLabelService aiLabelService; @Override public List selectLabelByList(String postCode, Long deptId) { SysPostVo sysPostVo = sysPostService.selectLableByList(postCode, deptId); if(sysPostVo != null){ - List aiLablePostVos = aiLabelPostService.queryListByLabel(sysPostVo.getPostId()); - return MapstructUtils.convert(aiLablePostVos, RemoteAiLabelPostVo.class); + List aiLablePostVos = aiLabelPostService.queryListByLabel(sysPostVo.getPostId()); + List aiLabelList = aiLabelService.queryListByLabel(StreamUtils.toList(aiLablePostVos,AiLabelPost::getLabelId)); + return aiLabelList.stream() + .map(aiLabel -> { + RemoteAiLabelPostVo remoteAiLabelPostVo = new RemoteAiLabelPostVo(); + remoteAiLabelPostVo.setLableId(aiLabel.getLabelId()); + remoteAiLabelPostVo.setLabelEn(aiLabel.getLabelEn()); + remoteAiLabelPostVo.setLabelCn(aiLabel.getLabelCn()); + return remoteAiLabelPostVo; + }) + .collect(Collectors.toList()); } return new ArrayList<>(); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java index 845dec2..d1c2bf2 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java @@ -1,5 +1,6 @@ package org.dromara.system.service; +import org.dromara.system.domain.AiLabelPost; import org.dromara.system.domain.bo.AiLabelPostBo; import org.dromara.system.domain.vo.AiLabelPostVo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -66,5 +67,5 @@ public interface IAiLabelPostService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - List queryListByLabel(Long postId); + List queryListByLabel(Long postId); } 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 b3cba0b..1d41595 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 @@ -70,4 +70,6 @@ public interface IAiLabelService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List queryListByLabel(List labelIds); } 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 40e019c..05bea7e 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 @@ -135,4 +135,11 @@ public class AiLabelServiceImpl implements IAiLabelService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public List queryListByLabel(List labelIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(AiLabel::getLabelId, labelIds); + return this.baseMapper.selectList(wrapper); + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java index ac8e27c..eabfd30 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java @@ -130,7 +130,11 @@ public class AiLablePostServiceImpl implements IAiLabelPostService { } @Override - public List queryListByLabel(Long postId) { - return List.of(); + public List queryListByLabel(Long postId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(AiLabelPost::getPostId, postId); + + return this.baseMapper.selectList(wrapper); } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java index 8b17915..7a626a3 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java @@ -92,7 +92,7 @@ public class CompleteTaskBo implements Serializable { /** * 是否需要指派 */ - private Boolean assign = true; + private Boolean assign = false; public Map getVariables() { if (variables == null) { diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index ee5afe9..2a6b8c5 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -3,12 +3,14 @@ package org.dromara.workflow.handler; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.workflow.api.event.ProcessCreateTaskEvent; import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.common.ConditionalOnEnable; import org.springframework.stereotype.Component; +import java.util.HashMap; import java.util.Map; /** @@ -51,7 +53,7 @@ public class FlowProcessEventHandler { * @param taskId 任务id * @param businessId 业务id */ - public void processCreateTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) { + public void processCreateTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId, Map variable, String message) { String tenantId = TenantHelper.getTenantId(); log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点编码: {}, 任务ID: {}, 业务ID: {}", tenantId, flowCode, nodeCode, taskId, businessId); ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent(); @@ -60,6 +62,8 @@ public class FlowProcessEventHandler { processCreateTaskEvent.setNodeCode(nodeCode); processCreateTaskEvent.setTaskId(taskId); processCreateTaskEvent.setBusinessId(businessId); + processCreateTaskEvent.setParams(variable); + processCreateTaskEvent.setMessage(message); SpringUtils.context().publishEvent(processCreateTaskEvent); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java index d7f8ae9..3554140 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java @@ -34,16 +34,7 @@ public class FlwAlertHandler implements FlwCommonHandler { @EventListener(condition = "#processEvent.flowCode.startsWith('alert')") @Override public void processHandler(ProcessEvent processEvent) { - String message = null; - String assignName = null; - if (ObjectUtil.isNotEmpty(processEvent.getParams())){ - message = ObjectUtil.isNotEmpty(processEvent.getParams().get("message"))?(String)processEvent.getParams().get("message"):null; - if ((Boolean) processEvent.getParams().get("assign")) { - assignName = ObjectUtil.isNotEmpty(processEvent.getParams().get("handler"))?(String)processEvent.getParams().get("handler"):null; - } - } - - alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus(),processEvent.getIsIllegal(),processEvent.getAlertType(),message,assignName); + alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus(),processEvent.getIsIllegal(),processEvent.getAlertType(),null,null); } /** @@ -55,7 +46,12 @@ public class FlwAlertHandler implements FlwCommonHandler { @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('alert')") @Override public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { - alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),null,null); + String assignName = null; + if (ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams())){ + assignName = ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams().get("handler"))?(String)processCreateTaskEvent.getParams().get("handler"):null; + } + + alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),processCreateTaskEvent.getMessage(),assignName); } /** diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 272f9de..5d6202b 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -50,9 +50,11 @@ public class WorkflowGlobalListener implements GlobalListener { String businessId = instance.getBusinessId(); String flowStatus = instance.getFlowStatus(); Task task = listenerVariable.getTask(); + Map variable = listenerVariable.getVariable(); + FlowParams flowParams = listenerVariable.getFlowParams(); if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) { // 判断流程状态(发布审批中事件) - flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId); + flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId,variable,flowParams.getMessage()); } } 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 4524aea..7d896e1 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 @@ -15,6 +15,7 @@ import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -202,4 +203,12 @@ public interface IFlwTaskService { */ List getPermissions(); + /** + * 获取所有审批节点 + * @param nodeCode + * @param definitionId + * @return + */ + List getByNodeCodes(String nodeCode,Long definitionId); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java index be12f87..c611d1a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java @@ -93,4 +93,5 @@ public interface WorkflowService { boolean processInvalid(Long instanceId); List currentTaskAllUser(Long taskId); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java index 01732ec..de6e64a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java @@ -25,7 +25,6 @@ public class FlwDepartServiceImpl extends ServiceImpl updateWrapper = new LambdaQueryWrapper<>(); updateWrapper.eq(FlowDepart::getFlowCode, flowDepart.getFlowCode()); this.baseMapper.delete(updateWrapper); 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 8312daf..6f3a21c 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 @@ -97,9 +97,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Autowired private ApplicationContext applicationContext; - @Autowired - private RemoteBusinessAlertService remoteBusinessAlertService; - /** * 启动任务 * @@ -149,7 +146,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setProcessInstanceId(instance.getId()); dto.setTaskId(taskList.get(0).getId()); - remoteBusinessAlertService.updateAlertStatus(startProcessBo.getBusinessId(),flowParams.getFlowStatus(),null,null,null,null); + executeTask(taskList.get(0).getId()); return dto; } @@ -181,12 +178,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 FlowParams flowParams = new FlowParams(); + + Map variables = completeTaskBo.getVariables(); // 流程变量 - completeTaskBo.getVariables().put("flag",completeTaskBo.getFlag()); - completeTaskBo.getVariables().put("assign",completeTaskBo.getAssign()); - completeTaskBo.getVariables().put("handler", completeTaskBo.getHandler()); + variables.put("flag",completeTaskBo.getFlag()); + variables.put("assign",completeTaskBo.getAssign()); + variables.put("handler", completeTaskBo.getHandler()); - flowParams.variable(completeTaskBo.getVariables()); + flowParams.variable(variables); flowParams.skipType(SkipType.PASS.getKey()); flowParams.message(completeTaskBo.getMessage()); flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); @@ -320,6 +319,11 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return SpringUtils.getBean(WorkflowPermissionHandler.class).permissions(); } + @Override + public List getByNodeCodes(String nodeCode, Long definitionId) { + return nodeService.getByNodeCodes(Collections.singletonList(nodeCode), definitionId); + } + /** * 查询当前用户的已办任务 * 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 2f98ecc..494fe0d 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 @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.warm.flow.core.entity.Node; import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; @@ -19,8 +20,11 @@ import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.service.WorkflowService; import org.springframework.stereotype.Service; +import java.lang.reflect.Field; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 通用 工作流服务实现