private static void OnTimedTaskFinished(DACTaskResult result) { int successedCount = 0; var sbR = new StringBuilder(); var sbP = new StringBuilder(); foreach (var sr in result.SensorResults) { if (sr.IsOK && sr.Data != null) { successedCount++; } else { if (sr.IsOK && sr.Data == null) { sbP.Append(sr.Sensor.SensorID).Append(","); } sbR.Append(sr.Sensor.SensorID).Append(","); } } try { Log.InfoFormat( "Dtu {7}-{8} Cron task finished. result={0}-{1}, {2} sensors,successed: {4},failed sensors:{5}, parse error sensors:{6}; cost={3} ms", result.ErrorCode, result.ErrorMsg, result.GetSensorCount(), result.Elapsed, successedCount, sbR.Length != 0 ? sbR.ToString().Substring(0, sbR.Length - 1) : string.Empty, sbP.Length != 0 ? sbP.ToString().Substring(0, sbP.Length - 1) : string.Empty, result.Task.DtuID, result.DtuCode); DACTaskResultConsumerService.OnDacTaskResultProduced(result); } catch (Exception ex) { Log.FatalFormat("Consumer error : {0}", ex.Message); } }
internal static void SaveTaskResult(DACTaskResult result) { _dacTaskResultPool.Enqueue(result); }
private DACTaskResult ExcuteLocalDacTask(DACTask task, DacTaskContext context) { DtuNode dtu = context.Node; DACTaskResult rslt = new DACTaskResult(); rslt.Task = task; rslt.Task.Status = DACTaskStatus.RUNNING; rslt.ErrorMsg = "OK"; rslt.StoragedTimeType = SensorAcqResultTimeType.SensorResponseTime; Stopwatch sw = new Stopwatch(); sw.Start(); var dtuConn = context.DtuConnection as FileDtuConnection; // 强转成FileDtuConnection if (dtuConn != null && dtuConn.Connect()) { try { foreach (Sensor si in dtu.Sensors) { if (!this.IsSensorRequired(context, task.Sensors, si)) { continue; } var result = this.RequestFileSensor(si, dtuConn);// 请求文件传感器 foreach (SensorAcqResult r in result) { rslt.AddSensorResult(r); } } CheckFileAndBackup(dtuConn.FilePath); } catch (System.Exception e) { rslt.ErrorCode = (int)Errors.ERR_NOT_CONNECTED; rslt.ErrorMsg = string.Format( "DTU:{0},FilePath:{1},Failed To Read the File,Msg:{2}", dtu.DtuCode, dtuConn.FilePath, e.Message); log.ErrorFormat( "dtu:{0} network={1},file={2},Failed To Read the File,Msg:{3}", dtu.DtuCode, dtu.NetworkType, dtuConn.FilePath, e.Message); } } else { rslt.ErrorCode = (int)Errors.ERR_NOT_CONNECTED; rslt.ErrorMsg = string.Format( "DTU:{0},FilePath:{1},File Not Exists", dtu.DtuCode, dtuConn != null ? dtuConn.FilePath : null); log.ErrorFormat("dtu:{0} network={1},file={2},File Not Exists", dtu.DtuCode, dtu.NetworkType, dtuConn != null ? dtuConn.FilePath : null); } sw.Stop(); rslt.Finished = System.DateTime.Now; rslt.Elapsed = sw.ElapsedMilliseconds; rslt.Task.Status = DACTaskStatus.DONE; context.DtuConnection.Disconnect(); return(rslt); }