Example #1
0
        /// <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);                //保存筛选条件信息
                }
            }
        }
Example #2
0
        /// <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)));
        }
Example #3
0
        /// <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);
        }