using Org.BouncyCastle.Crypto; using SqlSugar; using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.LocationEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.Enums; using WIDESEA_DTO.Stock; using WIDESEA_IBasicRepository; using WIDESEA_IStockRepository; using WIDESEA_Model.Models; namespace WIDESEA_StockRepository { public class StockInfoRepository : RepositoryBase, IStockInfoRepository { public StockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) { } public List GetAllStockViews() { ISugarQueryable sugarQueryable = Db.Queryable(); ISugarQueryable sugarQueryable1 = Db.Queryable(); return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => new StockViewDTO { LocationCode = b.LocationCode, Column = a.Column, CreateDate = b.CreateDate, Creater = b.Creater, Depth = a.Depth, EnalbeStatus = a.EnableStatus, Layer = a.Layer, LocationName = a.LocationName, LocationStatus = a.LocationStatus, LocationType = a.LocationType, Modifier = b.Modifier, ModifyDate = b.ModifyDate, PalletCode = b.PalletCode, StockRemark = b.Remark, RoadwayNo = a.RoadwayNo, Row = a.Row, StockId = b.Id, StockStatus = b.StockStatus, Details = b.Details, }).Includes(x => x.Details).ToList(); } public Dt_StockInfo GetStockInfo(string palletCode) { return Db.Queryable().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); } public List GetStockInfos(string materielCode) { return Db.Queryable().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList(); //ISugarQueryable sugarQueryable = Db.Queryable(); //ISugarQueryable sugarQueryable1 = Db.Queryable().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)); //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).Includes(x => x.Details).ToList(); } public List GetStockInfos(string materielCode, string lotNo, List locationCodes) { if (!string.IsNullOrEmpty(lotNo)) { return Db.Queryable().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.OrderBy(x=>x.EffectiveDate).Any(v => v.MaterielCode == materielCode && v.BatchNo == lotNo)).ToList(); } else { return Db.Queryable().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList(); } //ISugarQueryable sugarQueryable = Db.Queryable().Where(x => locationCodes.Contains(x.LocationCode)); //ISugarQueryable sugarQueryable1 = Db.Queryable().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)); //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).OrderBy(a => a.CreateDate).Includes(a => a.Details).ToList(); } public List GetStockInfosByIds(List ids) { return Db.Queryable().Where(x => ids.Contains(x.Id)).Includes(x => x.Details).ToList(); } public List GetStockInfosByPalletCodes(List palletCodes) { return Db.Queryable().Where(x => palletCodes.Contains(x.PalletCode)).Includes(x => x.Details).ToList(); } public List GetStockInfosExclude(string materielCode, List palletCodes) { return Db.Queryable().Where(x => !palletCodes.Contains(x.PalletCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList(); } public bool UpdateDataWithDetail(Dt_StockInfo stockInfo) { return Db.UpdateNav(stockInfo).Include(x => x.Details).ExecuteCommand(); } } }