From 343d512ed92c75f406c485fa7a247261a13aefb0 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 21 四月 2026 00:18:13 +0800
Subject: [PATCH] refactor(StockInfoController): MES调用改为Task.Run异步执行
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs | 163 ++++++++++++++++++++++++++++++-----------------------
1 files changed, 92 insertions(+), 71 deletions(-)
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs
index ec0c45e..4488b40 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs
@@ -24,16 +24,19 @@
private readonly IMesLogService _mesLogService;
private readonly IMesService _mesService;
private readonly ISys_DictionaryService _sysDictionaryService;
+ private readonly IStockInfoService _stockInfoService;
public StockInfoController(
IStockInfoService service,
IMesLogService mesLogService,
IMesService mesService,
- ISys_DictionaryService sysDictionaryService) : base(service)
+ ISys_DictionaryService sysDictionaryService,
+ IStockInfoService stockInfoService) : base(service)
{
_mesLogService = mesLogService;
_mesService = mesService;
_sysDictionaryService = sysDictionaryService;
+ _stockInfoService = stockInfoService;
}
/// <summary>
@@ -57,7 +60,6 @@
public async Task<WebResponseContent> InboundInContainer([FromBody] InboundInContainerRequestDto dto)
{
var response = new WebResponseContent();
- var stopwatch = Stopwatch.StartNew();
try
{
@@ -91,47 +93,57 @@
};
string requestJson = System.Text.Json.JsonSerializer.Serialize(mesRequest);
+ string palletCode = stockInfo.PalletCode;
- // 5. 璋冪敤MES鎺ュ彛锛堝悓姝ユ柟娉曪級
- var mesResult = _mesService.InboundInContainer(mesRequest);
- stopwatch.Stop();
-
- // 6. 璁板綍鏃ュ織
- await _mesLogService.LogAsync(new MesApiLogDto
+ // 5. 寮傛鎵цMES璋冪敤锛坒ire-and-forget锛�
+ _ = Task.Run(async () =>
{
- ApiType = "InboundInContainer",
- RequestJson = requestJson,
- ResponseJson = System.Text.Json.JsonSerializer.Serialize(mesResult),
- IsSuccess = mesResult.IsSuccess,
- ErrorMessage = mesResult.ErrorMessage,
- ElapsedMs = (int)stopwatch.ElapsedMilliseconds,
- Creator = App.User.UserName
+ var localStopwatch = Stopwatch.StartNew();
+ try
+ {
+ var result = _mesService.InboundInContainer(mesRequest);
+ localStopwatch.Stop();
+
+ bool isSuccess = result?.IsSuccess ?? false;
+ int status = isSuccess
+ ? (int)MesUploadStatusEnum.杩涚珯涓婁紶鎴愬姛
+ : (int)MesUploadStatusEnum.杩涚珯涓婁紶澶辫触;
+
+ await _stockInfoService.UpdateMesUploadStatusAsync(palletCode, status);
+
+ await _mesLogService.LogAsync(new MesApiLogDto
+ {
+ PalletCode = palletCode,
+ ApiType = "InboundInContainer",
+ RequestJson = requestJson,
+ ResponseJson = System.Text.Json.JsonSerializer.Serialize(result),
+ IsSuccess = isSuccess,
+ ErrorMessage = result?.ErrorMessage ?? "鏈煡閿欒",
+ ElapsedMs = (int)localStopwatch.ElapsedMilliseconds,
+ Creator = App.User.UserName
+ });
+ }
+ catch (Exception ex)
+ {
+ localStopwatch.Stop();
+ await _stockInfoService.UpdateMesUploadStatusAsync(palletCode, (int)MesUploadStatusEnum.杩涚珯涓婁紶澶辫触);
+ await _mesLogService.LogAsync(new MesApiLogDto
+ {
+ PalletCode = palletCode,
+ ApiType = "InboundInContainer",
+ IsSuccess = false,
+ ErrorMessage = ex.Message,
+ ElapsedMs = (int)localStopwatch.ElapsedMilliseconds,
+ Creator = App.User.UserName
+ });
+ }
});
- // 7. 杩斿洖缁撴灉
- if (mesResult.IsSuccess)
- {
- return response.OK("鎵樼洏杩涚珯鎴愬姛");
- }
- else
- {
- return response.Error($"MES鎺ュ彛璋冪敤澶辫触: {mesResult.ErrorMessage}");
- }
+ // 6. 绔嬪嵆杩斿洖鎴愬姛
+ return response.OK("鎵樼洏杩涚珯鎴愬姛");
}
catch (System.Exception ex)
{
- stopwatch.Stop();
-
- // 璁板綍閿欒鏃ュ織
- await _mesLogService.LogAsync(new MesApiLogDto
- {
- ApiType = "InboundInContainer",
- IsSuccess = false,
- ErrorMessage = ex.Message,
- ElapsedMs = (int)stopwatch.ElapsedMilliseconds,
- Creator = App.User.UserName
- });
-
return response.Error($"鎵樼洏杩涚珯澶辫触: {ex.Message}");
}
}
@@ -145,7 +157,6 @@
public async Task<WebResponseContent> OutboundInContainer([FromBody] OutboundInContainerRequestDto dto)
{
var response = new WebResponseContent();
- var stopwatch = Stopwatch.StartNew();
try
{
@@ -191,47 +202,57 @@
};
string requestJson = System.Text.Json.JsonSerializer.Serialize(mesRequest);
+ string palletCode = stockInfo.PalletCode;
- // 5. 璋冪敤MES鎺ュ彛锛堝悓姝ユ柟娉曪級
- var mesResult = _mesService.OutboundInContainer(mesRequest);
- stopwatch.Stop();
-
- // 6. 璁板綍鏃ュ織
- await _mesLogService.LogAsync(new MesApiLogDto
+ // 5. 寮傛鎵цMES璋冪敤锛坒ire-and-forget锛�
+ _ = Task.Run(async () =>
{
- ApiType = "OutboundInContainer",
- RequestJson = requestJson,
- ResponseJson = System.Text.Json.JsonSerializer.Serialize(mesResult),
- IsSuccess = mesResult.IsSuccess,
- ErrorMessage = mesResult.ErrorMessage,
- ElapsedMs = (int)stopwatch.ElapsedMilliseconds,
- Creator = App.User.UserName
+ var localStopwatch = Stopwatch.StartNew();
+ try
+ {
+ var result = _mesService.OutboundInContainer(mesRequest);
+ localStopwatch.Stop();
+
+ bool isSuccess = result?.IsSuccess ?? false;
+ int status = isSuccess
+ ? (int)MesUploadStatusEnum.鍑虹珯涓婁紶鎴愬姛
+ : (int)MesUploadStatusEnum.鍑虹珯涓婁紶澶辫触;
+
+ await _stockInfoService.UpdateMesUploadStatusAsync(palletCode, status);
+
+ await _mesLogService.LogAsync(new MesApiLogDto
+ {
+ PalletCode = palletCode,
+ ApiType = "OutboundInContainer",
+ RequestJson = requestJson,
+ ResponseJson = System.Text.Json.JsonSerializer.Serialize(result),
+ IsSuccess = isSuccess,
+ ErrorMessage = result?.ErrorMessage ?? "鏈煡閿欒",
+ ElapsedMs = (int)localStopwatch.ElapsedMilliseconds,
+ Creator = App.User.UserName
+ });
+ }
+ catch (Exception ex)
+ {
+ localStopwatch.Stop();
+ await _stockInfoService.UpdateMesUploadStatusAsync(palletCode, (int)MesUploadStatusEnum.鍑虹珯涓婁紶澶辫触);
+ await _mesLogService.LogAsync(new MesApiLogDto
+ {
+ PalletCode = palletCode,
+ ApiType = "OutboundInContainer",
+ IsSuccess = false,
+ ErrorMessage = ex.Message,
+ ElapsedMs = (int)localStopwatch.ElapsedMilliseconds,
+ Creator = App.User.UserName
+ });
+ }
});
- // 7. 杩斿洖缁撴灉
- if (mesResult.IsSuccess)
- {
- return response.OK("鎵樼洏鍑虹珯鎴愬姛");
- }
- else
- {
- return response.Error($"MES鎺ュ彛璋冪敤澶辫触: {mesResult.ErrorMessage}");
- }
+ // 6. 绔嬪嵆杩斿洖鎴愬姛
+ return response.OK("鎵樼洏鍑虹珯鎴愬姛");
}
catch (System.Exception ex)
{
- stopwatch.Stop();
-
- // 璁板綍閿欒鏃ュ織
- await _mesLogService.LogAsync(new MesApiLogDto
- {
- ApiType = "OutboundInContainer",
- IsSuccess = false,
- ErrorMessage = ex.Message,
- ElapsedMs = (int)stopwatch.ElapsedMilliseconds,
- Creator = App.User.UserName
- });
-
return response.Error($"鎵樼洏鍑虹珯澶辫触: {ex.Message}");
}
}
--
Gitblit v1.9.3