作者 钟来

修改bug

@@ -35,6 +35,8 @@ import org.slf4j.LoggerFactory; @@ -35,6 +35,8 @@ import org.slf4j.LoggerFactory;
35 import org.springframework.beans.factory.annotation.Autowired; 35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.stereotype.Service; 36 import org.springframework.stereotype.Service;
37 37
  38 +import java.lang.reflect.ParameterizedType;
  39 +import java.lang.reflect.Type;
38 import java.util.*; 40 import java.util.*;
39 41
40 @Service 42 @Service
@@ -356,9 +358,15 @@ public class DeviceService { @@ -356,9 +358,15 @@ public class DeviceService {
356 Class<ThingsModelBase> aClass = Enum.valueOf(ThingsModelDataTypeEnum.class,data_type).getaClass(); 358 Class<ThingsModelBase> aClass = Enum.valueOf(ThingsModelDataTypeEnum.class,data_type).getaClass();
357 ThingsModelBase thingsModelBase = JSON.parseObject(thingsModel.getSpecs(),aClass); 359 ThingsModelBase thingsModelBase = JSON.parseObject(thingsModel.getSpecs(),aClass);
358 thingsModelBase.conversionThingsModel(thingsModel); 360 thingsModelBase.conversionThingsModel(thingsModel);
359 - thingsModelBase.addValue(jsonObject.get(skey)); 361 + Object object = jsonObject.get(skey);
  362 + Type clas = ((ParameterizedType)aClass.getGenericSuperclass()).getActualTypeArguments()[0];
  363 + if(null != object && object.getClass()!=clas)
  364 + {
  365 + return new Message(MessageCode.DEFAULT_FAIL_CODE,"参数数据类型和模型数据类型不一致");
  366 + }
  367 + thingsModelBase.addValue(object);
360 ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) thingsModelBase; 368 ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) thingsModelBase;
361 - jsonObject.put(skey,thingsModelItemBase.getCmdView(jsonObject.get(skey))); 369 + jsonObject.put(skey,thingsModelItemBase.getCmdView(object));
362 String id = clienid+"_"+key; 370 String id = clienid+"_"+key;
363 logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),null,"远程控制"+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null)); 371 logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),null,"远程控制"+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null));
364 } 372 }