From 1eeb3d82ad942f49a3e62a6d4c58574a5c464ecb Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Thu, 19 Dec 2024 08:48:00 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=AE=A1=E6=89=B9=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=AE=A1=E7=90=86=20=E5=BE=85=E5=8A=9E=E4=BA=8B=E9=A1=B9Contro?= =?UTF-8?q?ller=E6=89=80=E6=9C=89=E6=96=B9=E6=B3=95=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=B3=A8=E8=A7=A3=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=B2=A1=E6=9C=89=E6=9D=83=E9=99=90=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E7=9A=84=E9=97=AE=E9=A2=98=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E4=BB=A3=E5=8A=9E=E4=BA=8B=E9=A1=B9=E5=8A=9E?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=AF=B9=E5=BA=94=E8=A7=92=E8=89=B2=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E8=AE=BE=E7=BD=AE->=E6=88=91=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E5=8A=9E->=E5=8A=9E=E7=90=86=E5=8A=9F=E8=83=BD=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=AF=B9=E5=BA=94=E7=9A=84=E6=A8=A1=E5=9D=97=E7=9A=84?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E4=BB=BB=E5=8A=A1=20=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=BB=BB=E5=8A=A1=E5=A4=84=E7=90=86=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=89=80=E6=9C=89=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E7=BB=A7=E6=89=BF=E8=AF=A5=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=B5=81=E7=A8=8B=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=99=A8=E5=B7=A5=E5=8E=82=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=B5=81=E7=A8=8B=E5=AE=9A=E4=B9=89=E7=9A=84key?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=AF=B9=E5=BA=94=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=99=A8=20=E6=96=B0=E5=A2=9E=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E9=A1=B9=E9=80=9A=E7=94=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=EF=BC=9B1=E3=80=81=E9=80=9A=E7=94=A8=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B=EF=BC=9B2?= =?UTF-8?q?=E3=80=81=E8=8E=B7=E5=8F=96=E4=BB=A3=E5=8A=9E=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?url=20=E6=96=B0=E5=A2=9E=20=E9=94=80=E5=94=AE=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=8D=95=E5=A4=84=E7=90=86=E7=B1=BB=E3=80=81?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=8A=A5=E4=BB=B7=E4=BB=A3=E5=8A=9E=E5=A4=84?= =?UTF-8?q?=E7=90=86=E7=B1=BB=E3=80=81=E5=AE=A2=E6=88=B7=E8=B5=84=E6=96=99?= =?UTF-8?q?=E4=BB=A3=E5=8A=9E=E5=A4=84=E7=90=86=E7=B1=BB=E3=80=81=E9=94=80?= =?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95=E4=BB=A3=E5=8A=9E=E5=A4=84=E7=90=86?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E7=BB=9F=E4=B8=80=E5=AE=9E=E7=8E=B0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E4=BB=BB=E5=8A=A1=E5=A4=84=E7=90=86=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0=E9=87=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?handleTask=E6=96=B9=E6=B3=95=EF=BC=8C=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E7=B1=BB=E4=B8=8A=E9=9D=A2@Service=E6=B3=A8=E8=A7=A3=E5=8A=A0?= =?UTF-8?q?=E4=B8=8A=E5=AF=B9=E5=BA=94=E7=9A=84key=EF=BC=8C=E5=BD=93?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E5=8A=9E=E7=90=86=E5=8A=9F=E8=83=BD=E4=BB=8E?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BC=A0=E5=85=A5taskId=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=EF=BC=8C=E6=89=BE=E5=88=B0=E6=B5=81=E7=A8=8B=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E7=B1=BB=EF=BC=8C=E6=89=BE=E5=88=B0processDefinitionK?= =?UTF-8?q?ey=EF=BC=8C=E4=B8=8D=E5=90=8C=E7=9A=84=E6=89=BE=E5=88=B0process?= =?UTF-8?q?DefinitionKey=E4=BC=9A=E6=89=BE=E5=88=B0=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84handleTask=E7=B1=BB=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E4=B8=8D=E5=90=8C=E7=9A=84=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BizTodoItemController.java | 20 +++--- .../common/factory/TaskHandlerFactory.java | 25 ++++++++ .../com/ruoyi/common/handler/TaskHandler.java | 10 +++ .../impl/AfterSalesNoticeTaskHandler.java | 44 +++++++++++++ .../impl/CustomerQuoteTaskHandler.java | 46 ++++++++++++++ .../handler/impl/CustomerTaskHandler.java | 43 +++++++++++++ .../handler/impl/SalesOrderTaskHandler.java | 45 ++++++++++++++ .../common/service/IToDoItemService.java | 14 +++++ .../service/impl/IToDoItemServiceImpl.java | 60 ++++++++++++++++++ .../common/CommonToDoItemController.java | 61 +++++++++++++++++++ 10 files changed, 359 insertions(+), 9 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/factory/TaskHandlerFactory.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/handler/TaskHandler.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/AfterSalesNoticeTaskHandler.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerQuoteTaskHandler.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerTaskHandler.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/SalesOrderTaskHandler.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/service/IToDoItemService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/IToDoItemServiceImpl.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonToDoItemController.java diff --git a/ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/controller/BizTodoItemController.java b/ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/controller/BizTodoItemController.java index 5a770dda..dfb72ed1 100644 --- a/ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/controller/BizTodoItemController.java +++ b/ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/controller/BizTodoItemController.java @@ -43,6 +43,7 @@ public class BizTodoItemController extends BaseController { @Autowired private IBizTodoItemService bizTodoItemService; + // @Autowired // private IBizLeaveService bizLeaveService; @@ -55,6 +56,7 @@ public class BizTodoItemController extends BaseController { @Autowired private RuntimeService runtimeService; + @GetMapping("/todoListView") public String todoListView(ModelMap mmap) { BizTodoItem todoItem = new BizTodoItem(); @@ -84,7 +86,7 @@ public class BizTodoItemController extends BaseController { // return prefix + "/task" + verifyName; // } - @RequiresPermissions("process:todoitem:view") +// @RequiresPermissions("process:todoitem:view") @GetMapping() public String todoitem(ModelMap mmap) { mmap.put("currentUser", ShiroUtils.getSysUser()); @@ -94,7 +96,7 @@ public class BizTodoItemController extends BaseController { /** * 查询待办事项列表 */ - @RequiresPermissions("process:todoitem:list") +// @RequiresPermissions("process:todoitem:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(BizTodoItem bizTodoItem) { @@ -107,7 +109,7 @@ public class BizTodoItemController extends BaseController { return getDataTable(list); } - @RequiresPermissions("process:todoitem:doneView") +// @RequiresPermissions("process:todoitem:doneView") @GetMapping("/doneitemView") public String doneitem() { return prefix + "/doneitem"; @@ -116,7 +118,7 @@ public class BizTodoItemController extends BaseController { /** * 查询已办事项列表 */ - @RequiresPermissions("process:todoitem:doneList") +// @RequiresPermissions("process:todoitem:doneList") @PostMapping("/doneList") @ResponseBody public TableDataInfo doneList(BizTodoItem bizTodoItem) { @@ -133,7 +135,7 @@ public class BizTodoItemController extends BaseController { /** * 导出待办事项列表 */ - @RequiresPermissions("process:todoitem:export") +// @RequiresPermissions("process:todoitem:export") @PostMapping("/export") @ResponseBody public AjaxResult export(BizTodoItem bizTodoItem) { @@ -146,7 +148,7 @@ public class BizTodoItemController extends BaseController { /** * 导出已办事项列表 */ - @RequiresPermissions("process:todoitem:doneExport") +// @RequiresPermissions("process:todoitem:doneExport") @PostMapping("/doneExport") @ResponseBody public AjaxResult doneExport(BizTodoItem bizTodoItem) { @@ -167,7 +169,7 @@ public class BizTodoItemController extends BaseController { /** * 新增保存待办事项 */ - @RequiresPermissions("process:todoitem:add") +// @RequiresPermissions("process:todoitem:add") @Log(title = "待办事项", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody @@ -188,7 +190,7 @@ public class BizTodoItemController extends BaseController { /** * 修改保存待办事项 */ - @RequiresPermissions("process:todoitem:edit") +// @RequiresPermissions("process:todoitem:edit") @Log(title = "待办事项", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody @@ -199,7 +201,7 @@ public class BizTodoItemController extends BaseController { /** * 删除待办事项 */ - @RequiresPermissions("process:todoitem:remove") +// @RequiresPermissions("process:todoitem:remove") @Log(title = "待办事项", businessType = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/factory/TaskHandlerFactory.java b/ruoyi-admin/src/main/java/com/ruoyi/common/factory/TaskHandlerFactory.java new file mode 100644 index 00000000..d004e446 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/factory/TaskHandlerFactory.java @@ -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 taskHandlers; + + /** + * 根据流程定义的key,获取对应的处理器 + * */ + public TaskHandler getHandler(String processDefinitionKey) { + TaskHandler result = taskHandlers.getOrDefault(processDefinitionKey, null); + return result; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/handler/TaskHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/TaskHandler.java new file mode 100644 index 00000000..fce5826f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/TaskHandler.java @@ -0,0 +1,10 @@ +package com.ruoyi.common.handler; + +import org.springframework.ui.ModelMap; + +/** +* 流程任务处理统一接口 +* */ +public interface TaskHandler { + void handleTask(String taskId, ModelMap mmap); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/AfterSalesNoticeTaskHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/AfterSalesNoticeTaskHandler.java new file mode 100644 index 00000000..49c13692 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/AfterSalesNoticeTaskHandler.java @@ -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); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerQuoteTaskHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerQuoteTaskHandler.java new file mode 100644 index 00000000..5f4502ac --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerQuoteTaskHandler.java @@ -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); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerTaskHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerTaskHandler.java new file mode 100644 index 00000000..4d367be5 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/CustomerTaskHandler.java @@ -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); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/SalesOrderTaskHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/SalesOrderTaskHandler.java new file mode 100644 index 00000000..e5b90a9a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/handler/impl/SalesOrderTaskHandler.java @@ -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); + + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/service/IToDoItemService.java b/ruoyi-admin/src/main/java/com/ruoyi/common/service/IToDoItemService.java new file mode 100644 index 00000000..731cbbd8 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/service/IToDoItemService.java @@ -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); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/IToDoItemServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/IToDoItemServiceImpl.java new file mode 100644 index 00000000..10a641b6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/IToDoItemServiceImpl.java @@ -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"; + } + } + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonToDoItemController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonToDoItemController.java new file mode 100644 index 00000000..c22dd9e5 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonToDoItemController.java @@ -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; + } + +}