对象行转列方法:通过定义的对象属性,获取属性名与值的数组,转换为列

/** 
	    * 获取属性名数组 
	 * @throws SecurityException 
	 * @throws NoSuchMethodException 
	 * @throws InvocationTargetException 
	 * @throws IllegalArgumentException 
	 * @throws IllegalAccessException 
	    * */  
	private static  String[] getFiledName(Object o) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{  
	    Field[] fields=o.getClass().getDeclaredFields();  
	    String[] fieldNames=new String[fields.length];  
	    for(int i=0;i<fields.length;i++){  
//	        System.out.println(fields[i].getName());
	        String type = fields[i].getGenericType().toString();
//	        System.out.println(type);
	        Method m = o.getClass().getMethod("get" + fields[i].getName());
            // 调用getter方法获取属性值
//            if (m.invoke(o) != null) {
//                System.out.println("属性值为:" + m.invoke(o));
//            } else {
//               System.out.println("属性值为:空");
//            }
	        if(type.equals("class java.lang.Float")||fields[i].getName().equals("EMPLOY_NUM")) {
	          fieldNames[i]=fields[i].getName()+":"+m.invoke(o);  
	        }
	    }  
	    return fieldNames;  
	   }

public List<PaRpt> convertTotalProfitRpt(List<TotalProfitRpt> rpts,String RPT_TYPE) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
		if(rpts.size()>0) {
			List<PaRpt> paRptList = new ArrayList<PaRpt>();
			for(TotalProfitRpt rpt :rpts) {
				List<PaRpt> paRpts = splitTotalProfitRpt(rpt,RPT_TYPE);
				paRptList.addAll(paRpts);
			}
			return paRptList;
		}else {
			return null;
		}
	}
/**
*对象切割
*/	
public List<PaRpt> splitTotalProfitRpt(TotalProfitRpt rpt,String RPT_TYPE) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
		List<PaRpt> paRpts = new ArrayList<PaRpt>();
		String [] files = getFiledName(rpt);
		 for (int i = 0; i < files.length; i++) {
			 PaRpt p= new PaRpt();
				p.setCOMPANY_ID(rpt.getCOMPANY_ID());
				p.setCOUNTRY_CODE(rpt.getCOUNTRY_CODE());
				p.setBRANCH_NO(rpt.getBRANCH_NO());
				p.setDISTRICT_NO(rpt.getDISTRICT_NO());
				p.setFPERIOD(rpt.getFPERIOD());
				p.setRPT_TYPE(RPT_TYPE);
				if(!NullUtil.isNull(files[i])) {
					p.setITEM_NO(files[i].split(":")[0]);
					p.setFVALUE(Float.valueOf(files[i].split(":")[1]));
					paRpts.add(p);
				}
		}
		 return paRpts;
	}

 

转载于:https://my.oschina.net/lyleluo/blog/2050172

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值