动态返回模版配置的参数

返回动态参数

参数已模版的形式配置,将动态的配置参数返回

service层

@Override
    public Object getMachineConfig(GetConfigJson getConfigJson) {
        Object cglibEntity = new Object();
        String tableName = null;
        switch (getConfigJson.getMachineType().intValue()){
            //1.闸机设备 2.窗口状态屏 3.排队屏 4.闸机屏 5.取号机
            case 2: tableName = "MACHINESTATUS"; break;
            case 3: tableName = "MACHINELINE"; break;
            case 4: tableName = "MACHINEZJ"; break;
            case 5: tableName = "CALLMANAGER"; break;
        }
        //判断设备类型
        if(getConfigJson.getMachineType() == 1L){
            //获取闸机语音模版配置
            List<ModelDetail> voiceList =  getConfigureDao.getMachineVoiceConfig(getConfigJson);
            //动态生成语音模版bean
            Object voiceBean = getCglibEntity(voiceList);
            //获取闸机配置参数
            List<ModelDetail> paramList =  getConfigureDao.getMachineConfig(getConfigJson);
            //将语音对象放入模版参数list中
            List<ModelDetail> modelDetailList = setModelDetail(voiceBean, paramList);
            //动态生成bean
            cglibEntity = getCglibEntity(modelDetailList);
        }else {
            //获取机器语音模版配置
            List<ModelDetail> voiceList =  getConfigureDao.getOtherMachineVoiceConfig(getConfigJson,tableName);
            //动态生成语音模版bean
            Object voiceBean = getCglibEntity(voiceList);
            //获取机器配置参数
            List<ModelDetail> paramList =  getConfigureDao.getOtherMachineConfig(getConfigJson,tableName);
            //将语音对象放入模版参数list中
            List<ModelDetail> modelDetailList = setModelDetail(voiceBean, paramList);
            //动态生成bean
            cglibEntity = getCglibEntity(modelDetailList);
        }
        return cglibEntity;
    }


/**
     * 将语音模版对象放入模版list中
     * @param voiceBean
     * @param paramList
     * @return
     */
    public static List<ModelDetail> setModelDetail(Object voiceBean,List<ModelDetail> paramList){
        ModelDetail modelDetail = new ModelDetail();
        modelDetail.setParameter_code("voiceModel");
        Object obj = JSONArray.toJSON(voiceBean);
        modelDetail.setParameter_value(obj.toString());
        paramList.add(modelDetail);
        return paramList;
    }

动态生成bean

/**
     * 动态生成bean
     * @param paramlist
     * @return
     */
    public static Object getCglibEntity(List<ModelDetail> paramlist){
        Map<String, Object> propertyMap = new LinkedHashMap<>();
        CglibEntity bean = null;
        try {
            //将参数list放入map中
            for (ModelDetail modelDetail : paramlist) {
                if(modelDetail.getParameter_code().equals("voiceModel")) {
                    propertyMap.put(modelDetail.getParameter_code(), Class.forName("java.lang.Object"));
                }else {
                    propertyMap.put(modelDetail.getParameter_code(), Class.forName("java.lang.String"));
                }
            }
            // 生成动态 Bean
            bean = new CglibEntity(propertyMap);
            // 给 Bean 设置值
            for(ModelDetail modelDetail : paramlist) {
                if(modelDetail.getParameter_code().equals("voiceModel")) {
                    //语音模版
                    bean.setValue(modelDetail.getParameter_code(), (Object) modelDetail.getParameter_value());
                }else {
                    bean.setValue(modelDetail.getParameter_code(), modelDetail.getParameter_value());
                }

            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return bean.getObject();
    }

生成bean的工具类

public class CglibEntity {

	/**
	  * 实体Object
	  */
	public Object object = null;

	/**
	  * 属性map
	  */
	public BeanMap beanMap = null;

	public CglibEntity() {
	  super();
	}

	@SuppressWarnings("unchecked")
	public CglibEntity(Map propertyMap) {
	  this.object = generateBean(propertyMap);
	 //这个方法返回的beanMap的key的值进行了格式化,将首字母大写变为了小写
	  this.beanMap = BeanMap.create(this.object);
	}

	/**
	  * 给bean属性赋值
	  * @param property 属性名
	  * @param value 值
	  */
	public void setValue(String property, Object value) {
		Map propertyMap = new HashMap();
		try {
            //由于传入的值首字母可能大写,与beanMap的key值不对应
            //所以将property放入进去格式化后返回出来
			propertyMap.put(property,Class.forName("java.lang.String"));
			Object propertyObject  = generateBean(propertyMap);
			BeanMap beanMap = BeanMap.create(propertyObject);
			Set set = beanMap.keySet();
			Iterator iter = set.iterator();
			while (iter.hasNext()) {
				String key = (String) iter.next();
				this.beanMap.put(key,value);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	  * 通过属性名得到属性值
	  * @param property 属性名
	  * @return 值
	  */
	public Object getValue(String property) {
	  return beanMap.get(property);
	}

	/**
	  * 得到该实体bean对象
	  * @return
	  */
	public Object getObject() {
	  return this.object;
	}

	@SuppressWarnings("unchecked")
	private Object generateBean(Map propertyMap) {
	  BeanGenerator generator = new BeanGenerator();
	  Set keySet = propertyMap.keySet();
	  for (Iterator i = keySet.iterator(); i.hasNext();) {
	   String key = (String) i.next();
	   generator.addProperty(key, (Class) propertyMap.get(key));
	  }
	  return generator.create();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值