From fb6414b4ee8ba0d65c037536da5d02eff24f60d0 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期一, 22 十二月 2025 09:33:20 +0800
Subject: [PATCH] 11

---
 StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs |  286 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 151 insertions(+), 135 deletions(-)

diff --git a/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs b/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs
index 980a4c7..5db66a8 100644
--- a/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs
@@ -1,168 +1,184 @@
-锘縰sing Masuit.Tools;
-using MES.Service.DB;
+锘縰sing System.Data;
+using System.Globalization;
+using System.Text;
 using MES.Service.Dto.service;
-using MES.Service.Modes;
+using Microsoft.Extensions.Configuration;
 using Newtonsoft.Json;
 using Oracle.ManagedDataAccess.Client;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Microsoft.Extensions.Configuration;
-using System.Net.Http;
-using System.Globalization;
-using System.IO;
 
-namespace MES.Service.service.Warehouse
+namespace MES.Service.service.Warehouse;
+
+#region 鎺ュ彛杩斿洖鏁版嵁缁撴瀯瀹氫箟
+
+public class WhqohResponse
 {
-    #region 鎺ュ彛杩斿洖鏁版嵁缁撴瀯瀹氫箟
-    public class WhqohResponse
-    {
-        public Header Header { get; set; }
-        public List<BodyItem> Body { get; set; }
-    }
+    public Header Header { get; set; }
+    public List<BodyItem> Body { get; set; }
+}
 
-    public class Header
-    {
-        public int Code { get; set; }
-        public bool Success { get; set; }
-        public string Message { get; set; }
-    }
+public class Header
+{
+    public int Code { get; set; }
+    public bool Success { get; set; }
+    public string Message { get; set; }
+}
 
-    public class BodyItem
-    {
-        public string ItemId { get; set; }
-        public List<Detail> Detail { get; set; }
-    }
+public class BodyItem
+{
+    public string ItemId { get; set; }
+    public List<Detail> Detail { get; set; }
+}
 
-    public class Detail
-    {
-        public string WhId { get; set; }
-        public string UomId { get; set; }
-        public string CurrentQuantity { get; set; }
-        public string AvailableQuantity { get; set; }
-        public string Project { get; set; }
-        public string LotCode { get; set; }
-    }
-    #endregion
+public class Detail
+{
+    public string WhId { get; set; }
+    public string UomId { get; set; }
+    public string CurrentQuantity { get; set; }
+    public string AvailableQuantity { get; set; }
+    public string Project { get; set; }
+    public string LotCode { get; set; }
+}
 
