Browse Source
待办事项Controller所有方法去掉权限注解,解决角色没有权限访问的问题 新增通用代办事项办理功能,用于完成对应角色登录后,可以通过点击设置->我的代办->办理功能处理对应的模块的审批任务 新增 流程任务处理统一接口,所有方法继承该接口 新增 流程任务处理器工厂,根据流程定义的key,获取对应的处理器 新增 代办项通用接口,用于;1、通用获取流程实例;2、获取代办任务url 新增 销售售后通知单处理类、客户报价代办处理类、客户资料代办处理类、销售订单代办处理类,统一实现流程任务处理统一接口实现里面的handleTask方法,每个类上面@Service注解加上对应的key,当通用办理功能从前端传入taskId的时候,找到流程实例类,找到processDefinitionKey,不同的找到processDefinitionKey会找到对应的handleTask类,用于跳转不同的模块页面dev
10 changed files with 359 additions and 9 deletions
@ -0,0 +1,25 @@ |
|||
package com.ruoyi.common.factory; |
|||
|
|||
import com.ruoyi.common.handler.TaskHandler; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 流程任务处理器工厂 |
|||
* */ |
|||
@Component |
|||
public class TaskHandlerFactory { |
|||
|
|||
@Autowired |
|||
private Map<String, TaskHandler> taskHandlers; |
|||
|
|||
/** |
|||
* 根据流程定义的key,获取对应的处理器 |
|||
* */ |
|||
public TaskHandler getHandler(String processDefinitionKey) { |
|||
TaskHandler result = taskHandlers.getOrDefault(processDefinitionKey, null); |
|||
return result; |
|||
} |
|||
} |
@ -0,0 +1,10 @@ |
|||
package com.ruoyi.common.handler; |
|||
|
|||
import org.springframework.ui.ModelMap; |
|||
|
|||
/** |
|||
* 流程任务处理统一接口 |
|||
* */ |
|||
public interface TaskHandler { |
|||
void handleTask(String taskId, ModelMap mmap); |
|||
} |
@ -0,0 +1,44 @@ |
|||
package com.ruoyi.common.handler.impl; |
|||
|
|||
import com.ruoyi.common.handler.TaskHandler; |
|||
import com.ruoyi.common.service.IToDoItemService; |
|||
import com.ruoyi.sales.domain.VO.SalesAftersalesNoticeVO; |
|||
import com.ruoyi.sales.service.ISalesAftersalesNoticeService; |
|||
import com.ruoyi.system.domain.SysCustomerQuoteVo; |
|||
import org.activiti.engine.TaskService; |
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
import org.activiti.engine.task.Task; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.ui.ModelMap; |
|||
|
|||
/** |
|||
* 销售售后通知单处理类 |
|||
*/ |
|||
@Service("aftersalesNotice") |
|||
public class AfterSalesNoticeTaskHandler implements TaskHandler { |
|||
|
|||
|
|||
@Autowired |
|||
private ISalesAftersalesNoticeService salesAftersalesNoticeService; |
|||
|
|||
@Autowired |
|||
private TaskService taskService; |
|||
|
|||
@Autowired |
|||
private IToDoItemService toDoItemService; |
|||
|
|||
@Override |
|||
public void handleTask(String taskId, ModelMap mmap) { |
|||
|
|||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
|||
// 业务逻辑...
|
|||
ProcessInstance processInstance = toDoItemService.getProcessInstance(taskId); |
|||
|
|||
SalesAftersalesNoticeVO aftersalesNoticeVO = salesAftersalesNoticeService.selectSalesAftersalesNoticeById(new Long(processInstance.getBusinessKey())); |
|||
mmap.put("formData", aftersalesNoticeVO); |
|||
mmap.put("taskId", taskId); |
|||
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); |
|||
mmap.put("verifyName", verifyName); |
|||
} |
|||
} |
@ -0,0 +1,46 @@ |
|||
package com.ruoyi.common.handler.impl; |
|||
|
|||
import com.ruoyi.common.handler.TaskHandler; |
|||
import com.ruoyi.common.service.IToDoItemService; |
|||
import com.ruoyi.system.domain.SysCustomerQuoteVo; |
|||
import com.ruoyi.system.domain.SysCustomerVo; |
|||
import com.ruoyi.system.service.ISysCustomerQuoteService; |
|||
import com.ruoyi.system.service.ISysCustomerService; |
|||
import org.activiti.engine.RuntimeService; |
|||
import org.activiti.engine.TaskService; |
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
import org.activiti.engine.task.Task; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.ui.ModelMap; |
|||
|
|||
/** |
|||
* 客户报价代办处理类 |
|||
* */ |
|||
@Service("customerQuote") |
|||
public class CustomerQuoteTaskHandler implements TaskHandler { |
|||
|
|||
@Autowired |
|||
private ISysCustomerQuoteService customerQuoteService; |
|||
|
|||
|
|||
@Autowired |
|||
private TaskService taskService; |
|||
|
|||
@Autowired |
|||
private IToDoItemService toDoItemService; |
|||
|
|||
@Override |
|||
public void handleTask(String taskId, ModelMap mmap) { |
|||
|
|||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
|||
// 业务逻辑...
|
|||
ProcessInstance processInstance = toDoItemService.getProcessInstance(taskId); |
|||
|
|||
SysCustomerQuoteVo sysCustomerQuoteVo = customerQuoteService.selectSysCustomerQuoteById(new Long(processInstance.getBusinessKey())); |
|||
mmap.put("formData", sysCustomerQuoteVo); |
|||
mmap.put("taskId", taskId); |
|||
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); |
|||
mmap.put("verifyName", verifyName); |
|||
} |
|||
} |
@ -0,0 +1,43 @@ |
|||
package com.ruoyi.common.handler.impl; |
|||
|
|||
import com.ruoyi.common.handler.TaskHandler; |
|||
import com.ruoyi.common.service.IToDoItemService; |
|||
import com.ruoyi.system.domain.SysCustomerVo; |
|||
import com.ruoyi.system.service.ISysCustomerService; |
|||
import org.activiti.engine.RuntimeService; |
|||
import org.activiti.engine.TaskService; |
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
import org.activiti.engine.task.Task; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.ui.ModelMap; |
|||
|
|||
/** |
|||
* 客户资料代办处理类 |
|||
* */ |
|||
@Service("customer") |
|||
public class CustomerTaskHandler implements TaskHandler { |
|||
|
|||
@Autowired |
|||
private ISysCustomerService customerService; |
|||
|
|||
@Autowired |
|||
private TaskService taskService; |
|||
|
|||
@Autowired |
|||
private IToDoItemService toDoItemService; |
|||
|
|||
@Override |
|||
public void handleTask(String taskId, ModelMap mmap) { |
|||
|
|||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
|||
// 业务逻辑...
|
|||
ProcessInstance processInstance = toDoItemService.getProcessInstance(taskId); |
|||
|
|||
SysCustomerVo sysCustomerVo = customerService.selectSysCustomerById(new Long(processInstance.getBusinessKey())); |
|||
mmap.put("formData", sysCustomerVo); |
|||
mmap.put("taskId", taskId); |
|||
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); |
|||
mmap.put("verifyName", verifyName); |
|||
} |
|||
} |
@ -0,0 +1,45 @@ |
|||
package com.ruoyi.common.handler.impl; |
|||
|
|||
import com.ruoyi.common.handler.TaskHandler; |
|||
import com.ruoyi.common.service.IToDoItemService; |
|||
import com.ruoyi.system.domain.SysCustomerVo; |
|||
import com.ruoyi.system.domain.SysSalesOrderVo; |
|||
import com.ruoyi.system.service.ISysSalesOrderService; |
|||
import org.activiti.engine.TaskService; |
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
import org.activiti.engine.task.Task; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.ui.ModelMap; |
|||
|
|||
/** |
|||
* 销售订单代办处理类 |
|||
* */ |
|||
@Service("salesorder") |
|||
public class SalesOrderTaskHandler implements TaskHandler { |
|||
@Autowired |
|||
private IToDoItemService todoItemService; |
|||
|
|||
@Autowired |
|||
private ISysSalesOrderService salesOrderService; |
|||
|
|||
@Autowired |
|||
private TaskService taskService; |
|||
|
|||
|
|||
|
|||
@Override |
|||
public void handleTask(String taskId, ModelMap mmap) { |
|||
|
|||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
|||
// 业务逻辑...
|
|||
ProcessInstance processInstance = todoItemService.getProcessInstance(taskId); |
|||
|
|||
SysSalesOrderVo sysSalesOrderVo = salesOrderService.selectSysSalesOrderById(new Long(processInstance.getBusinessKey())); |
|||
mmap.put("formData", sysSalesOrderVo); |
|||
mmap.put("taskId", taskId); |
|||
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); |
|||
mmap.put("verifyName", verifyName); |
|||
|
|||
} |
|||
} |
@ -0,0 +1,14 @@ |
|||
package com.ruoyi.common.service; |
|||
|
|||
|
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
|
|||
/** |
|||
* 代办项通用接口 |
|||
* */ |
|||
public interface IToDoItemService { |
|||
|
|||
String determinePrefix(String processDefinitionKey); |
|||
|
|||
ProcessInstance getProcessInstance(String taskId); |
|||
} |
@ -0,0 +1,60 @@ |
|||
package com.ruoyi.common.service.impl; |
|||
|
|||
import com.ruoyi.common.service.IToDoItemService; |
|||
import org.activiti.engine.RuntimeService; |
|||
import org.activiti.engine.TaskService; |
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
import org.activiti.engine.task.Task; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 待办事项服务实现类 |
|||
* */ |
|||
@Service |
|||
public class IToDoItemServiceImpl implements IToDoItemService { |
|||
|
|||
|
|||
@Autowired |
|||
private TaskService taskService; |
|||
|
|||
@Autowired |
|||
private RuntimeService runtimeService; |
|||
|
|||
/** |
|||
* 通用获取流程实例 |
|||
* */ |
|||
@Override |
|||
public ProcessInstance getProcessInstance(String taskId) { |
|||
// 业务逻辑...
|
|||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
|||
String processInstanceId = task.getProcessInstanceId(); |
|||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() |
|||
.processInstanceId(processInstanceId) |
|||
.singleResult(); |
|||
return processInstance; |
|||
} |
|||
|
|||
/** |
|||
* 获取代办任务url |
|||
* */ |
|||
@Override |
|||
public String determinePrefix(String processDefinitionKey) { |
|||
// 根据 processDefinitionKey 确定不同的前缀
|
|||
switch (processDefinitionKey) { |
|||
case "customer": |
|||
return "system/customer"; |
|||
case "customerQuote": |
|||
return "system/customerQuote"; |
|||
case "salesorder": |
|||
return "system/salesOrder"; |
|||
case "aftersalesNotice": |
|||
return "sales/afterSalesNotice"; |
|||
// 其他case...
|
|||
default: |
|||
return "defaultPrefix"; |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,61 @@ |
|||
package com.ruoyi.web.controller.common; |
|||
|
|||
import com.ruoyi.common.factory.TaskHandlerFactory; |
|||
import com.ruoyi.common.handler.TaskHandler; |
|||
import com.ruoyi.common.service.IToDoItemService; |
|||
import org.activiti.engine.RuntimeService; |
|||
import org.activiti.engine.TaskService; |
|||
import org.activiti.engine.runtime.ProcessInstance; |
|||
import org.activiti.engine.task.Task; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Controller; |
|||
import org.springframework.ui.ModelMap; |
|||
import org.springframework.web.bind.annotation.PathVariable; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
|
|||
/** |
|||
* 通用代办事项办理 |
|||
* */ |
|||
@Controller |
|||
@RequestMapping("/process/todoitem") |
|||
public class CommonToDoItemController { |
|||
|
|||
private String prefix = "process/todoitem"; |
|||
|
|||
@Autowired |
|||
private TaskService taskService; |
|||
|
|||
@Autowired |
|||
private RuntimeService runtimeService; |
|||
|
|||
@Autowired |
|||
private TaskHandlerFactory taskHandlerFactory; |
|||
|
|||
|
|||
@Autowired |
|||
private IToDoItemService toDoItemService; |
|||
|
|||
/** |
|||
* 通用办理功能 |
|||
* */ |
|||
@RequestMapping("/showVerifyDialog/{taskId}") |
|||
public String handle(@PathVariable("taskId") String taskId, ModelMap mmap) { |
|||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
|||
String processInstanceId = task.getProcessInstanceId(); |
|||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() |
|||
.processInstanceId(processInstanceId) |
|||
.singleResult(); |
|||
String processDefinitionKey = processInstance.getProcessDefinitionKey(); |
|||
|
|||
TaskHandler handler = taskHandlerFactory.getHandler(processDefinitionKey); |
|||
if (handler != null) { |
|||
handler.handleTask(taskId, mmap); |
|||
} |
|||
|
|||
// 动态确定前缀
|
|||
String prefix = toDoItemService.determinePrefix(processDefinitionKey); |
|||
String verifyName = (String) mmap.get("verifyName"); |
|||
return prefix + "/task" + verifyName; |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue