作者 钟来

plc004支持定时功能

... ... @@ -177,10 +177,10 @@ public class DeviceController {
Topic topic = new Topic("2",deviceInfo.getDeviceType(),deviceControlMessage.getDeviceId(),"PUT",null);
Map<String, DeviceDataConfig> deviceDataConfigWriteMap = DeviceProductProtocol.deviceDataConfigWriteMap;
if(deviceControlMessage.getDeviceId().equals("004112100018632")) //临时的
{
deviceDataConfigWriteMap = DeviceProductProtocol.get004112100019727Map();
}
// if(deviceControlMessage.getDeviceId().equals("004112100018632")) //临时的
// {
// deviceDataConfigWriteMap = DeviceProductProtocol.get004112100019727Map();
// }
if(null == deviceDataConfigWriteMap)
{
return new Message(MessageCode.DEFAULT_FAIL_CODE,"该设备未配置请联系管理员");
... ...
... ... @@ -71,38 +71,27 @@ public class AllPostTopic implements BusinessAgreement<AllPostDto> {
{
if(deviceDataConfigMap.containsKey(key))
{
log.info("点位{}",key);
String dttribute_value = object.get(key).toString();
String newDataValue= ByteUtil.changerTwoStr(dttribute_value);
DeviceDataConfig deviceDataConfig = deviceDataConfigMap.get(key);
String newAlrmCode = "00";
String deviceInfoId = deviceDataConfig.getDeviceInfoId(topic.getClientid()); //根据点位协议解析到设备id
DeviceInfo deviceInfo = getDeviceInfo(deviceInfoList,deviceInfoId);
if(null != deviceInfo)
log.info("点位对应的设备id{}",deviceInfoId);
if(deviceInfoId.equals(topic.getClientid()))
{
switch (PLCDataType.valueOf(deviceDataConfig.getPlc_data_type()))
if(null != list )
{
case 故障代码:
if(newDataValue.equals(deviceDataConfig.getAlarmValue()))
{
newAlrmCode = deviceDataConfig.getAlarmCode();
}
break;
case 控制柜状态:
analysisData(data,deviceInfo,deviceDataConfig,newDataValue,topic);
break;
case 校准时间:
analysisData(data,deviceInfo,deviceDataConfig,newDataValue,topic);
break;
default:
analysisData(data,deviceInfo,deviceDataConfig,newDataValue,topic);
break;
for (DeviceInfo deviceInfo:list)
{
updevice(deviceInfo,deviceDataConfig,topic,data,newDataValue);
}
}
deviceInfo.setAlarmCode(newAlrmCode);
deviceInfo.setDataUpdateTime(DateUtils.getNowTimeMilly());
deviceInfo.setDeviceServiceIp(SysParameter.service_ip);
deviceInfo.setOnline("01");
}else {
DeviceInfo deviceInfo = getDeviceInfo(deviceInfoList,deviceInfoId);
updevice(deviceInfo,deviceDataConfig,topic,data,newDataValue);
}
}
}
... ... @@ -112,6 +101,41 @@ public class AllPostTopic implements BusinessAgreement<AllPostDto> {
return data;
}
private void updevice(DeviceInfo deviceInfo, DeviceDataConfig deviceDataConfig,Topic topic,AllPostDto data,String newDataValue)
{
if(null != deviceInfo)
{
String newAlrmCode = "00";
switch (PLCDataType.valueOf(deviceDataConfig.getPlc_data_type()))
{
case 故障代码:
log.info("故障代码{}",newDataValue);
if(newDataValue.equals(deviceDataConfig.getAlarmValue()))
{
newAlrmCode = deviceDataConfig.getAlarmCode();
}
break;
case 控制柜状态:
log.info("控制柜状态{}",newDataValue);
analysisData(data,deviceInfo,deviceDataConfig,newDataValue,topic);
break;
case 校准时间:
log.info("校准时间{}",newDataValue);
analysisData(data,deviceInfo,deviceDataConfig,newDataValue,topic);
break;
default:
log.info("默认功能{}",newDataValue);
analysisData(data,deviceInfo,deviceDataConfig,newDataValue,topic);
break;
}
deviceInfo.setAlarmCode(newAlrmCode);
deviceInfo.setDataUpdateTime(DateUtils.getNowTimeMilly());
deviceInfo.setDeviceServiceIp(SysParameter.service_ip);
deviceInfo.setOnline("01");
}
}
private void analysisTime( JSONObject jsonObject,Map<String, DeviceDataConfig> deviceDataConfigMap,Topic topic,List<DeviceInfo> deviceInfoList)
{
if(null != jsonObject && jsonObject.size() != 0)
... ... @@ -227,6 +251,7 @@ public class AllPostTopic implements BusinessAgreement<AllPostDto> {
jsonObject = GsonConstructor.get().fromJson(dataValue,JSONObject.class);
}
String odlDataValue = (String) jsonObject.get(PLCDataType.valueOf(deviceDataConfig.getPlc_data_type()).sensorDataType);
log.info("数据变化"+deviceDataConfig.getAttribute_name()+" "+odlDataValue+"-->"+newDataValue);
if(!newDataValue.equals(odlDataValue))
{
jsonObject.put(PLCDataType.valueOf(deviceDataConfig.getPlc_data_type()).sensorDataType,newDataValue); //更新数据
... ...