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
|
{
|
/// <summary>
|
/// 部门管理
|
/// </summary>
|
[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<MessageModel<PageModel<Department>>> Get(int page = 1, string key = "", int ParentId = -1, int PageSize = 20)
|
{
|
Expression<Func<Department, bool>> 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<PageModel<Department>>()
|
{
|
msg = "获取成功",
|
success = true,
|
response = departmentList
|
};
|
|
}
|
|
/// <summary>
|
/// 获取所有父级部门
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public async Task<MessageModel<PageModel<Department>>> GetParentList(int page = 1, string key = "", int intPageSize = 20)
|
{
|
Expression<Func<Department, bool>> whereExpression = a => (a.ParentId == 0);
|
|
var data = await _departmentServices.QueryPage(whereExpression, page, intPageSize);
|
|
return new MessageModel<PageModel<Department>>()
|
{
|
msg = "获取成功",
|
success = true,
|
response = data
|
};
|
|
}
|
|
[HttpGet]
|
[AllowAnonymous]
|
public async Task<MessageModel<object>> GetList(int id = 0)
|
{
|
var departmentList = await _departmentServices.Query(x => x.Status == 1);
|
|
return new MessageModel<object>()
|
{
|
msg = "获取成功",
|
success = true,
|
response = new
|
{
|
departmentList
|
}
|
};
|
}
|
|
[HttpPost]
|
public async Task<MessageModel<object>> Post([FromBody] Department request)
|
{
|
var data = new MessageModel<object>();
|
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<MessageModel<object>> Put([FromBody] Department request)
|
{
|
var data = new MessageModel<object>();
|
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<MessageModel<string>> Move([FromBody] VmDepartment Model)
|
{
|
var data = new MessageModel<string>();
|
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<MessageModel<string>> Delete(int id = 0)
|
{
|
var data = new MessageModel<string>();
|
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;
|
}
|
|
/// <summary>
|
/// 获取树下拉
|
/// </summary>
|
/// <param name="parentId"></param>
|
/// <param name="needbtn"></param>
|
/// <returns></returns>
|
[HttpGet]
|
[AllowAnonymous]
|
public async Task<MessageModel<DepartmentTree>> GetDepartmentTree(int parentId = 0, bool needbtn = false)
|
{
|
var data = new MessageModel<DepartmentTree>();
|
|
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<int> parentIdarr = new List<int> { };
|
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;
|
}
|
}
|
}
|