using AutoMapper;
|
using Model.ModelDto.SysDto;
|
using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WMS.Entity.SysEntity;
|
using WMS.IBLL.ISysServer;
|
using WMS.IDAL.ISysInterface;
|
using SqlSugar;
|
using WMS.Entity.Context;
|
using Utility;
|
using Microsoft.AspNetCore.Identity;
|
using System.Data;
|
|
namespace WMS.BLL.SysServer
|
{
|
/// <summary>
|
/// 部门服务实践
|
/// </summary>
|
public class DepartmentServer : IDepartmentServer
|
{
|
/// <summary>
|
/// 依赖注入
|
/// </summary>
|
private readonly IDepartmentRepository _department;
|
readonly IMapper _mapper;
|
private static readonly SqlSugarScope Db = DataContext.Db;
|
private readonly UserManager _userManager;
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="server">部门仓储接口</param>
|
/// <param name="mapper">automapper</param>
|
public DepartmentServer(IDepartmentRepository department, IMapper mapper, UserManager userManager)
|
{
|
_department = department;//部门
|
_mapper = mapper;//automapper
|
_userManager = userManager;
|
}
|
|
/// <summary>
|
/// 获取部门信息列表
|
/// </summary>
|
/// <param name="DepartmentName">部门名称</param>
|
/// <param name="DepartmentNo">部门号</param>
|
/// <returns></returns>
|
public async Task<List<DepartmentDto>> GetDepartmentList(string DepartmentName, string DepartmentNo)
|
{
|
return await Db.Queryable<SysDepartment>()
|
.LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
|
.WhereIF(!string.IsNullOrEmpty(DepartmentNo), a => a.DepartmentNo.Contains(DepartmentNo))
|
.WhereIF(!string.IsNullOrEmpty(DepartmentName), a => a.DepartmentName.Contains(DepartmentName))
|
.Where(a => a.IsDel == "0")
|
.Select<DepartmentDto>((a, b) => new DepartmentDto() { CreateUserName = b.RealName }, true)
|
.ToListAsync();
|
}
|
|
/// <summary>
|
/// 根据id获取部门信息
|
/// </summary>
|
/// <param name="id">部门id</param>
|
/// <returns></returns>
|
public async Task<SysDepartment> GetDepartmentById(int id)
|
{
|
return await Db.Queryable<SysDepartment>().FirstAsync(s => s.Id == id);
|
}
|
|
/// <summary>
|
/// 根据部门号获取部门信息
|
/// </summary>
|
/// <returns></returns>
|
public async Task<int> GetDepartmentByNo(string DepartmentNo)
|
{
|
return await Db.Queryable<SysDepartment>().CountAsync(s => s.DepartmentNo == DepartmentNo && s.IsDel == "0");
|
}
|
|
/// <summary>
|
/// 新增部门信息
|
/// </summary>
|
/// <param name="departmentdto">部门dto</param>
|
/// <returns></returns>
|
/// <exception cref="Exception">捕获异常</exception>
|
public async Task<int> AddDepartment(DepartmentDto departmentdto)
|
{
|
//模型映射
|
SysDepartment department = _mapper.Map<SysDepartment>(departmentdto);
|
//判断部门号是否唯一
|
int count = await GetDepartmentByNo(department.DepartmentNo);
|
if (count > 0)
|
{
|
throw Oops.Bah("部门号必须唯一");
|
}
|
department.CreateTime = DateTime.Now;
|
department.CreateUser = _userManager.UserId;
|
return await Db.Insertable(department).ExecuteCommandAsync();
|
|
}
|
|
/// <summary>
|
/// 删除部门信息
|
/// </summary>
|
/// <param name="department">部门实体模型</param>
|
/// <returns></returns>
|
/// <exception cref="Exception">捕获异常</exception>
|
public async Task<int> DelDepartment(SysDepartment department)
|
{
|
return await Db.Updateable<SysDepartment>()
|
.Where(s => s.Id == department.Id)
|
.SetColumns(s => s.IsDel == "1")
|
.SetColumns(s => s.UpdateTime == DateTime.Now)
|
.SetColumns(s => s.UpdateUser == _userManager.UserId)
|
.ExecuteCommandAsync();
|
}
|
|
/// <summary>
|
/// 编辑部门信息
|
/// </summary>
|
/// <param name="departmentdto">部门dto</param>
|
/// <returns></returns>
|
/// <exception cref="Exception">捕获异常</exception>
|
public async Task<int> ExitDepartment(DepartmentDto departmentdto)
|
{
|
SysDepartment department = _mapper.Map<SysDepartment>(departmentdto);
|
int count = await Db.Queryable<SysDepartment>().CountAsync(s => s.DepartmentNo == departmentdto.DepartmentNo && s.Id != departmentdto.Id && s.IsDel == "0");
|
if (count > 0)
|
throw Oops.Bah("部门号必须唯一");
|
department.UpdateUser = _userManager.UserId;
|
department.UpdateTime = DateTime.Now;
|
return await Db.Updateable(department)
|
.UpdateColumns(s => new { s.DepartmentNo, s.DepartmentName, s.Demo, s.UpdateUser, s.UpdateTime })
|
.ExecuteCommandAsync();
|
}
|
}
|
}
|