diff --git a/db/流程.sql b/db/流程.sql index 696edddb..d77fa091 100644 --- a/db/流程.sql +++ b/db/流程.sql @@ -78,7 +78,8 @@ create table process_all prc_mes varchar(255) comment '流程描述', prc_num varchar(50) comment '流程编号', create_user_id varchar(50) comment '创建人id', - prc_type varchar(50) comment '流程类型', + prc_type tinyint(4) comment '流程类型', + prc_status tinyint(4) comment '流程状态(1未完成,2已完成,3已撤回)', create_user_name varchar(255) comment '发起人名称', mes longtext comment 'json信息', create_time datetime default current_timestamp comment '创建时间', diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ActivitiController.java b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ActivitiController.java index 38c3e985..a88300a7 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ActivitiController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ActivitiController.java @@ -7,13 +7,12 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.DictPoint; import com.jero.common.constant.enums.LanguageEnum; +import com.jero.common.system.vo.LoginUser; import com.jero.common.util.MessageUtils; +import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessModelNode; import com.jero.modules.activiti.entity.ProcessNode; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.activiti.service.ProcessNodeService; -import com.jero.modules.activiti.service.ProcessModelNodeService; -import com.jero.modules.activiti.service.ProcessService; +import com.jero.modules.activiti.service.*; import com.jero.modules.laws.common.constant.ResultCommon; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; @@ -28,6 +27,7 @@ import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; @@ -61,11 +61,16 @@ public class ActivitiController { private ProcessModelNodeService modelNodeService; @Resource private ProcessNodeLinkService processNodeLinkService; + @Resource + private ProcessAllService processAllService; @ApiOperation(value="启动流程") @PostMapping("/start") public Result> start(@RequestBody Map map) { String key = map.get("key").toString(); + String prcName = map.get("prcName").toString(); + String prcNum = map.get("prcNum").toString(); + Date dueTime = (Date) map.get("dueTime"); // 1、创建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 2、获取RunTimeService @@ -74,12 +79,23 @@ public class ActivitiController { // 3、根据流程key启动流程 ProcessInstance processInstance = runtimeService .startProcessInstanceByKey(key, map); + String processInstanceId = processInstance.getId(); + //更新流程总表 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + process.setCreateUserId(loginUser.getId()); + process.setPrcName(prcName); + process.setPrcNum(prcNum); + process.setDueTime(dueTime); + process.setProjectId("业务id"); + processAllService.updateById(process); + String processDefinitionId = processInstance.getProcessDefinitionId(); // 输出内容 Map map1 = new HashMap<>(); map1.put("流程Id:", processInstance.getDeploymentId()); map1.put("流程定义id:", processDefinitionId); - map1.put("流程实例id:", processInstance.getId()); + map1.put("流程实例id:", processInstanceId); map1.put("当前活动Id:", processInstance.getActivityId()); String mainDrafter = map.get("mainDrafter").toString(); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java index ef11df51..4392578c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java @@ -10,6 +10,8 @@ import com.jero.common.util.MessageUtils; import com.jero.modules.activiti.entity.ProcessModelNode; import com.jero.modules.activiti.listener.CompleteListener; import com.jero.modules.activiti.listener.CreateListener; +import com.jero.modules.activiti.listener.EndListener; +import com.jero.modules.activiti.listener.StartListener; import com.jero.modules.activiti.service.ProcessNodeService; import com.jero.modules.activiti.service.ProcessModelNodeService; import com.jero.modules.activiti.util.CreatedTools; @@ -26,6 +28,7 @@ import org.activiti.bpmn.model.Process; import org.activiti.editor.constants.ModelDataJsonConstants; import org.activiti.editor.language.json.converter.BpmnJsonConverter; import org.activiti.engine.RepositoryService; +import org.activiti.engine.delegate.BaseExecutionListener; import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.repository.*; import org.apache.commons.lang3.StringUtils; @@ -90,7 +93,19 @@ public class ModelerController { repositoryService.saveModel(model); String modelId = model.getId(); Process mainProcess = bpmnModel.getMainProcess(); - //向所有userTask节点增加创建和完成时任务监听器 + List executionListeners = mainProcess.getExecutionListeners(); + ActivitiListener startListener = new ActivitiListener(); + startListener.setEvent(BaseExecutionListener.EVENTNAME_START); + startListener.setImplementationType("class"); + startListener.setImplementation(StartListener.class.getName()); + executionListeners.add(startListener); + ActivitiListener endListener = new ActivitiListener(); + endListener.setEvent(BaseExecutionListener.EVENTNAME_END); + endListener.setImplementationType("class"); + endListener.setImplementation(EndListener.class.getName()); + executionListeners.add(endListener); + mainProcess.setExecutionListeners(executionListeners); + //向所有userTask节点增加创建和完成时任务监听器工作 Collection flowElements = mainProcess.getFlowElements(); for (FlowElement flowElement : flowElements) { if (flowElement instanceof UserTask) { diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/controller/WorkCenterController.java b/laws-modules/src/main/java/com/jero/modules/activiti/controller/WorkCenterController.java new file mode 100644 index 00000000..f3150dc1 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/controller/WorkCenterController.java @@ -0,0 +1,18 @@ +package com.jero.modules.activiti.controller; + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author liJiaRao + * @date 2023-10-16 15:50 + */ +@Slf4j +@RestController +@Api(tags = "工作中心") +@RequestMapping("/workCenter") +public class WorkCenterController { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java new file mode 100644 index 00000000..9b392af4 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java @@ -0,0 +1,120 @@ +package com.jero.modules.activiti.entity; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; + +/** + *流程总表 + *@author liJiaRao + *@date 2023-10-16 15:49 + */ +@ApiModel(description="流程总表") +@Data +@TableName(value = "process_all") +public class ProcessAll { + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value="") + private String id; + + /** + * 流程名称 + */ + @ApiModelProperty(value="流程名称") + private String prcName; + + /** + * 流程实例id + */ + @ApiModelProperty(value="流程实例id") + private String processInstanceId; + + /** + * 流程描述 + */ + @ApiModelProperty(value="流程描述") + private String prcMes; + + /** + * 流程编号 + */ + @ApiModelProperty(value="流程编号") + private String prcNum; + + /** + * 创建人id + */ + @ApiModelProperty(value="创建人id") + private String createUserId; + + /** + * 流程类型 + */ + @ApiModelProperty(value="流程类型") + private Integer prcType; + + /** + * 流程状态 + */ + @ApiModelProperty(value="流程状态(1未完成,2已完成,3已撤回)") + private Integer prcStatus; + + /** + * 发起人名称 + */ + @ApiModelProperty(value="发起人名称") + private String createUserName; + + /** + * json信息 + */ + @ApiModelProperty(value="json信息") + private String mes; + + /** + * 创建时间 + */ + @ApiModelProperty(value="创建时间") + private Date createTime; + + /** + * 完成时间 + */ + @ApiModelProperty(value="完成时间") + private Date endTime; + + /** + * 耗时 + */ + @ApiModelProperty(value="耗时") + private String overTime; + + /** + * 截止时间 + */ + @ApiModelProperty(value="截止时间") + private Date dueTime; + + /** + * 项目id + */ + @ApiModelProperty(value="项目id") + private String projectId; + + /** + * 项目名称 + */ + @ApiModelProperty(value="项目名称") + private String projectName; + + /** + * 流程名称(英文) + */ + @ApiModelProperty(value="流程名称(英文)") + private String prcNameEn; +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java new file mode 100644 index 00000000..d7e9fc17 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessApprovalRecord.java @@ -0,0 +1,128 @@ +package com.jero.modules.activiti.entity; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; + +/** + * + *@author liJiaRao + *@date 2023-10-16 15:49 + */ +/** + * 流程审批记录表 + */ +@ApiModel(description="流程审批记录表") +@Data +@TableName(value = "process_approval_record") +public class ProcessApprovalRecord { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value="主键") + private String id; + + /** + * 任务id + */ + @TableField(value = "task_id") + @ApiModelProperty(value="任务id") + private String taskId; + + /** + * 任务名称 + */ + @TableField(value = "task_name") + @ApiModelProperty(value="任务名称") + private String taskName; + + /** + * 流程实例id + */ + @TableField(value = "process_instance_id") + @ApiModelProperty(value="流程实例id") + private String processInstanceId; + + /** + * 资源类型 + */ + @TableField(value = "msg_type") + @ApiModelProperty(value="资源类型") + private String msgType; + + /** + * 处理人id + */ + @TableField(value = "user_id") + @ApiModelProperty(value="处理人id") + private String userId; + + /** + * 信息 + */ + @TableField(value = "mesg") + @ApiModelProperty(value="信息") + private String mesg; + + /** + * 完成注记(0未完成,1完成) + */ + @TableField(value = "finish_flag") + @ApiModelProperty(value="完成注记(0未完成,1完成)") + private Integer finishFlag; + + /** + * 项目id + */ + @TableField(value = "project_id") + @ApiModelProperty(value="项目id") + private String projectId; + + /** + * 审批意见(0同意,1不同意) + */ + @TableField(value = "commit_flag") + @ApiModelProperty(value="审批意见(0同意,1不同意)") + private Integer commitFlag; + + /** + * 审批内容 + */ + @TableField(value = "commit_text") + @ApiModelProperty(value="审批内容") + private String commitText; + + /** + * 流程名称 + */ + @TableField(value = "prc_name") + @ApiModelProperty(value="流程名称") + private String prcName; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value="创建时间") + private Date createTime; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value="更新时间") + private Date updateTime; + + /** + * 完成时间 + */ + @TableField(value = "end_time") + @ApiModelProperty(value="完成时间") + private Date endTime; +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessStatusEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessStatusEnum.java new file mode 100644 index 00000000..fe986deb --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessStatusEnum.java @@ -0,0 +1,24 @@ +package com.jero.modules.activiti.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 流程状态 + * @author liJiaRao + * @date 2023-10-16 16:05 + */ +@Getter +@AllArgsConstructor +public enum ProcessStatusEnum { + /** + * A + */ + INCOMPLETE("未完成", 1), + COMPLETED("已完成", 2), + WITHDRAWN("已撤回", 3); + + private String name; + private Integer value; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java new file mode 100644 index 00000000..928af1fc --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java @@ -0,0 +1,39 @@ +package com.jero.modules.activiti.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author liJiaRao + * @date 2023-10-16 16:05 + */ +@Getter +@AllArgsConstructor +public enum ProcessTypeEnum { + /** + * A + */ + A("企标制修订流程", 1,"Process_17bj7d9"); + + private String name; + private Integer value; + private String key; + + public static String getNameByValue(Integer value) { + for (ProcessTypeEnum enumObject : values()) { + if (enumObject.getValue().equals(value)) { + return enumObject.getName(); + } + } + return null; + } + + public static Integer getValueByKey(String key) { + for (ProcessTypeEnum enumObject : values()) { + if (enumObject.getKey().equals(key)) { + return enumObject.getValue(); + } + } + return null; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java index ca4248ed..dd157ac8 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java @@ -1,5 +1,8 @@ package com.jero.modules.activiti.listener; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.activiti.util.SpringContextUtil; import org.activiti.bpmn.model.ActivitiListener; import java.util.Date; @@ -20,6 +23,11 @@ import org.activiti.engine.task.IdentityLink; public class CreateListener implements TaskListener { @Override public void notify(DelegateTask delegateTask) { + //流程信息 + ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class); + //流程审批信息 + ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); + String id = delegateTask.getId(); String name = delegateTask.getName(); String description = delegateTask.getDescription(); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/EndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/EndListener.java index b08a9272..0af96b3d 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/EndListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/EndListener.java @@ -1,15 +1,17 @@ package com.jero.modules.activiti.listener; +import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.ExecutionListener; import org.activiti.engine.delegate.TaskListener; /** * @author liJiaRao * @date 2023-10-13 16:43 */ -public class EndListener implements TaskListener { +public class EndListener implements ExecutionListener { @Override - public void notify(DelegateTask delegateTask) { + public void notify(DelegateExecution execution) { } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/StartListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/StartListener.java new file mode 100644 index 00000000..98fc15c0 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/StartListener.java @@ -0,0 +1,52 @@ +package com.jero.modules.activiti.listener; + +import java.util.List; + +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.enums.ProcessStatusEnum; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.activiti.util.SpringContextUtil; +import org.activiti.bpmn.model.ActivitiListener; +import org.activiti.bpmn.model.FlowElement; + +import org.activiti.engine.*; +import org.activiti.engine.delegate.DelegateExecution; +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.ExecutionListener; +import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.repository.ProcessDefinition; +import org.activiti.engine.runtime.NativeProcessInstanceQuery; +import org.activiti.engine.runtime.ProcessInstance; + +/** + * @author liJiaRao + * @date 2023-10-13 16:43 + */ +public class StartListener implements ExecutionListener { + + @Override + public void notify(DelegateExecution execution) { + //流程信息 + ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class); + //流程审批信息 + ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); + String id = execution.getId(); + String processInstanceId = execution.getProcessInstanceId(); + String processDefinitionId = execution.getProcessDefinitionId(); + + ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); + RepositoryService repositoryService = processEngine.getRepositoryService(); + ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processDefinitionId); + + String name = processDefinition.getName(); + String key = processDefinition.getKey(); + + ProcessAll processAll = new ProcessAll(); + processAll.setProcessInstanceId(processInstanceId); + processAll.setPrcType(ProcessTypeEnum.getValueByKey(key)); + processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue()); + processAllService.save(processAll); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/mapper/ProcessAllMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/ProcessAllMapper.java new file mode 100644 index 00000000..f5e78549 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/ProcessAllMapper.java @@ -0,0 +1,12 @@ +package com.jero.modules.activiti.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.entity.ProcessAll; + +/** + * + *@author liJiaRao + *@date 2023-10-16 15:49 + */ +public interface ProcessAllMapper extends BaseMapper { +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/mapper/ProcessApprovalRecordMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/ProcessApprovalRecordMapper.java new file mode 100644 index 00000000..33186fb4 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/ProcessApprovalRecordMapper.java @@ -0,0 +1,12 @@ +package com.jero.modules.activiti.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; + +/** + * + *@author liJiaRao + *@date 2023-10-16 15:49 + */ +public interface ProcessApprovalRecordMapper extends BaseMapper { +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml new file mode 100644 index 00000000..83c370ca --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id, prc_name, process_instance_id, prc_mes, prc_num, create_user_id, prc_type, create_user_name, + mes, create_time, end_time, over_time, due_time, project_id, project_name, prc_name_en + + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessApprovalRecordMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessApprovalRecordMapper.xml new file mode 100644 index 00000000..99dc5d98 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessApprovalRecordMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, task_id, task_name, process_instance_id, msg_type, user_id, mesg, finish_flag, + project_id, commit_flag, commit_text, prc_name, create_time, update_time, end_time + + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java new file mode 100644 index 00000000..b359c8ce --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java @@ -0,0 +1,23 @@ +package com.jero.modules.activiti.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.activiti.mapper.ProcessAllMapper; +import com.jero.modules.activiti.entity.ProcessAll; +/** + * + *@author liJiaRao + *@date 2023-10-16 15:49 + */ +@Service +public class ProcessAllService extends ServiceImpl { + + public ProcessAll getByProcessInstanceId(String processInstanceId){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId); + return this.getOne(wrapper); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java new file mode 100644 index 00000000..36c1ee45 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java @@ -0,0 +1,17 @@ +package com.jero.modules.activiti.service; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +/** + * + *@author liJiaRao + *@date 2023-10-16 15:49 + */ +@Service +public class ProcessApprovalRecordService extends ServiceImpl { + +}