ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.878.3237/CodeChunks.db-shmBinary files differ
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.878.3237/SemanticSymbols.db-shmBinary files differ
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs
@@ -128,6 +128,9 @@ public int? ParentLockId { get; set; } [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æä½è ")] public string Operator { get; set; } [Navigate(NavigateType.OneToOne, nameof(StockInfo))]//ä¸å¯¹ä¸ SchoolIdæ¯StudentAç±»éé¢ç public Dt_StockInfo StockInfo { get; set; } //ä¸è½èµå¼åªè½æ¯null ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs
@@ -57,20 +57,22 @@ // ç¡®å®æ¡ç string targetBarcode; var firstAvailableDetail=new Dt_StockInfoDetail(); if (!string.IsNullOrEmpty(barcode)) { // éªè¯æå®çæ¡ç æ¯å¦åå¨ var specifiedBarcodeDetail = stockDetails.FirstOrDefault(x => x.Barcode == barcode); if (specifiedBarcodeDetail == null) firstAvailableDetail = stockDetails.FirstOrDefault(x => x.Barcode == barcode); if (firstAvailableDetail == null) { throw new Exception($"æå®çæ¡ç [{barcode}]å¨åºåä¸ä¸åå¨"); } targetBarcode = barcode; } else { // 使ç¨ç¬¬ä¸ä¸ªå¯ç¨æ¡ç var firstAvailableDetail = stockDetails firstAvailableDetail = stockDetails .Where(x => x.StockQuantity > x.OutboundQuantity) .OrderBy(x => x.CreateDate) .FirstOrDefault(); @@ -84,12 +86,8 @@ return new Dt_OutStockLockInfo() { lineNo= outboundOrderDetail.lineNo, PalletCode = outStock.PalletCode, AssignQuantity = assignQuantity, MaterielCode = outboundOrderDetail.MaterielCode, BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo, LocationCode = outStock.LocationCode, MaterielName = outboundOrderDetail.MaterielName, OrderDetailId = outboundOrderDetail.Id, @@ -100,15 +98,18 @@ .Sum(x => x.StockQuantity), Status = (int)OutLockStockStatusEnum.å·²åé , StockId = outStock.Id, Unit = outboundOrderDetail.Unit, FactoryArea = outboundOrder.FactoryArea, OrderType=outboundOrder.OrderType, SupplyCode = outboundOrderDetail.SupplyCode, WarehouseCode = outboundOrderDetail.WarehouseCode, SupplyCode = firstAvailableDetail.SupplyCode, WarehouseCode = firstAvailableDetail.WarehouseCode, // æ°å¢å段 CurrentBarcode = targetBarcode, OriginalLockQuantity = assignQuantity, IsSplitted = 0 IsSplitted = 0, MaterielCode = outboundOrderDetail.MaterielCode, BatchNo = firstAvailableDetail.BatchNo, Unit = firstAvailableDetail.Unit, FactoryArea = firstAvailableDetail.FactoryArea, lineNo = firstAvailableDetail.InboundOrderRowNo, }; } ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs
@@ -473,6 +473,7 @@ // 5. æ´æ°åéå®ä¿¡æ¯ lockInfo.AssignQuantity = remainingStockQty; lockInfo.PickedQty = 0; lockInfo.Operator = App.User.UserName; await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); // 6. è®¾ç½®ç»æ @@ -493,6 +494,7 @@ // 2. æ´æ°éå®ä¿¡æ¯ lockInfo.PickedQty += actualQty; lockInfo.Status = (int)OutLockStockStatusEnum.æ£é宿; lockInfo.Operator = App.User.UserName; await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); } @@ -511,6 +513,7 @@ // 2. æ´æ°éå®ä¿¡æ¯ lockInfo.PickedQty += stockOutQty; lockInfo.AssignQuantity = remainingAssignQty; lockInfo.Operator = App.User.UserName; await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); // 3. æ´æ°æå è®°å½ç¶æ @@ -1097,8 +1100,11 @@ private async Task HandlePalletStockGoodsReturn(List<Dt_StockInfoDetail> palletStockGoods) { _logger.LogInformation($"ååºæä½ï¼åç°{palletStockGoods.Count}个åºåæç»éè¦ååºï¼çå¾ AGVæ¬è¿"); foreach (var stockGood in palletStockGoods) { _logger.LogInformation($"å¾ ååºè´§ç© - æ¡ç : {stockGood.Barcode}, æ°é: {stockGood.StockQuantity}, å½åç¶æ: {stockGood.Status}"); // æ¢å¤åºåç¶æ stockGood.OutboundQuantity = 0; stockGood.Status = StockStatusEmun.å ¥åºç¡®è®¤.ObjToInt(); @@ -1121,6 +1127,7 @@ private async Task UpdateStockInfoStatus(Dt_StockInfo stockInfo) { _logger.LogInformation($"ååºæä½ï¼æç{stockInfo.PalletCode}çå¾ AGVååºæ¬è¿"); // æ´æ°åºåä¸»è¡¨ç¶æ stockInfo.StockStatus = StockStatusEmun.å ¥åºç¡®è®¤.ObjToInt(); await _stockInfoService.Db.Updateable(stockInfo).ExecuteCommandAsync(); @@ -1337,7 +1344,7 @@ business_type = outboundOrder.BusinessType, factoryArea = outboundOrder.FactoryArea, operationType = 1, Operator = outboundOrder.Operator, Operator = App.User.UserName, orderNo = outboundOrder.UpperOrderNo, status = outboundOrder.OrderStatus, details = new List<FeedbackOutboundDetailsModel>() @@ -1422,7 +1429,12 @@ CurrentBarcode = newBarcode, OriginalLockQuantity = quantity, IsSplitted = 1, ParentLockId = originalLock.Id ParentLockId = originalLock.Id, Operator= App.User.UserName, FactoryArea=originalLock.FactoryArea, lineNo=originalLock.lineNo, WarehouseCode=originalLock.WarehouseCode, }; var newLockId = await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteReturnIdentityAsync(); ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/SplitPackageService.cs
@@ -134,7 +134,11 @@ CurrentBarcode = newBarcode, OriginalLockQuantity = request.SplitQuantity, IsSplitted = 1, ParentLockId = lockInfo.Id ParentLockId = lockInfo.Id, Operator = App.User.UserName, FactoryArea = lockInfo.FactoryArea, lineNo = lockInfo.lineNo, WarehouseCode = lockInfo.WarehouseCode, }; await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteCommandAsync(); ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -454,7 +454,7 @@ } } public WebResponseContent InPickTaskCompleted(Dt_Task task) public async Task<WebResponseContent> InPickTaskCompleted(Dt_Task task) { _logger.LogInformation($"TaskService InPickTaskCompleted: {task.TaskNum}"); //æ¥åºå @@ -467,7 +467,12 @@ { return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥æçåºåæç»ä¿¡æ¯"); } //æ¥è´§ä½ Dt_LocationInfo locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); if (locationInfo == null) { return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçç»ç¹è´§ä½ä¿¡æ¯"); } // è·åææååºä¸çåºåºéå®è®°å½ var returnLocks = _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>() .Where(it => it.OrderNo == task.OrderNo && it.PalletCode == task.PalletCode && it.Status == (int)OutLockStockStatusEnum.ååºä¸) @@ -479,12 +484,8 @@ } _outStockLockInfoService.Db.Updateable(returnLocks).ExecuteCommand(); //æ¥è´§ä½ Dt_LocationInfo locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); if (locationInfo == null) { return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçç»ç¹è´§ä½ä¿¡æ¯"); } await DeleteZeroQuantityStockDetails(stockInfo.Id); stockInfo.LocationCode = task.TargetAddress; stockInfo.StockStatus = StockStatusEmun.å ¥åºå®æ.ObjToInt(); stockInfo.Details.ForEach(x => @@ -493,6 +494,9 @@ }); _stockService.StockInfoService.Repository.UpdateData(stockInfo); _stockService.StockInfoDetailService.Repository.UpdateData(stockInfo.Details); await ProcessStockDetailsForReturn(task, stockInfo.Id); if (stockInfo.PalletType == PalletTypeEnum.Empty.ObjToInt()) { @@ -511,6 +515,60 @@ return WebResponseContent.Instance.OK(); } /// <summary> /// å é¤åºåæ°ä¸º0çåºåæç»è®°å½ /// </summary> private async Task DeleteZeroQuantityStockDetails(int stockId) { try { // å é¤åºåæ°é为0çè®°å½ var deleteCount = await _stockService.StockInfoDetailService.Db.Deleteable<Dt_StockInfoDetail>() .Where(x => x.StockId == stockId && x.StockQuantity == 0 && (x.Status==StockStatusEmun.åºåºå®æ.ObjToInt()|| x.Status== StockStatusEmun.å ¥åºå®æ.ObjToInt())) // åªå é¤å·²å®æç¶æçé¶åºå .ExecuteCommandAsync(); if (deleteCount > 0) { _logger.LogInformation($"å é¤{deleteCount}æ¡é¶åºåæç»è®°å½ - StockId: {stockId}"); } } catch (Exception ex) { _logger.LogWarning($"å é¤é¶åºåè®°å½å¤±è´¥ - StockId: {stockId}, Error: {ex.Message}"); // 注æï¼å é¤å¤±è´¥ä¸åºè¯¥å½±å主æµç¨ï¼è®°å½æ¥å¿åç»§ç» } } /// <summary> /// å¤çååºç¸å ³çææåºåæç»ç¶æåæ´ /// </summary> private async Task ProcessStockDetailsForReturn(Dt_Task returnTask, int stockId) { // è·å该æç䏿æéè¦ååºçåºåæç» var stockDetails = await _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>() .Where(x => x.StockId == stockId && x.StockQuantity > 0 && ( x.Status == StockStatusEmun.åºåºéå®.ObjToInt()|| x.Status== StockStatusEmun.å ¥åºç¡®è®¤.ObjToInt())) // å æ¬åºåºéå®åå ¥åºç¡®è®¤ç .ToListAsync(); foreach (var detail in stockDetails) { detail.Status = StockStatusEmun.å ¥åºå®æ.ObjToInt(); detail.OutboundQuantity = 0; // æ¸ ç©ºåºåºæ°é _logger.LogInformation($"æ´æ°åºåæç»ç¶æ - æ¡ç : {detail.Barcode}, æ°é: {detail.StockQuantity}"); } if (stockDetails.Any()) { await _stockService.StockInfoDetailService.Db.Updateable(stockDetails).ExecuteCommandAsync(); _logger.LogInformation($"å ±æ´æ°{stockDetails.Count}个åºåæç»ç¶æä¸ºå ¥åºå®æ"); } } public async Task<WebResponseContent> OutEmptyTaskCompleted(Dt_Task task) { WebResponseContent content = new WebResponseContent(); ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -218,6 +218,8 @@ { _outboundOrderService.Repository.UpdateData(outboundOrder); } outboundOrder.Operator = App.User.UserName; _outboundOrderService.Repository.UpdateData(outboundOrder); WebResponseContent content = _outboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); if (!content.Status)