コード例 #1
0
 private static void Calc(List <SensorAcqResult> source, IList <SensorGroup> groups)
 {
     try
     {
         source = CalcPlanSet.Update(groups, source);
     }
     catch (Exception ex)
     {
         Log.FatalFormat("二次计算异常:{0}", ex.Message);
     }
 }
コード例 #2
0
ファイル: DataCalc.cs プロジェクト: icprog/FS-SMISCloud
        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);
            }
        }