| | |
| | | OrderDetailId = outboundOrderDetail.Id, |
| | | OrderNo = outboundOrder.OrderNo, |
| | | OrderType = outboundOrder.OrderType, |
| | | |
| | | OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity), |
| | | Status = taskNum == null ? OutLockStockStatusEnum.å·²åé
.ObjToInt() : OutLockStockStatusEnum.åºåºä¸.ObjToInt(), |
| | | StockId = outStock.Id, |
| | |
| | | |
| | | return outStockLockInfo; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建åºåºéå®ä¿¡æ¯ |
| | | /// </summary> |
| | | public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, string barcode = null, int? taskNum = null) |
| | | { |
| | | // è·ååºåæç»ä¸çæ¡ç ä¿¡æ¯ï¼å¦ææªæå®æ¡ç ï¼ä½¿ç¨ç¬¬ä¸ä¸ªå¯ç¨æ¡ç ï¼ |
| | | var stockDetails = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode && x.StockQuantity > x.OutboundQuantity) |
| | | .OrderBy(x => x.ProductionDate).ToList(); |
| | | |
| | | if (!stockDetails.Any()) |
| | | { |
| | | throw new Exception($"æªæ¾å°ç©æ[{outboundOrderDetail.MaterielCode}]çå¯ç¨åºåæç»"); |
| | | } |
| | | |
| | | // ç¡®å®æ¡ç ï¼å¦ææªæå®ï¼ä½¿ç¨ææ©å
¥åºçæ¡ç ï¼ |
| | | var targetBarcode = barcode; |
| | | if (string.IsNullOrEmpty(targetBarcode)) |
| | | { |
| | | targetBarcode = stockDetails.First().Barcode; |
| | | } |
| | | // è·å该æ¡ç çå¯ç¨æ°é |
| | | var barcodeDetail = stockDetails.FirstOrDefault(x => x.Barcode == targetBarcode); |
| | | if (barcodeDetail == null) |
| | | { |
| | | throw new Exception($"æ¡ç [{targetBarcode}]å¨åºåä¸ä¸åå¨"); |
| | | } |
| | | |
| | | return new Dt_OutStockLockInfo() |
| | | { |
| | | PalletCode = outStock.PalletCode, |
| | | AssignQuantity = assignQuantity, |
| | | MaterielCode = outboundOrderDetail.MaterielCode, |
| | | BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo, |
| | | LocationCode = outStock.LocationCode, |
| | | MaterielName = outboundOrderDetail.MaterielName, |
| | | OrderDetailId = outboundOrderDetail.Id, |
| | | OrderNo = outboundOrder.OrderNo, |
| | | OrderQuantity = outboundOrderDetail.OrderQuantity, |
| | | OriginalQuantity = outStock.Details |
| | | .Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode) |
| | | .Sum(x => x.StockQuantity), |
| | | Status = taskNum == null ? (int)OutLockStockStatusEnum.å·²åé
: (int)OutLockStockStatusEnum.åºåºä¸, |
| | | StockId = outStock.Id, |
| | | TaskNum = taskNum, |
| | | Unit = outboundOrderDetail.Unit, |
| | | |
| | | |
| | | // æ°å¢å段èµå¼ |
| | | CurrentBarcode = targetBarcode, // å½ååé
çæ¡ç |
| | | OriginalLockQuantity = assignQuantity, // åå§é宿°é |
| | | IsSplitted = 0 // åå§æªæå
|
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¢åæç»IDè·ååºåºéå®ä¿¡æ¯ |
| | | /// </summary> |
| | | public async Task<List<Dt_OutStockLockInfo>> GetByOrderDetailId(int orderDetailId) |
| | | { |
| | | return await Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(x => x.OrderDetailId == orderDetailId) |
| | | .OrderBy(x => x.Id) |
| | | .ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æçç¼å·è·ååºåºéå®ä¿¡æ¯ |
| | | /// </summary> |
| | | public async Task<List<Dt_OutStockLockInfo>> GetByPalletCode(string palletCode, int? status = null) |
| | | { |
| | | var query = Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(x => x.PalletCode == palletCode); |
| | | |
| | | if (status.HasValue) |
| | | { |
| | | query = query.Where(x => x.Status == status.Value); |
| | | } |
| | | |
| | | return await query.OrderBy(x => x.Id).ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæççéå®ä¿¡æ¯ |
| | | /// </summary> |
| | | public async Task<List<Dt_OutStockLockInfo>> GetPalletLockInfos(string palletCode) |
| | | { |
| | | return await Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(x => x.PalletCode == palletCode && x.Status == (int)OutLockStockStatusEnum.åºåºä¸) |
| | | .ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°åºåºéå®ä¿¡æ¯çæ¡ç ï¼ç¨äºæå
æä½ï¼ |
| | | /// </summary> |
| | | public async Task<WebResponseContent> UpdateLockInfoBarcode(int lockInfoId, string newBarcode) |
| | | { |
| | | try |
| | | { |
| | | var lockInfo = await Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(x => x.Id == lockInfoId) |
| | | .FirstAsync(); |
| | | |
| | | if (lockInfo == null) |
| | | return WebResponseContent.Instance.Error("æªæ¾å°åºåºéå®ä¿¡æ¯"); |
| | | |
| | | // éªè¯æ°æ¡ç æ¯å¦åå¨ |
| | | var stockDetail = await Db.Queryable<Dt_StockInfoDetail>() |
| | | .Where(x => x.Barcode == newBarcode && |
| | | x.StockId == lockInfo.StockId && |
| | | x.MaterielCode == lockInfo.MaterielCode) |
| | | .FirstAsync(); |
| | | |
| | | if (stockDetail == null) |
| | | return WebResponseContent.Instance.Error("æ°æ¡ç å¨åºåä¸ä¸åå¨"); |
| | | |
| | | // æ´æ°æ¡ç åæå
ç¶æ |
| | | lockInfo.CurrentBarcode = newBarcode; |
| | | lockInfo.IsSplitted = 1; |
| | | |
| | | await Db.Updateable(lockInfo).ExecuteCommandAsync(); |
| | | |
| | | return WebResponseContent.Instance.OK("æ´æ°æ¡ç æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æ´æ°æ¡ç 失败: {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |