update 工作中心代码(未完成)
This commit is contained in:
@@ -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 '流程审批记录表';
|
||||||
|
|||||||
+5
@@ -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>
|
||||||
|
|||||||
+5
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+29
-29
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+100
-2
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
+28
-15
@@ -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;
|
||||||
}
|
}
|
||||||
+22
-3
@@ -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);
|
||||||
}
|
}
|
||||||
+32
-25
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user