/// <summary> /// 保存一个表格报表(其他类报表也需要提供类似方法:参数部分相同) /// </summary> /// <param name="childrReport"></param> /// <param name="reportId"></param> /// <param name="code"></param> public void SaveTbReport(ChildReportModel childrReport, long reportId, string code) { if (childrReport.ChildReportJson != null && childrReport.ChildReportJson.Length > 0) { var tbReport = JSON.EncodeToEntity <TbReportModel>(childrReport.ChildReportJson); if (tbReport != null) { #region 基础信息修改,得到tbReportId TbReport tb = AutoMapper.Mapper.Map <TbReport>(tbReport); tb.ReportId = reportId; tb.ApplicationType = childrReport.ApplicationType; tb.ReportType = childrReport.ChildReportType; tb.IsOpen = childrReport.IsOpen; tb.Id = childrReport.ChildReportId; var tbReportId = _tbReportRepository.InsertOrUpdateAndGetId(tb);//修改表格报表并获得ID #endregion tbReport.ReportType = childrReport.ChildReportType; tbReport.ApplicationType = childrReport.ApplicationType; SaveRpFieldList(tbReport, reportId, tbReportId); //保存列信息 SaveRpEventList(tbReport, reportId, tbReportId, code); //保存事件信息 SaveRpTopList(tbReport, tbReportId); //保存多表头信息 SaveRpFilterList(tbReport, tbReportId); //保存筛选条件信息 } } }
/// <summary> /// 获取当前报表的内置事件 /// </summary> /// <param name="ent"></param> /// <param name="tbReportId"></param> /// <param name="moduleId"></param> /// <param name="checkRole"></param> /// <returns></returns> private string GetInEventJson(TbReport ent, long tbReportId, long moduleId, bool checkRole) { Users.User user = GetCurrentUserAsync().Result; var roleids = user.Roles.Select(p => Convert.ToInt64(p.RoleId)).ToList(); var evids = _roleModuleEventRepository.GetAllList(p => roleids.Contains(p.RoleId) && p.ModuleId == moduleId).Select(p => p.EventId); var tbEvs = _moduleEventRepository.GetAllList(p => evids.Contains(p.Id) && p.EventFrom == "内置").Select(p => p.SourceTableId); var inEventList = _inEventRepository.GetAllList(p => tbEvs.Contains(p.Id)); return(JSON.DecodeToStr(AutoMapper.Mapper.Map <List <InEvent>, List <InEventModel> >(inEventList))); }
/// <summary> /// 获取事件配置集合 /// </summary> /// <returns></returns> private IList <TbReportOutEventModel> GetOutEventList(TbReport ent, long tbReportId, long moduleId, bool checkRole) { //if (moduleId == 0) return null; var outEventList = _tbReportOutEventRepository.GetAllList(p => p.TbReportId == tbReportId); if (outEventList != null && outEventList.Count > 0) { //映射model,同时为每个事件赋唯一值 var eventOutputList = outEventList.Select(p => { var outEvent = p.MapTo <TbReportOutEventModel>(); outEvent.Identifier = p.Id.ToString();//赋唯一标识符 return(outEvent); }).ToList(); if (checkRole)//验证用户权限(只返回权限内的事件) { if (moduleId != 0) { Users.User user = GetCurrentUserAsync().Result; var roleids = user.Roles.Select(p => Convert.ToInt64(p.RoleId)).ToList(); var evids = _roleModuleEventRepository.GetAllList(p => roleids.Contains(p.RoleId) && p.ModuleId == moduleId).Select(p => p.EventId); var tbEvs = _moduleEventRepository.GetAllList(p => evids.Contains(p.Id)).Select(p => p.SourceTableId); eventOutputList = eventOutputList.Where(p => tbEvs.Contains(p.Id)).ToList(); } else { eventOutputList = null; } } //循环获取每个事件的参数列表 foreach (var ev in eventOutputList) { //获取事件参数 var paramList = _paramRepository.GetAllList(p => p.TbReportOutEventId == ev.Id).OrderBy(p => p.OrderNum).ToList(); if (paramList != null && paramList.Count > 0) { ev.ParamListJson = JSON.DecodeToStr(AutoMapper.Mapper.Map <List <ParamModel> >(paramList)); } } return(eventOutputList); } return(null); }