using JiepeiWMS.IServices; using JiepeiWMS.Model; using JiepeiWMS.Model.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Linq.Expressions; using System.Threading.Tasks; using JiepeiWMS.Extends; using JiepeiWMS.Api.Models; using JiepeiWMS.Common.Helper; using System.Linq; using System.Collections.Generic; namespace JiepeiWMS.Api.Controllers { /// /// 部门管理 /// [Route("api/[controller]/[action]")] [ApiController] [Authorize(Permissions.Name)] public class DepartmentController : ControllerBase { private readonly IDepartmentServices _departmentServices; public DepartmentController(IDepartmentServices DepartmentServices) { _departmentServices = DepartmentServices; } [HttpGet] public async Task>> Get(int page = 1, string key = "", int ParentId = -1, int PageSize = 20) { Expression> whereExpression = t => t.Status == 1; if (!string.IsNullOrWhiteSpace(key)) { whereExpression = whereExpression.And(t => t.Name.Contains(key)); } if (ParentId >= 0) { whereExpression = whereExpression.And(t => t.ParentId == ParentId); } var departmentList = await _departmentServices.QueryPage(whereExpression, page, PageSize, "SortById asc,Id asc"); foreach (var item in departmentList.data) { if (item.ParentId > 0) { var parentModel = await _departmentServices.QueryById(item.ParentId); if (parentModel != null) item.ParentName = parentModel.Name; } } return new MessageModel>() { msg = "获取成功", success = true, response = departmentList }; } /// /// 获取所有父级部门 /// /// [HttpGet] public async Task>> GetParentList(int page = 1, string key = "", int intPageSize = 20) { Expression> whereExpression = a => (a.ParentId == 0); var data = await _departmentServices.QueryPage(whereExpression, page, intPageSize); return new MessageModel>() { msg = "获取成功", success = true, response = data }; } [HttpGet] [AllowAnonymous] public async Task> GetList(int id = 0) { var departmentList = await _departmentServices.Query(x => x.Status == 1); return new MessageModel() { msg = "获取成功", success = true, response = new { departmentList } }; } [HttpPost] public async Task> Post([FromBody] Department request) { var data = new MessageModel(); request.CreatedTime = DateTime.Now; request.Leader = 0; request.ViceLeader = 0; request.Path = string.Empty; var id = await _departmentServices.AddInfo(request); data.success = id > 0; if (data.success) { data.response = request; data.msg = "添加成功"; } return data; } [HttpPut] public async Task> Put([FromBody] Department request) { var data = new MessageModel(); if (request.Id > 0) { request.UpdatedTime = DateTime.Now; data.success =string.IsNullOrEmpty( (await _departmentServices.EditInfo(request))); if (data.success) { data.msg = "更新成功"; data.response = request; } } return data; } [HttpPost] public async Task> Move([FromBody] VmDepartment Model) { var data = new MessageModel(); if (Model.Id > 0) { Model.UpdatedTime = DateTime.Now; await _departmentServices.Move(Model, Model.MoveId); data.success = await _departmentServices.Update(Model); if (data.success) { data.msg = "移动成功"; data.response = Model?.Id.ObjToString(); } } return data; } [HttpDelete] public async Task> Delete(int id = 0) { var data = new MessageModel(); if (id > 0) { var detail = await _departmentServices.QueryById(id); if (detail != null) { data.success = await _departmentServices.DeleteById(id); if (data.success) { data.msg = "删除成功"; data.response = detail?.Id.ObjToString(); } } } return data; } /// /// 获取树下拉 /// /// /// /// [HttpGet] [AllowAnonymous] public async Task> GetDepartmentTree(int parentId = 0, bool needbtn = false) { var data = new MessageModel(); var Depart = await _departmentServices.Query(); var DepartTrees = (from child in Depart orderby child.Id select new DepartmentTree { value = child.Id, label = child.Name, parentId = child.ParentId, order = child.Id, }).ToList(); DepartmentTree rootRoot = new DepartmentTree { value = 0, parentId = 0, label = "请选择>>>>>>" }; foreach (var item in Depart) { List parentIdarr = new List { }; var DepartModel = Depart.FirstOrDefault(d => d.Id == parentId); while (DepartModel != null) { parentIdarr.Add(DepartModel.Id); DepartModel = Depart.FirstOrDefault(d => d.Id == DepartModel.ParentId); } parentIdarr.Reverse(); parentIdarr.Insert(0, 0); rootRoot.ParentIdArr = parentIdarr; } DepartTrees = DepartTrees.OrderBy(d => d.order).ToList(); RecursionHelper.LoopToAppendChildrenDepartment(DepartTrees, rootRoot, parentId, needbtn); data.success = true; if (data.success) { data.response = rootRoot; data.msg = "获取成功"; } return data; } } }