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

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

时间:2023-04-23 09:12:28浏览次数:28  
标签:反射 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存在商品价格,折扣价格两种指标,现在需要将其制作成柱状图,比较每一个周期内商品价格和折扣价格

image-20230118170652592

数据样式

{
    "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://www.cnblogs.com/cwtjyy/p/17345453.html

相关文章

  • SpringMVC 后台从前端获取单个参数
    1.编写web.xml(模板)2.springmvc配置文件3.编写对应数据库字段的pojo实体类@Data@AllArgsConstructor@NoArgsConstructorpublicclassUser{privateintid;privateStringname;privateintage;}ViewCode4.编写Controller类首先是从前端获取单......
  • 安卓开发获取安卓设备信息工具类
    以下是一个获取安卓设备信息的工具类:```importandroid.content.Context;importandroid.os.Build;importandroid.provider.Settings;importandroid.telephony.TelephonyManager;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;i......
  • 获取安卓设备MAC地址工具类
    获取安卓设备的MAC地址需要使用WifiManager,以下是一个获取MAC地址的工具类:```importandroid.annotation.SuppressLint;importandroid.content.Context;importandroid.net.wifi.WifiInfo;importandroid.net.wifi.WifiManager;importandroid.os.Build;importandroid.......
  • QGIS中导入dwg文件并使用GetWKT插件获取绘制元素WKT字符串以及QuickWKT插件实现WKT显
    场景QGIS在Windows上下载安装与建立空间数据库连接:在上面实现QGIS的安装之后,版本是3.26.3。业务需求:1、在dwg文件上绘制多边形区域,并获取绘制区域的wkt字符串。2、根据已知的wkt字符串,在dwg上显示。如果新建多边形图层参考如下QGIS怎样设置简体中文以及新建可编辑的多边形的图层:......
  • 什么是反射?
    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射的使用?在Java中,Class类与java.lang.reflect类库一起对反射技术进行......
  • mysql获取当前年月 mysql中replace into用法
    mysql获取当前年月 //1.获取年月日时分秒selectSYSDATE()AS'年月日时分秒';2020-07-0216:36:17//2.获取(年月日)selectDATE(CURDATE())as'年月日';selectCURDATE()as'年月日';selectcurrent_dateAS'年月日';2020-07-02//3.获取(时分秒):......
  • Java获取拼多多搜索词推荐 API接口(item_search_suggest-获得搜索词推荐)
    搜索词推荐的作用1.可以精准把控流量2.可以测试产品款式测试产品图片3.提升类目在平台的排名4.提升销量,加速报名参加平台的活动5.提升ROI,日常平销item_search_suggest-获得搜索词推荐公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥(接......
  • 深入 NODEJS 源码探究 CPU 信息的获取与利用率计算
    在Linux下我们通过top或者htop命令可以看到当前的CPU资源利用率,另外在一些监控工具中你可能也遇见过,那么它是如何计算的呢?在Nodejs中我们该如何实现?带着这些疑问,本节会先从Linux下的CPU利用率进行一个简单讲解做一下前置知识铺垫,之后会深入Nodejs源码,去探讨如何......
  • Java根据ID获取拼多多商品详情 API接口(商品ID、商品标题、价格、原价、昵称、库存、销
    ​ 根据小编对新零售的核心诉求的理解,拼多多其实并不属于新零售实体。而在我国经济红红火火的这个时代,与消费升级并存的对立方向消费降级现象、小镇的中青年的消费偏好、以及一线的消费者复杂甚至相对矛盾的消费特征,和背后由这些消费特征与诉求来决定的电商大格局。Java它是一......
  • tkinter中Scale滑杆获取值的三种方法
    importtkinterastkwin=tk.Tk()win.geometry('200x200')win.title('测试窗口')'''方法一:直接使用组件对象的get()方法获取程序调用该方法时,get()会返回当前滑杆的值'''#number_scale=tk.Scale(orient=tk.HORIZONTAL)#number_scale.pack(......