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

2023-12-20 17:36

本文主要是介绍nbcio-boot的flowable流程模型查询修正为按发布时间倒序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

gitee源代码地址

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

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

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

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

      所以只能用其它方法了。

     java实现方法如下:

/*** 流程定义列表** @param pageNum  当前页码* @param pageSize 每页条数* @param flowProcDefDto* modify by nbacheng* @return 流程定义分页列表数据*/@Overridepublic 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 拆分成多个ListList<? 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);}

效果如下:

这篇关于nbcio-boot的flowable流程模型查询修正为按发布时间倒序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/516875

相关文章

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE