nbcio-boot的flowable流程模型查询修正为按发布时间倒序

简介: nbcio-boot的flowable流程模型查询修正为按发布时间倒序

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://218.75.87.38:9888

      之前流程模型查询一直比较混乱,不是按照时间来排序,因为本身flowable不支持这种排序,原因是他的定义里就没有这个时间。

     所以只能用其它方法了。

    java实现方法如下:

/**
     * 流程定义列表
     *
     * @param pageNum  当前页码
     * @param pageSize 每页条数
     * @param flowProcDefDto
     * modify by nbacheng
     * @return 流程定义分页列表数据
     */
    @Override
    public Page<FlowProcDefDto> list(Integer pageNum, Integer pageSize, FlowProcDefDto flowProcDefDto) {
        Page<FlowProcDefDto> page = new Page<>();
        // 流程定义列表数据查询
        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        processDefinitionQuery
                .latestVersion()   //获取最新的一个版本
                .orderByProcessDefinitionName().asc();
        /*=====参数=====*/
        if (StrUtil.isNotBlank(flowProcDefDto.getName())){
            processDefinitionQuery.processDefinitionNameLike("%"+flowProcDefDto.getName()+"%");
        }
        if (StrUtil.isNotBlank(flowProcDefDto.getCategory())){
            processDefinitionQuery.processDefinitionCategory(flowProcDefDto.getCategory());
        }
        if (flowProcDefDto.getSuspensionState() == 1){
            processDefinitionQuery.active();
        }
        /*============*/
        page.setTotal(processDefinitionQuery.count());
        //获取所有数据
        List<ProcessDefinition> processDefinitionList = processDefinitionQuery.list();
        List<FlowProcDefDto> totalDataList = new ArrayList<>();
        for (ProcessDefinition processDefinition : processDefinitionList) {
            String deploymentId = processDefinition.getDeploymentId();
            Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
            FlowProcDefDto reProcDef = new FlowProcDefDto();
            BeanUtils.copyProperties(processDefinition, reProcDef);
            // 流程定义时间
            reProcDef.setDeploymentTime(deployment.getDeploymentTime());
            SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(reProcDef.getDeploymentId());
            if (Objects.nonNull(sysForm)) {
              reProcDef.setFormName(sysForm.getFormName());
              reProcDef.setFormId(sysForm.getId());
            }
            FlowDeployOnline flowDeployOnline = iFlowDeployOnlineService.selectFlowDeployOnlineByDeployId(reProcDef.getDeploymentId());
            if (Objects.nonNull(flowDeployOnline)) {
              reProcDef.setFormName(flowDeployOnline.getTableName());
              reProcDef.setFormId(flowDeployOnline.getId());
            }
            SysCustomForm sysCustomForm = sysDeployFormService.selectSysCustomFormByDeployId(reProcDef.getDeploymentId());
            if (Objects.nonNull(sysCustomForm)) {
              reProcDef.setFormName(sysCustomForm.getBusinessName());
              reProcDef.setFormId(sysCustomForm.getId());
            }
            totalDataList.add(reProcDef);
        }
        List<FlowProcDefDto> dataList = new ArrayList<>();
        //按发布时间进行倒序重新排列,以便用户方便查询
        if(ObjectUtils.isNotEmpty(totalDataList)) {
          totalDataList.sort(Comparator.comparing(FlowProcDefDto::getDeploymentTime).reversed());
          dataList = partition(totalDataList,pageSize,pageNum);
        }
        
        page.setRecords(dataList);
        return page;
    }
    
    /**@Description: 使用 Lists 工具类的 partition 分页
     * <br> 1. 页码边界值处理:小于等于0,情况处理; 页码大于 (总页数-1) 情况处理
     * <br> 2. 总页数-1 ,原因是:list集合索引是从0开始的。
     *  @param pageSize 每页显示的数量
     *  @param pageNum  当前页码
     * @see com.google.common.collect.Lists#partition(java.util.List, int)
     */
    private List<FlowProcDefDto> partition(List<FlowProcDefDto> totalDataList, int pageSize, int pageNum) {
        // 将 List 按照 PageSzie 拆分成多个List
        List<? extends List<?>> partition = Lists.partition(totalDataList, pageSize);
        // 总页数
        int pages = partition.size();
        pageNum = pageNum <= 0 ? 0 : (pageNum <= (pages - 1) ? pageNum : (pages - 1));
        return (List<FlowProcDefDto>) partition.get(pageNum);
    }

效果如下:

相关文章
|
1月前
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(三)
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(三)
40 0
|
1月前
|
前端开发
记录一下基于jeecg-boot3.0的待办消息移植记录
记录一下基于jeecg-boot3.0的待办消息移植记录
13 0
|
1月前
|
移动开发 前端开发
基于jeecg-boot的flowable流程历史记录显示修改
基于jeecg-boot的flowable流程历史记录显示修改
19 0
|
1月前
基于若依ruoyi-nbcio支持flowable流程分类里增加流程应用类型
基于若依ruoyi-nbcio支持flowable流程分类里增加流程应用类型
24 1
|
1月前
|
前端开发
flowable流程设计器的几个bug修改记录
flowable流程设计器的几个bug修改记录
26 0
|
1月前
|
移动开发 前端开发
基于Jeecg-boot的flowable流程支持拒绝同意流程操作
基于Jeecg-boot的flowable流程支持拒绝同意流程操作
30 0
|
1月前
|
移动开发 前端开发
基于Jeecg-boot的flowable流程支持拒绝同意流程操作(二)
基于Jeecg-boot的flowable流程支持拒绝同意流程操作(二)
28 0
|
1月前
|
SQL 前端开发
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(八)
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(八)
63 0
|
1月前
|
前端开发
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(六)
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(六)
47 0
|
1月前
|
搜索推荐
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(四)
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(四)
42 0

热门文章

最新文章