/// <summary> /// 上传控制结果 /// </summary> /// <param name="controlQueries"></param> public static XResponseMessage ProcessControlResults(IEnumerable <ControlResult> controlResults) { if (!controlResults.Any()) { throw new ArgumentNullException("controlResults"); } try { controlResults.ForEach(async controlResult => { var devCommand = await _deviceControlCommandService.GetDeviceControlCmdByIdAsny(controlResult.Serialnum); var device = await _deviceService.GetDeviceByIdAsny(devCommand.DeviceSerialnum); if (devCommand != null) { var devControlLog = new DeviceControlLogDto { Serialnum = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-" + devCommand.DeviceSerialnum, DeviceSerialnum = devCommand.DeviceSerialnum, CommandSerialnum = controlResult.Serialnum, ControlResult = controlResult.Result, CreateTime = DateTime.Now, DeviceShowValue = device.ShowValue, DeviceValue = device.ProcessedValue, FailReason = controlResult.FailReason, Remark = "" }; await _deviceControlLogService.AddControlLog(devControlLog); var devControlConmand = await _deviceControlCommandService.GetDeviceControlCmdByIdAsny(devCommand.Serialnum); if (devControlConmand.Status == (int)DeviceCommandTypeEnum.Getted) { if (controlResult.Result) { devControlConmand.Status = (int)DeviceCommandTypeEnum.ActionSuccess; //接收到来自客户端的上传控制指令的时候,控制成功状态变为2 } else { devControlConmand.Status = (int)DeviceCommandTypeEnum.ActionError; //接收到来自客户端的上传控制指令的时候,控制失败状态变为3 } devControlConmand.UpdateTime = DateTime.Now; await _deviceControlCommandService.UpdateControlCommandAsny(devControlConmand); } } }); return(ResultHelper.CreateMessage("", ErrorType.NoError)); } catch (Exception ex) { return(ResultHelper.CreateMessage("", ErrorType.InternalError, null, ex)); } }
public async Task <IEnumerable <ControlCmd> > ProcessAsync(IEnumerable <ControlQuery> controlQueries) { try { //var sw = new Stopwatch(); //sw.Start(); if (controlQueries == null) { throw new ArgumentNullException(nameof(controlQueries)); } var queries = controlQueries as ControlQuery[] ?? controlQueries.ToArray(); var enumerable = controlQueries as ControlQuery[] ?? queries.ToArray(); if (!enumerable.Any()) { return(null); } var facCodes = queries.Select(que => que.FacilityCode); var devControlCmds = new List <DeviceControlCommandDto>(); var codes = facCodes as string[] ?? facCodes.ToArray(); if (codes.Any()) { codes.ToList().ForEach(facCode => { var devCmd = _controlCommandService.GetDeviceControlCmdsByFacilityId(facCode); if (devCmd != null && devCmd.Count > 0) { devControlCmds.AddRange(devCmd); } }); } //var devControlCmds = // facCodes.SelectMany(facCode => _controlCommandService.GetDeviceControlCmdsByFacilityId(facCode).ToList()); var cmds = new List <ControlCmd>(); if (!devControlCmds.Any() || devControlCmds.Count <= 0) { return(null); } devControlCmds.ForEach(async cmdDb => { if (cmdDb.Status != (int)DeviceCommandTypeEnum.Created) { return; } var devControlConmand = await _controlCommandService.GetDeviceControlCmdByIdAsny(cmdDb.Serialnum); devControlConmand.Status = (int)DeviceCommandTypeEnum.Getted; //接收到来自客户端的控制指令请求的时候,状态变为1 devControlConmand.UpdateTime = DateTime.Now; var result = _controlCommandService.UpdateControlCommandAsny(devControlConmand); var device = await _deviceService.GetDeviceByIdAsny(cmdDb.DeviceSerialnum); //根据设备编码获取控制设备 var cmd = new ControlCmd { Serialnum = cmdDb.Serialnum, FacilityCode = device.FacilitySerialnum, DeviceCode = cmdDb.DeviceSerialnum, Command = Convert.ToInt32(cmdDb.Command), Time = cmdDb.CreateTime, ContinueTime = cmdDb.ControlContinueTime, }; cmds.Add(cmd); LogHelper.Info("[查询控制指令]设备{0}指令:{1}", cmd.DeviceCode, cmd.Command); }); //sw.Stop(); //ServiceLogger.Current.WriteDebugLog("处理控制指令花费的时间为:{0}", sw.ElapsedMilliseconds); return(cmds); } catch (Exception ex) { LogHelper.Error("查询控制指令出错,错误内容:{0}", ex.ToString()); return(null); } }
public async Task <bool> ProcessAsync(IEnumerable <ControlResult> controlResults) { var enumerable = controlResults as ControlResult[] ?? controlResults.ToArray(); if (!enumerable.Any()) { throw new ArgumentNullException(nameof(controlResults)); } try { enumerable.ToList().ForEach(async controlResult => { var devCommand = await _controlCommandService.GetDeviceControlCmdByIdAsny(controlResult.Serialnum); if (devCommand == null) { return; } var device = await _deviceService.GetDeviceByIdAsny(devCommand.DeviceSerialnum); var devControlLog = new DeviceControlLogDto { Serialnum = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-" + devCommand.DeviceSerialnum, DeviceSerialnum = devCommand.DeviceSerialnum, CommandSerialnum = controlResult.Serialnum, ControlResult = controlResult.Result, CreateTime = DateTime.Now, DeviceShowValue = device.ShowValue, DeviceValue = device.ProcessedValue, FailReason = controlResult.FailReason, Remark = "" }; var result = await _deviceControlLogService.AddControlLog(devControlLog); var devControlConmand = await _controlCommandService.GetDeviceControlCmdByIdAsny(devCommand.Serialnum); if (devControlConmand.Status != (int)DeviceCommandTypeEnum.Getted) { return; } if (controlResult.Result) { devControlConmand.Status = (int)DeviceCommandTypeEnum.ActionSuccess; //接收到来自客户端的上传控制指令的时候,控制成功状态变为2 } else { devControlConmand.Status = (int)DeviceCommandTypeEnum.ActionError; //接收到来自客户端的上传控制指令的时候,控制失败状态变为3 } devControlConmand.UpdateTime = DateTime.Now; var rlt = await _controlCommandService.UpdateControlCommandAsny(devCommand); LogHelper.Info("[上传控制结果]设备{0}指令:{1}上传{2}", devControlConmand.DeviceSerialnum, devControlConmand.Command, rlt); }); return(true); } catch (Exception ex) { LogHelper.Error("上传控制指令出错,错误内容:{0}", ex.ToString()); return(false); } }