Ejemplo n.º 1
0
        /// <summary>
        /// 根据主报表ID获取chart报表列表
        /// </summary>
        /// <param name="reportId"></param>
        /// <param name="moduleId"></param>
        /// <param name="checkRole"></param>
        /// /// <returns></returns>
        public IList <ChartReportModel> GetChartReportList(long reportId, long moduleId, bool checkRole)
        {
            var entList = _chartReportRepository.GetAllList(p => p.ReportId == reportId);

            if (entList != null & entList.Count > 0)
            {
                var chartReportList = new List <ChartReportModel>();
                //循环chart报表,取出其配置信息
                foreach (var ent in entList)
                {
                    ChartReportModel tb = GetChartReport(ent.Id, moduleId, checkRole);
                    chartReportList.Add(tb);
                }
                return(chartReportList);
            }
            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 保存筛选条件信息
        /// 将未设置筛选的字段一起保存(未设置的字段IsSearch = false)
        /// </summary>
        /// <param name="chartReport"></param>
        /// <param name="chartReportId"></param>
        private void SaveRpFilterList(ChartReportModel chartReport, long chartReportId)
        {
            //新增或修改筛选
            if (chartReport.FilterListJson != null && chartReport.FilterListJson.Length > 0)
            {
                //保存说明:无差别式保存.然后在报表解析时去差别处理

                //chartReport.FilterListJson返回的所有字段+自定义筛选的内容
                var ftList = JSON.EncodeToEntity <List <ReportFilterModel> >(chartReport.FilterListJson);
                //原筛选项
                var oldFtList = _reportFilterRepository.GetAllList(p => p.ChartReportId == chartReportId);
                //获得新的字段
                var fdCodes = ftList.Select(p => p.FieldCode);
                //未在新字段的(应被删的)
                var delFtList = oldFtList.Where(p => p.FieldCode != null && !fdCodes.Contains(p.FieldCode)).ToList();

                //批量修改原筛选全部fasle
                if (oldFtList != null && oldFtList.Count > 0)
                {
                    for (int j = oldFtList.Count - 1; j >= 0; j--)
                    {
                        var ft = oldFtList[j];

                        if (delFtList.Contains(ft))
                        {
                            _reportFilterRepository.Delete(ft);
                        }
                        else
                        {
                            ft.IsSearch = false;
                            _reportFilterRepository.Update(ft);
                        }
                    }
                    //CurrentUnitOfWork.SaveChanges();
                }

                //批量添加或修改筛选信息
                if (ftList != null && ftList.Count > 0)
                {
                    for (int i = 0; i < ftList.Count; i++)
                    {
                        var ft = ftList[i];

                        ReportFilter curFt = new ReportFilter();
                        if (ft.IsCustom)//自定筛选
                        {
                            if (ft.Id != 0)
                            {
                                curFt = oldFtList.FirstOrDefault(p => p.Id == ft.Id);
                            }
                            else
                            {
                                curFt = oldFtList.FirstOrDefault(p => p.FieldParam == ft.FieldParam);//根据参数名判断
                            }
                        }
                        else
                        {
                            curFt = oldFtList.FirstOrDefault(p => p.FieldCode == ft.FieldCode);//根据字段编码判断
                        }
                        curFt = AutoMapper.Mapper.Map(ft, curFt);
                        curFt.ChartReportId = chartReportId;
                        _reportFilterRepository.InsertOrUpdate(curFt);//保存筛选
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void SaveChartInEventList(ChartReportModel tbReport, long reportId, long tbReportId, string code)
        {
            //表格解析地址
            var analysis = _analysisRepository.FirstOrDefault(p => p.Url == "Report/ChartReport");

            #region 内置事件保存
            //内置事件列表
            var inEvList = _inEventRepository.GetAllList(p => p.ReportType == (short)ReportEnum.ReportType.Chart).ToList();
            var inEvIds  = inEvList.Select(p => p.Id);

            string inlambda = "p=>p.Code==\"" + code + "\" && p.EventFrom==\"内置\" && p.SourceTable==\"EM_INEVENT\" &&p.AnalysisId==" + analysis.Id;
            Expression <Func <ModuleEvent, bool> > exp1 = StringToLambda.LambdaParser.Parse <Func <ModuleEvent, bool> >(inlambda);
            var mdInEvList = _moduleManager.GetModuleEventList(exp1);
            if (mdInEvList != null && mdInEvList.Count > 0)
            {
                //删除不在内置事件列表中的模版事件
                var delInEvList = mdInEvList.Where(p => !inEvIds.Contains(p.SourceTableId)).ToList();
                if (delInEvList != null && delInEvList.Count > 0)
                {
                    foreach (var inEv in delInEvList)
                    {
                        if (analysis != null)
                        {
                            //删除事件解析表事件及赋权信息
                            _moduleManager.DeleteEvent(analysis.Id, code, inEv.SourceTableId);
                        }
                    }
                }
                //查找没有添加的内置事件List
                var insertInEvList = inEvList.Where(p => !mdInEvList.Select(k => k.SourceTableId).Contains(p.Id));
                if (insertInEvList != null && insertInEvList.Count() > 0)
                {
                    //循环添加内置事件
                    foreach (var inev in insertInEvList)
                    {
                        ModuleEvent mdEv = new ModuleEvent
                        {
                            AnalysisId    = analysis.Id,
                            Code          = code,
                            EventName     = inev.DisplayName + "(chart)",
                            EventFrom     = "内置",
                            SourceTable   = "EM_INEVENT",
                            SourceTableId = inev.Id,
                        };
                        _moduleManager.SaveEvent(mdEv);
                    }
                }
            }
            else//未找到时,添加内置事件
            {
                if (inEvList != null && inEvList.Count > 0)
                {
                    foreach (var inEv in inEvList)
                    {
                        //保存事件至EM_MODULE_EVENT
                        ModuleEvent mdEv = new ModuleEvent
                        {
                            AnalysisId    = analysis.Id,
                            Code          = code,
                            EventName     = inEv.DisplayName + "(chart)",
                            EventFrom     = "内置",
                            SourceTable   = "EM_INEVENT",
                            SourceTableId = inEv.Id
                        };
                        _moduleManager.SaveEvent(mdEv);
                    }
                }
            }
            #endregion
        }