返回动态参数
参数已模版的形式配置,将动态的配置参数返回
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();
}
}