JAVA前端bootstrap-table表格,全量查数据后也能字段点击排序sort

工程后期改造,加了一层首页展示,该层无需分页所以想在代码层次实现排序,而不是数据库sql

1、后端代码展示如下

private List<QcCheckStatVO> getQcCheckStatList(Map<String, Object> para, String orderByColumn, String isAsc, int pageNum, int pageSize, boolean isAdmin) throws Exception {initializeSearch(para);List<QcCheckStatVO> list;// 展示的数据集合List<QcCheckStatVO> homeDataList = new ArrayList<>(16);if (isAdmin) {list = baseMapper.selectPageViewList(para);// list 以instanceId 分组// 将在sql中聚合函数操作放到java中计算Map<String, List<QcCheckStatVO>> collect = list.stream().collect(Collectors.groupingBy(o -> o.getInstanceId()));for (String s : collect.keySet()) {extracted(homeDataList, collect, s);}// 组装排序字段if (StrUtil.isAllNotBlank(orderByColumn, isAsc)) {Comparator<QcCheckStatVO> qcCheckStatVOComparator = Comparator.comparing(QcCheckStatVO::getCreateTime).reversed().thenComparing(QcCheckStatVO::getReqFieldErrorCount);Map<Key, Comparator<QcCheckStatVO>> map = new HashMap<>(16);map.put(new Key("expectCount", SqlKeyword.ASC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getErrorCount));map.put(new Key("expectCount", SqlKeyword.DESC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getErrorCount).reversed());map.put(new Key("actualCount", SqlKeyword.ASC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getActualCount));map.put(new Key("actualCount", SqlKeyword.DESC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getActualCount).reversed());map.put(new Key("errorCount", SqlKeyword.ASC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getErrorCount));map.put(new Key("errorCount", SqlKeyword.DESC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getErrorCount).reversed());map.put(new Key("integrity", SqlKeyword.ASC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getReqFieldErrorCount));map.put(new Key("integrity", SqlKeyword.DESC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getReqFieldErrorCount).reversed());map.put(new Key("foreignRate", SqlKeyword.ASC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getForeignErrorCount));map.put(new Key("foreignRate", SqlKeyword.DESC.getSqlSegment()), Comparator.comparing(QcCheckStatVO::getForeignErrorCount).reversed());for (Key key : map.keySet()) {if (key.getField().equalsIgnoreCase(orderByColumn) && key.getDirection().equalsIgnoreCase(isAsc)) {qcCheckStatVOComparator = map.get(key);}}final List<QcCheckStatVO> sortedList = homeDataList.stream().sorted(qcCheckStatVOComparator).collect(Collectors.toList());homeDataList = sortedList;}} else {// 首页不分页,第二层才分页,所以将排序条件加上去// 组装排序字段String orderBy = "";if (StrUtil.isAllNotBlank(orderByColumn, isAsc)) {orderBy = " " + EnumExtUtil.getEnumOnValue(QcCheckStatConstants.SortFieldEnum.class, orderByColumn, "key").getValue() + " " + isAsc;para.put("sortKey", orderByColumn);if (StrUtil.equalsIgnoreCase(SqlKeyword.ASC.getSqlSegment(), isAsc)) {para.put("sortType", SqlKeyword.ASC.getSqlSegment());} else {para.put("sortType", SqlKeyword.DESC.getSqlSegment());}} else {if (isAdmin) {orderBy = " REQ_FIELD_ERROR_COUNT asc";} else {orderBy = " t1.CREATE_TIME desc ,t1.REQ_FIELD_ERROR_COUNT asc";}}try {PageHelper.startPage(pageNum, pageSize, orderBy);list = baseMapper.selectPageViewList(para);homeDataList = list;} finally {PageHelper.clearPage();}}if (CollUtil.isEmpty(list)) {return new ArrayList<>();}for (QcCheckStatVO vo : homeDataList) {// 前置机名if (ProjectConstant.ProjectName.RONGDA_DEQC.equals(projectConfig.getName())) {vo.setInstanceName(ConfigUtil.get("deqc.check.instance.name", "未知"));} else if (ProjectConstant.ProjectName.RONGDA_DESYS.equals(projectConfig.getName())) {final Instance instance = instanceCoreMapper.selectById(vo.getInstanceId());if (ObjectUtil.isNotNull(instance)) {vo.setInstanceName(instance.getInstanceName());}}// 判断实传是否为0 有的话,则显示‘异常’boolean actualCountErrorFlag = false;if (ObjectUtil.isNull(vo.getActualCount()) || vo.getActualCount().equals("0")) {actualCountErrorFlag = true;}vo.setActualCountErrorFlag(actualCountErrorFlag);// 完整性vo.setIntegrity(StrUtil.format("{}/{}", vo.getReqFieldErrorCount(), vo.getReqFieldCount()));// 饱和度// 饱和度率vo.setSaturation(StrUtil.format("{}/{}", vo.getReqFieldCount(), vo.getReqFieldErrorCount()));vo.setSaturationRate(countRate(vo.getReqFieldErrorCount().toString(), vo.getReqFieldCount().toString()));// 及时性// 及时性率if (vo.getActualCount() > 0 && !vo.getActualCountErrorFlag()) {vo.setTimeliness("正常");} else {vo.setTimeliness("异常");}// 错误率final String errorRate = countRate(vo.getErrorCount().toString(), vo.getCheckCount().toString());vo.setErrorRate(errorRate);// 外键错误率final String foreignRate = countRate(vo.getForeignErrorCount().toString(), vo.getCheckCount().toString());vo.setForeignRate(foreignRate);}return homeDataList;}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

埃科光电在科创板上市:同创伟业、毅达资本为股东,实控人为董宁

7月19日&#xff0c;合肥埃科光电科技股份有限公司&#xff08;下称“埃科光电”&#xff0c;SH:688610&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;埃科光电的发行价为73.33元/股&#xff0c;发行数量为1700万股&#xff0c;募资总额约为12.47亿元&#xff…

Shell运行原理以及Linux中的权限问题

目录 一、shell的运行原理 二、Linux权限的概念 2.1 用户账号切换 2.2 仅提升当前指令的权限 2.3 将普通用户添加到信任列表 三、Linux权限管理 3.1 文件访问者的分类 3.2 文件类型和访问权限 3.3 字符权限值的表示方法 3.3.1 字符表示方法 3.3.2 八进制表示法 3.4…

XSS 攻击的检测和修复方法

XSS 攻击的检测和修复方法 XSS&#xff08;Cross-Site Scripting&#xff09;攻击是一种最为常见和危险的 Web 攻击&#xff0c;即攻击者通过在 Web 页面中注入恶意代码&#xff0c;使得用户在访问该页面时&#xff0c;恶意代码被执行&#xff0c;从而导致用户信息泄露、账户被…

使用RESTful风格编写用户增删改查模拟操作

三种参数接收方式的区别&#xff1a; RequestParam 用于接收url地址传参或表单传参 RequestBody 用于接收json数据 PathVariable 用于接收路径参数&#xff0c;使用{参数名称}描述路径参数 package com.wu.controller;import com.wu.domain.User; import org.springframework.s…

BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

本文对BUFG/BUFGCE/BUFH/BUFHCE简单介绍&#xff0c;便于后续查看。 原语的使用&#xff1a;在vivado中找到所要用的原语&#xff0c;直接将其实例化到设计中即可。 文章目录 BUFGBUFGCEBUFHBUFHCEBUFMRBUFRBUFMRCEIBUFIBUFDS 下图为 7 系列 FPGA 时钟架构图&#xff1a; BU…

在Linux中部署mysql并远程连接

1. 配置yum仓库 更新密钥 rpm -import https: /repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 安装Mysql yum库 rpm -Uvh http: /repo.mysql.com /mysql57-community-release-el7-7.noarch.rpm 2. 使用yum安装MySQL yum -y install mysql-community-server 3. 安装完成后&#x…

redis7.0编译安装 + bash安装脚本

以下操作在debian11下演示&#xff0c;ubuntu通用&#xff0c;其它系列linux自行安装依赖&#xff0c;其余一样 以7.0.12版本为例进行安装 最后的bash脚本是对前面的操作的封装&#xff0c;一键即配置完成&#xff0c;即可使用 一、编译安装 1.安装依赖 apt-get install bui…

Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)

