private static void Calc(List <SensorAcqResult> source, IList <SensorGroup> groups) { try { source = CalcPlanSet.Update(groups, source); } catch (Exception ex) { Log.FatalFormat("二次计算异常:{0}", ex.Message); } }
private static int Calc(DACTaskResult source, IEnumerable <SensorGroup> groups) { lock (LockObj) { int calccnt = 0; var sensordatum = source.SensorResults; foreach (SensorGroup gp in groups) { try { if (gp.HasMultiDtuJob()) { var plancalccnt = CalcPlanSet.Update(source.Task.DtuID, gp, sensordatum, source.Task.TID); calccnt += plancalccnt; continue; } var items = gp.GetAllItems(); foreach (var groupItem in items) { var sensordata = (from s in sensordatum where s.Sensor.SensorID == groupItem.SensorId select s) .FirstOrDefault(); if (sensordata != null && sensordata.IsOK && sensordata.Data != null && sensordata.Data.ThemeValues != null) { groupItem.Value = sensordata; } } if (Calc(gp, sensordatum)) { calccnt++; } } catch (Exception ex) { _logger.WarnFormat("二次计算出现异常 GROUP_ID={0} GROUP_TYPE={1} ERR={2}", gp.GroupId, gp.GroupType, ex.Message); } } foreach (var sensorAcqResult in source.SensorResults) { if (sensorAcqResult.CalcPlanState == (int)CalcPlanState.AddToPlan) { sensorAcqResult.ErrorCode = (int)Errors.ERR_DEFAULT; } } return(calccnt); } }