/// <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); }
/// <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);//保存筛选 } } } }
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 }