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); } } } }