223 lines
9.3 KiB
C#
223 lines
9.3 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Syc.Basic.Web.WMS.Dtos.Organization;
|
|
using Syc.Basic.Web.WMS.Dtos.Position;
|
|
using Syc.Basic.Web.WMS.ServiceTool;
|
|
using Syc.Basic.Web.WMS.Entitys;
|
|
using Syc.Basic.Web.WMS.Enums;
|
|
using Syc.Core.Tools;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq.Dynamic.Core;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Domain.Repositories;
|
|
|
|
namespace Syc.Basic.Web.Service
|
|
{
|
|
/// <summary>
|
|
/// 组织服务
|
|
/// </summary>
|
|
public class OrganizationService : ApiService
|
|
{
|
|
private readonly IRepository<Organization> organizationRepository;
|
|
private readonly IRepository<User> user;
|
|
|
|
public OrganizationService(IRepository<Organization> OrganizationRepository,
|
|
IRepository<User> _user, IHttpContextAccessor httpContextAccessor)
|
|
{
|
|
organizationRepository=OrganizationRepository;
|
|
user = _user;
|
|
}
|
|
/// <summary>
|
|
/// 添加单条组织信息
|
|
/// </summary>
|
|
/// <param name="organizationInsertDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task OrganizationCreate(OrganizationInsertDto organizationInsertDto)
|
|
{
|
|
|
|
var hasOrganization = await organizationRepository.AnyAsync(e => e.Name == organizationInsertDto.name);
|
|
if (!hasOrganization)
|
|
{
|
|
await organizationRepository.InsertAsync(new Organization
|
|
{
|
|
Createtime = DateTime.UtcNow,
|
|
Code = "11111111",
|
|
Description = organizationInsertDto.remark,
|
|
Name = organizationInsertDto.name,
|
|
Status = organizationInsertDto.status,
|
|
Leader = organizationInsertDto.leader,
|
|
wechatRobotId = organizationInsertDto.wechatRobotId,
|
|
Type = organizationInsertDto.type,
|
|
Order = organizationInsertDto.sort,
|
|
Pid = organizationInsertDto.parentId
|
|
});
|
|
}else
|
|
throw Oops.Oh("组织编号已存在,不允许重复键.");
|
|
|
|
}
|
|
/// <summary>
|
|
/// 编辑单条组织信息
|
|
/// </summary>
|
|
/// <param name="organizationEditDto"></param>
|
|
/// <returns></returns>
|
|
public async Task EditOrganizationApp(OrganizationEditDto organizationEditDto)
|
|
{
|
|
var Organization = await organizationRepository.FirstAsync(e => e.Code == organizationEditDto.Code);
|
|
if (Organization is null)
|
|
throw Oops.Oh("检索过程中不存在该数据,请检查是否已被移除.");
|
|
|
|
if (!string.IsNullOrWhiteSpace(organizationEditDto.Description))
|
|
Organization.Description = organizationEditDto.Description;
|
|
if (!string.IsNullOrWhiteSpace(organizationEditDto.Name))
|
|
Organization.Name = organizationEditDto.Name;
|
|
Organization.wechatRobotId = organizationEditDto.wechatRobotId;
|
|
Organization.Status = organizationEditDto.Status;
|
|
Organization.Order = organizationEditDto.Order;
|
|
Organization.Pid = organizationEditDto.Pid;
|
|
Organization.Type = organizationEditDto.Type;
|
|
await organizationRepository.UpdateAsync(Organization,autoSave:true);
|
|
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<PageOutput<OrganizationAllOut>> OrganizationAll([FromQuery]GetDepartmentInput input)
|
|
{
|
|
var data = await organizationRepository.GetQueryableAsync();
|
|
var users = await user.GetQueryableAsync();
|
|
|
|
List<User> Users = new List<User>();
|
|
foreach (var item in data.ToList())
|
|
{
|
|
if (item.Leader.HasValue && item.Leader > 0)
|
|
{
|
|
var User = users.FirstOrDefault(x=>x.Id == item.Leader);
|
|
|
|
Users.AddRangeIf(res=>User is not null , User);
|
|
}
|
|
}
|
|
PageOutput<OrganizationAllOut> pageOutput = new PageOutput<OrganizationAllOut>();
|
|
List<OrganizationAllOut> organizationAllOuts = new List<OrganizationAllOut>();
|
|
if (!string.IsNullOrWhiteSpace(input.Name))
|
|
data = data.Where(x => x.Name.Contains(input.Name));
|
|
foreach (var organization in data)
|
|
{
|
|
OrganizationAllOut organizationAllOut = new OrganizationAllOut();
|
|
organizationAllOut.Code = organization.Code;
|
|
organizationAllOut.Remark = organization.Description;
|
|
organizationAllOut.Name = organization.Name;
|
|
organizationAllOut.Sort = organization.Order;
|
|
organizationAllOut.parentId = organization.Pid;
|
|
organizationAllOut.Status = organization.Status;
|
|
organizationAllOut.Type = organization.Type;
|
|
organizationAllOut.Id = organization.Id;
|
|
|
|
if (organization.Leader is not null && Users.Any())
|
|
{
|
|
var user = Users.Where(x => x.Id == organization.Leader).FirstOrDefault();
|
|
organizationAllOut.LeaderId = user == null ? -1 : user.Id;
|
|
organizationAllOut.Leader = user == null ? "" : user.NickName;
|
|
}
|
|
|
|
|
|
|
|
|
|
organizationAllOuts.Add(organizationAllOut);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(input.Leader))
|
|
organizationAllOuts = organizationAllOuts.Where(x => x.Leader.Contains(input.Leader)).ToList();
|
|
pageOutput.Total = await organizationRepository.CountAsync();
|
|
pageOutput.Data = organizationAllOuts.OrderByDescending(x=>x.Sort);
|
|
|
|
return pageOutput;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 树形组织
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<List<Organization>> GetAllOrganizationApp()
|
|
{
|
|
var OrganizationList = await organizationRepository.GetListAsync();
|
|
if (OrganizationList.Any() && OrganizationList.Count > 0)
|
|
{
|
|
OrganizationTool organizationTool = new OrganizationTool();
|
|
List<Organization> list = new List<Organization>();
|
|
list = OrganizationList.Where(x => x.Pid == 0).ToList();
|
|
foreach (var organization in list)
|
|
organization.Children = organizationTool.GetOrganizationList(organization.Id, OrganizationList);
|
|
return list;
|
|
|
|
}else
|
|
throw Oops.Oh("查询数据失败.");
|
|
}
|
|
/// <summary>
|
|
/// 名字模糊查询
|
|
/// </summary>
|
|
/// <param name="organizationQueryDto"></param>
|
|
/// <returns></returns>
|
|
public async Task<List<Organization>> GetFuzzyQueryOrganization(OrganizationQueryDto organizationQueryDto)
|
|
{
|
|
return await organizationRepository.GetListAsync(x=>x.Name.Contains(organizationQueryDto.Name));
|
|
}
|
|
[HttpPost]
|
|
public async Task Delete(OrganizationDeleteDto organizationDeleteDto)
|
|
{
|
|
foreach (var id in organizationDeleteDto.Ids)
|
|
{
|
|
var organization =await organizationRepository.FirstOrDefaultAsync(x => x.Id == id);
|
|
await organizationRepository.DeleteAsync(organization);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取部门列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<PageOutput<DepartmentInfoDto>> GetDepartmentList(GetDepartmentInput input)
|
|
{
|
|
var paged = await organizationRepository.GetPagedListAsync(input.SkipCount, input.PageSize, nameof(Organization.Order));
|
|
return new PageOutput<DepartmentInfoDto>()
|
|
{
|
|
PageSize = input.PageSize,
|
|
PageIndex = input.Page,
|
|
Total = paged.Count,
|
|
Data = ObjectMapper.Map(paged, new List<DepartmentInfoDto>())
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改部门信息或状态
|
|
/// </summary>
|
|
/// <param name="organizationUpdateDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task Update(OrganizationUpdateDto organizationUpdateDto)
|
|
{
|
|
var organization = await organizationRepository.FirstOrDefaultAsync(x => x.Id == organizationUpdateDto.Id);
|
|
|
|
if (!string.IsNullOrWhiteSpace(organizationUpdateDto.Name))
|
|
organization.Name = organizationUpdateDto.Name;
|
|
if (!string.IsNullOrWhiteSpace(organizationUpdateDto.Remark))
|
|
organization.Description = organizationUpdateDto.Remark;
|
|
if (organizationUpdateDto.LeaderId > 0)
|
|
organization.Leader = organizationUpdateDto.LeaderId;
|
|
if (organizationUpdateDto.ParentId > 0)
|
|
organization.Pid = organizationUpdateDto.ParentId;
|
|
if (organizationUpdateDto.Sort > 0)
|
|
organization.Order = organizationUpdateDto.Sort;
|
|
organization.Status = organizationUpdateDto.Status;
|
|
organization.Type =(OrganizationType)organizationUpdateDto.Type;
|
|
await organizationRepository.UpdateAsync(organization);
|
|
}
|
|
}
|
|
}
|