コード例 #1
0
        /// <summary>
        /// 单个表达式分析
        /// </summary>
        /// <param name="dataAnalysisInfo">分析模型</param>
        /// <param name="expConfigList">表达式配置列表</param>
        /// <param name="returnResult">表达式分析结果</param>
        /// <param name="analysisPointId">绑定类型时每个类型下的测点ID</param>
        private void ExpressionAnalysis(JC_LargedataAnalysisConfigInfo dataAnalysisInfo, IGrouping <string, JC_SetAnalysisModelPointRecordInfo> expConfigList, List <ExpressionRealTimeResultInfo> returnResult, PointAnalysisInfo pointAnalysisInfo = null)
        {
            List <AnalysisSuccessfulPointInfo> expressionUsedPointList = new List <AnalysisSuccessfulPointInfo>();

            var    firstPointBindingInfo = expConfigList.FirstOrDefault();
            string expressionId          = firstPointBindingInfo.ExpressionId;
            string expression            = firstPointBindingInfo.Expresstion;
            string expressionText        = firstPointBindingInfo.Expresstion;
            int    continueTime          = firstPointBindingInfo.ContinueTime;
            int    maxcontinueTime       = firstPointBindingInfo.MaxContinueTime;

            if (pointAnalysisInfo != null)
            {
                expressionId = string.Format("{0}_{1}", expressionId, pointAnalysisInfo.PointId);
            }
            //是否因子值为未知
            bool isUnknowFactorValue = false;

            //获取表达式参数因子值
            foreach (var pointMapping in expConfigList)
            {
                string expressionConfigId = pointMapping.ExpressionConfigId;
                string pointId            = pointAnalysisInfo == null ? pointMapping.PointId : pointAnalysisInfo.PointId;
                string pointCode          = pointAnalysisInfo == null ? pointMapping.Point : pointAnalysisInfo.Point;
                string wz         = pointAnalysisInfo == null ? pointMapping.Wz : pointAnalysisInfo.Wz;
                string callMethod = pointMapping.CallMethodName;
                if (!expressionUsedPointList.Any(q => q.PointId == pointId))
                {
                    expressionUsedPointList.Add(new AnalysisSuccessfulPointInfo()
                    {
                        PointId = pointId, Point = pointCode, Wz = wz
                    });
                }
                object[] factorValues = null;
                try
                {
                    factorLuaService.RegisterFunction(factorCalculateService, callMethod);
                    factorValues = factorLuaService.CallFunction(callMethod, pointId);
                }
                catch (Exception ex)
                {
                    LogHelper.Error(string.Format("通过Lua调用因子({0})服务接口({1})出错:{2}", pointId + ">>" + pointMapping.FactorName, callMethod, ex.StackTrace));
                }
                if (!isUnknowFactorValue)
                {
                    object factorGetValue = (factorValues == null || factorValues.Length <= 0) ? "Unknow" : (factorValues[0] as FactorValueInfo).Value;
                    isUnknowFactorValue = (factorGetValue.ToString() == "Unknow" || factorGetValue.ToString() == "未知") ? true : false;
                    //if (isUnknowFactorValue)
                    //    break;//因为要替换表达式文本为测点号->因子格式所以这里取消跳出循环了.
                    //获取到的因子值替换表达式中的表达式参数配置ID.
                    expression = expression.Replace(expressionConfigId, factorGetValue.ToString());
                }
                expressionText = expressionText.Replace(expressionConfigId, string.Format("{0}[{1}]->{2}", pointCode, wz, pointMapping.FactorName));
            }
            //默认表达式计算结果为0-未知
            int expressionCalculateResult = 0;

            if (!isUnknowFactorValue)
            {
                //计算表达式.
                object[] expressionLuaCalculateResult = null;
                try
                {
                    //表达式计算结果要么true要么false
                    expressionLuaCalculateResult = factorLuaService.ExecuteLuaScript(expression);
                    expressionCalculateResult    = bool.Parse(expressionLuaCalculateResult[0].ToString()) ? 2 : 1;
                }
                catch (Exception ex)
                {
                    LogHelper.Error(string.Format("Lua计算表达式出错!表达式为:{0}, 错误消息:{1}", expressionText, ex.StackTrace));
                    //计算出错,表达式计算结果为未知
                    expressionCalculateResult = 0;
                }
            }
            lock (listLock)
            {
                //记录表达式实时分析结果
                ExpressionRealTimeResultInfo expressionRealTimeResultInfo = expressionRealTimeResultList.FirstOrDefault(q => q.AnalysisModelId == dataAnalysisInfo.Id && q.ExpressionId == expressionId);
                string analysisResultText = string.Empty;
                switch (expressionCalculateResult)
                {
                case 1:
                    analysisResultText = dataAnalysisInfo.FalseDescription;
                    break;

                case 2:

                    //表达式分析成立时,判断持续时间是否大于最大持续时间;如果大于持续时间,则置为分析不成立
                    //bool ismaxcontinuetime = false;
                    //if (expressionRealTimeResultInfo != null)
                    //{
                    //    int actualContinueTime = Convert.ToInt32((DateTime.Now - expressionRealTimeResultInfo.FirstSuccessfulTime).TotalSeconds);
                    //    if (maxcontinueTime > 0 && maxcontinueTime < actualContinueTime)
                    //        ismaxcontinuetime = true;
                    //}

                    //if (ismaxcontinuetime)
                    //{
                    //    analysisResultText = dataAnalysisInfo.FalseDescription;
                    //    expressionCalculateResult = 1;
                    //}
                    //else
                    //{
                    //    analysisResultText = dataAnalysisInfo.TrueDescription;
                    //    foreach (var item in expressionUsedPointList)
                    //    {
                    //        if (!dataAnalysisInfo.AnalysisSuccessfulPointList.Any(q => q.PointId == item.PointId))
                    //            dataAnalysisInfo.AnalysisSuccessfulPointList.Add(item);
                    //    }
                    //}


                    analysisResultText = dataAnalysisInfo.TrueDescription;
                    foreach (var item in expressionUsedPointList)
                    {
                        if (!dataAnalysisInfo.AnalysisSuccessfulPointList.Any(q => q.PointId == item.PointId))
                        {
                            dataAnalysisInfo.AnalysisSuccessfulPointList.Add(item);
                        }
                    }
                    //dataAnalysisInfo.AnalysisSuccessfulPointList.AddRange(expressionUsedPointList.Except(dataAnalysisInfo.AnalysisSuccessfulPointList));
                    break;

                default:
                    analysisResultText = "未知";
                    break;
                }
                if (expressionRealTimeResultInfo == null)
                {
                    expressionRealTimeResultInfo = new ExpressionRealTimeResultInfo()
                    {
                        AnalysisModelId     = dataAnalysisInfo.Id,
                        AnalysisModelName   = dataAnalysisInfo.Name,
                        ExpressionId        = expressionId,
                        Expression          = expression,
                        ExpressionText      = expressionText,
                        AnalysisResult      = expressionCalculateResult,
                        AnalysisResultText  = analysisResultText,
                        FirstSuccessfulTime = expressionCalculateResult == 2 ? DateTime.Now : DateTime.MinValue,
                        LastAnalysisTime    = DateTime.Now,
                        ContinueTime        = continueTime,
                        MaxContinueTime     = maxcontinueTime,
                        ActualContinueTime  = 0
                    };
                    expressionRealTimeResultList.Add(expressionRealTimeResultInfo);
                }
                else
                {
                    expressionRealTimeResultInfo.AnalysisResult     = expressionCalculateResult;
                    expressionRealTimeResultInfo.AnalysisResultText = analysisResultText;
                    expressionRealTimeResultInfo.LastAnalysisTime   = DateTime.Now;
                    expressionRealTimeResultInfo.ExpressionText     = expressionText;
                    if (expressionCalculateResult == 2 && expressionRealTimeResultInfo.FirstSuccessfulTime == DateTime.MinValue)
                    {
                        expressionRealTimeResultInfo.FirstSuccessfulTime = DateTime.Now;
                    }
                    if (expressionCalculateResult == 2)
                    {
                        expressionRealTimeResultInfo.ActualContinueTime = Convert.ToInt64((expressionRealTimeResultInfo.LastAnalysisTime - expressionRealTimeResultInfo.FirstSuccessfulTime).TotalSeconds);
                    }
                    else
                    {
                        expressionRealTimeResultInfo.FirstSuccessfulTime = DateTime.MinValue;
                        expressionRealTimeResultInfo.ActualContinueTime  = 0;
                    }
                }
                returnResult.Add(ObjectConverter.DeepCopy(expressionRealTimeResultInfo));
            }
        }
