Exemple #1
0
        /// <summary>
        /// 校验保存数据
        /// </summary>
        /// <param name="ReportTemplate"></param>
        /// <returns></returns>
        private ActionResult ValidateSaveData(ReportTemplate ReportTemplate, bool isAdd)
        {
            ActionResult result = new ActionResult();

            result.Success = true;
            List <string> errorMsg = new List <string>();

            if (string.IsNullOrWhiteSpace(ReportTemplate.Code))
            {
                result.Success = false;
                errorMsg.Add("ReportTemplate.Msg1");
            }
            ReportTemplate template = this.Engine.Analyzer.GetReportTemplateByCode(ReportTemplate.Code);//校验编码是否重复

            if (null != template && isAdd)
            {
                result.Success = false;
                errorMsg.Add("msgGlobalString.CodeDuplicate");
            }
            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(ReportCodeReg);
            if (!regex.Match(ReportTemplate.Code).Success)
            {
                result.Success = false;
                errorMsg.Add("msgGlobalString.ReportCodeInvalid");
            }
            if (string.IsNullOrWhiteSpace(ReportTemplate.SourceCode))
            {
                result.Success = false;
                errorMsg.Add("ReportTemplate.Msg2");
            }

            if (ReportTemplate.ReportType == ReportType.Summary && (ReportTemplate.Columns == null || ReportTemplate.Columns.Length == 0))
            {
                result.Success = false;
                errorMsg.Add("ReportTemplate.Msg3");
            }

            //交叉分析表校验
            if (ReportTemplate.ReportType == ReportType.Cross)
            {
                if (string.IsNullOrWhiteSpace(ReportTemplate.ColumnTitle) && string.IsNullOrWhiteSpace(ReportTemplate.RowTitle))
                {
                    result.Success = false;
                    errorMsg.Add("ReportTemplate.Msg4");
                }

                if (string.IsNullOrWhiteSpace(ReportTemplate.RowTitle) ||
                    string.IsNullOrWhiteSpace(ReportTemplate.ColumnTitle))
                {
                    if (ReportTemplate.Columns == null && ReportTemplate.Columns.Length == 0)
                    {
                        result.Success = false;
                        errorMsg.Add("ReportTemplate.Msg5");
                    }
                }

                if (!string.IsNullOrWhiteSpace(ReportTemplate.RowTitle) &&
                    !string.IsNullOrWhiteSpace(ReportTemplate.ColumnTitle))
                {
                    if (ReportTemplate.Columns != null && ReportTemplate.Columns.Length > 1)
                    {
                        result.Success = false;
                        errorMsg.Add("ReportTemplate.Msg6");
                    }
                }

                //判断钻取维度
                if (!string.IsNullOrWhiteSpace(ReportTemplate.DrillCode))
                {
                    if (!string.IsNullOrWhiteSpace(ReportTemplate.RowTitle))
                    {
                        string[] RowTitles = ReportTemplate.RowTitle.Split(';');
                        for (int i = 0; i < RowTitles.Length; i++)
                        {
                            if (RowTitles[i] != ReportTemplate.RowDrillParam[i].Title)
                            {
                                result.Success = false;
                                errorMsg.Add("ReportTemplate.Msg7");
                            }
                        }
                    }

                    if (!string.IsNullOrWhiteSpace(ReportTemplate.ColumnTitle))
                    {
                        if (ReportTemplate.ColumnTitle != ReportTemplate.ColumnDrillParam.Title)
                        {
                            result.Success = false;
                            errorMsg.Add("ReportTemplate.Msg8");
                        }
                    }
                }
            }

            ReportTemplate.SetPropertyDirty(ReportTemplate.PropertyName_AxisUnit);
            ReportTemplate.SetPropertyDirty(ReportTemplate.PropertyName_XAxisUnit);
            if (ReportTemplate.Parameters != null)
            {//这里可以做一些过来参数的校验
            }
            if (!result.Success)
            {
                result.Extend = errorMsg;
            }
            return(result);
        }