Beispiel #1
0
        public JsonResult Page(int pageIndex, int pageSize, string name, int?parentId)
        {
            var sql = Sql.Builder.Where("dept_code like @0 or dept_name like @0", "%" + name + "%");

            if (parentId.HasValue)
            {
                sql.Where("parent_id=@0", parentId.Value);
            }

            var page = SysDept.Page(pageIndex, pageSize, sql);

            return(Json(new ResponseData
            {
                Total = page.TotalItems,
                Data = page.Items.Select(d => new
                {
                    d.ID,
                    d.Code,
                    d.Name,
                    d.Sort,
                    d.ParentID,
                    ParentName = d.ParentID.ToDept().Name
                })
            }));
        }
Beispiel #2
0
        public virtual async Task UpdateDeptAsync(string oldDeptPids, SysDept dept, CancellationToken cancellationToken = default)
        {
            var updatingProps = UpdatingProps <SysDept>(x => x.FullName, x => x.SimpleName, x => x.Tips, x => x.Ordinal, x => x.Pid, x => x.Pids);

            await _deptRepository.UpdateAsync(dept, updatingProps);

            //zz.efcore 不支持
            //await _deptRepository.UpdateRangeAsync(d => d.Pids.Contains($"[{dept.ID}]"), c => new SysDept { Pids = c.Pids.Replace(oldDeptPids, dept.Pids) });
            var originalDeptPids = $"{oldDeptPids}[{dept.Id}],";
            var nowDeptPids      = $"{dept.Pids}[{dept.Id}],";

            var subDepts = await _deptRepository
                           .Where(d => d.Pids.StartsWith(originalDeptPids))
                           .Select(d => new { d.Id, d.Pids })
                           .ToListAsync();

            //var subDepts = await _deptRepository.SelectAsync(d => new { d.Id, d.Pids }
            //                                                , d => d.Pids.StartsWith(originalDeptPids)
            //                                                );
            foreach (var c in subDepts)
            {
                await _deptRepository.UpdateAsync(new SysDept { Id = c.Id, Pids = c.Pids.Replace(originalDeptPids, nowDeptPids) }, UpdatingProps <SysDept>(c => c.Pids));
            }
            ;
        }
Beispiel #3
0
        private void tsbAddChild_Click(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(tvDept.SelectedValue.ToString()))
                {
                    OnInitData();
                    CtrlHelper.EnableCtrls(allCtrls);
                    CtrlHelper.DisableCtrls(newCtrls);

                    SysDept sd = SqlBaseProvider.GetSysDept(tvDept.SelectedValue.ToString());
                    CtrlHelper.SelectDropDownList(ddlCoID, sd.CoID);
                    txtDeptPID.Text = sd.DeptID;
                    fState          = FormState.New;

                    tsbSave.Visible   = true;
                    tsbCancel.Visible = true;
                }
                else
                {
                    Global.ShowSysInfo("请选择需要增加同级部门的相关部门!");
                }
            }
            catch (Exception ex)
            {
                Global.ShowSysError(ex);
            }
        }
        /**
         * 构建前端所需要树结构
         *
         * @param depts 部门列表
         * @return 树结构列表
         */

        public List <SysDept> buildDeptTree(List <SysDept> depts)
        {
            List <SysDept> returnList = new List <SysDept>();
            List <long>    tempList   = new List <long>();

            foreach (SysDept dept in depts)
            {
                tempList.Add(dept.Id);
            }


            var it = depts.GetEnumerator();

            while (it.MoveNext())
            {
                SysDept dept = (SysDept)it.Current;
                // 如果是顶级节点, 遍历该父节点的所有子节点
                if (!tempList.Contains(dept.ParentId))
                {
                    recursionFn(depts, dept);
                    returnList.Add(dept);
                }
            }
            if (returnList.Count > 0)
            {
                returnList = depts;
            }
            return(returnList);
        }
        /**
         * 修改该部门的父级部门状态
         *
         * @param dept 当前部门
         */
        private void updateParentDeptStatus(SysDept dept)
        {
            String updateBy = dept.UpdateBy;

            dept          = sysDeptRepository.selectDeptById(dept.Id);
            dept.UpdateBy = (updateBy);
            sysDeptRepository.updateDeptStatus(dept);
        }
 public AjaxReponseBase add([FromBody] SysDept dept)
 {
     if (YouGeUserConstants.NOT_UNIQUE.Equals(deptService.checkDeptNameUnique(dept)))
     {
         return(AjaxReponseBase.Error("新增部门'" + dept.DeptName + "'失败,部门名称已存在"));
     }
     dept.CreateBy = (SecurityUtils.getUsername(tokenService, httpContextAccessor.HttpContext.Request));
     return(toAjax(deptService.insertDept(dept)));
 }
