pan
2025-11-19 6cf884fcafe6fa25e0a0eef35014bd7766d30bb6
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ESSController.cs
@@ -43,15 +43,11 @@
        public async Task<IActionResult> ContainerArrivalReport([FromBody] ContainerArrivalRequest request)
        {
            //这里要判断出库的时候,料箱会到扫码处。也会请求这个接口。
            _logger.LogInformation(" ESSController  ContainerArrivalReport : CallId={CallId},ContainerCode={ContainerCode},SlotCode={SlotCode}", request.CallId, request.ContainerCode, request.SlotCode);
            var response = new ApiResponse<ContainerArrivalResponseData>
            {
                Code = 0,
                Msg = "",
                Data = new ContainerArrivalResponseData
                {
                    direction = "100" // ç¤ºä¾‹å€¼ï¼šå¯æ ¹æ®å®žé™…情况返回方向或其他信息
                }
                Code = 1
            };
            // ç”Ÿæˆè¯·æ±‚的唯一标识(基于callId + æ—¶é—´æˆ³ï¼‰
@@ -62,51 +58,57 @@
            {
                _logger.LogWarning("检测到重复请求,已忽略: CallId={CallId}", request.CallId);
                response.Code = 1;
                response.Msg = "error";
                response.Data.direction = "0";
                return Ok(response);
                response.Msg = null;
                response.Data = null;
                return Ok(response);
            }
            await _semaphore.WaitAsync();
            try
            {
            {
                if (_memoryCache.TryGetValue(requestKey, out bool _))
                {
                    _logger.LogWarning("双重检查检测到重复请求,已忽略: CallId={CallId}", request.CallId);
                    response.Code = 1;
                    response.Msg = "error";
                    response.Data.direction = "0";
                    response.Msg = null;
                    response.Data = null;
                    return Ok(response);
                }
                var result = await _taskService.RequestInboundTask(request.ContainerCode, request.SlotCode);
                WebResponseContent result = await _taskService.RequestInboundTask(request.ContainerCode, request.SlotCode);
                var cacheOptions = new MemoryCacheEntryOptions
                {
                    AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(1)
                    AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(20)
                };
                _memoryCache.Set(requestKey, true, cacheOptions);
                if (result.Status)
                response = new ApiResponse<ContainerArrivalResponseData>
                {
                    response = new ApiResponse<ContainerArrivalResponseData>
                    Code = 0,
                    Msg = "",
                    Data = new ContainerArrivalResponseData
                    {
                        Code = 0,
                        Msg = "",
                        Data = new ContainerArrivalResponseData
                        {
                            direction = "100"
                        }
                    };
                        direction = "100"
                    }
                };
                if (result != null && result.Message != null && result.Message.Contains("该托盘已生成任务"))
                {
                    return Ok(response);
                }
                if (result.Status)
                {
                    return Ok(response);
                }
                else
                {
                    response.Code = 1;
                    response.Msg = "error";
                    response.Data.direction = "0";
                    response.Msg = null;
                    response.Data = null;
                    _logger.LogError(" ESSController  ContainerArrivalReport  Error: Message={Message}", result.Message);
                    return Ok(response);
                }
                }
            }
            catch (Exception ex)
            {