update 优化 实体类隔离

This commit is contained in:
疯狂的狮子Li 2025-01-11 19:21:01 +08:00
parent 54e4a8c023
commit 89c1cf63eb
11 changed files with 173 additions and 31 deletions

View File

@ -0,0 +1,71 @@
package org.dromara.common.core.domain.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 办理任务请求对象
*
* @author may
*/
@Data
public class CompleteTaskDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 任务id
*/
private Long taskId;
/**
* 附件id
*/
private String fileId;
/**
* 抄送人员
*/
private List<FlowCopyDTO> flowCopyList;
/**
* 消息类型
*/
private List<String> messageType;
/**
* 办理意见
*/
private String message;
/**
* 消息通知
*/
private String notice;
/**
* 流程变量
*/
private Map<String, Object> variables;
/**
* 扩展变量(此处为逗号分隔的ossId)
*/
private String ext;
public Map<String, Object> getVariables() {
if (variables == null) {
return new HashMap<>(16);
}
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
return variables;
}
}

View File

@ -0,0 +1,30 @@
package org.dromara.common.core.domain.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 抄送
*
* @author may
*/
@Data
public class FlowCopyDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
private Long userId;
/**
* 用户名称
*/
private String userName;
}

View File

@ -0,0 +1,45 @@
package org.dromara.common.core.domain.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* 启动流程对象
*
* @author may
*/
@Data
public class StartProcessDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 业务唯一值id
*/
private String businessId;
/**
* 流程定义编码
*/
private String flowCode;
/**
* 流程变量前端会提交一个元素{'entity': {业务详情数据对象}}
*/
private Map<String, Object> variables;
public Map<String, Object> getVariables() {
if (variables == null) {
return new HashMap<>(16);
}
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
return variables;
}
}

View File

@ -1,7 +1,7 @@
package org.dromara.common.core.service; package org.dromara.common.core.service;
import org.dromara.common.core.domain.bo.CompleteTaskBo; import org.dromara.common.core.domain.dto.CompleteTaskDTO;
import org.dromara.common.core.domain.bo.StartProcessBo; import org.dromara.common.core.domain.dto.StartProcessDTO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -63,16 +63,16 @@ public interface WorkflowService {
/** /**
* 启动流程 * 启动流程
* *
* @param startProcessBo 参数 * @param startProcess 参数
* @return 结果 * @return 结果
*/ */
Map<String, Object> startWorkFlow(StartProcessBo startProcessBo); Map<String, Object> startWorkFlow(StartProcessDTO startProcess);
/** /**
* 办理任务 * 办理任务
* *
* @param completeTaskBo 参数 * @param completeTask 参数
* @return 结果 * @return 结果
*/ */
boolean completeTask(CompleteTaskBo completeTaskBo); boolean completeTask(CompleteTaskDTO completeTask);
} }

View File

@ -2,8 +2,6 @@ package org.dromara.workflow.controller;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.bo.CompleteTaskBo;
import org.dromara.common.core.domain.bo.StartProcessBo;
import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;

View File

