把工单历史表中的数据,按照工单进行分类,每一批工单的数据放在同一个 key 中
/**
* 把工单历史表中的数据,按照工单进行分类,每一批工单的数据放在同一个key中
* 将对象列表按名称分类成 Map(分类名必与对象的某 get 方法的后的名一致<如:get(name) 实际是 get("ticketId")>
*
* @param list sql数据集合
* @param name HashMap<String,Object> 的某个 key ,实际上就是数据表中的某个字段
* @return Map<String, List < T>>
*/
public static Map<String, List<HashMap<String, Object>>> objListToMapClassificationByName(List<HashMap<String, Object>> list, String name) {
Map<String, List<HashMap<String, Object>>> resultMap = Maps.newHashMap();
for (HashMap<String, Object> obj : list) {
try {
String ticketId = obj.get(name).toString();
if (StringUtil.isEmpty(ticketId)) {
continue;
}
List<HashMap<String, Object>> tempList = null;
if (!resultMap.containsKey(ticketId)) {
tempList = new ArrayList<>();
} else {
tempList = resultMap.get(ticketId);
}
tempList.add(obj);
resultMap.put(ticketId, tempList);
} catch (Exception e) {
e.printStackTrace();
}
}
return resultMap;
}
案例:
//联表查询工单数据
List<HashMap<String, Object>> list = reportAllSqlMapper.selectAllSql(stringSql);
//拿到分类后的数据
Map<String, List<HashMap<String, Object>>> ticketHashMap = objListToMapClassificationByName(list, "ticketId");
上面的意思是把 ticketId 相同的数据都放到同一个 key 对应的 value 上。
如果是使用实体类,则直接使用下面这种方式即可
//联表查询工单数据
List<HistoryTypeBean> list = ticketIndicatorMapper.selectAllHistory(baseEntity);
//key = 工单id ,value = 相同的工单数据
Map<String, List<HistoryTypeBean>> map = list.stream().collect(Collectors.groupingBy(HistoryTypeBean::getTicketId));
@Data
public class HistoryTypeBean {
/**
* 工单id
*/
private String ticketId;
/**
* slaId
*/
private String slaId;
/**
* article_id 当 history_type_id 状态为 2,用 articleId 去 article 表根据 is_visible_for_customer 判断是内部还是外部备注
*/
private String articleId;
/**
* 工单历史操作类型
*/
private String historyTypeId;
/**
* 工单历史操作状态类型
*/
private String ticketHistoryStateId;
/**
* 工单状态类型表,工单操作状态
*/
private String ticketStateTypeId;
/**
* 日历表日历id
*/
private String calendarId;
/**
* 工单历史表创建时间
*/
private String createTime;
/**
* 工单历史表queue_id
*/
private String historyQueueId;
}
把工单历史表中的数据,按照工单进行分类,每一批工单的数据放在同一个 key 中的更多相关文章
- Activiti系列:是否可以让某些流程的信息写到历史表,而另外一些不写?
一.起因 打算使用activiti的定时启动事件来定时启动流程,然后再在该流程中针对每个用户启动另外一个流程实例来计算每个用户的实时账单,系统的用户数一般是1000~2000(此处假设是200 ...
- oracle 中从一个历史表中查询最新日期数据插入到另一个表中语句
先从历史表中查询最新的一个语句: select t.id from ( select r.*, row_number() over(partition by r.分组字段 order by r.排序时 ...
- 迁移数据到历史表SQL(转)
有时工作需要需要把当前表的数据,移到历史表中,而历史表基本是以时间(年)为后缀来命名历史表的,如 A_2011,A_2012,在移数据时,要按数据的时间,移到不同的表中,且由于如果数据有同步.一次处理 ...
- ADO.NET事务处理,初始回调函数,多张表的数据在同一个DataGridView中展示
执行ADO.NET事务包含四个步骤,接下来以Transaction对象为例介绍. (1)调用SQLConnection对象的BeginTransaction()方法,创建一个SQLTransactio ...
- JavaScript 客户端JavaScript之Document对象中的表单和表单元素
Form对象 代表一个HTML表单(document可以有多个表单元素) 表单访问 document.form[document.forms.length-1] 访问表单元素 document.for ...
- MySQL存储过程-->通过游标遍历和异常处理迁移数据到历史表
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表. DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_x ...
- kylin的clube合并后清理hbase中产生的相关历史表
kylin的clube合并后清理hbase中产生的相关历史表 kylin 的clube 历史的每次构建,都会产生一个hbase的表:虽然可以设置按照一定策略合并,但是合并后hbase 历史表不会被自动 ...
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- SQLSERVER 数据调度示例,调度数据到中间表或者历史表
USE [MeiDongPay_Test] GO /****** Object: StoredProcedure [dbo].[Job_BatchTransferOrderToMidst] Scrip ...
- ajaxSubmit 页面生成的html 中含有表单提交表单方式
$("#form_title").ajaxSubmit({ //页面生成的html 中含有表单提交表单方式 dataType: "json", success ...
随机推荐
- stegsolve与zsteg的使用
zsteg 介绍:用来检测PNG和BMP中隐藏数据的工具,可以快速提取隐藏信息 使用环境:kali kali自带zsteg,可以用这个指令使用 gem install zsteg 下载完之后查看使用方 ...
- pe文件对齐
PE中规定了三类对齐:数据在内存中的对齐. 数据在文件中的对齐.资源文件资源数据的对齐. 1.内存对齐 由于windows操作系统对内存属性的设置以也为单位,所以通常情况下,节在内存中的对齐单位必须至 ...
- 【技术积累】Vue中的核心概念【四】
Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数.这些钩子函数允许开发者 ...
- IRF技术介绍及配置介绍
IRF技术介绍及配置介绍 IRF(Intelligent Resilient Framework,智能弹性架构)是 H3C 自主研发的软件虚拟化技术. 它的核心思想是将多台设备通过 IRF 物理端口连 ...
- 超越.NET极限:我打造的高精度数值计算库
超越.NET极限:我打造的高精度数值计算库 还记得那一天,我大学刚毕业,紧张又兴奋地走进人生第一场.NET工作面试.我还清楚地记得那个房间的气氛,空调呼呼地吹着,面试官的表情严肃而深沉.我们进行了一番 ...
- Cilium系列-11-启用带宽管理器
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...
- Xshell使用技巧及常用配置
Xshell使用 1.调整 Xshell 的终端显示和回滚缓冲区大小 磨刀不误砍柴工,为了更方便地学习 Linux,首先得对终端进行一些调整,步骤如下: 首先通过 xshell 顶部菜单中的文件--& ...
- js高级之内存管理与闭包
javacript中的内存管理 javascript中不需要我们手动去分配内存,当我们创建变量的时候,会自动给我们分配内存. 创建基本数据类型时,会在栈内存中开辟空间存放变量 创建引用数据类型时,会在 ...
- Unity的IPreprocessComputeShaders:深入解析与实用案例
Unity IPreprocessComputeShaders Unity IPreprocessComputeShaders是Unity引擎中的一个非常有用的功能,它可以让开发者编译Compute ...
- AI绘画:Stable Diffusion 终极炼丹宝典:从入门到精通
本文收集于教程合集:AIGC从入门到精通教程汇总 我是小梦,以浅显易懂的方式,与大家分享那些实实在在可行之宝藏. 历经耗时数十个小时,总算将这份Stable Diffusion的使用教程整理妥当. 从 ...