private FaUserInfoRelativeItem InfoToItem(fa_user_info userInfo, int x, int y) { var ent = Mapper.Map <FaUserInfoRelativeItem>(userInfo); ent.x = x; ent.y = y; return(ent); }
/// <summary> /// /// </summary> /// <param name="mainList"></param> /// <param name="inSon"></param> /// <param name="levelId"></param> /// <param name="maxLevelId"></param> /// <param name="xyz">z:width</param> /// <returns></returns> private bool AddFatherItem(IList <FaUserInfoRelativeItem> mainList, fa_user_info inSon, int levelId, int maxLevelId, XYZ xyz, int toLeft, int toRigth) { if (levelId > maxLevelId) { return(true); } if (inSon.fa_user_info2 == null) { return(true); } var allSon = inSon.fa_user_info2.fa_user_info1.OrderBy(x => x.LEVEL_ID).ToList(); var sonList = Mapper.Map <IList <FaUserInfoRelativeItem> >(allSon); #region 计算坐标 var myPlace = 0; for (var i = 0; i < sonList.Count; i++) { if (sonList[i].Id == inSon.ID) { myPlace = i; } } //表示开始的位置 sonList[myPlace].x = xyz.X; sonList[myPlace].y = xyz.Y; for (var i = 0; i < myPlace; i++) { var thisItme = sonList[myPlace - i - 1]; thisItme.y = xyz.Y; thisItme.x = toLeft - i * 2 - 2; mainList.Add(thisItme); } int startX = toRigth + 2; for (var i = myPlace + 1; i < sonList.Count; i++) { var tmpXY = AddSonItem(mainList, allSon[i], 1, 1, new XYZ { X = startX, Y = xyz.Y }); startX = tmpXY[1] + 2; sonList[i].x = (tmpXY[0] + tmpXY[1]) / 2; sonList[i].y = xyz.Y; mainList.Add(sonList[i]); } #endregion var minX = sonList.Min(x => x.x); var maxX = sonList.Max(x => x.x); var father = InfoToItem(inSon.fa_user_info2, (minX + maxX) / 2, xyz.Y + 1); mainList.Add(father); AddFatherItem(mainList, inSon.fa_user_info2, levelId + 1, maxLevelId, new XYZ { X = father.x, Y = father.y }, minX, maxX); return(true); }
private IList <int> AddSonItem(IList <FaUserInfoRelativeItem> mainList, fa_user_info inFather, int levelId, int maxLevelId, XYZ xyz) { if (levelId > maxLevelId) { return new[] { xyz.X, xyz.X, xyz.X } } ; var allSon = inFather.fa_user_info1.OrderBy(x => x.LEVEL_ID).ToList(); if (allSon.Count() == 0) { return new[] { xyz.X, xyz.X, xyz.X } } ; var allSonItem = Mapper.Map <IList <FaUserInfoRelativeItem> >(allSon); int startX = xyz.X; for (var i = 0; i < allSonItem.Count(); i++) { var tmpXY = AddSonItem(mainList, allSon[i], levelId + 1, maxLevelId, new XYZ { X = startX, Y = xyz.Y - 1 }); startX = tmpXY[1] + 2; if (tmpXY[2] > startX) { startX = tmpXY[2]; } allSonItem[i].x = (tmpXY[0] + tmpXY[1]) / 2; allSonItem[i].y = xyz.Y - 1; mainList.Add(allSonItem[i]); } var maxX = allSonItem.Max(x => x.x); if (maxX < startX) { maxX = startX; } return(new[] { allSonItem.Min(x => x.x), allSonItem.Max(x => x.x), maxX }); }
public string UserInfoAddMultiSon(ref ErrorInfo err, ApiRequesSaveEntityBean <string> inEnt) { GlobalUser gu = Global.GetUser(inEnt.authToken); if (gu == null) { err.IsError = true; err.Message = "登录超时"; return(null); } if (string.IsNullOrEmpty(inEnt.entity)) { err.IsError = true; err.Message = "参数有误"; return(null); } //调用用户保存 using (DBEntities db = new DBEntities()) { var allUserNameArr = inEnt.entity.Split(',').Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); var parentUser = db.fa_user_info.SingleOrDefault(x => x.ID == inEnt.userId); if (parentUser == null) { err.IsError = true; err.Message = "当前用户不存在"; return(null); } if (string.IsNullOrEmpty(parentUser.fa_user.NAME)) { err.IsError = true; err.Message = "当前用户不存在"; return(null); } var fristName = parentUser.fa_user.NAME.Substring(0, 1); foreach (var userName in allUserNameArr) { TUser inUser = new TUser(); if (userName.Substring(0, 1).Equals(fristName)) { inUser.NAME = userName; } else { inUser.NAME = string.Format("{0}{1}", fristName, userName); } inUser.DISTRICT_ID = parentUser.fa_user.DISTRICT_ID; inUser.RoleAllIDStr = string.Join(",", parentUser.fa_user.fa_role.Select(x => x.ID).ToList()); var user = api.UserApi.UserSave(db, inEnt.authToken, ref err, inUser, new List <string> { "NAME", "DISTRICT_ID", "RoleAllIDStr" }); if (err.IsError) { return(null); } var userInfo = db.fa_user_info.SingleOrDefault(x => x.ID == user.ID); if (userInfo == null) { userInfo = new fa_user_info(); userInfo.ID = user.ID; userInfo.STATUS = "正常"; userInfo.CREATE_TIME = DateTime.Now; userInfo.CREATE_USER_ID = gu.UserId; userInfo.CREATE_USER_NAME = gu.UserName; userInfo.UPDATE_TIME = DateTime.Now; userInfo.UPDATE_USER_ID = gu.UserId; userInfo.UPDATE_USER_NAME = gu.UserName; userInfo.FATHER_ID = parentUser.ID; UpdataLog <FaUserInfo> updataLog = new UpdataLog <FaUserInfo>(db); updataLog.UpdataLogSaveCreate(gu, Mapper.Map <FaUserInfo>(userInfo)); db.fa_user_info.Add(userInfo); } } if (err.IsError) { return(null); } Fun.DBEntitiesCommit(db, ref err); return(allUserNameArr.Count().ToString()); } }