コード例 #2
0
        private void RefreshData()
        {
            while (!StaticClass.SystemOut)
            {
                try
                {
                    Basic.Framework.Web.BasicResponse <List <JC_LargedataAnalysisConfigInfo> > response = largeDataAnalysisCacheClientService.GetAllLargeDataAnalysisConfigCache(new Sys.Safety.Request.LargeDataAnalysisCacheClientGetAllRequest());
                    if (response.Data != null)
                    {
                        //var dataSource = from q in response.Data.AsQueryable()
                        //                 select new
                        //                 {
                        //                     Name = q.Name,
                        //                     AnalysisTime = q.AnalysisTime.HasValue ? q.AnalysisTime.Value.ToString("yyyy/MM/dd HH:mm:ss") : string.Empty,
                        //                     AnalysisResultText = q.AnalysisResultText,
                        //                     ExpressionRealTimeResultList = (
                        //                     from rt in q.ExpressionRealTimeResultList
                        //                     select new { AnalysisModelName = rt.AnalysisModelName,
                        //                         ExpressionText = rt.ExpressionText,
                        //                         FirstSuccessfulTime = rt.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : rt.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss"),
                        //                         LastAnalysisTime = rt.LastAnalysisTime == DateTime.MinValue ? string.Empty : rt.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss"),
                        //                         AnalysisResultText = rt.AnalysisResultText,
                        //                         ActualContinueTime = string.Format("{0}:{1}:{2}", (rt.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                        //                         (rt.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (rt.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0')) }).ToList()
                        //                 };

                        //gridList.Clear();
                        foreach (var item in response.Data)
                        {
                            bool isHaveModel = false;
                            foreach (var itemGrid in gridList)
                            {     //old列表
                                if (itemGrid.Id == item.Id)
                                { //分析模型已存在
                                    isHaveModel                 = true;
                                    itemGrid.AnalysisTime       = item.AnalysisTime;
                                    itemGrid.AnalysisResultText = item.AnalysisResultText;
                                    itemGrid.Name               = item.Name;

                                    #region 分析列表
                                    if (item.ExpressionRealTimeResultList != null)
                                    {         //old列表
                                        if (itemGrid.ExpressionRealTimeResultList != null && itemGrid.ExpressionRealTimeResultList.Count > 0)
                                        {     //追加
                                            foreach (var itemExpression in item.ExpressionRealTimeResultList)
                                            { //新分析数据
                                                bool isAdd = true;
                                                foreach (var itemResult in itemGrid.ExpressionRealTimeResultList)
                                                {//old列表
                                                    if (itemResult.ExpressionId == itemExpression.ExpressionId)
                                                    {
                                                        isAdd = false;
                                                        itemResult.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                        itemResult.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                        itemResult.AnalysisResultText      = itemExpression.AnalysisResultText;

                                                        itemResult.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                                          (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                                        break;
                                                    }
                                                }

                                                if (isAdd)
                                                {
                                                    ExpressionRealTimeResultInfo modelInfo = new ExpressionRealTimeResultInfo();
                                                    modelInfo.ExpressionText          = itemExpression.ExpressionText;
                                                    modelInfo.ExpressionId            = itemExpression.ExpressionId;
                                                    modelInfo.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                    modelInfo.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                    modelInfo.AnalysisResultText      = itemExpression.AnalysisResultText;

                                                    modelInfo.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                                     (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                                    itemGrid.ExpressionRealTimeResultList.Add(modelInfo);
                                                }
                                            }
                                        }
                                        else
                                        {//新增
                                            List <ExpressionRealTimeResultInfo> expressionRealTimeResultList = new List <ExpressionRealTimeResultInfo>();

                                            foreach (var itemExpression in item.ExpressionRealTimeResultList)
                                            {
                                                ExpressionRealTimeResultInfo modelInfo = new ExpressionRealTimeResultInfo();
                                                modelInfo.ExpressionText          = itemExpression.ExpressionText;
                                                modelInfo.ExpressionId            = itemExpression.ExpressionId;
                                                modelInfo.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                modelInfo.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                modelInfo.AnalysisResultText      = itemExpression.AnalysisResultText;

                                                modelInfo.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                                 (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                                expressionRealTimeResultList.Add(modelInfo);
                                            }
                                            itemGrid.ExpressionRealTimeResultList = expressionRealTimeResultList;
                                        }
                                    }

                                    #endregion
                                }
                            }

                            if (isHaveModel == false)
                            {
                                JC_LargedataAnalysisConfigInfo model = new JC_LargedataAnalysisConfigInfo();
                                model.Id                 = item.Id;
                                model.Name               = item.Name;
                                model.AnalysisTime       = item.AnalysisTime;
                                model.AnalysisResultText = item.AnalysisResultText;

                                List <ExpressionRealTimeResultInfo> expressionRealTimeResultList = new List <ExpressionRealTimeResultInfo>();
                                if (item.ExpressionRealTimeResultList != null)
                                {
                                    foreach (var itemExpression in item.ExpressionRealTimeResultList)
                                    {
                                        ExpressionRealTimeResultInfo modelInfo = new ExpressionRealTimeResultInfo();
                                        modelInfo.ExpressionText          = itemExpression.ExpressionText;
                                        modelInfo.ExpressionId            = itemExpression.ExpressionId;
                                        modelInfo.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                        modelInfo.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                        modelInfo.AnalysisResultText      = itemExpression.AnalysisResultText;

                                        modelInfo.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                         (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                        expressionRealTimeResultList.Add(modelInfo);
                                    }
                                }
                                model.ExpressionRealTimeResultList = expressionRealTimeResultList;
                                gridList.Add(model);
                            }
                        }
                        MethodInvoker In = new MethodInvoker(() =>
                        {
                            if (gridList != null)
                            {
                                int topRowIndex = gridView1.TopRowIndex;
                                gridView1.RefreshData();
                                for (int i = 0; i < gridView1.RowCount; i++)
                                {
                                    //默认展开所有子项
                                    //gridView1.ExpandMasterRow(i);
                                    DevExpress.XtraGrid.Views.Base.BaseView childView = gridView1.GetVisibleDetailView(i);
                                    if (childView != null)
                                    {
                                        childView.RefreshData();
                                    }
                                }
                                gridView1.TopRowIndex = topRowIndex;
                            }
                        });
                        if (gridControlData.InvokeRequired)
                        {
                            gridControlData.Invoke(In);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex.Message);
                }
                Thread.Sleep(4000);
            }
        }
コード例 #3
0
        /// <summary>
        /// 更新分析模型。
        /// </summary>
        /// <param name="jc_LargedataAnalysisConfigRsequest">更新模型请求对象</param>
        /// <returns>Mas应答对象包含分析模型</returns>
        public BasicResponse <JC_LargedataAnalysisConfigInfo> UpdateLargeDataAnalysisConfig(LargedataAnalysisConfigUpdateRequest jc_LargedataAnalysisConfigRsequest)
        {
            BasicResponse validationResponse = largeDataAnalysisConfigValidation(jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo);

            if (!validationResponse.IsSuccess)
            {
                return new BasicResponse <JC_LargedataAnalysisConfigInfo>()
                       {
                           Code = validationResponse.Code, Message = validationResponse.Message, Data = jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo
                       }
            }
            ;
            if (string.IsNullOrEmpty(jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo.Id))
            {
                return(new BasicResponse <JC_LargedataAnalysisConfigInfo>()
                {
                    Code = 1, Message = "分析模型ID为空", Data = jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo
                });
            }
            var _jC_Largedataanalysisconfig        = ObjectConverter.Copy <JC_LargedataAnalysisConfigInfo, JC_LargedataanalysisconfigModel>(jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo);
            var _jcSetAnalysisModelPointRecordList = ObjectConverter.CopyList <JC_SetAnalysisModelPointRecordInfo, JC_SetanalysismodelpointrecordModel>(jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo.AnalysisModelPointRecordInfoList);

            bool isSingleExpressionAndParameter1 = isSingleExpressionAndParameter(jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo.TempleteId);
            bool isBindDevType = jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo.AnalysisModelPointRecordInfoList[0].DevTypeId > -1;

            if (isSingleExpressionAndParameter1 && _jcSetAnalysisModelPointRecordList.Count > 0 && !isBindDevType)
            {
                _jC_Largedataanalysisconfig.Name = System.Text.RegularExpressions.Regex.Replace(_jC_Largedataanalysisconfig.Name, "\\(\\w+\\)", string.Format("({0})", jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo.AnalysisModelPointRecordInfoList[0].Point));
            }


            JC_LargedataanalysisconfigModel existsModel = _Repository.GetLargeDataAnalysisConfigByName(_jC_Largedataanalysisconfig.Name);

            if (null != existsModel && existsModel.Id != _jC_Largedataanalysisconfig.Id)
            {
                return new BasicResponse <JC_LargedataAnalysisConfigInfo>()
                       {
                           Code = -100, Message = "分析模型名称已存在", Data = jc_LargedataAnalysisConfigRsequest.JC_LargedataAnalysisConfigInfo
                       }
            }
            ;


            TransactionsManager.BeginTransaction(() =>
            {
                //更新分析模型
                //_jC_Largedataanalysisconfig.UpdatedTime = DateTime.Now;
                //更新时间不变化,这里将分析模型名称改了再改回来。
                string analysisModelName         = _jC_Largedataanalysisconfig.Name;
                _jC_Largedataanalysisconfig.Name = analysisModelName + "1";
                _Repository.UpdateJC_Largedataanalysisconfig(_jC_Largedataanalysisconfig);
                _jC_Largedataanalysisconfig.Name = analysisModelName;
                _Repository.UpdateJC_Largedataanalysisconfig(_jC_Largedataanalysisconfig);
                //先删除再插入
                _AnalysisModelPointRecordRepository.DeleteAnalysisModelPointRecordByAnalysisModelId(_jC_Largedataanalysisconfig.Id);
                foreach (var item in _jcSetAnalysisModelPointRecordList)
                {
                    //item.Id = IdHelper.CreateGuidId();
                    item.Id = IdHelper.CreateLongId().ToString();
                    item.AnalysisModelId = _jC_Largedataanalysisconfig.Id;
                }
                //插入模型测点关联记录
                _AnalysisModelPointRecordRepository.Insert(_jcSetAnalysisModelPointRecordList);
            });
            var jC_Largedataanalysisconfigresponse = new BasicResponse <JC_LargedataAnalysisConfigInfo>();

            jC_Largedataanalysisconfigresponse.Data = ObjectConverter.Copy <JC_LargedataanalysisconfigModel, JC_LargedataAnalysisConfigInfo>(_jC_Largedataanalysisconfig);
            BasicResponse <IList <JC_SetAnalysisModelPointRecordInfo> > pointListResponse = _AnalysisModelPointRecordService.GetCustomizationAnalysisModelPointRecordInfoByModelId(new SetAnalysisModelPointRecordByModelIdGetRequest()
            {
                AnalysisModelId = _jC_Largedataanalysisconfig.Id
            });

            if (pointListResponse != null && pointListResponse.Data != null)
            {
                jC_Largedataanalysisconfigresponse.Data.AnalysisModelPointRecordInfoList = pointListResponse.Data.ToList();
            }
            try
            {
                jC_Largedataanalysisconfigresponse.Data.AnalysisResult = 0;
                jC_Largedataanalysisconfigresponse.Data.AnalysisTime   = null;

                //更新实时显示到缓存,这样客户端刷新就可以看到。不用等到分析周期. 开始
                jC_Largedataanalysisconfigresponse.Data.ExpressionRealTimeResultList = new List <ExpressionRealTimeResultInfo>();
                if (jC_Largedataanalysisconfigresponse.Data.AnalysisModelPointRecordInfoList != null && jC_Largedataanalysisconfigresponse.Data.AnalysisModelPointRecordInfoList.Count > 0)
                {
                    IEnumerable <IGrouping <string, JC_SetAnalysisModelPointRecordInfo> > expressionGroup = jC_Largedataanalysisconfigresponse.Data.AnalysisModelPointRecordInfoList.GroupBy(p => p.ExpressionId);
                    foreach (IGrouping <string, JC_SetAnalysisModelPointRecordInfo> expressionParameterList in expressionGroup)
                    {
                        if (expressionParameterList.FirstOrDefault().DevTypeId == -1)//绑定测点的情况才更新实时显示的表达式
                        {
                            ExpressionRealTimeResultInfo addInitializeResultInfo = new ExpressionRealTimeResultInfo();
                            addInitializeResultInfo.AnalysisModelId     = jC_Largedataanalysisconfigresponse.Data.Id;
                            addInitializeResultInfo.AnalysisModelName   = jC_Largedataanalysisconfigresponse.Data.Name;
                            addInitializeResultInfo.ExpressionId        = expressionParameterList.FirstOrDefault().ExpressionId;
                            addInitializeResultInfo.Expression          = expressionParameterList.FirstOrDefault().Expresstion;
                            addInitializeResultInfo.ExpressionText      = expressionParameterList.FirstOrDefault().Expresstion;
                            addInitializeResultInfo.FirstSuccessfulTime = DateTime.MinValue;
                            addInitializeResultInfo.LastAnalysisTime    = DateTime.MinValue;
                            addInitializeResultInfo.AnalysisResult      = 0;
                            addInitializeResultInfo.AnalysisResultText  = "未知";
                            addInitializeResultInfo.ContinueTime        = expressionParameterList.FirstOrDefault().ContinueTime;
                            addInitializeResultInfo.MaxContinueTime     = expressionParameterList.FirstOrDefault().MaxContinueTime;
                            addInitializeResultInfo.ActualContinueTime  = 0;
                            foreach (var pointMapping in expressionParameterList)
                            {
                                addInitializeResultInfo.ExpressionText = addInitializeResultInfo.ExpressionText.Replace(pointMapping.ExpressionConfigId, string.Format("{0}->{1}", pointMapping.PointId, pointMapping.FactorName));
                            }
                            jC_Largedataanalysisconfigresponse.Data.ExpressionRealTimeResultList.Add(addInitializeResultInfo);
                        }
                    }
                }
                //更新实时显示到缓存,这样客户端刷新就可以看到。不用等到分析周期. 结束

                //更新缓存
                _LargeDataAnalysisConfigCacheService.UpdateLargeDataAnalysisConfigCahce(new LargeDataAnalysisConfigCacheUpdateRequest()
                {
                    LargeDataAnalysisConfigInfo = jC_Largedataanalysisconfigresponse.Data
                });
            }
            catch (Exception ex)
            {
                Basic.Framework.Logging.LogHelper.Error(string.Format("更新分析模型后再更新缓存出错:{0}", ex.StackTrace));
            }

            if (Basic.Framework.Data.PlatRuntime.Items.ContainsKey(DataContract.UserRoleAuthorize.KeyConst.AnalysisModelChangedKey))
            {
                Basic.Framework.Data.PlatRuntime.Items[DataContract.UserRoleAuthorize.KeyConst.AnalysisModelChangedKey] = DateTime.Now;
            }
            else
            {
                Basic.Framework.Data.PlatRuntime.Items.Add(DataContract.UserRoleAuthorize.KeyConst.AnalysisModelChangedKey, DateTime.Now);
            }
            return(jC_Largedataanalysisconfigresponse);
        }