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; } /// /// 查询计量单位信息 /// /// 单位编号 /// 单位名称 /// /// /// /// public List GetUnitList(string unitNo, string unitName, int page, int limit, out int count) { try { Expression> item = Expressionable.Create() //创建表达式 .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); } } /// /// 获取单条单位信息 /// /// /// public SysUnit GetUnit(int id) { try { var data = UnitRst.GetOneById(id); return data; } catch (Exception e) { throw new Exception(e.Message); } } /// /// 添加单位信息 /// /// 名称 /// 缩写 /// 操作人 /// 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); } } /// /// 编辑单位信息 /// /// /// 名称 /// 缩写 /// 操作人 /// 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 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); } } } }