pan
2025-12-04 f692f869d5fe2e2aee9d3487dbba83e1821b7f6c
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs
@@ -430,9 +430,62 @@
                    return WebResponseContent.Instance.Error("没有需要回传的分拣记录");
                var documentNo = UniqueValueGenerator.Generate();
                var groups = pickingRecords.GroupBy(x => x.FeedBackMesDocumentNo).ToList();
                foreach (var group in groups)
                {
                    List<Dt_PickingRecord> records = group.ToList(); // è¯¥åˆ†ç»„下的所有记录
                    if (string.IsNullOrEmpty(group.Key))
                    {
                        var emptydocumentNo = UniqueValueGenerator.Generate();
                        records.ForEach(x => { x.FeedBackMesDocumentNo = emptydocumentNo; });
                        var result=   await _pickingRecoreRepository.Db.Insertable(records).ExecuteCommandAsync();
                        if (result > 0)
                        {
                            (bool _flowControl, WebResponseContent _value) = await FeedBackBatchToMes(outboundOrder, orderNo, orderDetails, pickingRecords, emptydocumentNo);
                            if (!_flowControl)
                            {
                                return _value;
                            }
                        }
                    }
                    else
                    {
                        (bool _flowControl, WebResponseContent _value) = await FeedBackBatchToMes(outboundOrder, orderNo, orderDetails, pickingRecords, group.Key);
                        if (!_flowControl)
                        {
                            return _value;
                        }
                    }
                }
                //var documentNo = UniqueValueGenerator.Generate();
                //(bool flowControl, WebResponseContent value) = await FeedBackBatchToMes(outboundOrder, orderNo, orderDetails, pickingRecords, documentNo);
                //if (!flowControl)
                //{
                //    return value;
                //}
                // å›žä¼ æˆåŠŸçš„æœ€ç»ˆè¿”å›ž
                response = WebResponseContent.Instance.OK($"回传MES成功,单据号:{orderNo}");
            }
            catch (Exception ex)
            {
                // å…¨å±€å¼‚常捕获:记录详细日志 + è¿”回错误
                string errorMsg = $"处理出库单回传MES时发生异常 - OrderNo: {orderNo}, Error: {ex.Message}, StackTrace: {ex.StackTrace}";
                _logger.LogError(ex, errorMsg); // è®°å½•带异常堆栈的日志
                // å¼‚常返回(给前端的友好提示,隐藏堆栈信息)
                response = WebResponseContent.Instance.Error("处理回传MES时发生异常,请联系管理员");
            }
            return response;
        }
        private async Task<(bool flowControl, WebResponseContent value)> FeedBackBatchToMes(Dt_OutboundOrder outboundOrder, string orderNo, List<Dt_OutboundOrderDetail> orderDetails, List<Dt_PickingRecord> pickingRecords, string documentNo)
        {
                var feedModel = new FeedbackOutboundRequestModel
                {
                    reqCode = Guid.NewGuid().ToString(),
@@ -572,7 +625,7 @@
                        .Where(x => detailIds.Contains(x.Id))
                        .ExecuteCommandAsync();
                    return WebResponseContent.Instance.Error($"回传MES失败");
                return (flowControl: false, value: WebResponseContent.Instance.Error($"回传MES失败"));
                }
                foreach (var record in pickingRecords.Where(x => detailIds.Contains(x.OrderDetailId)).ToList())
                {
@@ -640,20 +693,7 @@
                    }
                }
                // å›žä¼ æˆåŠŸçš„æœ€ç»ˆè¿”å›ž
                response = WebResponseContent.Instance.OK($"回传MES成功,单据号:{documentNo}");
            }
            catch (Exception ex)
            {
                // å…¨å±€å¼‚常捕获:记录详细日志 + è¿”回错误
                string errorMsg = $"处理出库单回传MES时发生异常 - OrderNo: {orderNo}, Error: {ex.Message}, StackTrace: {ex.StackTrace}";
                _logger.LogError(ex, errorMsg); // è®°å½•带异常堆栈的日志
                // å¼‚常返回(给前端的友好提示,隐藏堆栈信息)
                response = WebResponseContent.Instance.Error("处理回传MES时发生异常,请联系管理员");
            }
            return response;
            return (flowControl: true, value: null);
        }
        private async Task<WebResponseContent> HandleOutboundOrderToMESCompletion(Dt_OutboundOrder outboundOrder, string orderNo)