From 90ac374a64e47e2bd97ee9245f4cafb50ad5dbbb Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 17 四月 2026 17:31:02 +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