Beispiel #7
0
 public TreeSelect(SysDept dept)
 {
     this.id       = dept.Id;
     this.label    = dept.DeptName;
     this.children = new List <TreeSelect>();
     for (int i = 0; i < dept.getChildren().Count; i++)
     {
         this.children.Add(new TreeSelect());
     }
     //= dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
 }
Beispiel #8
0
        public static string GetFullDeptName(this SysDept dept)
        {
            string name = dept.Name;

            while (dept.ParentID != 0)
            {
                dept = BasicDataCache.listDepts.Single(d => d.ID == dept.ParentID);
                name = string.Format("{0} > {1}", dept.Name, name);
            }

            return(name);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="dept"></param>
        /// <returns></returns>
        public string checkDeptNameUnique(SysDept dept)
        {
            long deptId = dept.Id == 0 ? -1L : dept.Id;

            SysDept info = sysDeptRepository.checkDeptNameUnique(dept.DeptName, dept.ParentId);

            if (info != null && info.Id != dept.Id)
            {
                return(YouGeUserConstants.NOT_UNIQUE);
            }
            return(YouGeUserConstants.UNIQUE);
        }
Beispiel #10
0
        public JsonResult Update(SysDept dept)
        {
            var old = SysDept.SingleOrDefault(dept.ID);

            old.Code     = dept.Code;
            old.Name     = dept.Name;
            old.Sort     = dept.Sort;
            old.ParentID = dept.ParentID;

            old.Update();

            return(Json(ArtDialogResponseResult.SuccessResult));
        }
 public string Update(SysDept org)
 {
     try
     {
         _app.Update(org);
     }
     catch (Exception ex)
     {
         Result.Code    = 500;
         Result.Message = ex.InnerException?.Message ?? ex.Message;
     }
     return(JsonHelper.Instance.Serialize(Result));
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="dept"></param>
        /// <returns></returns>
        public int insertDept(SysDept dept)
        {
            SysDept info = sysDeptRepository.selectDeptById(dept.ParentId);

            // 如果父节点不为正常状态,则不允许新增子节点
            if (!YouGeUserConstants.DEPT_NORMAL.Equals(info.Status))
            {
                throw new CustomException("部门停用,不允许新增");
            }
            dept.Ancestors = info.Ancestors + "," + dept.ParentId;

            return(sysDeptRepository.insertDept(dept));
        }
Beispiel #13
0
        public static SysDept ToDept(this int id)
        {
            var dept = BasicDataCache.listDepts.SingleOrDefault(d => d.ID == id);

            if (dept == null)
            {
                dept = new SysDept();
                if (id == 0)
                {
                    dept.Name = "一级部门";
                }
            }

            return(dept);
        }
        /**
         * 得到子节点列表
         */
        private List <SysDept> getChildList(List <SysDept> list, SysDept t)
        {
            List <SysDept> tlist = new List <SysDept>();
            var            it    = list.GetEnumerator();

            while (it.MoveNext())
            {
                SysDept n = (SysDept)it.Current;
                if (n.ParentId != 0 && n.ParentId == t.Id)
                {
                    tlist.Add(n);
                }
            }
            return(tlist);
        }
Beispiel #15
0
        private async Task SetDeptPids(SysDept sysDept)
        {
            if (sysDept.Pid.HasValue && sysDept.Pid.Value > 0)
            {
                var dept = await _deptRepository.FetchAsync(d => new { d.ID, d.Pid, d.Pids }, x => x.ID == sysDept.Pid.Value);

                string pids = dept?.Pids ?? "";
                sysDept.Pids = $"{pids}[{sysDept.Pid}],";
            }
            else
            {
                sysDept.Pid  = 0;
                sysDept.Pids = "[0],";
            }
        }
Beispiel #16
0
 private async Task <SysDept> SetDeptPids(SysDept sysDept)
 {
     if (sysDept.Pid.HasValue && sysDept.Pid.Value > 0)
     {
         var    dept = (await _cacheService.GetAllDeptsFromCacheAsync()).FirstOrDefault(x => x.Id == sysDept.Pid.Value);
         string pids = dept?.Pids ?? "";
         sysDept.Pids = $"{pids}[{sysDept.Pid}],";
     }
     else
     {
         sysDept.Pid  = 0;
         sysDept.Pids = "[0],";
     }
     return(sysDept);
 }
        public AjaxReponseBase excludeChild(long deptId)
        {
            List <SysDept> depts = deptService.selectDeptList(new SysDept());
            var            it    = depts.GetEnumerator();

            while (it.MoveNext())
            {
                SysDept d = (SysDept)it.Current;
                if (d.Id == deptId || d.Ancestors.Split(",").ToList().Contains(deptId.ToString()))
                {
                    depts.Remove(d);
                }
            }
            return(AjaxReponseBase.Success(depts));
        }
Beispiel #18
0
        private void btn_AddInt_Click(object sender, EventArgs e)
        {
            SysDept dept = new SysDept();

            dept.Name = "aaa" + Guid.NewGuid().ToString();

            SaveResult saveResult = Mydb.Insert(dept);

            if (saveResult.OK)
            {
                MessageBox.Show(saveResult.PK_Int.ToString());
            }
            else
            {
                MessageBox.Show(saveResult.Msg);
            }
        }
Beispiel #19
0
 private async Task <SysDept> SetDeptPids(SysDept sysDept)
 {
     if (sysDept.Pid.HasValue && sysDept.Pid.Value > 0)
     {
         //var depts = await this.GetAllFromCache();
         //var dept = depts.Select(d => new { d.Id, d.Pid, d.Pids }).Where(d => d.Id == sysDept.Pid.Value).FirstOrDefault();
         var    dept = (await GetAllFromCacheAsync()).FirstOrDefault(x => x.Id == sysDept.Pid.Value);
         string pids = dept?.Pids ?? "";
         sysDept.Pids = $"{pids}[{sysDept.Pid}],";
     }
     else
     {
         sysDept.Pid  = 0;
         sysDept.Pids = "[0],";
     }
     return(sysDept);
 }
Beispiel #20
0
        private async Task <SysDept> SetDeptPids(SysDept sysDept)
        {
            if (sysDept.Pid.HasValue && sysDept.Pid.Value > 0)
            {
                var depts = await this.GetAll();

                var dept = depts.Select(d => new { d.ID, d.Pid, d.Pids }).Where(d => d.ID == sysDept.Pid.Value).FirstOrDefault();
                //var dept = await _deptRepository.FetchAsync(d => new { d.ID, d.Pid, d.Pids }, x => x.ID == sysDept.Pid.Value);
                string pids = dept?.Pids ?? "";
                sysDept.Pids = $"{pids}[{sysDept.Pid}],";
            }
            else
            {
                sysDept.Pid  = 0;
                sysDept.Pids = "[0],";
            }
            return(sysDept);
        }
 public AjaxReponseBase edit([FromBody] SysDept dept)
 {
     if (YouGeUserConstants.NOT_UNIQUE.Equals(deptService.checkDeptNameUnique(dept)))
     {
         return(AjaxReponseBase.Error("修改部门'" + dept.DeptName + "'失败,部门名称已存在"));
     }
     else if (dept.ParentId.Equals(dept.Id))
     {
         return(AjaxReponseBase.Error("修改部门'" + dept.DeptName + "'失败,上级部门不能是自己"));
     }
     else if (YouGeUserConstants.DEPT_DISABLE.Equals(dept.Status) &&
              deptService.selectNormalChildrenDeptById(dept.Id) > 0)
     {
         return(AjaxReponseBase.Error("该部门包含未停用的子部门!"));
     }
     dept.UpdateBy = (SecurityUtils.getUsername(tokenService, httpContextAccessor.HttpContext.Request));
     return(toAjax(deptService.updateDept(dept)));
 }
        /**
         * 递归列表
         */
        private void recursionFn(List <SysDept> list, SysDept t)
        {
            // 得到子节点列表
            List <SysDept> childList = getChildList(list, t);

            t.setChildren(childList);
            foreach (SysDept tChild in childList)
            {
                if (hasChild(list, tChild))
                {
                    // 判断是否有子节点
                    var it = childList.GetEnumerator();
                    while (it.MoveNext())
                    {
                        SysDept n = (SysDept)it.Current;
                        recursionFn(list, n);
                    }
                }
            }
        }
Beispiel #23
0
        public async Task UpdateDept(string oldDeptPids, SysDept dept, CancellationToken cancellationToken = default)
        {
            await _deptRepository.UpdateAsync(dept);

            //zz.efcore 不支持
            //await _deptRepository.UpdateRangeAsync(d => d.Pids.Contains($"[{dept.ID}]"), c => new SysDept { Pids = c.Pids.Replace(oldDeptPids, dept.Pids) });
            var originalDeptPids = $"{oldDeptPids}[{dept.ID}],";
            var nowDeptPids      = $"{dept.Pids}[{dept.ID}],";

            var subDepts = await _deptRepository.SelectAsync(d => new { d.ID, d.Pids }
                                                             , d => d.Pids.StartsWith(originalDeptPids)
                                                             );

            subDepts.ForEach(c =>
            {
                _deptRepository.UpdateAsync(new SysDept {
                    ID = c.ID, Pids = c.Pids.Replace(originalDeptPids, nowDeptPids)
                }, c => c.Pids).Wait();
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="dept"></param>
        /// <returns></returns>
        public int updateDept(SysDept dept)
        {
            SysDept newParentDept = sysDeptRepository.selectDeptById(dept.ParentId);
            SysDept oldDept       = sysDeptRepository.selectDeptById(dept.Id);

            if (null != newParentDept && null != oldDept)
            {
                string newAncestors = newParentDept.Ancestors + "," + newParentDept.Id;
                string oldAncestors = oldDept.Ancestors;
                dept.Ancestors = (newAncestors);
                updateDeptChildren(dept.Id, newAncestors, oldAncestors);
            }
            int result = sysDeptRepository.updateDept(dept);

            if (YouGeUserConstants.DEPT_NORMAL.Equals(dept.Status))
            {
                // 如果该部门是启用状态,则启用该部门的所有上级部门
                updateParentDeptStatus(dept);
            }
            return(result);
        }
Beispiel #25
0
        public static DeptDto ToDeptDto(SysDept sysDept)
        {
            var dto = new DeptDto
            {
                Fullname   = sysDept.Fullname,
                Simplename = sysDept.Simplename,
                CreateBy   = sysDept.CreateBy?.ToString() ?? string.Empty,
                CreateTime = sysDept.CreateTime?.ToString() ?? string.Empty,
                Id         = sysDept.Id.ToString(),
                ModifyBy   = sysDept.ModifyBy?.ToString() ?? string.Empty,
                ModifyTime = sysDept.ModifyTime?.ToString() ?? string.Empty,
                Num        = sysDept.Num ?? 1,
                Pid        = sysDept.Pid.Value().ToString(),
                Pids       = sysDept.Pids,
                Tips       = sysDept.Tips,
                Version    = sysDept.Version?.ToString() ?? "1",
                Children   = new List <DeptDto>()
            };

            return(dto);
        }
Beispiel #26
0
        /// <summary>
        /// 部门递归
        /// </summary>
        /// <param name="parent">上级部门</param>
        /// <param name="prefix">前缀</param>
        /// <returns></returns>
        private static List <ComboBox> DeptRecursion(SysDept parent, string prefix)
        {
            List <ComboBox> result = new List <ComboBox>();

            prefix = string.IsNullOrEmpty(prefix) ? "┝" : prefix + "─";

            var depts = BasicDataCache.listDepts.Where(d => d.ParentID == parent.ID);

            foreach (var dept in depts)
            {
                ComboBox combo = new ComboBox();
                combo.ID    = dept.ID;
                combo.Text  = string.Format("{0}{1}", prefix, dept.Name);
                combo.Value = dept.ID.ToString();

                result.Add(combo);
                result.AddRange(DeptRecursion(dept, prefix));
            }

            return(result);
        }
Beispiel #27
0
        public static AccountInfoDto ToAccountInfoDto(
            SysUser user,
            SysDept dept,
            List <SysRole> roles,
            List <string> permissions)
        {
            var dto = new AccountInfoDto
            {
                Name    = user.Name,
                Role    = user.Account, // todo??
                Roles   = roles.Select(it => it.Tips).ToList(),
                Profile = new AccountProfileDto
                {
                    Dept       = dept.Fullname,
                    Deptid     = dept.Id,
                    Account    = user.Account,
                    Sex        = (int)user.Sex,
                    Avatar     = user.Avatar,
                    Birthday   = user.Birthday,
                    Version    = user.Version,
                    CreateBy   = user.CreateBy,
                    CreateTime = user.CreateTime,
                    Email      = user.Email,
                    Id         = user.Id,
                    ModifyBy   = user.ModifyBy,
                    ModifyTime = user.ModifyTime,
                    Name       = user.Name,
                    Phone      = user.Phone,
                    Roleid     = user.Roleid,
                    Roles      = roles.Select(it => it.Name).ToList(),
                    Status     = user.Status == AccountStatus.Active,
                    DeptName   = dept.Simplename,
                    RoleName   = string.Join(',', roles.Select(it => it.Name)),
                },
                Permissions = permissions
            };

            return(dto);
        }
Beispiel #28
0
        protected void OnLoadData()
        {
            try
            {
                SysDept sd = SqlBaseProvider.GetSysDept(tvDept.SelectedValue.ToString());

                txtDeptID.Text      = sd.DeptID;
                txtDeptPID.Text     = sd.DeptPID;
                txtDeptAddress.Text = sd.DeptAddress;
                txtDeptName.Text    = sd.DeptName;
                if (!String.IsNullOrEmpty(sd.DeptMan))
                {
                    txtDeptMan.CodeText = sd.DeptMan;
                    SysMan sm = SqlBaseProvider.GetSysMan(sd.DeptMan);
                    txtDeptMan.NameText = sm.ManName;
                }
                else
                {
                    txtDeptMan.CodeText = String.Empty;
                    txtDeptMan.NameText = String.Empty;
                }
                txtDeptEMail.Text = sd.DeptEMail;
                txtDeptFax.Text   = sd.DeptFax;
                txtDeptPost.Text  = sd.DeptPost;
                txtDeptTele.Text  = sd.DeptTele;
                txtSortOrder.Text = sd.SortOrder.ToString();
                txtDeptShort.Text = sd.DeptShort;

                CtrlHelper.SelectDropDownList(ddlCoID, sd.CoID);
                CtrlHelper.SelectDropDownList(ddlDeptType, sd.DeptType.ToString());
                CtrlHelper.SelectDropDownList(ddlDeptStatus, sd.DeptStatus.ToString());
                CtrlHelper.SelectDropDownList(ddlDeptLevel, sd.DeptLevel.ToString());
            }
            catch (Exception ex)
            {
                Global.ShowSysError(ex);
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="dept"></param>
 /// <returns></returns>
 public List <SysDept> selectDeptList(SysDept dept)
 {
     return(sysDeptRepository.selectDeptList(dept));
 }
 /**
  * 判断是否有子节点
  */
 private bool hasChild(List <SysDept> list, SysDept t)
 {
     return(getChildList(list, t).Count > 0 ? true : false);
 }