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.fj; using WMS.BZModels.Dto.FJ.BaseMatinfoDtos; using Mapster; namespace WMS.BZServices.FJ { public class BaseMatinfoService { private readonly Repository _matinforepository; private readonly Repository _billBominfoRepository; public BaseMatinfoService(Repository matinforepository, Repository billBominfoRepository) { _matinforepository = matinforepository; _billBominfoRepository = billBominfoRepository; } 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 IList GetListByBomCode(BaseMatinfoQueryDto baseMatinfoQueryDto) { var matCodelist = _billBominfoRepository.Queryable().Where(o => o.Code == baseMatinfoQueryDto.Code).Select(o=>o.ProMatCode).ToList(); var list = _matinforepository.Queryable().Where(o=> matCodelist.Contains(o.Code)) .ToList().Adapt>(); return list; } public IList GetListByProCode(BaseMatinfoQueryDto baseMatinfoQueryDto) { var matCodelist = _billBominfoRepository.Queryable().Where(o => o.ProCode == baseMatinfoQueryDto.Code).Select(o => o.ProMatCode).ToList(); var list = _matinforepository.Queryable().Where(o => matCodelist.Contains(o.Code)).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 = 1668442390064664576, AddWho = loginUser.UserNo, Code = entity.Code, EditWho = loginUser.UserNo, Name = entity.Name, ShortDesc = entity.ShortDesc, MatGrpId = 0, Description = entity.ShortDesc, Strength = entity.Strength, Plating = entity.Plating, PlatingWeight = entity.PlatingWeight, Linear = entity.Linear, IsHold = entity.IsHold, HoldDuration = entity.HoldDuration }; _matinforepository.Insert(item); } else { entity.EditTime = DateTime.Now; entity.EditWho = loginUser.UserNo; _matinforepository.AsUpdateable(entity).IgnoreColumns(it => it.AddTime).IgnoreColumns(it => it.AddWho).IgnoreColumns(it => it.WarehouseId).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; } } } }