电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

如何在审批详情页面实现前一流程和后一流程的切换

来源:金蝶云社区作者:金蝶2024-09-2310

如何在审批详情页面实现前一流程和后一流程的切换

关键词:驳回、寻址、工作流

一、需求

     打开待办任务的审批页面时,需要直接查看上一条任务或者下一条任务(原来是要先退出当前审批页面,再从列表详情页点击详情进来),直接点击如图两个按钮直接跳到上一条待办任务或者下一条任务。

二、思路与方案

      扩展审批页面wf_approvalpage_bac,并且在审批页面添加按钮两个工具栏按钮”前一流程”和“后一流程“,需要注意的是,要在beforeItemClick事件中处理,并取消执行ItemClick事件,如果我们在ItemClick事件中处理页面切换逻辑,那么会先执行标准审批插件的ItemClick事件,这时会判断按钮绑定的业务单据的操作是否存在,新增按钮没有绑定操作时,会报空指针。另外,弹窗逻辑中参考标准的审批页面逻辑,传入审批页面打开详情时需要的传参,如下。

HashMap<String, Object> para = new HashMap<>();
para.put("taskId",nextaskid);
para.put("type","toHandle");
showParameter.getCustomParams().putAll(para);
插件执行机制:先按表单插件注册的顺序执行所有插件的beforeItemClick事件,再执行所有插件的ItemClick事件。

三、实现过程

package kdec.showcloud.showapp.plugin.workflow;


import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.serialization.SerializationUtils;
import kd.bos.form.FormShowParameter;
import kd.bos.form.ShowType;
import kd.bos.form.control.Toolbar;
import kd.bos.form.control.events.BeforeItemClickEvent;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.servicehelper.user.UserServiceHelper;
import kd.bos.workflow.engine.TaskService;
import kd.bos.workflow.service.WorkflowService;
import kd.bos.workflow.service.impl.ServiceFactory;
import kd.bos.workflow.taskcenter.plugin.ApprovalPluginNew;
import kd.sdk.plugin.Plugin;

import java.util.*;
/**
 * 动态表单插件
 */
public class WFToolExy extends ApprovalPluginNew implements Plugin {
    @Override
    public void registerListener(EventObject e) {
        Toolbar toolbarap = this.getView().getControl("toolbarap");
        if (toolbarap!=null) {
            toolbarap.addItemClickListener(this);
        }
        super.registerListener(e);
    }

    @Override
    public void beforeItemClick(BeforeItemClickEvent evt) {
        String itemKey = evt.getItemKey();
        if (itemKey.equals("kdec_beforewf")||itemKey.equals("kdec_atterwf")){
        //取消itemClick事件的执行
            evt.setCancel(true);
            Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
            Object curtaskid = customParams.get("taskId");
            Object nextaskid=null;//下一个任务id,可以是前一个也可以是后一个的值
            Integer nextIndex=0;
            String curtaskidindex = getPageCache().get("curtaskidindex");
            List<Object> taskids = new ArrayList<>();
            int index = 0;
            if (curtaskidindex==null) {
                WorkflowService wfService = (WorkflowService) ServiceFactory.getService(WorkflowService.class);
                TaskService taskService = wfService.getTaskService();
                List<Object> params = new ArrayList();
                //这个根据实际情况设置分页查询的情况
                DynamicObjectCollection data = taskService.getTaskCenterData(0, 100000, String.valueOf(UserServiceHelper.getCurrentUserId()), (String)null, "","toHandle", (String)null,params,"createdate desc");
                for (DynamicObject row:data) {
         

如何在审批详情页面实现前一流程和后一流程的切换

关键词:驳回、寻址、工作流一、需求 打开待办任务的审批页面时,需要直接查看上一条任务或者下一条任务(原来是要先退出当前审批页...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信