1. /**
    * 把工单历史表中的数据,按照工单进行分类,每一批工单的数据放在同一个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;
    }

  1. 案例:
  1. //联表查询工单数据
    List<HashMap<String, Object>> list = reportAllSqlMapper.selectAllSql(stringSql);

    //拿到分类后的数据
    Map<String, List<HashMap<String, Object>>> ticketHashMap = objListToMapClassificationByName(list, "ticketId");
  1. 上面的意思是把 ticketId 相同的数据都放到同一个 key 对应的 value 上。


  1. 如果是使用实体类,则直接使用下面这种方式即可
  1. //联表查询工单数据
    List<HistoryTypeBean> list = ticketIndicatorMapper.selectAllHistory(baseEntity);
  1. //key = 工单id ,value = 相同的工单数据
  1. Map<String, List<HistoryTypeBean>> map = list.stream().collect(Collectors.groupingBy(HistoryTypeBean::getTicketId));
  1.  

  1.  
  1. @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;

    }
  1.  

把工单历史表中的数据,按照工单进行分类,每一批工单的数据放在同一个 key 中的更多相关文章

  1. Activiti系列:是否可以让某些流程的信息写到历史表,而另外一些不写?

    一.起因     打算使用activiti的定时启动事件来定时启动流程,然后再在该流程中针对每个用户启动另外一个流程实例来计算每个用户的实时账单,系统的用户数一般是1000~2000(此处假设是200 ...

  2. oracle 中从一个历史表中查询最新日期数据插入到另一个表中语句

    先从历史表中查询最新的一个语句: select t.id from ( select r.*, row_number() over(partition by r.分组字段 order by r.排序时 ...

  3. 迁移数据到历史表SQL(转)

    有时工作需要需要把当前表的数据,移到历史表中,而历史表基本是以时间(年)为后缀来命名历史表的,如 A_2011,A_2012,在移数据时,要按数据的时间,移到不同的表中,且由于如果数据有同步.一次处理 ...

  4. ADO.NET事务处理,初始回调函数,多张表的数据在同一个DataGridView中展示

    执行ADO.NET事务包含四个步骤,接下来以Transaction对象为例介绍. (1)调用SQLConnection对象的BeginTransaction()方法,创建一个SQLTransactio ...

  5. JavaScript 客户端JavaScript之Document对象中的表单和表单元素

    Form对象 代表一个HTML表单(document可以有多个表单元素) 表单访问 document.form[document.forms.length-1] 访问表单元素 document.for ...

  6. MySQL存储过程-->通过游标遍历和异常处理迁移数据到历史表

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表. DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_x ...

  7. kylin的clube合并后清理hbase中产生的相关历史表

    kylin的clube合并后清理hbase中产生的相关历史表 kylin 的clube 历史的每次构建,都会产生一个hbase的表:虽然可以设置按照一定策略合并,但是合并后hbase 历史表不会被自动 ...

  8. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  9. SQLSERVER 数据调度示例,调度数据到中间表或者历史表

    USE [MeiDongPay_Test] GO /****** Object: StoredProcedure [dbo].[Job_BatchTransferOrderToMidst] Scrip ...

  10. ajaxSubmit 页面生成的html 中含有表单提交表单方式

    $("#form_title").ajaxSubmit({ //页面生成的html 中含有表单提交表单方式 dataType: "json", success ...

随机推荐

  1. PhotoShop AI 爱国版保姆级安装和使用

    上篇Photoshop AI 令人惊叹的生成式填充介绍了 PhotoShop AI 的新特性功能,有人以为我收了 Adobe 公司的钱帮它们做推广~~~.别不信,事实上确有其事,某平台审核直接把它删掉 ...

  2. 河南省第十四届icpc大学生程序设计竞赛-clk

    这次比赛赛程比较长,520出发,521,回学校,出发的那一天有点热,感觉不是很好,而且那一天感觉有点生病,应该只是普通感冒,热身赛的时候被oier吊打,省实验真厉害,晚上回酒店后,我喊队友,补了前年的 ...

  3. Unity UGUI的RectMask2D(2D遮罩)组件的介绍及使用

    Unity UGUI的RectMask2D(2D遮罩)组件的介绍及使用 1. 什么是RectMask2D组件? RectMask2D是Unity UGUI中的一个组件,用于实现2D遮罩效果.它可以限制 ...

  4. 懒人的百宝箱「GitHub 热点速览」

    本周 GitHub Trending 除了 lazydocker 之外,还有多个 lazy 项目上线,比如大家熟悉的 lazyvim,可见,这个世界对懒人还是很友好的.除此之外,主打一个密码免输入,绕 ...

  5. AI视频风格转换:Stable Diffusion+EBSynth

    这次转换的视频还比较稳定,先给大家看下效果. 这里传不了视频,还是放到盘盘了:https://www.aliyundrive.com/s/5mzfjLViyDa 书接上文,在上一篇文章中,我们首先使用 ...

  6. JDK源码-StringJoiner源码分析

    背景 功能描述:将多个元素使用指定符号前后连接为字符串:eg:1 2 3 4 5 , => 1,2,3,4,5 要点: 多个元素 指定分隔符 分隔符只在元素之间,不能作为第一或最后一个 使用方法 ...

  7. UPS设备在物流机房中的应用浅析

    1 UPS 简介 UPS 即不间断电源 (Uninterruptible Power Supply),是一种含有储能装置的不间断电源.主要用于给部分对电源稳定性要求较高的设备,提供不间断的电源. 当市 ...

  8. js 文字像打字一样缓缓出现

    点击查看代码 <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UT ...

  9. 6、Mybatis之高级查询

    6.1.创建接口.映射文件和测试类 ++++++++++++++++++++++++++分割线++++++++++++++++++++++++++ 注意namespace属性值为对应接口的全限定类名 ...

  10. 万字长文硬核AQS源码分析

    阅读本文前,需要储备的知识点如下,点击链接直接跳转. java线程详解 Java不能操作内存?Unsafe了解一下 一文读懂LockSupport AQS简介 AQS即AbstractQueuedSy ...