update 工作中心代码(未完成)

This commit is contained in:
lijiarao
2023-10-17 18:23:52 +08:00
parent 300eec132c
commit 2069decf44
22 changed files with 408 additions and 105 deletions
+4 -1
View File
@@ -63,8 +63,11 @@ create table process_approval_record
project_id varchar(32) comment '项目id', project_id varchar(32) comment '项目id',
commit_flag tinyint(4) comment '审批意见(0同意,1不同意)', commit_flag tinyint(4) comment '审批意见(0同意,1不同意)',
commit_text varchar(255) comment '审批内容', commit_text varchar(255) comment '审批内容',
commit_file varchar(1000) comment '审批附件',
has_delegate_task tinyint(4) default 0 comment '是否派发过加签任务',
is_delegate_task tinyint(4) default 0 comment '是否加签任务',
prc_name varchar(255) comment '流程名称', prc_name varchar(255) comment '流程名称',
create_time datetime default current_timestamp comment '创建时间', create_time datetime comment '创建时间',
update_time datetime comment '更新时间', update_time datetime comment '更新时间',
end_time datetime comment '完成时间' end_time datetime comment '完成时间'
) comment '流程审批记录表'; ) comment '流程审批记录表';
@@ -294,6 +294,11 @@ public class SysBaseAPIFallback implements ISysBaseAPI {
return null; return null;
} }
@Override
public List<DictModel> translateUserRealNameFromTableByKeys(String values) {
return null;
}
@Override @Override
public void sendEmailMsg(String email,String title,String content) { public void sendEmailMsg(String email,String title,String content) {
// do other // do other
@@ -140,4 +140,6 @@ public interface CommonAPI {
String queryTableDictTextByKey(String table,String text,String code, String key); String queryTableDictTextByKey(String table,String text,String code, String key);
String translateUserRealNameFromTable(String id); String translateUserRealNameFromTable(String id);
List<DictModel> translateUserRealNameFromTableByKeys(String values);
} }
@@ -250,7 +250,12 @@ public class DictAspect {
String values = String.join(",", needTranslDataTable); String values = String.join(",", needTranslDataTable);
log.info("translateDictFromTableByKeys.dictCode:" + dictCode); log.info("translateDictFromTableByKeys.dictCode:" + dictCode);
log.info("translateDictFromTableByKeys.values:" + values); log.info("translateDictFromTableByKeys.values:" + values);
List<DictModel> texts = commonAPI.translateDictFromTableByKeys(table, text, code, values); List<DictModel> texts;
if ("sys_user".equals(table)&&"realname".equals(text)&&"id".equals(code)){
texts = commonAPI.translateUserRealNameFromTableByKeys(values);
}else {
texts = commonAPI.translateDictFromTableByKeys(table, text, code, values);
}
log.info("translateDictFromTableByKeys.result:" + texts); log.info("translateDictFromTableByKeys.result:" + texts);
List<DictModel> list = translText.computeIfAbsent(dictCode, k -> new ArrayList<>()); List<DictModel> list = translText.computeIfAbsent(dictCode, k -> new ArrayList<>());
list.addAll(texts); list.addAll(texts);
@@ -123,7 +123,7 @@ public class ShiroConfig {
//测试示例 //测试示例
filterChainDefinitionMap.put("/test/bigScreen/**", "anon"); //大屏模板例子 filterChainDefinitionMap.put("/test/bigScreen/**", "anon"); //大屏模板例子
//activti //activti
filterChainDefinitionMap.put("/modeler/**", "anon"); //filterChainDefinitionMap.put("/modeler/**", "anon");
filterChainDefinitionMap.put("/activitiModel/**", "anon"); filterChainDefinitionMap.put("/activitiModel/**", "anon");
filterChainDefinitionMap.put("/editor-app/**", "anon"); filterChainDefinitionMap.put("/editor-app/**", "anon");
filterChainDefinitionMap.put("/service/**", "anon"); filterChainDefinitionMap.put("/service/**", "anon");
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.system.vo.DictModel;
import com.jero.modules.system.vo.SysUserRoleNameVo; import com.jero.modules.system.vo.SysUserRoleNameVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.entity.SysUser;
@@ -169,4 +170,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
List<SysUser> getUserListByDepIds(@Param("departIds") List<String> departIds); List<SysUser> getUserListByDepIds(@Param("departIds") List<String> departIds);
String translateUserRealNameFromTable(@Param("id") String id); String translateUserRealNameFromTable(@Param("id") String id);
List<DictModel> translateUserRealNameFromTableByKeys(@Param("keys") List<String> keys);
} }
@@ -219,4 +219,13 @@
select concat(realname,'',username,'') from sys_user select concat(realname,'',username,'') from sys_user
where id = #{id} where id = #{id}
</select> </select>
<select id="translateUserRealNameFromTableByKeys" resultType="com.jero.common.system.vo.DictModel">
select concat(realname,'',username,'') as "text", id as "value" from sys_user
where id IN (
<foreach item="key" collection="keys" separator=",">
#{key}
</foreach>
)
</select>
</mapper> </mapper>
@@ -1186,4 +1186,9 @@ public class SysBaseApiImpl implements ISysBaseAPI {
return userMapper.translateUserRealNameFromTable(id); return userMapper.translateUserRealNameFromTable(id);
} }
@Override
public List<DictModel> translateUserRealNameFromTableByKeys(String keys) {
return userMapper.translateUserRealNameFromTableByKeys(Arrays.asList(keys.split(",")));
}
} }
@@ -2,6 +2,8 @@ package com.jero.modules.activiti.config;
import com.jero.modules.activiti.service.impl.image.ICustomProcessDiagramGenerator; import com.jero.modules.activiti.service.impl.image.ICustomProcessDiagramGenerator;
import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.cfg.AbstractProcessEngineConfigurator;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.form.DoubleFormType; import org.activiti.engine.impl.form.DoubleFormType;
import org.activiti.engine.impl.history.HistoryLevel; import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.spring.SpringProcessEngineConfiguration; import org.activiti.spring.SpringProcessEngineConfiguration;
@@ -20,14 +22,15 @@ import javax.sql.DataSource;
* @date 2023-09-05 17:53 * @date 2023-09-05 17:53
*/ */
@Configuration @Configuration
public class ActivitiConfig { public class ActivitiConfig extends AbstractProcessEngineConfigurator {
@Resource @Resource
private ICustomProcessDiagramGenerator customProcessDiagramGenerator; private ICustomProcessDiagramGenerator customProcessDiagramGenerator;
@Autowired @Autowired
private DataSource dataSource; private DataSource dataSource;
@Autowired @Autowired
private PlatformTransactionManager transactionManager; private PlatformTransactionManager transactionManager;
@Autowired
private MyGen myGen;
/** /**
* 初始化配置 * 初始化配置
* *
@@ -52,5 +55,15 @@ public class ActivitiConfig {
return configuration; return configuration;
} }
@Bean
public ProcessEngineConfigurationImpl processEngineConfigurationImpl(ProcessEngineConfigurationImpl processEngineConfigurationImpl) {
//自定义id生成规则
//设置ProcessEngineConfigurationImpl里的CustomIdGenerator
processEngineConfigurationImpl.setIdGenerator(myGen);
//设置DbSqlSessionFactory的CustomIdGenerator ,否则流程id,任务id,实例id依然是用DbIdGenerator生成
processEngineConfigurationImpl.getDbSqlSessionFactory().setIdGenerator(myGen);
return processEngineConfigurationImpl;
}
} }
@@ -1,17 +1,25 @@
package com.jero.modules.activiti.config; package com.jero.modules.activiti.config;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import org.activiti.engine.impl.cfg.IdGenerator; import org.activiti.engine.impl.cfg.IdGenerator;
import org.springframework.stereotype.Component;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
/** /**
* @author liJiaRao * @author liJiaRao
* @date 2023-09-05 17:39 * @date 2023-09-05 17:39
*/ */
@Component
public class MyGen implements IdGenerator { public class MyGen implements IdGenerator {
private AtomicLong aLong = new AtomicLong(100);
@Override @Override
public synchronized String getNextId() { public synchronized String getNextId() {
return String.valueOf(aLong.incrementAndGet()); DateTime date = DateUtil.date();
//标准日期格式:yyyyMMddHHmmssSSS
return DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN);
} }
} }
@@ -1,16 +1,16 @@
package com.jero.modules.activiti.controller; package com.jero.modules.activiti.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.DictPoint; import com.jero.common.aspect.annotation.DictPoint;
import com.jero.common.constant.enums.LanguageEnum; import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils; import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessModelNode; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode; import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.service.*; import com.jero.modules.activiti.service.*;
import com.jero.modules.laws.common.constant.ResultCommon; import com.jero.modules.laws.common.constant.ResultCommon;
@@ -28,7 +28,6 @@ import org.activiti.engine.task.TaskQuery;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -63,13 +62,15 @@ public class ActivitiController {
private ProcessNodeLinkService processNodeLinkService; private ProcessNodeLinkService processNodeLinkService;
@Resource @Resource
private ProcessAllService processAllService; private ProcessAllService processAllService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@ApiOperation(value="启动流程") @ApiOperation(value="启动流程")
@PostMapping("/start") @PostMapping("/start")
public Result<Map<String, String>> start(@RequestBody Map<String,Object> map) { public Result<Map<String, String>> start(@RequestBody Map<String,Object> map) {
String key = map.get("key").toString(); String key = map.get("key").toString();
String prcName = map.get("prcName").toString(); String prcName = map.get("prcName").toString();
String prcNum = map.get("prcNum").toString(); String prcMes = map.get("prcMes").toString();
Date dueTime = (Date) map.get("dueTime"); Date dueTime = (Date) map.get("dueTime");
// 1、创建ProcessEngine // 1、创建ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
@@ -80,12 +81,12 @@ public class ActivitiController {
ProcessInstance processInstance = runtimeService ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(key, map); .startProcessInstanceByKey(key, map);
String processInstanceId = processInstance.getId(); String processInstanceId = processInstance.getId();
//更新流程总表 //根据流程实例id更新流程总表
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
process.setCreateUserId(loginUser.getId()); process.setCreateUserId(loginUser.getId());
process.setPrcName(prcName); process.setPrcName(prcName);
process.setPrcNum(prcNum); process.setPrcMes(prcMes);
process.setDueTime(dueTime); process.setDueTime(dueTime);
process.setProjectId("业务id"); process.setProjectId("业务id");
processAllService.updateById(process); processAllService.updateById(process);
@@ -108,16 +109,19 @@ public class ActivitiController {
public Result<List<Map<String, String>>> testFindPersonalTaskList(@RequestParam(value = "assignee") String assignee, public Result<List<Map<String, String>>> testFindPersonalTaskList(@RequestParam(value = "assignee") String assignee,
@RequestParam(value = "processKey") String processKey, @RequestParam(value = "processKey") String processKey,
@RequestParam(value = "group") String group) { @RequestParam(value = "group") String group) {
// 根据流程key 和 任务负责人 查询任务 //根据流程key 和 任务负责人 查询任务
TaskQuery taskQuery = taskService.createTaskQuery(); TaskQuery taskQuery = taskService.createTaskQuery();
if (StringUtils.isNotBlank(assignee)) { if (StringUtils.isNotBlank(assignee)) {
taskQuery.taskAssignee(assignee);//只查询该任务负责人的任务 //只查询该任务负责人的任务
taskQuery.taskAssignee(assignee);
} }
if (StringUtils.isNotBlank(group)) { if (StringUtils.isNotBlank(group)) {
taskQuery.taskCandidateGroup(group);//只查询该组的任务 //只查询该组的任务
taskQuery.taskCandidateGroup(group);
} }
if (StringUtils.isNotBlank(processKey)) { if (StringUtils.isNotBlank(processKey)) {
taskQuery.processDefinitionKey(processKey); //流程Key //流程Key
taskQuery.processDefinitionKey(processKey);
} }
List<Task> list = taskQuery.list(); List<Task> list = taskQuery.list();
List<Map<String, String>> result = new ArrayList<>(); List<Map<String, String>> result = new ArrayList<>();
@@ -127,7 +131,6 @@ public class ActivitiController {
map.put("任务id", task.getId()); map.put("任务id", task.getId());
map.put("任务负责人:", task.getAssignee()); map.put("任务负责人:", task.getAssignee());
map.put("任务名称:", task.getName()); map.put("任务名称:", task.getName());
//map.put("任务名称:", task.get);
result.add(map); result.add(map);
} }
return Result.OK(result); return Result.OK(result);
@@ -138,6 +141,10 @@ public class ActivitiController {
public Result<Object> complete(@RequestBody Map<String,Object> map) { public Result<Object> complete(@RequestBody Map<String,Object> map) {
//todo 判断当前节点,执行不同的操作 //todo 判断当前节点,执行不同的操作
String taskId = map.get("taskId").toString(); String taskId = map.get("taskId").toString();
Integer commitFlag = Integer.valueOf(map.get("commitFlag").toString());
String commitText = map.get("commitText").toString();
String commitFile = map.get("commitFile").toString();
Task task=taskService.createTaskQuery() // 创建任务查询 Task task=taskService.createTaskQuery() // 创建任务查询
.taskId(taskId) // 根据任务id查询 .taskId(taskId) // 根据任务id查询
@@ -145,18 +152,17 @@ public class ActivitiController {
String taskName = task.getName(); String taskName = task.getName();
if ("填写基本信息,在线编辑,分发其他起草人".equals(taskName)){ if ("填写基本信息,在线编辑,分发其他起草人".equals(taskName)){
// todo
}else if ("其他起草人线下填写,上传".equals(taskName)){ }else if ("其他起草人线下填写,上传".equals(taskName)){
// todo
} }
//Map<String, Object> vars = new HashMap<>(); //更新审批表为完成,填充数据
//List<String> otherDrafterList = new ArrayList<>(); ProcessApprovalRecord approvalRecord = processApprovalRecordService.getByTaskId(taskId);
//otherDrafterList.add("zhangsan"); approvalRecord.setCommitFlag(commitFlag);
//otherDrafterList.add("lisi"); approvalRecord.setCommitText(commitText);
//otherDrafterList.add("wangwu"); approvalRecord.setCommitFile(commitFile);
//vars.put("leaderList", otherDrafterList); approvalRecord.setFinishFlag(YesOrNoEnum.YES.getInteger());
//Map<String, Object> map = new HashMap<>(); approvalRecord.setEndTime(new Date());
//map.put("status", 2); processApprovalRecordService.updateById(approvalRecord);
//审批节点
taskService.complete(taskId, map); taskService.complete(taskId, map);
return Result.OK(); return Result.OK();
} }
@@ -205,7 +211,6 @@ public class ActivitiController {
} }
@ApiOperation(value="签收任务") @ApiOperation(value="签收任务")
@PostMapping("/claim") @PostMapping("/claim")
public Result<Object> claim(@RequestBody Map<String,Object> map) { public Result<Object> claim(@RequestBody Map<String,Object> map) {
@@ -216,19 +221,14 @@ public class ActivitiController {
} }
/** /**
* 加签 * 加签
*
* @param taskId
* @param loginName
* @return
*/ */
@ApiOperation(value="加签/委托") @ApiOperation(value="加签/委托")
@GetMapping("/delegateTask") @GetMapping("/delegateTask")
public Result<Object> delegateTask(@RequestParam(value = "taskId") String taskId, public Result<Object> delegateTask(@RequestParam(value = "taskId") String taskId,
@RequestParam(value = "loginName") String loginName) { @RequestParam(value = "userId") String userId) {
taskService.delegateTask(taskId, loginName); taskService.delegateTask(taskId, userId);
return Result.OK(); return Result.OK();
} }
@@ -1,9 +1,30 @@
package com.jero.modules.activiti.controller; package com.jero.modules.activiti.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.service.ProcessAllService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping; import org.activiti.engine.RuntimeService;
import org.springframework.web.bind.annotation.RestController; import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @author liJiaRao * @author liJiaRao
@@ -15,4 +36,81 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/workCenter") @RequestMapping("/workCenter")
public class WorkCenterController { public class WorkCenterController {
@Resource
private ProcessAllService processAllService;
@ApiOperation(value = "查询待办流程列表")
@GetMapping("/getTodoList")
public Result<IPage<ProcessAll>> getTodoList(ProcessAll processAll,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessAll> queryWrapper = getProcessAllQueryWrapper(processAll);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId();
queryWrapper.eq("par.user_id",userId);
queryWrapper.eq("par.finish_flag",0);
Page<ProcessAll> page = new Page<>(pageNo, pageSize);
IPage<ProcessAll> todoList = processAllService.getTodoList(page, queryWrapper);
return Result.OK(todoList);
}
@ApiOperation(value = "查询已办流程列表")
@GetMapping("/getCompletedList")
public Result<?> getCompletedList(ProcessAll processAll,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessAll> queryWrapper = getProcessAllQueryWrapper(processAll);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId();
queryWrapper.eq("par.user_id",userId);
queryWrapper.eq("par.finish_flag",1);
Page<ProcessAll> page = new Page<>(pageNo, pageSize);
IPage<ProcessAll> completedList = processAllService.getCompletedList(page, queryWrapper);
return Result.OK(completedList);
}
@ApiOperation(value = "查询已发流程列表")
@GetMapping("/getSentList")
public Result<?> getSentList(ProcessAll processAll,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessAll> queryWrapper = getProcessAllQueryWrapper(processAll);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId();
queryWrapper.eq("pa.user_id",userId);
Page<ProcessAll> page = new Page<>(pageNo, pageSize);
IPage<ProcessAll> sentList = processAllService.getSentList(page, queryWrapper);
return Result.OK(sentList);
}
@NotNull
private QueryWrapper<ProcessAll> getProcessAllQueryWrapper(ProcessAll processAll) {
String prcName = processAll.getPrcName();
String prcNum = processAll.getPrcNum();
Integer prcType = processAll.getPrcType();
Integer prcStatus = processAll.getPrcStatus();
QueryWrapper<ProcessAll> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(prcName), "pa.prc_name", "%" + prcName + "%");
queryWrapper.like(StringUtils.isNotBlank(prcNum), "pa.prc_num", "%" + prcNum + "%");
queryWrapper.eq(prcType != null, "pa.prc_type", prcType);
queryWrapper.eq(prcStatus != null, "pa.prc_status", prcStatus);
return queryWrapper;
}
@ApiOperation(value = "撤销流程")
@PostMapping("/delete")
public Result<?> delete(@RequestBody Map<String, String> map) {
String processInstanceId = map.get("processInstanceId");
processAllService.delete(processInstanceId);
return Result.OK();
}
} }
@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/** /**
*流程总表 *流程总表
@@ -49,7 +52,8 @@ public class ProcessAll {
/** /**
* 创建人id * 创建人id
*/ */
@ApiModelProperty(value="创建人id") @ApiModelProperty(value="发起人id")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String createUserId; private String createUserId;
/** /**
@@ -62,6 +66,7 @@ public class ProcessAll {
* 流程状态 * 流程状态
*/ */
@ApiModelProperty(value="流程状态(1未完成,2已完成,3已撤回)") @ApiModelProperty(value="流程状态(1未完成,2已完成,3已撤回)")
@Dict(dicCode = "prc_status")
private Integer prcStatus; private Integer prcStatus;
/** /**
@@ -80,12 +85,16 @@ public class ProcessAll {
* 创建时间 * 创建时间
*/ */
@ApiModelProperty(value="创建时间") @ApiModelProperty(value="创建时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
/** /**
* 完成时间 * 完成时间
*/ */
@ApiModelProperty(value="完成时间") @ApiModelProperty(value="完成时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endTime; private Date endTime;
/** /**
@@ -98,6 +107,8 @@ public class ProcessAll {
* 截止时间 * 截止时间
*/ */
@ApiModelProperty(value="截止时间") @ApiModelProperty(value="截止时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date dueTime; private Date dueTime;
/** /**
@@ -117,4 +128,38 @@ public class ProcessAll {
*/ */
@ApiModelProperty(value="流程名称(英文)") @ApiModelProperty(value="流程名称(英文)")
private String prcNameEn; private String prcNameEn;
/**
* 处理人id
*/
@TableField(exist = false)
@ApiModelProperty(value="处理人id")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String handleUserId;
/**
* 任务id
*/
@TableField(exist = false)
@ApiModelProperty(value="任务id")
private String taskId;
/**
* 接收任务时间
*/
@TableField(exist = false)
@ApiModelProperty(value="接收任务时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date receivedTaskTime;
/**
* 接收任务时间
*/
@TableField(exist = false)
@ApiModelProperty(value="完成任务时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date completedTaskTime;
} }
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/** /**
* *
@@ -31,98 +33,109 @@ public class ProcessApprovalRecord {
/** /**
* 任务id * 任务id
*/ */
@TableField(value = "task_id")
@ApiModelProperty(value="任务id") @ApiModelProperty(value="任务id")
private String taskId; private String taskId;
/** /**
* 任务名称 * 任务名称
*/ */
@TableField(value = "task_name")
@ApiModelProperty(value="任务名称") @ApiModelProperty(value="任务名称")
private String taskName; private String taskName;
/** /**
* 流程实例id * 流程实例id
*/ */
@TableField(value = "process_instance_id")
@ApiModelProperty(value="流程实例id") @ApiModelProperty(value="流程实例id")
private String processInstanceId; private String processInstanceId;
/** /**
* 资源类型 * 资源类型
*/ */
@TableField(value = "msg_type")
@ApiModelProperty(value="资源类型") @ApiModelProperty(value="资源类型")
private String msgType; private String msgType;
/** /**
* 处理人id * 处理人id
*/ */
@TableField(value = "user_id")
@ApiModelProperty(value="处理人id") @ApiModelProperty(value="处理人id")
private String userId; private String userId;
/** /**
* 信息 * 信息
*/ */
@TableField(value = "mesg")
@ApiModelProperty(value="信息") @ApiModelProperty(value="信息")
private String mesg; private String mesg;
/** /**
* 完成注记(0未完成,1完成) * 完成注记(0未完成,1完成)
*/ */
@TableField(value = "finish_flag") @ApiModelProperty(value="完成注记(0未完成,1完成,2暂停)")
@ApiModelProperty(value="完成注记(0未完成,1完成)")
private Integer finishFlag; private Integer finishFlag;
/** /**
* 项目id * 项目id
*/ */
@TableField(value = "project_id")
@ApiModelProperty(value="项目id") @ApiModelProperty(value="项目id")
private String projectId; private String projectId;
/** /**
* 审批意见(0同意,1不同意) * 审批意见(0同意,1不同意)
*/ */
@TableField(value = "commit_flag")
@ApiModelProperty(value="审批意见(0同意,1不同意)") @ApiModelProperty(value="审批意见(0同意,1不同意)")
private Integer commitFlag; private Integer commitFlag;
/** /**
* 审批内容 * 审批内容
*/ */
@TableField(value = "commit_text")
@ApiModelProperty(value="审批内容") @ApiModelProperty(value="审批内容")
private String commitText; private String commitText;
/**
* 附件
*/
@ApiModelProperty(value="附件")
private String commitFile;
/**
* 是否派发过加签任务
*/
@ApiModelProperty(value="是否派发过加签任务")
private Integer hasDelegateTask;
/**
* 是否加签任务
*/
@ApiModelProperty(value="是否加签任务")
private Integer isDelegateTask;
/** /**
* 流程名称 * 流程名称
*/ */
@TableField(value = "prc_name")
@ApiModelProperty(value="流程名称") @ApiModelProperty(value="流程名称")
private String prcName; private String prcName;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_time")
@ApiModelProperty(value="创建时间") @ApiModelProperty(value="创建时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
/** /**
* 更新时间 * 更新时间
*/ */
@TableField(value = "update_time")
@ApiModelProperty(value="更新时间") @ApiModelProperty(value="更新时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime; private Date updateTime;
/** /**
* 完成时间 * 完成时间
*/ */
@TableField(value = "end_time")
@ApiModelProperty(value="完成时间") @ApiModelProperty(value="完成时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endTime; private Date endTime;
} }
@@ -1,5 +1,10 @@
package com.jero.modules.activiti.listener; package com.jero.modules.activiti.listener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.delegate.TaskListener;
@@ -10,10 +15,24 @@ import org.activiti.engine.delegate.TaskListener;
public class CompleteListener implements TaskListener { public class CompleteListener implements TaskListener {
@Override @Override
public void notify(DelegateTask delegateTask) { public void notify(DelegateTask delegateTask) {
System.out.println(delegateTask.getId()); //流程审批信息
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
String taskId = delegateTask.getId();
String assignee = delegateTask.getAssignee();
//更新审批信息为完成
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
wrapper.eq(ProcessApprovalRecord::getUserId,assignee);
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
approvalRecord.setFinishFlag(YesOrNoEnum.YES.getInteger());
recordService.updateById(approvalRecord);
System.out.println(taskId);
System.out.println(delegateTask.getName()); System.out.println(delegateTask.getName());
System.out.println(delegateTask.getEventName()); System.out.println(delegateTask.getEventName());
System.out.println(delegateTask.getAssignee()); System.out.println(assignee);
// todo 对接统一平台完成任务
// todo 对接统一平台生成完成任务
} }
} }
@@ -1,5 +1,6 @@
package com.jero.modules.activiti.listener; package com.jero.modules.activiti.listener;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService; import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.util.SpringContextUtil; import com.jero.modules.activiti.util.SpringContextUtil;
@@ -30,30 +31,18 @@ public class CreateListener implements TaskListener {
String id = delegateTask.getId(); String id = delegateTask.getId();
String name = delegateTask.getName(); String name = delegateTask.getName();
String description = delegateTask.getDescription();
int priority = delegateTask.getPriority();
String processInstanceId = delegateTask.getProcessInstanceId(); String processInstanceId = delegateTask.getProcessInstanceId();
String executionId = delegateTask.getExecutionId();
String processDefinitionId = delegateTask.getProcessDefinitionId();
Date createTime = delegateTask.getCreateTime(); Date createTime = delegateTask.getCreateTime();
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
boolean isSuspended = delegateTask.isSuspended();
String tenantId = delegateTask.getTenantId();
String formKey = delegateTask.getFormKey();
DelegateExecution execution = delegateTask.getExecution();
String eventName = delegateTask.getEventName();
ActivitiListener currentActivitiListener = delegateTask.getCurrentActivitiListener();
DelegationState delegationState = delegateTask.getDelegationState();
String owner = delegateTask.getOwner();
String assignee = delegateTask.getAssignee(); String assignee = delegateTask.getAssignee();
Date dueDate = delegateTask.getDueDate(); //新增待审批记录
String category = delegateTask.getCategory(); ProcessApprovalRecord approvalRecord = new ProcessApprovalRecord();
Set<IdentityLink> candidates = delegateTask.getCandidates(); approvalRecord.setTaskId(id);
approvalRecord.setTaskName(name);
System.out.println(delegateTask.getId()); approvalRecord.setProcessInstanceId(processInstanceId);
System.out.println(delegateTask.getName()); approvalRecord.setUserId(assignee);
System.out.println(delegateTask.getEventName()); approvalRecord.setFinishFlag(0);
System.out.println(delegateTask.getAssignee()); approvalRecord.setCreateTime(createTime);
// todo 对接统一平台完成任务 recordService.save(approvalRecord);
// todo 对接统一平台生成待办任务
} }
} }
@@ -1,10 +1,21 @@
package com.jero.modules.activiti.listener; package com.jero.modules.activiti.listener;
import cn.hutool.core.date.DateBetween;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.ExecutionListener; import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.delegate.TaskListener;
import java.util.Date;
/** /**
* @author liJiaRao * @author liJiaRao
* @date 2023-10-13 16:43 * @date 2023-10-13 16:43
@@ -12,6 +23,21 @@ import org.activiti.engine.delegate.TaskListener;
public class EndListener implements ExecutionListener { public class EndListener implements ExecutionListener {
@Override @Override
public void notify(DelegateExecution execution) { public void notify(DelegateExecution execution) {
//流程信息
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
String processInstanceId = execution.getProcessInstanceId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
Date createTime = processAll.getCreateTime();
DateTime date = DateUtil.date();
DateBetween between = date.between(createTime);
//更新流程总表信息为已完成
LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId);
wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
wrapper.set(ProcessAll::getEndTime,date);
wrapper.set(ProcessAll::getOverTime,between.toString());
processAllService.update(wrapper);
} }
} }
@@ -42,7 +42,7 @@ public class StartListener implements ExecutionListener {
String name = processDefinition.getName(); String name = processDefinition.getName();
String key = processDefinition.getKey(); String key = processDefinition.getKey();
//新增流程总表信息(剩余的内容在启动流程时填充)
ProcessAll processAll = new ProcessAll(); ProcessAll processAll = new ProcessAll();
processAll.setProcessInstanceId(processInstanceId); processAll.setProcessInstanceId(processInstanceId);
processAll.setPrcType(ProcessTypeEnum.getValueByKey(key)); processAll.setPrcType(ProcessTypeEnum.getValueByKey(key));
@@ -1,7 +1,12 @@
package com.jero.modules.activiti.mapper; package com.jero.modules.activiti.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import org.apache.ibatis.annotations.Param;
/** /**
* *
@@ -9,4 +14,9 @@ import com.jero.modules.activiti.entity.ProcessAll;
*@date 2023-10-16 15:49 *@date 2023-10-16 15:49
*/ */
public interface ProcessAllMapper extends BaseMapper<ProcessAll> { public interface ProcessAllMapper extends BaseMapper<ProcessAll> {
IPage<ProcessAll> getTodoList(Page<ProcessAll> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessAll> queryWrapper);
IPage<ProcessAll> getCompletedList(Page<ProcessAll> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessAll> queryWrapper);
IPage<ProcessAll> getSentList(Page<ProcessAll> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessAll> queryWrapper);
} }
@@ -1,29 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.mapper.ProcessAllMapper"> <mapper namespace="com.jero.modules.activiti.mapper.ProcessAllMapper">
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.entity.ProcessAll"> <select id="getTodoList" resultType="com.jero.modules.activiti.entity.ProcessAll">
<!--@mbg.generated--> select pa.*,par.create_time as receivedTaskTime,par.task_id
<!--@Table process_all--> from process_all pa
<id column="id" jdbcType="VARCHAR" property="id" /> left join process_approval_record par on pa.process_instance_id = par.process_instance_id
<result column="prc_name" jdbcType="VARCHAR" property="prcName" /> ${ew.customSqlSegment}
<result column="process_instance_id" jdbcType="VARCHAR" property="processInstanceId" /> </select>
<result column="prc_mes" jdbcType="VARCHAR" property="prcMes" />
<result column="prc_num" jdbcType="VARCHAR" property="prcNum" /> <select id="getCompletedList" resultType="com.jero.modules.activiti.entity.ProcessAll">
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId" /> select p.*, group_concat(par.user_id) as handleUserId
<result column="prc_type" jdbcType="VARCHAR" property="prcType" /> from (
<result column="create_user_name" jdbcType="VARCHAR" property="createUserName" /> select pa.*, max(par.create_time) as receivedTaskTime, max(par.end_time) as completedTaskTime
<result column="mes" jdbcType="LONGVARCHAR" property="mes" /> from process_all pa
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> left join process_approval_record par on pa.process_instance_id = par.process_instance_id
<result column="end_time" jdbcType="TIMESTAMP" property="endTime" /> ${ew.customSqlSegment}
<result column="over_time" jdbcType="VARCHAR" property="overTime" /> ) p
<result column="due_time" jdbcType="TIMESTAMP" property="dueTime" /> left join process_approval_record par on p.process_instance_id = par.process_instance_id
<result column="project_id" jdbcType="VARCHAR" property="projectId" /> WHERE par.finish_flag = 0
<result column="project_name" jdbcType="VARCHAR" property="projectName" /> group by p.process_instance_id
<result column="prc_name_en" jdbcType="VARCHAR" property="prcNameEn" /> </select>
</resultMap>
<sql id="Base_Column_List"> <select id="getSentList" resultType="com.jero.modules.activiti.entity.ProcessAll">
<!--@mbg.generated--> select p.*, group_concat(par.user_id) as handleUserId
id, prc_name, process_instance_id, prc_mes, prc_num, create_user_id, prc_type, create_user_name, from (
mes, create_time, end_time, over_time, due_time, project_id, project_name, prc_name_en select pa.*, max(par.create_time) as receivedTaskTime, max(par.end_time) as completedTaskTime
</sql> from process_all pa
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
${ew.customSqlSegment}
) p
left join process_approval_record par on p.process_instance_id = par.process_instance_id
WHERE par.finish_flag = 0
group by p.process_instance_id
</select>
</mapper> </mapper>
@@ -1,6 +1,12 @@
package com.jero.modules.activiti.service; package com.jero.modules.activiti.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper;
import org.activiti.engine.RuntimeService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@@ -14,10 +20,39 @@ import com.jero.modules.activiti.entity.ProcessAll;
*/ */
@Service @Service
public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll> { public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll> {
@Resource
private ProcessAllMapper processAllMapper;
@Resource
private ProcessApprovalRecordMapper processApprovalRecordMapper;
@Resource
private RuntimeService runtimeService;
public ProcessAll getByProcessInstanceId(String processInstanceId){ public ProcessAll getByProcessInstanceId(String processInstanceId){
LambdaQueryWrapper<ProcessAll> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessAll> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId); wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId);
return this.getOne(wrapper); return this.getOne(wrapper);
} }
public IPage<ProcessAll> getTodoList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper) {
return processAllMapper.getTodoList(page,queryWrapper);
}
public IPage<ProcessAll> getCompletedList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper) {
return processAllMapper.getCompletedList(page,queryWrapper);
}
public IPage<ProcessAll> getSentList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper) {
return processAllMapper.getSentList(page,queryWrapper);
}
public void delete(String processInstanceId) {
runtimeService.deleteProcessInstance(processInstanceId,"撤销");
LambdaQueryWrapper<ProcessAll> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId);
this.remove(wrapper);
LambdaQueryWrapper<ProcessApprovalRecord> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
processApprovalRecordMapper.delete(wrapper1);
}
} }
@@ -1,5 +1,7 @@
package com.jero.modules.activiti.service; package com.jero.modules.activiti.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.constant.enums.YesOrNoEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@@ -14,4 +16,10 @@ import com.jero.modules.activiti.entity.ProcessApprovalRecord;
@Service @Service
public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRecordMapper, ProcessApprovalRecord> { public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRecordMapper, ProcessApprovalRecord> {
public ProcessApprovalRecord getByTaskId(String taskId){
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
wrapper.eq(ProcessApprovalRecord::getIsDelegateTask, YesOrNoEnum.NO.getInteger());
return this.getOne(wrapper);
}
} }