From f4e84a98facb28bbfc63343c81095a9787812e27 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期六, 30 八月 2025 16:25:51 +0800
Subject: [PATCH] 1.PDA分组织

---
 Controllers/BaseController.cs       |   31 +++-------
 Startup.cs                          |    4 +
 service/Wom/WomdaaManager.cs        |    4 
 Properties/launchSettings.json      |   28 ++++----
 Controllers/Wom/WomdaaController.cs |    5 -
 entity/Base/RequestInfo.cs          |   63 +++++++++++++++++++++
 6 files changed, 94 insertions(+), 41 deletions(-)

diff --git a/Controllers/BaseController.cs b/Controllers/BaseController.cs
index 3caae53..52ffce2 100644
--- a/Controllers/BaseController.cs
+++ b/Controllers/BaseController.cs
@@ -1,34 +1,21 @@
 锘縰sing Microsoft.AspNetCore.Mvc;
-using System;
+using Microsoft.Extensions.DependencyInjection;
 
 public class BaseController : ControllerBase
 {
-    protected string OrgId
+    private RequestInfo _requestInfo;
+
+    protected RequestInfo RequestInfo
     {
         get
         {
-            var orgId = GetOrgIdFromHeader();
-            if (string.IsNullOrEmpty(orgId))
+            if (_requestInfo == null)
             {
-                throw new ArgumentException("璇锋眰缁勭粐ID涓嶅瓨鍦紒璇锋鏌ヨ姹傚ご涓槸鍚﹀寘鍚湁鏁堢殑OrgId銆�");
+                //蹇呭~椤�
+                //_requestInfo.ValidateRequired("OrgId");
+                _requestInfo = HttpContext.RequestServices.GetService<RequestInfo>();
             }
-            return orgId;
+            return _requestInfo;
         }
-    }
-
-    private string GetOrgIdFromHeader()
-    {
-        if (HttpContext.Request.Headers.TryGetValue("OrgId", out var orgIdValue))
-        {
-            return orgIdValue.ToString();
-        }
-        return null;
-    }
-
-    // 鍙�夛細鎻愪緵涓�涓畨鍏ㄨ幏鍙朞rgId鐨勬柟娉曪紝涓嶆姏鍑哄紓甯歌�屾槸杩斿洖榛樿鍊兼垨null
-    protected bool TryGetOrgId(out string orgId)
-    {
-        orgId = GetOrgIdFromHeader();
-        return !string.IsNullOrEmpty(orgId);
     }
 }
\ No newline at end of file
diff --git a/Controllers/Wom/WomdaaController.cs b/Controllers/Wom/WomdaaController.cs
index b4dc967..a2d8567 100644
--- a/Controllers/Wom/WomdaaController.cs
+++ b/Controllers/Wom/WomdaaController.cs
@@ -13,7 +13,6 @@
 [Route("api/[controller]")]
 public class WomdaaController : BaseController
 {
-
     private readonly WomdaaManager m = new();
     private readonly MesPrintMangeer _mCf = new();
 
@@ -30,7 +29,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = m.GetProductionPickDaa001(query, OrgId);
+            resultInfos.tbBillList = m.GetProductionPickDaa001(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -58,7 +57,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = m.GetItemsByDaa001(query, OrgId);
+            resultInfos.tbBillList = m.GetItemsByDaa001(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json
index 68716f8..9fbf054 100644
--- a/Properties/launchSettings.json
+++ b/Properties/launchSettings.json
@@ -1,23 +1,14 @@
-锘縶
-  "$schema": "http://json.schemastore.org/launchsettings.json",
-  "iisSettings": {
-    "windowsAuthentication": false,
-    "anonymousAuthentication": true,
-    "iisExpress": {
-      "applicationUrl": "http://localhost:55640",
-      "sslPort": 0
-    }
-  },
+{
   "profiles": {
     "http": {
       "commandName": "Project",
-      "dotnetRunMessages": true,
       "launchBrowser": true,
       "launchUrl": "swagger",
-      "applicationUrl": "http://localhost:5204",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
-      }
+      },
+      "dotnetRunMessages": true,
+      "applicationUrl": "http://localhost:5204"
     },
     "IIS Express": {
       "commandName": "IISExpress",
@@ -27,5 +18,14 @@
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
     }
+  },
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:5204",
+      "sslPort": 0
+    }
   }
