首页 > 其他分享 >通过反射获取进行字段赋值

通过反射获取进行字段赋值

时间:2023-04-29 15:01:29浏览次数:38  
标签:反射 indicator 01 name get vo 获取 map 赋值

业务场景

背景

在以日期维度展示数据时,数据库中保存的数据一般会制作成宽表的形式

比如:(id, projectNmae, projectID, indicator_name, indicator_value1,indicator_value1...,day)

根据indicator_name获取对应指标,根据indicator_value获取对应周期数据,比如indicator_value1代表(day-1)

问题

indicator_name存在商品价格,折扣价格两种指标,现在需要将其制作成柱状图,比较每一个周期内商品价格和折扣价格

通过反射获取进行字段赋值_List

数据样式

{
    "data": [
        {
            "indicatorName": "01/18",
            "shangpin": 499.0,
            "zhekou": 398.0
        },
        {
            "indicatorName": "01/19",
            "shangpin": 88.0,
            "zhekou": 56.0
        },
        {
            "indicatorName": "01/20",
            "shangpin": 0.0,
            "zhekou": 0.0
        }
        ...
    ],
    "errorCode": "NO-ERROR",
    "errorMessage": "NO-MESSAGE",
    "success": true
}

解决方案

1.从表中查出当前日期对应的两条数据

(id, projectNmae, projectID, "商品价格", 0.0, 88.0, 499.0...,"2023-01-20")

(id, projectNmae, projectID, "折扣价格", 0.0, 56.0, 398.0...,"2023-01-20")

2.根据柱状图展示的数据量进行循环遍历,比如这个柱状图展示三个周期的数据,即循环三次

3.返回组装好的数据列表

//current为展示的周期数量
    List<Vo> result = new ArrayList<>();
    for (int i = 0; i < current; i++) {
        VO vo = new VO();
        // 将pDay设置为当前时间,相减获取x轴月份参数
        String timeTemp = day;
        SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
        vo.setDay(date.parse(day).getTime() - (i * 86400000L));
        //list 为查询出来的两条数据集合,xx为数据对应的实体类
        List<String> nameList =list.stream().map(XX::getDeptId).collect(Collectors.toList());
        //将list转化为key为indicatorName, value为indicator_value的map集合
        Map<String, XX> map = list.stream().collect(Collectors.groupingBy(XX::getIndicatorName));
        for (String name : nameList) {
            if (name.equals("商品价格") {
                vo.setShanpin((Double) map.get(name).get(0).getClass().getMethod(CharSequenceUtil.concat(true, INDICATOR_VALUE, String.valueOf(i))).invoke(map.get(name).get(0)));
            }
            if (name.equals("折扣价格")) {
                vo.setZhekou((Double) map.get(name).get(0).getClass().getMethod(CharSequenceUtil.concat(true, INDICATOR_VALUE, String.valueOf(i))).invoke(map.get(name).get(0)));
            }
        }
        result.add(vo);
}

此处仅做一个简单的代码demo,根据业务需求添加逻辑或者判断



标签:反射,indicator,01,name,get,vo,获取,map,赋值
From: https://blog.51cto.com/u_15489116/6236792

相关文章

  • 通过反射获取进行字段赋值
    业务场景背景在以日期维度展示数据时,数据库中保存的数据一般会制作成宽表的形式比如:(id,projectNmae,projectID,indicator_name,indicator_value1,indicator_value1...,day)根据indicator_name获取对应指标,根据indicator_value获取对应周期数据,比如indicator_value1代表(day-1)问......
  • js循环调用接口,获取每一次接口的值
    vue代码。data数据:list:[{listName:"待办",listNum:0},{listName:"退回",listNum:0},{listName:"已办",listNum:0},{listName:"全部",listNum:0}],methods里面的方法:asyncgetAllData(){this.list.map((listItem,index)=&......
  • 商品详情API接口如何获取淘宝数据
    淘宝是中国最大最受欢迎的电商平台之一,汇集了大量的商家和买家。在淘宝上热门商品的销量经常十分巨大,因此有些开发者和网站想要获取淘宝商品数据来进行一些分析。下面是一篇关于淘宝商品详情API接口获取淘宝数据的文章。一、淘宝商品API接口介绍淘宝开放了API接口,允许开发者获取淘......
  • MFC-GetWindowLong获取窗口样式、窗口标识符ID、处理函数
     获取窗口样式LONGStyles=GetWindowLong(hWnd4,GWL_STYLE);//获取窗口风格/*参数1:HWNDhWnd窗口句柄参数2:intnIndex改变窗口上的何种属性窗口属性包括窗口的样式(GWL_STYLE)、扩展样式(GWL_EXSTYLE)、窗口函数、窗......
  • JS获取table中选中某几行其中某一列数值的总和
    JS获取table中选中某几行其中某一列数值的总和一、思路1.如何获取某几行,并且可以实时变化数值?实现如下:$("input[type='checkbox']").click(function(){alert($(this).val());})2.接下来就是实现当每次触发点击事件以后,然后,计算其中的值,实现如下:<script>$(functi......
  • 网路编程和反射
    网路编程CS:客户端与服务器BS:浏览器和服务器协议公开数据安全存在问题(目前加密算法很厉害) 1.网络协议:遵循网路数据传输规则TCP/IP协议4层 视频语音需要对方同意UDP协议 7层 发消息收到没收到都行应用层传输层网络层链路层 2.IP地址和端口号ipv4ipv6通过IP地......
  • vue3 获取asset文件夹下所有资源文件列表
     参考链接:https://www.jianshu.com/p/0f4386d19c07importpathfrom"path"; constgetLayerBgs=function(){ constimgs:any=[]; //获取所有背景图层 //读取文件的路径是否遍历文件的子目录匹配文件正则表达式 constfiles=require.context("@/a......
  • 从身份证号码获取出生日期、年龄、性别
    //获取出生日期functiongetBirthday(cardNo){varbirthday=cardNo.substring(6,10)+"-"+cardNo.substring(10,12)+"-"+cardNo.substring(12,14);returnbirthday;}//获取年龄functiongetAge(cardNo){vardate=newDate();......
  • Java获取1688商品详情API接口示例说明
    ​ 在使用JavaWeb类的时候,如果我们需要获取一个网站中某个商品的详细信息,我们可以使用JavaScript来获取。我们可以用JavaScript来实现一个获取商品详情的API接口,来获取一个网站中某个商品的详细信息。在使用JavaScript进行接口请求时,可以使用下面的方法:通过javascript获......
  • 淘宝店铺商品详情接口代码-获取淘宝商品详情 API 接口返回值说明示例
    ​现在某宝的规则越来越严,想要入驻某宝需要审核的特别严格,不然就会被封店,那么大家知道某宝店铺商品详情接口吗?下面是我整理的关于某宝店铺商品详情接口的相关内容,大家可以来了解下! 目前提供的接口有:商品详情、商品详情原数据、商品评论、商品快递费用、淘宝分类详情、关键字搜......