/// <summary>
 ///     处理控制数据块
 /// </summary>
 /// <param name="controlDataBlock"></param>
 public static XResponseMessage ProcessControlData(ControlDataBlock controlDataBlock)
 {
     if (controlDataBlock == null)
     {
         throw new ArgumentNullException("controlDataBlock");
     }
     //todo 此处处理设备控制指令有重复,需要再仔细考虑
     if (controlDataBlock.ControlCmds != null && controlDataBlock.ControlCmds.Any())
     {
         var result = ControlDataProcessor.ProcessControlQueries(controlDataBlock.ControlQueries);
         if (result != null && result.Success != ErrorType.NoError)
         {
             return(result);
         }
     }
     if (controlDataBlock.ControlQueries != null && controlDataBlock.ControlQueries.Any())
     {
         var result = ControlDataProcessor.ProcessControlQueries(controlDataBlock.ControlQueries);
         if (result != null && result.Success == ErrorType.NoError)
         {
             return(result);
         }
     }
     if (controlDataBlock.ControlResults != null && controlDataBlock.ControlResults.Any())
     {
         var result = ControlDataProcessor.ProcessControlResults(controlDataBlock.ControlResults);
         if (result != null && result.Success == ErrorType.NoError)
         {
             return(result);
         }
     }
     //return null;
     return(ResultHelper.CreateMessage("", ErrorType.NoError));
 }
Example #2
0
        public async Task <XResponseMessage> ProcessAsync(ControlDataBlock controlDataBlock)
        {
            if (controlDataBlock == null)
            {
                return(null);
            }

            if (controlDataBlock.ControlQueries != null)
            {
                try
                {
                    var result =
                        await
                        AhnqIotContainer.Container.Resolve <ControlQueryProcess>()
                        .ProcessAsync(controlDataBlock.ControlQueries);

                    return(ResultHelper.CreateMessage("查询控制指令", obj: result));
                }
                catch (AggregateException ex)
                {
                    return(ResultHelper.CreateExceptionMessage(ex, "查询控制指令失败", ErrorType.InternalError));
                }
            }
            if (controlDataBlock.ControlResults == null)
            {
                return(null);
            }
            {
                try
                {
                    var result =
                        await
                        AhnqIotContainer.Container.Resolve <ControlResultProcess>()
                        .ProcessAsync(controlDataBlock.ControlResults);

                    return(ResultHelper.CreateMessage("上传控制指令", obj: result));
                }
                catch (AggregateException ex)
                {
                    return(ResultHelper.CreateExceptionMessage(ex, "上传控制指令失败", ErrorType.InternalError));
                }
            }
        }