using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Linq.Expressions;
|
using System.Text;
|
using System.Threading.Tasks;
|
using Model.ModelDto.SysDto;
|
using SqlSugar;
|
using WMS.Entity.SysEntity;
|
using WMS.IBLL.ILogServer;
|
using WMS.IBLL.ISysServer;
|
using WMS.IDAL.ISysInterface;
|
|
namespace WMS.BLL.SysServer
|
{
|
public class UnitServer : IUnitServer
|
{
|
public IUnitRepository UnitRst { get; set; }
|
private readonly IOperationSysServer _operation;
|
|
public UnitServer(IUnitRepository unitRst, IOperationSysServer operation)
|
{
|
UnitRst = unitRst;
|
_operation = operation;
|
}
|
|
/// <summary>
|
/// 查询计量单位信息
|
/// </summary>
|
/// <param name="unitNo">单位编号</param>
|
/// <param name="unitName">单位名称</param>
|
/// <param name="page"></param>
|
/// <param name="limit"></param>
|
/// <param name="count"></param>
|
/// <returns></returns>
|
public List<UnitDto> GetUnitList(string unitNo, string unitName, int page, int limit, out int count)
|
{
|
try
|
{
|
Expression<Func<SysUnit, bool>> item = Expressionable.Create<SysUnit>() //创建表达式
|
.AndIF(!string.IsNullOrWhiteSpace(unitNo), it => it.UnitNo.Contains(unitNo.Trim()))
|
.AndIF(!string.IsNullOrWhiteSpace(unitName), it => it.UnitName.Contains(unitName.Trim()))
|
.ToExpression();//注意 这一句 不能少
|
|
|
var data = UnitRst.GetAllByOrderPageAsync(item, limit, page, out int counts)
|
.Includes(x => x.CreateUserInfo)
|
.Includes(x => x.UpdateUserInfo).ToList();
|
count = counts;
|
return data.Select(m => new UnitDto()
|
{
|
Id = m.Id,
|
UnitNo = m.UnitNo,
|
UnitName = m.UnitName,
|
Abbrev = m.Abbrev,
|
CreateTime = m.CreateTime,
|
CreateUserName = m.CreateUserInfo == null ? "" : m.CreateUserInfo.RealName,
|
UpdateTime = m.UpdateTime,
|
UpdateUserName = m.UpdateUserInfo == null ? "" : m.UpdateUserInfo.RealName
|
}).ToList();
|
|
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
/// <summary>
|
/// 获取单条单位信息
|
/// </summary>
|
/// <param name="id"></param>
|
/// <returns></returns>
|
public SysUnit GetUnit(int id)
|
{
|
try
|
{
|
var data = UnitRst.GetOneById(id);
|
return data;
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
/// <summary>
|
/// 添加单位信息
|
/// </summary>
|
/// <param name="unitName">名称</param>
|
/// <param name="abbrev">缩写</param>
|
/// <param name="userId">操作人</param>
|
/// <returns></returns>
|
public bool AddUnit(string unitName, string abbrev, int userId)
|
{
|
try
|
{
|
if (string.IsNullOrEmpty(abbrev))
|
{
|
var date = UnitRst.GetAllWhereAsync(m => m.UnitName == unitName).Count();
|
if (date > 0)
|
{
|
throw new Exception("单位名称重复");
|
}
|
}
|
else
|
{
|
var date = UnitRst.GetAllWhereAsync(m => m.UnitName == unitName || m.Abbrev == abbrev).Count();
|
if (date > 0)
|
{
|
throw new Exception("单位名称或英文缩写重复");
|
}
|
}
|
|
//自动UnitCode处理
|
var unitList = UnitRst.GetAllAsync().OrderByDescending(m => m.UnitNo);
|
var code = "01";
|
if (unitList != null && unitList.Count()>0)
|
{
|
var unitCode = unitList.First().UnitNo;
|
var str = unitCode.Substring(0, 1);
|
var str2 = unitCode.Substring(1, 1);
|
code = str == "0" ? (str2 == "9" ? (int.Parse(str2) + 1).ToString() : "0" + (int.Parse(str2) + 1)) : (int.Parse(unitCode) + 1).ToString();
|
}
|
|
var num = UnitRst.Add(new SysUnit()
|
{
|
UnitNo = code,
|
UnitName = unitName,
|
Abbrev = abbrev,
|
CreateUser = userId
|
});
|
if (num > 0)
|
{
|
_operation.InsertOperation("基础信息", "计量单位", code, "添加", "添加计量单位 单位号:" + code, Convert.ToInt32(userId));
|
}
|
return num > 0;
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
/// <summary>
|
/// 编辑单位信息
|
/// </summary>
|
/// <param name="id"></param>
|
/// <param name="unitName">名称</param>
|
/// <param name="abbrev">缩写</param>
|
/// <param name="userId">操作人</param>
|
/// <returns></returns>
|
public bool EditUnit(int id, string unitName, string abbrev, int userId)
|
{
|
try
|
{
|
if (string.IsNullOrEmpty(abbrev))
|
{
|
var date = UnitRst.GetAllWhereAsync(m => m.Id != id && m.UnitName == unitName).Count();
|
if (date > 0)
|
{
|
throw new Exception("单位名称重复");
|
}
|
}
|
else
|
{
|
var date = UnitRst.GetAllWhereAsync(m => m.Id != id && (m.UnitName == unitName || m.Abbrev == abbrev)).Count();
|
if (date > 0)
|
{
|
throw new Exception("单位名称或英文缩写重复");
|
}
|
}
|
|
//自动UnitCode处理
|
var unit = UnitRst.GetOneById(id);
|
if (unit == null)
|
{
|
throw new Exception("未查询到单位信息");
|
}
|
unit.UnitName = unitName;
|
unit.Abbrev = abbrev;
|
unit.UpdateUser = userId;
|
unit.UpdateTime = DateTime.Now;
|
|
var num = UnitRst.Edit(unit);
|
return num > 0;
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
|
public bool DelUnit(int id, int userId)
|
{
|
try
|
{
|
var unit = UnitRst.GetOneById(id);
|
if (unit == null)
|
{
|
throw new Exception("未查询到单位信息");
|
}
|
int num = UnitRst.Remove(id, userId);
|
if (num > 0)
|
{
|
_operation.InsertOperation("基础信息", "计量单位", unit.UnitNo, "删除", "删除计量单位 单位号:" + unit.UnitNo, Convert.ToInt32(userId));
|
}
|
|
return num > 0;
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
|
public bool DelsUnit(List<int> ids, int userId)
|
{
|
try
|
{
|
var list = UnitRst.GetAllWhereAsync(m => ids.Contains(m.Id)).ToList();
|
if (list.Count > 0)
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
_operation.InsertOperation("基础信息", "计量单位", list[i].UnitNo, "删除", "删除计量单位 单位号:" + list[i].UnitNo, Convert.ToInt32(userId));
|
}
|
}
|
var num = UnitRst.RemoveAll(list, userId);
|
return num > 0;
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
}
|
}
|