using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using WMS.BZModels; using WMS.Info; using WMS.BZSqlSugar; using wms.sqlsugar.model.sx; using WMS.BZModels.Dto.SX.BaseMatinfoDtos; using Mapster; namespace WMS.BZServices.SX { public class BaseMatinfoService { private readonly Repository _matinforepository; public BaseMatinfoService(Repository matinforepository) { _matinforepository = matinforepository; } public PagedInfo GetPageList(Pagination pagination, BaseMatinfoQueryDto basematinfoQueryDto) { var list = GetQueryable(basematinfoQueryDto) .ToPage(pagination); return list; } private ISugarQueryable GetQueryable(BaseMatinfoQueryDto basematinfoQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(basematinfoQueryDto?.KeyWord), m => m.Code.Contains(basematinfoQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(basematinfoQueryDto?.Code), m => m.Code.Contains(basematinfoQueryDto.Code)); predicate = predicate.AndIF(!string.IsNullOrEmpty(basematinfoQueryDto?.Name), m => m.Name.Contains(basematinfoQueryDto.Name)); predicate = predicate.AndIF(basematinfoQueryDto?.HoldDuration > 0, m => m.HoldDuration == basematinfoQueryDto.HoldDuration); predicate = predicate.AndIF(!string.IsNullOrEmpty(basematinfoQueryDto?.SpoolType), m => m.SpoolType.Contains(basematinfoQueryDto.SpoolType)); predicate = predicate.AndIF(!string.IsNullOrEmpty(basematinfoQueryDto?.ShortDesc), m => m.ShortDesc.Contains(basematinfoQueryDto.ShortDesc)); var sugarQueryable = _matinforepository.Queryable().Where(predicate.ToExpression()); return sugarQueryable; } public IList GetList(BaseMatinfoQueryDto baseMatinfoQueryDto) { var list = GetQueryable(baseMatinfoQueryDto).ToList().Adapt>(); return list; } public void Save(LoginUserInfo loginUser, string keyValue, BaseMatinfo entity) { try { if (string.IsNullOrWhiteSpace(entity.Code)) { throw new ArgumentException("物料编码不能为空"); } if (keyValue.IsEmpty() || keyValue == "undefined") { var mat = _matinforepository.GetSingle(p => p.Code == entity.Code); if (mat != null) { throw new ArgumentException("物料编码已存在"); } BaseMatinfo item = new BaseMatinfo() { WarehouseId = 1710853201663758336, AddWho = loginUser.UserNo, Code = entity.Code, EditWho = loginUser.UserNo, Name = entity.Name, ShortDesc = entity.ShortDesc, SpoolType = entity.SpoolType, SpoolCode = entity.SpoolCode, MatGrpId = 0, Description = entity.ShortDesc, Strength = entity.Strength, Plating = entity.Plating, PlatingWeight = entity.PlatingWeight, Linear = entity.Linear, IsHold = entity.IsHold, HoldDuration = entity.HoldDuration, Diameter = entity.Diameter }; if (entity.SpoolCode == "BS60") { entity.SpoolType = "BS60工字轮"; } else if (entity.SpoolCode == "BS40") { entity.SpoolType = "BS40工字轮"; } else { entity.SpoolType = "BS80/33工字轮"; } _matinforepository.Insert(item); } else { entity.WarehouseId = 1710853201663758336; entity.SpoolType = entity.SpoolType; entity.SpoolCode = entity.SpoolCode; entity.IsHold = entity.HoldDuration > 0 ? true : false; entity.HoldDuration = entity.HoldDuration; entity.Diameter = entity.Diameter; entity.Description = entity.ShortDesc; entity.EditTime = DateTime.Now; entity.EditWho = loginUser.UserNo; if (entity.SpoolCode == "BS60") { entity.SpoolType = "BS60工字轮"; } else if (entity.SpoolCode == "BS40") { entity.SpoolType = "BS40工字轮"; } else { entity.SpoolType = "BS80/33工字轮"; } _matinforepository.AsUpdateable(entity).IgnoreColumns(it => it.AddTime).IgnoreColumns(it => it.AddWho).Where(it => it.Code == keyValue).ExecuteCommand(); } } catch (Exception ex) { throw ex; } } public void Delete(string ModuleNo) { try { _matinforepository.Deleteable().Where(it => it.Code == ModuleNo).ExecuteCommand(); } catch (Exception ex) { throw ex; } } } }