| | |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | // 1. æ¥æ¾åºåºéå®ä¿¡æ¯ |
| | | var lockInfo = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(it => it.OrderNo == orderNo && |
| | | it.Status == (int)OutLockStockStatusEnum.åºåºä¸ && |
| | | it.PalletCode == palletCode && |
| | | it.CurrentBarcode == barcode) |
| | | .FirstAsync(); |
| | | .Where(it => it.OrderNo == orderNo && |
| | | it.Status == (int)OutLockStockStatusEnum.åºåºä¸ && |
| | | it.PalletCode == palletCode && |
| | | it.CurrentBarcode == barcode && |
| | | it.AssignQuantity > it.PickedQty) // å¢å ï¼åªææªå®æåæ£çæè½ç»§ç» |
| | | .FirstAsync(); |
| | | |
| | | if (lockInfo == null) |
| | | { |
| | | lockInfo = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(it => it.CurrentBarcode == barcode && |
| | | it.Status == (int)OutLockStockStatusEnum.åºåºä¸) |
| | | .FirstAsync(); |
| | | .Where(it => it.CurrentBarcode == barcode && |
| | | it.Status == (int)OutLockStockStatusEnum.åºåºä¸ && |
| | | it.AssignQuantity > it.PickedQty) // å¢å ï¼æ£æ¥åæ£è¿åº¦ |
| | | .FirstAsync(); |
| | | |
| | | if (lockInfo == null) |
| | | throw new Exception($"æ¡ç {barcode}ä¸å±äºæç{palletCode}æä¸åå¨å¾
åæ£è®°å½"); |
| | | { |
| | | // æ£æ¥æ¯å¦å·²ç»å®æåæ£ |
| | | var completedLockInfo = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>() |
| | | .Where(it => it.CurrentBarcode == barcode && |
| | | (it.Status == (int)OutLockStockStatusEnum.æ£é宿 || |
| | | it.PickedQty >= it.AssignQuantity)) |
| | | .FirstAsync(); |
| | | |
| | | if (completedLockInfo != null) |
| | | throw new Exception($"æ¡ç {barcode}å·²ç»å®æåæ£ï¼ä¸è½éå¤åæ£"); |
| | | else |
| | | throw new Exception($"æ¡ç {barcode}ä¸å±äºæç{palletCode}æä¸åå¨å¾
åæ£è®°å½"); |
| | | } |
| | | } |
| | | |
| | | if (lockInfo.PalletCode != palletCode) |
| | | throw new Exception($"æ¡ç {barcode}ä¸å±äºæç{palletCode}"); |
| | | |
| | | if (lockInfo.PickedQty >= lockInfo.AssignQuantity) |
| | | { |
| | | throw new Exception($"æ¡ç {barcode}å·²ç»å®æåæ£ï¼ä¸è½éå¤åæ£"); |
| | | } |
| | | |
| | | // æ£æ¥æ£éåå²ï¼é²æ¢éå¤åæ£ |
| | | var existingPicking = await Db.Queryable<Dt_PickingRecord>() |
| | | .Where(x => x.Barcode == barcode && |
| | | x.OrderNo == orderNo && |
| | | x.PalletCode == palletCode && |
| | | x.OutStockLockId == lockInfo.Id) |
| | | .FirstAsync(); |
| | | |
| | | if (existingPicking != null) |
| | | { |
| | | throw new Exception($"æ¡ç {barcode}å·²ç»åæ£è¿ï¼ä¸è½éå¤åæ£"); |
| | | } |
| | | |
| | | |
| | | var outorderdetail = _outboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>().First(x => x.Id == lockInfo.OrderDetailId); |
| | | if (outorderdetail != null && lockInfo.AssignQuantity > outorderdetail.OrderQuantity) |
| | | { |