调用两个接口,将两个List放入到一个List中

提示:以下是本篇文章正文内容,下面案例可供参考

使用步骤

1.调用网易七鱼接口

代码如下:

private static final int timeoutMills = 3000;//设置请求超时
@Override
    public List<OnlineSessionRecord> queryOnlineSessionRecords(String personID, String appKey, String appSecret) throws Exception {

        String content = "{\"uid\":\""+ personID +"\"}";//请求Header里放personID 对应 七鱼的uid
        String nonce = QiyuUtil.MD5encryption(content);
        String time = Long.toString(Calendar.getInstance().getTimeInMillis() / 1000);
        String checksum = QiyuUtil.encode(appSecret, nonce, time);
        QiyuResult qiyuResult = new QiyuResult();
        RequestConfig requestConfig= RequestConfig.custom().setConnectTimeout(timeoutMills).build();
        HttpPost req = new HttpPost("七鱼要访问的链接");
        req.setEntity(new StringEntity(content, ContentType.create("application/json", "utf-8")));
        req.setConfig(requestConfig);
        HttpClientUtil.handleWithoutVerifySSL(req, new QiyuHandler(qiyuResult));
        String message = qiyuResult.getMessage();//请求返回的结果
        QiYuEntity qiYuEntity = JSON.parseObject(message, QiYuEntity.class);//结果转实体
        if(200 == (qiYuEntity.getCode()) && "success".equals(qiYuEntity.getMessage())) {
            List<OnlineSessionRecord> onlineSessionRecordList = qiYuEntity.getResult();//返回的结果是一个List
            return onlineSessionRecordList;
        } else {
            return new ArrayList<>();
        }
    }
    @Data
    public static class QiYuEntity{
        private Integer code;
        private String message;
        private ArrayList<OnlineSessionRecord> result;
        private Integer total;
    }

2.调用第三方接口

代码如下:

@Override
    public List<OnlineAIClinicalRecord> queryOnlineAIClinicalRecords(String personID) throws Exception {
        String url = "第三方的url";
        ArrayList<OnlineAIClinicalRecord> onlineAIClinicalRecordList = new ArrayList<>();
        String result = HttpClientUtil.doGet(url);
        if (null != result) {
            AIEntity aiEntity = JSON.parseObject(result, AIEntity.class);
            onlineAIClinicalRecordList = aiEntity.getData();
        }
        return onlineAIClinicalRecordList;
    }
    @Data
    public static class AIEntity{
        private ArrayList<OnlineAIClinicalRecord> data;
        private Integer total;
    }

3.将两个List合并到一个

代码如下:

@Override
    public List<OnlineCommonVo> queryOnlineCommonVos(String personID, String appKey, String appSecret) throws Exception {
        Person person = personService.findPersonById(personID);
        if (null == person){
            return new ArrayList<>();
        }
        //new 一个新的List 将两个list放入
        ArrayList<OnlineCommonVo> onlineCommonVoList = new ArrayList<>();
        //调用方法
        List<OnlineSessionRecord> onlineSessionRecords = queryOnlineSessionRecords(personID, appKey, appSecret);
        List<OnlineAIClinicalRecord> onlineAIClinicalRecords = queryOnlineAIClinicalRecords(personID);
        //返回的List遍历 放入 new的List中
        onlineSessionRecords.forEach(onlineSessionRecord -> {
            OnlineCommonVo onlineCommonVo = new OnlineCommonVo();
            onlineCommonVo.setTime(DateUtil.format(new Date(onlineSessionRecord.getStartTime()),"yyyy-MM-dd HH:mm:ss"));
            onlineCommonVo.setMobile(onlineSessionRecord.getMobile());
            onlineCommonVo.setType("类型1");
            onlineCommonVoList.add(onlineCommonVo);
        });
        onlineAIClinicalRecords.forEach(onlineAIClinicalRecord -> {
            OnlineCommonVo onlineCommonVo = new OnlineCommonVo();
            onlineCommonVo.setTime(formatDate(onlineAIClinicalRecord.getUpdated_at()));//处理带有区域的时间格式
            onlineCommonVo.setMobile(person.getMobile());
            onlineCommonVo.setType("类型2");
            onlineCommonVoList.add(onlineCommonVo);
        });
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //将合并的List 按时间排序, 也可以按其他类型排序
        Collections.sort(onlineCommonVoList,new Comparator<OnlineCommonVo>(){  //排序
            @Override
            public int compare(OnlineCommonVo o1, OnlineCommonVo o2) {
                String time1 = o1.getTime();
                String time2 = o2.getTime();
                Date date1 = null;
                Date date2 = null;
                try {
                     date1 = simpleDateFormat.parse(time1);
                     date2 = simpleDateFormat.parse(time2);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return date2.compareTo(date1);//倒序
            }
        });
        return onlineCommonVoList;
    }

    private String formatDate(String time){
        if("null".equals(time) || "".equals(time)||time==null){
            return null;
        }
        //更新时的时间格式
        try {
            return DateUtil.format(new Timestamp(DateUtil.getDate(new Long(time)).getTime()),"yyyy-MM-dd HH:mm:ss");
        } catch(Exception e) {
            System.out.println(time+"   时间格式为: yyyy-MM-dd'T'HH:mm:ss.SSS Z" );
        }

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z");
        String str = time.replace("Z", " UTC");
        try {
            return DateUtil.format(new Timestamp(format.parse(str).getTime()),"yyyy-MM-dd HH:mm:ss");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值