-    public class whqohDtoManager
-    {
-        private static IConfiguration configuration = new ConfigurationBuilder()
+#endregion
+
+public class whqohDtoManager
+{
+    private static readonly IConfiguration configuration =
+        new ConfigurationBuilder()
             .SetBasePath(Directory.GetCurrentDirectory())
-            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
+            .AddJsonFile("appsettings.json", true, true)
             .Build();
 
-        // Oracle 鏁版嵁搴撹繛鎺ュ瓧绗︿覆
-        private static readonly string connectionString = configuration["AppSettings:DataBaseConn"];
-        // 鎺ュ彛鍦板潃
-        private static readonly string apiUrl = "http://" + configuration["AppSettings:U9IP"] + "/api/getWhqoh";
+    // Oracle 鏁版嵁搴撹繛鎺ュ瓧绗︿覆
+    private static readonly string connectionString =
+        configuration["AppSettings:DataBaseConn"];
 
-        public static async Task<bool> GetWhqoh(WhqohDto mesItemQtRKDto)
+    // 鎺ュ彛鍦板潃
+    private static readonly string apiUrl =
+        "http://" + configuration["AppSettings:U9IP"] + "/api/getWhqoh";
+
+    public static async Task<bool> GetWhqoh(WhqohDto mesItemQtRKDto)
+    {
+        // 1. 璇锋眰鎺ュ彛
+        var requestBody = new[]
         {
-            // 1. 璇锋眰鎺ュ彛
-            var requestBody = new[]
+            new
             {
-                new { ItemId = mesItemQtRKDto.itemId, WhId = "", Project = "", LotCode = "" }
-            };
+                ItemId = mesItemQtRKDto.itemId, WhId = "", Project = "",
+                LotCode = ""
+            }
+        };
 
-            string jsonRequest = JsonConvert.SerializeObject(requestBody);
+        var jsonRequest = JsonConvert.SerializeObject(requestBody);
 
-            using var http = new HttpClient();
-            var response = await http.PostAsync(apiUrl,
-                new StringContent(jsonRequest, Encoding.UTF8, "application/json"));
+        using var http = new HttpClient();
+        var response = await http.PostAsync(apiUrl,
+            new StringContent(jsonRequest, Encoding.UTF8, "application/json"));
 
-            string responseStr = await response.Content.ReadAsStringAsync();
+        var responseStr = await response.Content.ReadAsStringAsync();
 
-            // 2. 鍙嶅簭鍒楀寲鎺ュ彛杩斿洖 JSON
-            var result = JsonConvert.DeserializeObject<WhqohResponse>(responseStr);
+        // 2. 鍙嶅簭鍒楀寲鎺ュ彛杩斿洖 JSON
+        var result = JsonConvert.DeserializeObject<WhqohResponse>(responseStr);
 
-            if (result?.Header.Success != true || result.Body == null)
+        if (result?.Header.Success != true || result.Body == null)
+        {
+            Console.WriteLine("鎺ュ彛杩斿洖澶辫触: " + result?.Header?.Message);
+            return false;
+        }
+
+        // 3. 鎵佸钩鍖栧苟鍘婚噸
+        var records =
+            new HashSet<(string ItemId, string WhId, string UomId, string
+                Project, string LotCode)>();
+        var distinctList =
+            new List<(string ItemId, string WhId, string UomId, decimal
+                CurrentQty, decimal AvailableQty, string Project, string LotCode
+                )>();
+
+        foreach (var body in result.Body)
+        foreach (var detail in body.Detail)
+        {
+            var key = (body.ItemId, detail.WhId, detail.UomId,
+                detail.Project ?? "", detail.LotCode ?? "");
+            if (records.Add(key)) // 鍘婚噸
+                distinctList.Add((
+                    body.ItemId,
+                    detail.WhId,
+                    detail.UomId,
+                    decimal.Parse(detail.CurrentQuantity,
+                        CultureInfo.InvariantCulture),
+                    decimal.Parse(detail.AvailableQuantity,
+                        CultureInfo.InvariantCulture),
+                    detail.Project ?? "",
+                    detail.LotCode ?? ""
+                ));
+        }
+
+        // 4. 鍏堝垹鍚庢彃
+        using var conn = new OracleConnection(connectionString);
+        await conn.OpenAsync();
+        using var tran = conn.BeginTransaction();
+
+        try
+        {
+            var deleteSql = "";
+            // 鍒犻櫎鎵�鏈夋棫鏁版嵁锛堟寜闇�姹傝皟鏁磋寖鍥达紝鍙互鍔� WHERE锛�
+            if (mesItemQtRKDto.itemId == "" || mesItemQtRKDto.itemId == null)
+                deleteSql = "DELETE FROM WHQOH_DETAIL";
+            else
+                deleteSql = "DELETE FROM WHQOH_DETAIL where ITEM_ID='" +
+                            mesItemQtRKDto.itemId + "'";
+
+            using (var delCmd = new OracleCommand(deleteSql, conn))
             {
-                Console.WriteLine("鎺ュ彛杩斿洖澶辫触: " + result?.Header?.Message);
-                return false;
+                delCmd.Transaction = tran;
+                await delCmd.ExecuteNonQueryAsync();
             }
 
-            // 3. 鎵佸钩鍖栧苟鍘婚噸
-            var records = new HashSet<(string ItemId, string WhId, string UomId, string Project, string LotCode)>();
-            var distinctList = new List<(string ItemId, string WhId, string UomId, decimal CurrentQty, decimal AvailableQty, string Project, string LotCode)>();
-
-            foreach (var body in result.Body)
-            {
-                foreach (var detail in body.Detail)
-                {
-                    var key = (body.ItemId, detail.WhId, detail.UomId, detail.Project ?? "", detail.LotCode ?? "");
-                    if (records.Add(key)) // 鍘婚噸
-                    {
-                        distinctList.Add((
-                            body.ItemId,
-                            detail.WhId,
-                            detail.UomId,
-                            decimal.Parse(detail.CurrentQuantity, CultureInfo.InvariantCulture),
-                            decimal.Parse(detail.AvailableQuantity, CultureInfo.InvariantCulture),
-                            detail.Project ?? "",
-                            detail.LotCode ?? ""
-                        ));
-                    }
-                }
-            }
-
-            // 4. 鍏堝垹鍚庢彃
-            using var conn = new OracleConnection(connectionString);
-            await conn.OpenAsync();
-            using var tran = conn.BeginTransaction();
-
-            try
-            {
-                string deleteSql = "";
-                // 鍒犻櫎鎵�鏈夋棫鏁版嵁锛堟寜闇�姹傝皟鏁磋寖鍥达紝鍙互鍔� WHERE锛�
-                if (mesItemQtRKDto.itemId=="" || mesItemQtRKDto.itemId==null)
-                {
-                     deleteSql = "DELETE FROM WHQOH_DETAIL";
-                }
-                else
-                {
-                    deleteSql = "DELETE FROM WHQOH_DETAIL where ITEM_ID='"+ mesItemQtRKDto.itemId + "'";
-                }
-                
-                using (var delCmd = new OracleCommand(deleteSql, conn))
-                {
-                    delCmd.Transaction = tran;
-                    await delCmd.ExecuteNonQueryAsync();
-                }
-
-                // 鎻掑叆鏂版暟鎹�
-                string insertSql = @"
+            // 鎻掑叆鏂版暟鎹�
+            var insertSql = @"
 INSERT INTO WHQOH_DETAIL
 (ID, ITEM_ID, WH_ID, UOM_ID, CURRENT_QUANTITY, AVAILABLE_QUANTITY, PROJECT_CODE, LOT_CODE)
 VALUES
 (SEQ_WHQOH_DETAIL.NEXTVAL, :ItemId, :WhId, :UomId, :CurrentQty, :AvailableQty, :Project, :LotCode)";
 
-                using var cmd = new OracleCommand(insertSql, conn);
-                cmd.Transaction = tran;
-                cmd.ArrayBindCount = distinctList.Count;
+            using var cmd = new OracleCommand(insertSql, conn);
+            cmd.Transaction = tran;
+            cmd.ArrayBindCount = distinctList.Count;
 
-                cmd.Parameters.Add(":ItemId", OracleDbType.Varchar2, distinctList.Select(x => x.ItemId).ToArray(), System.Data.ParameterDirection.Input);
-                cmd.Parameters.Add(":WhId", OracleDbType.Varchar2, distinctList.Select(x => x.WhId).ToArray(), System.Data.ParameterDirection.Input);
-                cmd.Parameters.Add(":UomId", OracleDbType.Varchar2, distinctList.Select(x => x.UomId).ToArray(), System.Data.ParameterDirection.Input);
-                cmd.Parameters.Add(":CurrentQty", OracleDbType.Decimal, distinctList.Select(x => x.CurrentQty).ToArray(), System.Data.ParameterDirection.Input);
-                cmd.Parameters.Add(":AvailableQty", OracleDbType.Decimal, distinctList.Select(x => x.AvailableQty).ToArray(), System.Data.ParameterDirection.Input);
-                cmd.Parameters.Add(":Project", OracleDbType.Varchar2, distinctList.Select(x => x.Project).ToArray(), System.Data.ParameterDirection.Input);
-                cmd.Parameters.Add(":LotCode", OracleDbType.Varchar2, distinctList.Select(x => x.LotCode).ToArray(), System.Data.ParameterDirection.Input);
+            cmd.Parameters.Add(":ItemId", OracleDbType.Varchar2,
+                distinctList.Select(x => x.ItemId).ToArray(),
+                ParameterDirection.Input);
+            cmd.Parameters.Add(":WhId", OracleDbType.Varchar2,
+                distinctList.Select(x => x.WhId).ToArray(),
+                ParameterDirection.Input);
+            cmd.Parameters.Add(":UomId", OracleDbType.Varchar2,
+                distinctList.Select(x => x.UomId).ToArray(),
+                ParameterDirection.Input);
+            cmd.Parameters.Add(":CurrentQty", OracleDbType.Decimal,
+                distinctList.Select(x => x.CurrentQty).ToArray(),
+                ParameterDirection.Input);
+            cmd.Parameters.Add(":AvailableQty", OracleDbType.Decimal,
+                distinctList.Select(x => x.AvailableQty).ToArray(),
+                ParameterDirection.Input);
+            cmd.Parameters.Add(":Project", OracleDbType.Varchar2,
+                distinctList.Select(x => x.Project).ToArray(),
+                ParameterDirection.Input);
+            cmd.Parameters.Add(":LotCode", OracleDbType.Varchar2,
+                distinctList.Select(x => x.LotCode).ToArray(),
+                ParameterDirection.Input);
 
-                int affected = await cmd.ExecuteNonQueryAsync();
-                tran.Commit();
+            var affected = await cmd.ExecuteNonQueryAsync();
+            tran.Commit();
 
-                Console.WriteLine($"鎵归噺澶勭悊鎴愬姛锛屽叡 {affected} 鏉℃暟鎹鎻掑叆銆�");
-                return true;
-            }
-            catch (Exception ex)
-            {
-                tran.Rollback();
-                Console.WriteLine("鎵归噺澶勭悊澶辫触: " + ex.Message);
-                return false;
-            }
+            Console.WriteLine($"鎵归噺澶勭悊鎴愬姛锛屽叡 {affected} 鏉℃暟鎹鎻掑叆銆�");
+            return true;
+        }
+        catch (Exception ex)
+        {
+            tran.Rollback();
+            Console.WriteLine("鎵归噺澶勭悊澶辫触: " + ex.Message);
+            return false;
         }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3