| | |
| | | using Dm.filter; |
| | | using MailKit.Search; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.Extensions.Logging; |
| | | using SqlSugar; |
| | | using System; |
| | |
| | | }).ToList(); |
| | | feedmodel.details = groupedData; |
| | | |
| | | _invokeMESService.FeedbackOutbound(feedmodel); |
| | | var result = await _invokeMESService.FeedbackOutbound(feedmodel); |
| | | if (result != null && result.code == 200) |
| | | { |
| | | await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>().SetColumns(x => x.ReturnToMESStatus == 1) // 已宿 |
| | | .Where(x => x.OrderId == outboundOrder.Id).ExecuteCommandAsync(); |
| | | await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>() .SetColumns(x => x.ReturnToMESStatus == 1) // 已宿 |
| | | .Where(x => x.OrderNo == orderNo) .ExecuteCommandAsync(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | public async Task<WebResponseContent> ConfirmPicking(string orderNo, string palletCode, string barcode) |
| | | { |
| | | #region "æµè¯æå°" |
| | | // var splitResults=new List<SplitResult>(); |
| | | // splitResults.Add(new SplitResult |
| | | //{ |
| | | // materialCode = "AAAAbbb", |
| | | // supplierCode = "CVBG", |
| | | // quantityTotal = "1234", |
| | | // batchNumber = "WMLOT25111900032", |
| | | // batch = "A234re", |
| | | // factory = "01", |
| | | // date = DateTime.Now.ToString("yyyy-MM-dd"), |
| | | //}); |
| | | |
| | | //splitResults.Add(new SplitResult |
| | | //{ |
| | | // materialCode = "CCDF", |
| | | // supplierCode = "QWCVBG", |
| | | // quantityTotal = "1234", |
| | | // batchNumber = "WMLOT25111900032", |
| | | // batch = "A234re", |
| | | // factory = "01", |
| | | // date = DateTime.Now.ToString("yyyy-MM-dd"), |
| | | //}); |
| | | |
| | | // return WebResponseContent.Instance.OK("æ£é确认æåï¼å·²èªå¨æå
", new { SplitResults = splitResults }); |
| | | #endregion |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | |
| | | decimal stockQuantity = stockDetail.StockQuantity; |
| | | |
| | | List<SplitResult> splitResults = new List<SplitResult>(); |
| | | Dt_OutStockLockInfo finalLockInfo = lockInfo; |
| | | var finalBarcode = barcode; |
| | | var finalStockId = stockDetail.Id; |
| | | |
| | | if (actualQty < stockQuantity) |
| | | { |
| | |
| | | IsSplitted = 1, |
| | | ParentLockId = lockInfo.Id |
| | | }; |
| | | await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteCommandAsync(); |
| | | // æå
¥æ°éå®ä¿¡æ¯å¹¶è·åID |
| | | var newLockId = await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteReturnIdentityAsync(); |
| | | newLockInfo.Id = newLockId; // ç¡®ä¿ID被æ£ç¡®è®¾ç½® |
| | | |
| | | // è®°å½æå
åå²ï¼ç¨äºè¿½è¸ªï¼ |
| | | var splitHistory = new Dt_SplitPackageRecord |
| | |
| | | |
| | | // æ´æ°åéå®ä¿¡æ¯ä¸ºå©ä½åºåæ°é |
| | | lockInfo.AssignQuantity = remainingStockQty; |
| | | lockInfo.PickedQty = 0; |
| | | |
| | | lockInfo.PickedQty = 0; |
| | | |
| | | await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); |
| | | |
| | | splitResults.Add(new SplitResult |
| | | { |
| | | OriginalBarcode = barcode, |
| | | NewBarcode = newBarcode, |
| | | SplitQuantity = actualQty, |
| | | RemainQuantity = remainingStockQty |
| | | }); |
| | | materialCode = lockInfo.MaterielCode, |
| | | supplierCode = lockInfo.SupplyCode, |
| | | quantityTotal = actualQty.ToString("F2"), |
| | | batchNumber = newBarcode, |
| | | batch = lockInfo.BatchNo, |
| | | factory = lockInfo.FactoryArea, |
| | | date = DateTime.Now.ToString("yyyy-MM-dd"), |
| | | |
| | | }); |
| | | splitResults.Add(new SplitResult |
| | | { |
| | | materialCode = lockInfo.MaterielCode, |
| | | supplierCode = lockInfo.SupplyCode, |
| | | quantityTotal = remainingStockQty.ToString("F2"), |
| | | batchNumber = barcode, |
| | | batch = lockInfo.BatchNo, |
| | | factory = lockInfo.FactoryArea, |
| | | date = DateTime.Now.ToString("yyyy-MM-dd"), |
| | | }); |
| | | // æ´æ°æ£éè®°å½ä¸çæ¡ç ä¸ºæ°æ¡ç |
| | | barcode = newBarcode; |
| | | lockInfo = newLockInfo; |
| | | finalLockInfo = newLockInfo; |
| | | finalBarcode = newBarcode; |
| | | finalStockId = stockDetail.Id; // 使ç¨ååºåID |
| | | } |
| | | else if (actualQty == stockQuantity) |
| | | { |
| | |
| | | lockInfo.PickedQty += actualQty; |
| | | lockInfo.Status = (int)OutLockStockStatusEnum.æ£é宿; |
| | | await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); |
| | | finalLockInfo = lockInfo; |
| | | finalBarcode = barcode; |
| | | finalStockId = stockDetail.Id; |
| | | } |
| | | else |
| | | { |
| | |
| | | await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); |
| | | |
| | | var _relatedSplitRecords = await _splitPackageService.Db.Queryable<Dt_SplitPackageRecord>() |
| | | .Where(it => it.OriginalBarcode == barcode || it.NewBarcode == barcode) |
| | | .Where(it => !it.IsReverted) |
| | | .ToListAsync(); |
| | | .Where(it => it.OriginalBarcode == barcode || it.NewBarcode == barcode) |
| | | .Where(it => !it.IsReverted) |
| | | .ToListAsync(); |
| | | |
| | | foreach (var record in _relatedSplitRecords) |
| | | { |
| | | record.Status = (int)SplitPackageStatusEnum.å·²æ£é; |
| | | await _splitPackageService.Db.Updateable(record).ExecuteCommandAsync(); |
| | | } |
| | | finalLockInfo = lockInfo; |
| | | finalBarcode = barcode; |
| | | finalStockId = stockDetail.Id; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>() |
| | | .SetColumns(it => it.PickedQty == it.PickedQty + actualQty) |
| | |
| | | |
| | | // æ¥è¯¢ä»»å¡è¡¨ |
| | | var task = _taskRepository.QueryData(x => x.OrderNo == orderNo && x.PalletCode == palletCode).FirstOrDefault(); |
| | | |
| | | if (finalLockInfo.Id <= 0) |
| | | { |
| | | throw new Exception($"éå®ä¿¡æ¯IDæ æ: {finalLockInfo.Id}ï¼æ æ³è®°å½æ£éåå²"); |
| | | } |
| | | // è®°å½æ£éåå² |
| | | var pickingHistory = new Dt_PickingRecord |
| | | { |
| | | FactoryArea = lockInfo.FactoryArea, |
| | | FactoryArea = finalLockInfo.FactoryArea, |
| | | TaskNo = task?.TaskNum ?? 0, |
| | | LocationCode = task?.SourceAddress ?? "", |
| | | StockId = stockDetail.Id, |
| | | StockId = finalStockId, |
| | | OrderNo = orderNo, |
| | | OrderDetailId = lockInfo.OrderDetailId, |
| | | OrderDetailId = finalLockInfo.OrderDetailId, |
| | | PalletCode = palletCode, |
| | | Barcode = barcode, |
| | | MaterielCode = lockInfo.MaterielCode, |
| | | Barcode = finalBarcode, |
| | | MaterielCode = finalLockInfo.MaterielCode, |
| | | PickQuantity = actualQty, |
| | | PickTime = DateTime.Now, |
| | | Operator = App.User.UserName, |
| | | OutStockLockId = lockInfo.Id |
| | | OutStockLockId = finalLockInfo.Id |
| | | }; |
| | | await Db.Insertable(pickingHistory).ExecuteCommandAsync(); |
| | | |
| | |
| | | return WebResponseContent.Instance.OK("æ£é确认æåï¼å·²èªå¨æå
", new { SplitResults = splitResults }); |
| | | } |
| | | |
| | | return WebResponseContent.Instance.OK("æ£é确认æå"); |
| | | return WebResponseContent.Instance.OK("æ£é确认æå", new { SplitResults = splitResults }); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | |
| | | return WebResponseContent.Instance.Error($"æ£é确认失败ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ååºæä½ |
| | | /// </summary> |
| | |
| | | .Where(it => lockIds.Contains(it.Id)) |
| | | .ExecuteCommandAsync(); |
| | | |
| | | |
| | | |
| | | |
| | | // å¤çåºåè®°å½ |
| | | foreach (var lockInfo in palletLocks) |
| | |
| | | CreateReturnTask(tasks, task, palletCode, newLocation); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | var allSplitRecords = await _splitPackageService.Db.Queryable<Dt_SplitPackageRecord>() |
| | | .Where(it => it.OrderNo == orderNo && it.PalletCode == palletCode && !it.IsReverted) |
| | | .ToListAsync(); |
| | |
| | | private async Task RecordCancelHistory(string orderNo, string palletCode, string barcode, |
| | | decimal cancelQty, int pickingRecordId, string materielCode, string reason) |
| | | { |
| | | |
| | | |
| | | //var cancelHistory = new Dt_PickingCancelRecord |
| | | //{ |
| | | // OrderNo = orderNo, |