简介 乍眼一看&#xff0c;小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了&#xff0c;其实不然&#xff0c;上次介绍和分享的大哥是uiautomatorviewer&#xff0c;是一款定位工具。今天介绍的是一个java库&#xff0c;提供执行自动化测试的各种API。 Android团队在4…

数据结构(王道)——数据结构之 二叉树

一、数据结构之 二叉树概念&#xff1a; 特殊的二叉树结构&#xff1a; 满二叉树完全二叉树 二叉排序树 平衡二叉树 二叉树基本概念总结&#xff1a; 二、二叉树的常用性质&#xff1a; 1、【二叉树】的叶子结点比二分支结点多一个 2、【m叉树】的第i层至多有m^(i-1)个结点 3、…

关于Qt For android第一次编译时出现的问题

搞了三四天&#xff0c;搞的快崩溃了&#xff0c;问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not…

pytorch 2.0初探:和pytorch 1.13的速度对比

看到pytorch2.0出来了&#xff0c;而且宣传提速明显&#xff0c;一行代码即可提速43%左右&#xff1a; compiled_model torch.compile(model) We then measure speedups and validate accuracy across these models. Since speedups can be dependent on data-type, we measu…

真正的理解WPF中的TemplatedParent

童鞋们在WPF中经常看到 TemplatedParent ,或者经常看到下面的用法: {Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content} 是不是看的一脸蒙圈? 先看官方文档: 意思是 和这个控件的 模板上的 父亲,如果这个控件不是模板创建的,那么这个值就…