-}
+}
\ No newline at end of file
diff --git a/Startup.cs b/Startup.cs
index 7ab10eb..1f040a6 100644
--- a/Startup.cs
+++ b/Startup.cs
@@ -30,6 +30,10 @@
         services.Configure<AppSettings>(
             Configuration.GetSection("AppSettings"));
 
+        // 娣诲姞鏈嶅姟娉ㄥ唽锛岃姹傚ご淇℃伅浼犻�掋��
+        services.AddHttpContextAccessor();
+        services.AddScoped<RequestInfo>();
+
         services.AddSwaggerGen(c =>
         {
             c.SwaggerDoc("v1",
diff --git a/entity/Base/RequestInfo.cs b/entity/Base/RequestInfo.cs
new file mode 100644
index 0000000..08a12ba
--- /dev/null
+++ b/entity/Base/RequestInfo.cs
@@ -0,0 +1,63 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System.Dynamic;
+
+public class RequestInfo : DynamicObject
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+    private readonly ExpandoObject _data = new ExpandoObject();
+
+    public RequestInfo(IHttpContextAccessor httpContextAccessor)
+    {
+        _httpContextAccessor = httpContextAccessor;
+        InitializeData();
+    }
+
+    private void InitializeData()
+    {
+        // 鍒濆鍖栨墍鏈夐渶瑕佺殑璇锋眰澶村弬鏁�
+        SetValue("OrgId", GetHeaderValue("OrgId"));
+        //// 鍙互缁х画娣诲姞鍏朵粬鍙傛暟
+        //SetValue("UserId", GetHeaderValue("UserId"));
+        //SetValue("Language", GetHeaderValue("Language"));
+    }
+
+    public override bool TryGetMember(GetMemberBinder binder, out object result)
+    {
+        string name = binder.Name;
+        return ((IDictionary<string, object>)_data).TryGetValue(name, out result);
+    }
+
+    public override bool TrySetMember(SetMemberBinder binder, object value)
+    {
+        ((IDictionary<string, object>)_data)[binder.Name] = value;
+        return true;
+    }
+
+    public string GetHeaderValue(string key)
+    {
+        var httpContext = _httpContextAccessor.HttpContext;
+        if (httpContext?.Request.Headers.TryGetValue(key, out var value) == true)
+        {
+            return value.ToString();
+        }
+        return null;
+    }
+
+    private void SetValue(string key, object value)
+    {
+        ((IDictionary<string, object>)_data)[key] = value;
+    }
+
+    // 娣诲姞涓�涓柟娉曟潵妫�鏌ュ繀闇�鍙傛暟鏄惁瀛樺湪
+    public void ValidateRequired(params string[] requiredFields)
+    {
+        foreach (var field in requiredFields)
+        {
+            if (!((IDictionary<string, object>)_data).ContainsKey(field) ||
+                ((IDictionary<string, object>)_data)[field] == null)
+            {
+                throw new ArgumentException($"璇锋眰澶翠腑缂哄皯蹇呴渶鐨� {field} 鍙傛暟");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/service/Wom/WomdaaManager.cs b/service/Wom/WomdaaManager.cs
index cff4625..5d43f56 100644
--- a/service/Wom/WomdaaManager.cs
+++ b/service/Wom/WomdaaManager.cs
@@ -17,7 +17,7 @@
     //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 WomdaaManager.cs
 
     //鑾峰彇宸ュ崟鍙�
-    public List<string> GetProductionPickDaa001(WarehouseQuery query,string orgId)
+    public List<string> GetProductionPickDaa001(WarehouseQuery query, dynamic requestInfo)
     {
         var sql =
             "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB  WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " +
@@ -28,7 +28,7 @@
     }
 
     //鏍规嵁宸ュ崟鍙疯繑鍥炰骇鍝佸瀷鍙峰拰寰呴鐗╂枡
-    public ProductionPickDto GetItemsByDaa001(WarehouseQuery query,string OrgId)
+    public ProductionPickDto GetItemsByDaa001(WarehouseQuery query, dynamic requestInfo)
     {
         return getDaa001(query);
     }

--
Gitblit v1.9.3