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

相关文章

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat