/// <summary> /// 从上往下递归:保存多表头 /// </summary> /// <param name="parentTopId"></param> /// <param name="tbReportId"></param> /// <param name="top"></param> /// <param name="topList"></param> private void RecursionSaveTopField(long?parentTopId, long tbReportId, TbReportFieldTopModel top, List <TbReportFieldTopModel> topList) { //当前节点为字段时,不添加表头而去修改字段的top if (!string.IsNullOrEmpty(top.FieldCode) && top.FieldCode.Length > 0) { //根据FieldCode和tbReportId查找字段 var fd = _tbReportFieldRepository.FirstOrDefault(p => p.FieldCode == top.FieldCode && p.TbReportId == tbReportId); if (fd != null && parentTopId != null) { fd.TbReportFieldTopId = parentTopId; //修改字段的表头ID _tbReportFieldRepository.Update(fd); //保存修改 } } else { top.Id = 0;//新增式插入 var curParentTopId = SaveTopField(top, tbReportId, parentTopId); foreach (var curTop in topList) { if (curTop.ParentName == top.Name) //当前节点的子节点 { RecursionSaveTopField(curParentTopId, tbReportId, curTop, topList); //保存子节点 } } } }
/// <summary> /// 获取多表头配置集合 /// </summary> /// <returns></returns> public IList <TbReportFieldTopModel> GetFildTopList(long tbReportId) { //多表头集合 var entList = _tbReportFieldTopRepository.GetAllList(p => p.TbReportId == tbReportId); if (entList != null && entList.Count > 0) { var topFieldList = new List <TbReportFieldTopModel>(); //初始化多表头集合 var fieldList = GetFildList(tbReportId); //获取字段集合 if (fieldList != null && fieldList.Count > 0) { foreach (var fd in fieldList) { var fieldAsTop = new TbReportFieldTopModel { ParentID = fd.TbReportFieldTopId, ParentName = fd.TbReportFieldTopName, Name = fd.FieldName, FieldCode = fd.FieldCode }; topFieldList.Add(fieldAsTop); } } topFieldList = topFieldList.Concat(AutoMapper.Mapper.Map <List <TbReportFieldTopModel> >(entList)).ToList(); return(topFieldList); } return(null); }
/// <summary> /// 保存一个多表头信息 /// </summary> /// <param name="top"></param> /// <param name="tbReportId"></param> /// <param name="parentTopId"></param> private long?SaveTopField(TbReportFieldTopModel top, long tbReportId, long?parentTopId) { var curTop = AutoMapper.Mapper.Map <TbReportFieldTop>(top); curTop.ParentID = parentTopId; curTop.TbReportId = tbReportId; return(_tbReportFieldTopRepository.InsertOrUpdateAndGetId(curTop)); }