CSS 渐变边框及动画

转载请注明出处&#xff0c;点击此处 查看更多精彩内容 用 CSS 实现渐变边框及动画&#xff0c;下面对关键点进行解释说明&#xff0c;查看完整代码及预览效果请 点击这里。 简单说明原理&#xff1a;使用伪元素 ::before 绘制一个渐变色&#xff0c;然后使用伪元素 ::after 绘…

J2EE反射

目录 一.什么是反射 用实体类Student做示范 三.反射实例化 四.反射动态方法调用 五.反射读写属性 一.什么是反射 反射java语言中的一种机制&#xff0c;通过这种机制可以动态的实例化对象&#xff0c;读写属性&#xff0c;调用方法 二.类类 Class.forName(完整类名)类名…

16. 存储过程和存储函数

文章目录 1.存储过程和存储函数2.创建和使用存储过程2.1 语法&#xff1a;2.2 第一个存储过程&#xff0c;打印hello world2.3 调用语法2.4 带参数的存储过程2.5 调试存储过程 3.创建和使用存储函数3.1 存储函数定义3.2 存储函数语法&#xff1a;3.3 存储函数案例&#xff1a; …

Mybatis操作数据库执行流程的先后顺序是怎样的?

MyBatis是一个支持普通SQL查询、存储及高级映射的持久层框架&#xff0c;它几乎消除了JDBC的冗余代码。使Java开发人员可以使用面向对象的编程思想来操作数据库。对于MyBatis的工作原理和操作流程的理解&#xff0c;我们先来看下面的工作流程图。 MaBatis的工作流程 在上图中…

为什么弹性内容交付网络是决定网站性能的关键

如今的用户对于所访问网站都对网站有自己的标准&#xff0c;他们期望访问的网站性能良好&#xff0c;具有快速的页面加载时间和易于访问、新鲜且动态的内容&#xff0c;同时他们还希望享受无缝且安全的体验&#xff0c;无需停机或内容访问受到限制。比如微博等平台每次在网络热…

布隆过滤器在海量数据去重验证中应用

布隆过滤器在海量数据去重验证中应用 文章目录 布隆过滤器在海量数据去重验证中应用引子面试结束级方案——从数据库中取新手级方案——利用redis的set数据结构专业级方案——利用布隆过滤器 布隆过滤器基本概念优点缺点布隆过滤器的数据结构布隆过滤器的工作流程布隆过滤器的优…

数据库应用:MySQL备份与恢复

目录 一、理论 1.数据备份 2.完全备份与恢复 3.完全备份与恢复应用 4.增量备份与恢复 5.增量备份与恢复应用 6.使用脚本备份 7.日志管理 二、实验 1.完全备份与恢复 2.增量备份与恢复 3.使用脚本备份 三、问题 1.mysqldump报错 四、总结 一、理论 1.数据备份 …

企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + 前后端分离 + 二次开发

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…