@ -1,4 +1,4 @@
package org.dromara.common.core.domain.bo; package org.dromara.workflow.domain.bo;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
@ -36,7 +36,7 @@ public class CompleteTaskBo implements Serializable {
/** /**
* 抄送人员 * 抄送人员
*/ */
private List<FlowCopy> flowCopyList; private List<FlowCopyBo> flowCopyList;
/** /**
* 消息类型 * 消息类型

View File

@ -1,4 +1,4 @@
package org.dromara.common.core.domain.bo; package org.dromara.workflow.domain.bo;
import lombok.Data; import lombok.Data;
@ -12,7 +12,7 @@ import java.io.Serializable;
* @author may * @author may
*/ */
@Data @Data
public class FlowCopy implements Serializable { public class FlowCopyBo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -1,4 +1,4 @@
package org.dromara.common.core.domain.bo; package org.dromara.workflow.domain.bo;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -1,7 +1,5 @@
package org.dromara.workflow.service; package org.dromara.workflow.service;
import org.dromara.common.core.domain.bo.CompleteTaskBo;
import org.dromara.common.core.domain.bo.StartProcessBo;
import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;

View File

@ -11,8 +11,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.bo.CompleteTaskBo;
import org.dromara.common.core.domain.bo.StartProcessBo;
import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
@ -39,7 +37,6 @@ import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskAssigneeType;
import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.bo.*;
import org.dromara.common.core.domain.bo.FlowCopy;
import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowHisTaskVo;
import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo;
import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.handler.FlowProcessEventHandler;
@ -139,7 +136,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
List<String> messageType = completeTaskBo.getMessageType(); List<String> messageType = completeTaskBo.getMessageType();
String notice = completeTaskBo.getNotice(); String notice = completeTaskBo.getNotice();
// 获取抄送人 // 获取抄送人
List<FlowCopy> flowCopyList = completeTaskBo.getFlowCopyList(); List<FlowCopyBo> flowCopyList = completeTaskBo.getFlowCopyList();
FlowTask flowTask = flowTaskMapper.selectById(taskId); FlowTask flowTask = flowTaskMapper.selectById(taskId);
Instance ins = insService.getById(flowTask.getInstanceId()); Instance ins = insService.getById(flowTask.getInstanceId());
// 获取流程定义信息 // 获取流程定义信息
@ -175,7 +172,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
* @param task (当前任务)未办理的任务 * @param task (当前任务)未办理的任务
* @param flowCopyList 抄送人 * @param flowCopyList 抄送人
*/ */
private void setHandler(Instance instance, FlowTask task, List<FlowCopy> flowCopyList) { private void setHandler(Instance instance, FlowTask task, List<FlowCopyBo> flowCopyList) {
if (ObjectUtil.isNull(instance)) { if (ObjectUtil.isNull(instance)) {
return; return;
} }
@ -208,7 +205,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
* @param task 任务信息 * @param task 任务信息
* @param flowCopyList 抄送人 * @param flowCopyList 抄送人
*/ */
public void setCopy(FlowTask task, List<FlowCopy> flowCopyList) { public void setCopy(FlowTask task, List<FlowCopyBo> flowCopyList) {
if (CollUtil.isEmpty(flowCopyList)) { if (CollUtil.isEmpty(flowCopyList)) {
return; return;
} }
@ -225,7 +222,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
FlowParams flowParams = FlowParams.build(); FlowParams flowParams = FlowParams.build();
flowParams.skipType(SkipType.NONE.getKey()); flowParams.skipType(SkipType.NONE.getKey());
flowParams.hisStatus(TaskStatusEnum.COPY.getStatus()); flowParams.hisStatus(TaskStatusEnum.COPY.getStatus());
flowParams.message("【抄送给】" + StreamUtils.join(flowCopyList, FlowCopy::getUserName)); flowParams.message("【抄送给】" + StreamUtils.join(flowCopyList, FlowCopyBo::getUserName));
HisTask hisTask = hisTaskService.setSkipHisTask(task, flowNode, flowParams); HisTask hisTask = hisTaskService.setSkipHisTask(task, flowNode, flowParams);
hisTask.setCreateTime(updateTime); hisTask.setCreateTime(updateTime);
hisTask.setUpdateTime(updateTime); hisTask.setUpdateTime(updateTime);

View File

@ -1,12 +1,15 @@
package org.dromara.workflow.service.impl; package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.bo.CompleteTaskBo; import org.dromara.common.core.domain.dto.CompleteTaskDTO;
import org.dromara.common.core.domain.bo.StartProcessBo; import org.dromara.common.core.domain.dto.StartProcessDTO;
import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.service.WorkflowService;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.warm.flow.orm.entity.FlowInstance;
import org.dromara.workflow.domain.bo.CompleteTaskBo;
import org.dromara.workflow.domain.bo.StartProcessBo;
import org.dromara.workflow.service.IFlwDefinitionService; import org.dromara.workflow.service.IFlwDefinitionService;
import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwInstanceService;
import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.service.IFlwTaskService;
@ -26,7 +29,7 @@ public class WorkflowServiceImpl implements WorkflowService {
private final IFlwInstanceService flwInstanceService; private final IFlwInstanceService flwInstanceService;
private final IFlwDefinitionService flwDefinitionService; private final IFlwDefinitionService flwDefinitionService;
private final IFlwTaskService iFlwTaskService; private final IFlwTaskService flwTaskService;
/** /**
* 删除流程实例 * 删除流程实例
@ -97,20 +100,20 @@ public class WorkflowServiceImpl implements WorkflowService {
/** /**
* 启动流程 * 启动流程
* *
* @param startProcessBo 参数 * @param startProcess 参数
*/ */
@Override @Override
public Map<String, Object> startWorkFlow(StartProcessBo startProcessBo) { public Map<String, Object> startWorkFlow(StartProcessDTO startProcess) {
return iFlwTaskService.startWorkFlow(startProcessBo); return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class));
} }
/** /**
* 办理任务 * 办理任务
* *
* @param completeTaskBo 参数 * @param completeTask 参数
*/ */
@Override @Override
public boolean completeTask(CompleteTaskBo completeTaskBo) { public boolean completeTask(CompleteTaskDTO completeTask) {
return iFlwTaskService.completeTask(completeTaskBo); return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class));
} }
} }