|
@@ -36,7 +36,7 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
|
|
|
public Mono<DeviceMessage> preSend(DeviceOperator device, DeviceMessage message) {
|
|
public Mono<DeviceMessage> preSend(DeviceOperator device, DeviceMessage message) {
|
|
|
DeviceDirectivesEntity directivesEntity = new DeviceDirectivesEntity();
|
|
DeviceDirectivesEntity directivesEntity = new DeviceDirectivesEntity();
|
|
|
directivesEntity.setState(DirectiveState.wait);
|
|
directivesEntity.setState(DirectiveState.wait);
|
|
|
- directivesEntity.setDownstream((CommonDeviceMessage) message);
|
|
|
|
|
|
|
+ directivesEntity.setDownstream(message);
|
|
|
directivesEntity.setSendTimestamp(message.getTimestamp());
|
|
directivesEntity.setSendTimestamp(message.getTimestamp());
|
|
|
directivesEntity.setMessageId(message.getMessageId());
|
|
directivesEntity.setMessageId(message.getMessageId());
|
|
|
DeviceDirectivesEntity.MessageType directive = isDirective(message);
|
|
DeviceDirectivesEntity.MessageType directive = isDirective(message);
|
|
@@ -59,19 +59,20 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
|
|
|
DeviceDirectivesEntity.MessageType directive = isDirective(message);
|
|
DeviceDirectivesEntity.MessageType directive = isDirective(message);
|
|
|
if(directive!=null){
|
|
if(directive!=null){
|
|
|
return reply.cast(DeviceMessage.class)
|
|
return reply.cast(DeviceMessage.class)
|
|
|
- .map(msg->
|
|
|
|
|
|
|
+ .flatMap(msg->
|
|
|
deviceDirectivesService.createUpdate()
|
|
deviceDirectivesService.createUpdate()
|
|
|
.where(DeviceDirectivesEntity::getDeviceId,msg.getDeviceId())
|
|
.where(DeviceDirectivesEntity::getDeviceId,msg.getDeviceId())
|
|
|
.where(DeviceDirectivesEntity::getMessageId,msg.getMessageId())
|
|
.where(DeviceDirectivesEntity::getMessageId,msg.getMessageId())
|
|
|
.set(DeviceDirectivesEntity::getUpstream,msg)
|
|
.set(DeviceDirectivesEntity::getUpstream,msg)
|
|
|
.set(DeviceDirectivesEntity::getState,DirectiveState.success)
|
|
.set(DeviceDirectivesEntity::getState,DirectiveState.success)
|
|
|
|
|
+ .set(DeviceDirectivesEntity::getLastError,null)
|
|
|
.execute())
|
|
.execute())
|
|
|
.onErrorResume(DeviceOperationException.class,e->deviceDirectivesService.createUpdate()
|
|
.onErrorResume(DeviceOperationException.class,e->deviceDirectivesService.createUpdate()
|
|
|
.where(DeviceDirectivesEntity::getDeviceId,message.getDeviceId())
|
|
.where(DeviceDirectivesEntity::getDeviceId,message.getDeviceId())
|
|
|
.where(DeviceDirectivesEntity::getMessageId,message.getMessageId())
|
|
.where(DeviceDirectivesEntity::getMessageId,message.getMessageId())
|
|
|
.set(DeviceDirectivesEntity::getLastError,e.getMessage())
|
|
.set(DeviceDirectivesEntity::getLastError,e.getMessage())
|
|
|
.set(DeviceDirectivesEntity::getState,DirectiveState.sendError)
|
|
.set(DeviceDirectivesEntity::getState,DirectiveState.sendError)
|
|
|
- .execute().thenReturn(Mono.empty()))
|
|
|
|
|
|
|
+ .execute())
|
|
|
.thenMany(reply);
|
|
.thenMany(reply);
|
|
|
}
|
|
}
|
|
|
return reply;
|
|
return reply;
|