From 6499ace32d8e40ad6b31f5c633d7de762c4ce749 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 17 四月 2026 16:41:28 +0800
Subject: [PATCH] 优化成品出库任务判断是否需要移库逻辑,优化WMS调用容器流动请求接口逻辑
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 insertions(+), 1 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs"
index 19486f1..8582483 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs"
@@ -1,10 +1,15 @@
锘縰sing System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_DTO.RGV.FOURBOT;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_Model.Models;
@@ -12,10 +17,121 @@
{
public class ApiInfoService : ServiceBase<Dt_ApiInfo, IRepository<Dt_ApiInfo>>, IApiInfoService
{
- public ApiInfoService(IRepository<Dt_ApiInfo> BaseDal) : base(BaseDal)
+ private readonly IInterfaceLogService _interfaceLogService;
+ public ApiInfoService(IRepository<Dt_ApiInfo> BaseDal, IInterfaceLogService interfaceLogService) : base(BaseDal)
{
+ _interfaceLogService = interfaceLogService;
}
public IRepository<Dt_ApiInfo> Repository => BaseDal;
+
+ /// <summary>
+ /// Post鎺ュ彛璇锋眰
+ /// </summary>
+ /// <param name="apiCode">鎺ュ彛缂栧彿</param>
+ /// <param name="requestParameters">璇锋眰鍐呭</param>
+ /// <param name="remark">澶囨敞</param>
+ /// <param name="isAdd">鏄惁娣诲姞鏃ュ織</param>
+ /// <returns></returns>
+ public WebResponseContent PostInterfaceRequest(string apiCode, string requestParameters, string remark, bool isAdd = true)
+ {
+ WebResponseContent content = new WebResponseContent();
+ string response = string.Empty;
+ string requestHash = string.Empty;
+ string responseHash = string.Empty;
+ Dt_ApiInfo? apiInfo = null;
+ try
+ {
+ apiInfo = BaseDal.QueryFirst(x => x.ApiCode == apiCode) ?? throw new Exception($"鏈壘鍒皗remark}鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+ response = HttpHelper.Post(apiInfo.ApiAddress, requestParameters);
+ requestHash = ComputeHash(requestParameters);
+ responseHash = ComputeHash(response);
+ if (apiInfo.Remark.Contains("鍥涘悜绌挎杞�"))
+ {
+ FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
+ if (fOURBOTReturn == null) throw new Exception($"{apiInfo.Remark}鍝嶅簲鍐呭杞崲瀹炰綋澶辫触锛�");
+ if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg);
+ content.Data = fOURBOTReturn;
+ }
+ else if (apiInfo.Remark.Contains("鍑箰澹�"))
+ {
+
+ }
+ else if (apiInfo.Remark.Contains("娴峰悍"))
+ {
+
+ }
+ else if (apiInfo.Remark.Contains("WMS"))
+ {
+
+ }
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ finally
+ {
+ if (isAdd && !string.IsNullOrEmpty(response) && apiInfo != null)
+ {
+ #region 鏌ヨ褰撳ぉ鏄惁瀛樺湪鐩稿悓璁板綍
+ var today = DateTime.Now.Date;
+ var existingLog = _interfaceLogService.Repository.QueryFirst(x =>
+ x.ApiCode == apiCode &&
+ x.RequestParametersHash == requestHash &&
+ x.ResponseParametersHash == responseHash &&
+ x.CreateDate.Date == today);
+ if (existingLog != null)
+ {
+ existingLog.PushFrequency = existingLog.PushFrequency + 1;
+ existingLog.PushState = content.Status ? 1 : 2;
+ existingLog.ResponseParameters = response;
+ existingLog.Remark = content.Status ? remark : content.Message;
+ existingLog.Modifier = App.User?.UserName ?? "System";
+ existingLog.ModifyDate = DateTime.Now;
+ _interfaceLogService.Repository.UpdateData(existingLog);
+ }
+ #endregion
+ else
+ {
+ Dt_InterfaceLog interfaceLog = new Dt_InterfaceLog()
+ {
+ ApiCode = apiCode,
+ RequestParameters = requestParameters,
+ ApiAddress = apiInfo.ApiAddress,
+ ApiName = apiInfo.ApiName,
+ RequestParametersHash = requestHash,
+ ResponseParametersHash = responseHash,
+ PushFrequency = 1,
+ PushState = content.Status ? 1 : 2,
+ Requestor = "WCS",
+ Recipient = apiInfo.Remark,
+ ResponseParameters = response,
+ Creater = "System",
+ Remark = content.Status ? remark : content.Message,
+ };
+ _interfaceLogService.Repository.AddData(interfaceLog);
+ }
+ }
+ }
+ return content;
+ }
+
+ /// <summary>
+ /// 璁$畻瀛楃涓茬殑SHA256鍝堝笇鍊�
+ /// </summary>
+ private static string ComputeHash(string input)
+ {
+ if (string.IsNullOrEmpty(input))
+ return string.Empty;
+
+ using (SHA256 sha256 = SHA256.Create())
+ {
+ byte[] bytes = Encoding.UTF8.GetBytes(input);
+ byte[] hashBytes = sha256.ComputeHash(bytes);
+ return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
+ }
+ }
}
}
--
Gitblit v1.9.3