From fba665e8a67fcec20a6bbb2722efbee0e33dc6ad Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 21 四月 2026 00:34:57 +0800
Subject: [PATCH] fix(StockInfoController): MES凭证改为动态获取
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs | 148 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 115 insertions(+), 33 deletions(-)
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs
index 2ac74fe..c8a798c 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs
@@ -1,11 +1,16 @@
+using Microsoft.AspNetCore.Http.HttpResults;
+using Newtonsoft.Json;
+using System.Diagnostics;
using WIDESEA_Common.Constants;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
+using WIDESEA_Core.Helper;
using WIDESEA_DTO.MES;
using WIDESEA_DTO.Task;
+using WIDESEA_IBasicService;
using WIDESEA_Model.Models;
namespace WIDESEA_TaskInfoService
@@ -117,6 +122,7 @@
/// </summary>
public async Task<WebResponseContent> InboundFinishTaskAsync(CreateTaskDto taskDto)
{
+ var stopwatch = Stopwatch.StartNew();
try
{
var task = await BaseDal.QueryFirstAsync(s => s.PalletCode == taskDto.PalletCode);
@@ -126,45 +132,121 @@
if (location == null) return WebResponseContent.Instance.Error("鏈壘鍒板搴旂殑璐т綅");
var stockInfo = await _stockInfoService.GetStockInfoAsync(taskDto.PalletCode);
- if (stockInfo == null) return WebResponseContent.Instance.Error("鏈壘鍒板搴斿簱瀛樹俊鎭�");
-
- // 鍒ゆ柇鏄笉鏄瀬鍗峰簱浠诲姟
- if (taskDto.WarehouseId == (int)WarehouseEnum.FJ1 || taskDto.WarehouseId == (int)WarehouseEnum.ZJ1)
+ if (stockInfo == null)
{
- return await CompleteAgvInboundTaskAsync(taskDto);
+ return await _unitOfWorkManage.BeginTranAsync(async () =>
+ {
+ stockInfo = new Dt_StockInfo
+ {
+ PalletCode = taskDto.PalletCode,
+ WarehouseId = task.WarehouseId,
+ StockStatus = StockStatusEmun.绌烘墭鐩樺簱瀛�.GetHashCode(),
+ Creater = StockConstants.SYSTEM_USER,
+ Details = null,
+ LocationCode = location.LocationCode,
+ LocationId = location.Id
+ };
+ var updateLocationResult = await _locationInfoService.UpdateLocationInfoAsync(location);
+ var updateStockResult = await _stockInfoService.Repository.AddDataAsync(stockInfo);
+ return await CompleteTaskAsync(task, "鍏ュ簱瀹屾垚");
+ });
}
-
- return await _unitOfWorkManage.BeginTranAsync(async () =>
+ else
{
- WebResponseContent content = new WebResponseContent();
- stockInfo.LocationCode = location.LocationCode;
- stockInfo.LocationId = location.Id;
- SetOutboundDateByRoadway(task, stockInfo);
- stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.GetHashCode();
+ // 鍒ゆ柇鏄笉鏄瀬鍗峰簱浠诲姟
+ if (taskDto.WarehouseId == (int)WarehouseEnum.FJ1 || taskDto.WarehouseId == (int)WarehouseEnum.ZJ1)
+ {
+ return await CompleteAgvInboundTaskAsync(taskDto);
+ }
- location.LocationStatus = LocationStatusEnum.InStock.GetHashCode();
+ return await _unitOfWorkManage.BeginTranAsync(async () =>
+ {
+ WebResponseContent content = new WebResponseContent();
+ stockInfo.LocationCode = location.LocationCode;
+ stockInfo.LocationId = location.Id;
- var updateLocationResult = await _locationInfoService.UpdateLocationInfoAsync(location);
- var updateStockResult = await _stockInfoService.UpdateStockAsync(stockInfo);
- if (!updateLocationResult || !updateStockResult)
- return WebResponseContent.Instance.Error("浠诲姟瀹屾垚澶辫触");
- // 璋冪敤MES鎵樼洏杩涚珯
- //var inboundRequest = new InboundInContainerRequest
- //{
- // EquipmentCode = "STK-GROUP-001",
- // ResourceCode = "STK-GROUP-001",
- // LocalTime = DateTime.Now,
- // ContainerCode = taskDto.PalletCode
- //};
- //var inboundResult = _mesService.InboundInContainer(inboundRequest);
- //if (inboundResult == null || inboundResult.Data == null || !inboundResult.Data.IsSuccess)
- //{
- // return content.Error($"浠诲姟瀹屾垚澶辫触锛歁ES杩涚珯澶辫触: {inboundResult?.Data?.Msg ?? inboundResult?.ErrorMessage ?? "鏈煡閿欒"}");
- //}
- return await CompleteTaskAsync(task, "鍏ュ簱瀹屾垚");
- });
+ SetOutboundDateByRoadway(task, stockInfo);
+
+ stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.GetHashCode();
+
+ location.LocationStatus = LocationStatusEnum.InStock.GetHashCode();
+
+ var updateLocationResult = await _locationInfoService.UpdateLocationInfoAsync(location);
+ var updateStockResult = await _stockInfoService.UpdateStockAsync(stockInfo);
+ if (!updateLocationResult || !updateStockResult)
+ return WebResponseContent.Instance.Error("浠诲姟瀹屾垚澶辫触");
+
+ // 鏍规嵁搴撳瓨Remark閫夋嫨闈欑疆璁惧锛屾煡MES鍔ㄦ�佸嚟璇�
+ string deviceName = stockInfo.Remark == "GW_1" ? "楂樻俯闈欑疆1"
+ : stockInfo.Remark == "GW_2" ? "楂樻俯闈欑疆2"
+ : "甯告俯闈欑疆1";
+ var mesConfig = _mesDeviceConfigService.GetByDeviceName(deviceName);
+ string equipmentCode = mesConfig?.EquipmentCode ?? StockConstants.MES_EQUIPMENT_CODE;
+ string resourceCode = mesConfig?.ResourceCode ?? StockConstants.MES_RESOURCE_CODE;
+ string token = mesConfig?.Token;
+
+ // 寮傛璋冪敤MES鎵樼洏杩涚珯锛屼笉闃诲涓婚�昏緫
+ var palletCode = taskDto.PalletCode;
+ var localEquipmentCode = equipmentCode;
+ var localResourceCode = resourceCode;
+ var localToken = token;
+ _ = Task.Run(async () =>
+ {
+ var localStopwatch = Stopwatch.StartNew();
+ try
+ {
+ var inboundRequest = new InboundInContainerRequest
+ {
+ EquipmentCode = localEquipmentCode,
+ ResourceCode = localResourceCode,
+ LocalTime = DateTime.Now,
+ ContainerCode = palletCode
+ };
+ string localRequestJson = inboundRequest.ToJson();
+ var inboundResult = string.IsNullOrWhiteSpace(localToken)
+ ? _mesService.InboundInContainer(inboundRequest)
+ : _mesService.InboundInContainer(inboundRequest, localToken);
+ localStopwatch.Stop();
+
+ bool isSuccess = inboundResult?.Data?.IsSuccess ?? false;
+ int status = isSuccess
+ ? (int)MesUploadStatusEnum.杩涚珯涓婁紶鎴愬姛
+ : (int)MesUploadStatusEnum.杩涚珯涓婁紶澶辫触;
+
+ await _stockInfoService.UpdateMesUploadStatusAsync(palletCode, status);
+
+ await _mesLogService.LogAsync(new MesApiLogDto
+ {
+ PalletCode = palletCode,
+ ApiType = "InboundInContainer",
+ RequestJson = localRequestJson,
+ ResponseJson = JsonConvert.SerializeObject(inboundResult),
+ IsSuccess = isSuccess,
+ ErrorMessage = inboundResult?.Data?.Msg ?? inboundResult?.ErrorMessage ?? "鏈煡閿欒",
+ ElapsedMs = (int)localStopwatch.ElapsedMilliseconds,
+ Creator = "systeam"
+ });
+ }
+ 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 = "systeam"
+ });
+ }
+ });
+ return await CompleteTaskAsync(task, "鍏ュ簱瀹屾垚");
+ });
+ }
}
catch (Exception ex)
{
@@ -208,4 +290,4 @@
#endregion 鍏ュ簱浠诲姟
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3