|  |  |  | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  | using Microsoft.IdentityModel.Tokens; | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  | using System.Collections.Generic; | 
|---|
|  |  |  | using System.Linq; | 
|---|
|  |  |  | using System.Text; | 
|---|
|  |  |  | using System.Threading.Tasks; | 
|---|
|  |  |  | using WIDESEA_Common.CommonEnum; | 
|---|
|  |  |  | using WIDESEA_Common.StockEnum; | 
|---|
|  |  |  | using WIDESEA_Core.BaseRepository; | 
|---|
|  |  |  | using WIDESEA_Core.Helper; | 
|---|
|  |  |  | using WIDESEA_IBasicRepository; | 
|---|
|  |  |  | using WIDESEA_IStockRepository; | 
|---|
|  |  |  | using WIDESEA_Model.Models; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public class ProStockInfoRepository : RepositoryBase<Dt_ProStockInfo>, IProStockInfoRepository | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public ProStockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) | 
|---|
|  |  |  | private readonly IBasicRepository _basicRepository; | 
|---|
|  |  |  | public ProStockInfoRepository(IUnitOfWorkManage unitOfWorkManage,IBasicRepository basicRepository) : base(unitOfWorkManage) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _basicRepository = basicRepository; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //æ ¹æ®æç»æ°æ®æ¥æ¾å¯ç¨åºååºå | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetProStocks(Dt_ProOutOrderDetail proOutOrderDetail,List<string> locationInfos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_ProStockInfo>? proStockInfos = null; | 
|---|
|  |  |  | bool isCanLot= string.IsNullOrEmpty(proOutOrderDetail.PLot); | 
|---|
|  |  |  | bool isCanDate = string.IsNullOrEmpty(proOutOrderDetail.DateCode); | 
|---|
|  |  |  | bool isCanVer = string.IsNullOrEmpty(proOutOrderDetail.OutSpecifyVer); | 
|---|
|  |  |  | ////夿客æ·åºå
¥è§å | 
|---|
|  |  |  | //Dt_CustomerInfo customerInfo = _basicRepository.CustomerInfoRepository.QueryFirst(x=>x.Code== proOutOrderDetail.Customer); | 
|---|
|  |  |  | //if (customerInfo==null) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    throw new Exception("æªæ¾å°å®¢æ·ä¿¡æ¯"); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //if (customerInfo.OutRule==CustomerOutRuleEnum.SaleOrderRule.ObjToInt()) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode) && x.ProStockAttribute == ProStockAttributeEnum.æå.ObjToInt()) | 
|---|
|  |  |  | //    .Includes(x => x.proStockInfoDetails) | 
|---|
|  |  |  | //    .Where(x => x.proStockInfoDetails | 
|---|
|  |  |  | //    .Any(v => | 
|---|
|  |  |  | //        v.SaleOrder==proOutOrderDetail.SaleOrder | 
|---|
|  |  |  | //        && v.ProductCode == proOutOrderDetail.PCode | 
|---|
|  |  |  | //        && v.ProductVersion == proOutOrderDetail.PVer | 
|---|
|  |  |  | //        && (isCanLot ? isCanLot : v.BagNo == proOutOrderDetail.PLot) | 
|---|
|  |  |  | //        && (isCanDate ? isCanDate : v.DateCode == proOutOrderDetail.DateCode) | 
|---|
|  |  |  | //    )) | 
|---|
|  |  |  | //    .ToList(); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode) && x.ProStockAttribute == ProStockAttributeEnum.æå.ObjToInt()) | 
|---|
|  |  |  | .Includes(x => x.proStockInfoDetails) | 
|---|
|  |  |  | .Where(x => x.proStockInfoDetails | 
|---|
|  |  |  | .Any(v => | 
|---|
|  |  |  | v.ProductCode == proOutOrderDetail.PCode | 
|---|
|  |  |  | && v.ProductVersion.StartsWith(proOutOrderDetail.PVer.Substring(0,1)) | 
|---|
|  |  |  | && (isCanLot ? isCanLot : v.ProductCode == proOutOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : v.DateCode == proOutOrderDetail.DateCode) | 
|---|
|  |  |  | )) | 
|---|
|  |  |  | .ToList(); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | proStockInfos = proStockInfos?.OrderBy(x => x.proStockInfoDetails.FirstOrDefault()?.DateCode).ThenBy(x=>x.CreateDate).ThenBy(x=>x.proStockInfoDetails.Sum(x=>x.StockPcsQty)).ToList(); | 
|---|
|  |  |  | return proStockInfos; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// è·åMESæåºåºå(å°¾æ°ä») | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="mesRworkOutboundOrder"></param> | 
|---|
|  |  |  | /// <param name="locationInfos"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetProStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder, List<string> locationInfos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_ProStockInfo>? proStockInfos = null; | 
|---|
|  |  |  | bool isCanDate = string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode); | 
|---|
|  |  |  | proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode)) | 
|---|
|  |  |  | .Includes(x => x.proStockInfoDetails) | 
|---|
|  |  |  | .Where(x => x.proStockInfoDetails | 
|---|
|  |  |  | .Any(v => v.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | && v.ProductVersion == mesRworkOutboundOrder.ProductVersion | 
|---|
|  |  |  | && (isCanDate ? isCanDate : v.DateCode == mesRworkOutboundOrder.DateCode) | 
|---|
|  |  |  | )) | 
|---|
|  |  |  | .ToList(); | 
|---|
|  |  |  | proStockInfos = proStockInfos.OrderBy(x => x.proStockInfoDetails.FirstOrDefault()?.DateCode).ThenBy(x => x.proStockInfoDetails.Sum(x => x.StockPcsQty)).ToList(); | 
|---|
|  |  |  | return proStockInfos; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// è·åMESæåºåºå(å°¾æ°ä») | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="mesRworkOutboundOrder"></param> | 
|---|
|  |  |  | /// <param name="locationInfos"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetProStocks(Dt_ErpProScrapSheetDetail erpProScrapSheetDetail, List<string> locationInfos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_ProStockInfo>? proStockInfos = null; | 
|---|
|  |  |  | proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode) && x.ProStockAttribute == ProStockAttributeEnum.æå.ObjToInt()) | 
|---|
|  |  |  | .Includes(x => x.proStockInfoDetails) | 
|---|
|  |  |  | .Where(x => x.proStockInfoDetails | 
|---|
|  |  |  | .Any(v => | 
|---|
|  |  |  | v.LotNumber == erpProScrapSheetDetail.ScrapProLotNo | 
|---|
|  |  |  | && v.ProductCode == erpProScrapSheetDetail.ScrapProCode | 
|---|
|  |  |  | && v.ProductVersion == erpProScrapSheetDetail.ScrapProVersion | 
|---|
|  |  |  | )) | 
|---|
|  |  |  | .ToList(); | 
|---|
|  |  |  | proStockInfos = proStockInfos.OrderBy(x => x.proStockInfoDetails.FirstOrDefault()?.DateCode).ThenBy(x => x.proStockInfoDetails.Sum(x => x.StockPcsQty)).ToList(); | 
|---|
|  |  |  | return proStockInfos; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|