From 93473e2792e5d23a168e575f17190a5e51ad7c9f Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期四, 17 七月 2025 09:55:58 +0800
Subject: [PATCH] 111

---
 MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs |  308 ++++++++++++++++++++++++++------------------------
 1 files changed, 159 insertions(+), 149 deletions(-)

diff --git a/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs b/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs
index 562a6c2..50af833 100644
--- a/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs
+++ b/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs
@@ -1,177 +1,187 @@
 锘縰sing MES.Service.Dto.webApi.RealTimeInventory;
-
-namespace MESApplication.Controllers.RealTimeInventory;
 using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Configuration;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Oracle.ManagedDataAccess.Client;
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.IO;
-using System.Net;
-using System.Text;
-using System.Threading.Tasks;
 
-    [Route("api/[controller]")]
-    [ApiController]
-   
-    public class RealTimeInventoryController : ControllerBase
+namespace MESApplication.Controllers.RealTimeInventory;
+
+[Route("api/[controller]")]
+[ApiController]
+public class RealTimeInventoryController : ControllerBase
+{
+    private readonly string _baseUrl = "http://122.227.249.70:5050/k3cloud";
+    private readonly string _connectionString;
+
+    public RealTimeInventoryController(IConfiguration configuration)
     {
-        private readonly string _connectionString;
-        private readonly string _baseUrl = "http://122.227.249.70:5050/k3cloud";
+        _connectionString = configuration["AppSettings:DataBaseConn"];
+    }
 
-        public RealTimeInventoryController(IConfiguration configuration)
+    [HttpPost("syncInventory")]
+    public async Task<IActionResult> SyncInventory()
+    {
+        var httpClient = new HttpClientEx();
+        httpClient.Url =
+            $"{_baseUrl}/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";
+
+        var parameters = new List<object>
         {
-            _connectionString = configuration["AppSettings:DataBaseConn"];
-        }
+            "6654201b47f099", // 甯愬Id
+            "Administrator", // 鐢ㄦ埛鍚�
+            "Lts88666*", // 瀵嗙爜
+            2052 // 璇█锛堜腑鏂囷級
+        };
 
-        [HttpPost("syncInventory")]
-        public async Task<IActionResult> SyncInventory()
+        httpClient.Content = JsonConvert.SerializeObject(parameters);
+        var result = JObject.Parse(httpClient.AsyncRequest())["LoginResultType"]
+            .Value<int>();
+
+        if (result != 1)
+            return BadRequest("鐧诲綍澶辫触");
+
+        var depotCodes = FetchDepotCodes();
+        if (depotCodes.Count == 0)
+            return NotFound("鏈壘鍒版湁鏁堢殑DEPOTS_CODE");
+
+        DeleteInventoryData();
+
+        var depotCodesStr = string.Join(",", depotCodes);
+        var hasMoreData = true;
+        var pageIndex = 1;
+
+        while (hasMoreData)
         {
-            HttpClientEx httpClient = new HttpClientEx();
-            httpClient.Url = $"{_baseUrl}/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";
-
-            var parameters = new List<object>
+            var model = new InventoryParamModel
             {
-                "6654201b47f099", // 甯愬Id
-                "Administrator", // 鐢ㄦ埛鍚�
-                "Lts88666*", // 瀵嗙爜
-                2052 // 璇█锛堜腑鏂囷級
+                fstocknumbers = depotCodesStr,
+                isshowauxprop = true,
+                isshowstockloc = true,
+                pageindex = pageIndex,
+                pagerows = 10000
             };
 
-            httpClient.Content = JsonConvert.SerializeObject(parameters);
-            var result = JObject.Parse(httpClient.AsyncRequest())["LoginResultType"].Value<int>();
+            httpClient.Url =
+                $"{_baseUrl}/Kingdee.K3.SCM.WebApi.ServicesStub.InventoryQueryService.GetInventoryData.common.kdsvc";
+            httpClient.Content =
+                JsonConvert.SerializeObject(new List<object> { model });
+            var response = httpClient.AsyncRequest();
+            var inventoryData =
+                JsonConvert.DeserializeObject<InventoryResponse>(response);
 
-            if (result != 1)
-                return BadRequest("鐧诲綍澶辫触");
-
-            List<string> depotCodes = FetchDepotCodes();
-            if (depotCodes.Count == 0)
-                return NotFound("鏈壘鍒版湁鏁堢殑DEPOTS_CODE");
-
-            DeleteInventoryData();
-
-            string depotCodesStr = string.Join(",", depotCodes);
-            bool hasMoreData = true;
-            int pageIndex = 1;
-
-            while (hasMoreData)
+            if (inventoryData?.Data == null || inventoryData.Data.Count == 0)
             {
-                InventoryParamModel model = new InventoryParamModel
-                {
-                    fstocknumbers = depotCodesStr,
-                    isshowauxprop = true,
-                    isshowstockloc = true,
-                    pageindex = pageIndex,
-                    pagerows = 10000
-                };
-
-                httpClient.Url = $"{_baseUrl}/Kingdee.K3.SCM.WebApi.ServicesStub.InventoryQueryService.GetInventoryData.common.kdsvc";
-                httpClient.Content = JsonConvert.SerializeObject(new List<object> { model });
-                string response = httpClient.AsyncRequest();
-                var inventoryData = JsonConvert.DeserializeObject<InventoryResponse>(response);
-
-                if (inventoryData?.Data == null || inventoryData.Data.Count == 0)
-                    hasMoreData = false;
-                else
-                {
-                    InsertInventoryData(inventoryData);
-                    pageIndex++;
-                }
+                hasMoreData = false;
             }
-
-            return Ok("搴撳瓨鏁版嵁瀵煎叆瀹屾垚");
-        }
-
-        private List<string> FetchDepotCodes()
-        {
-            List<string> depotCodes = new List<string>();
-            using (var connection = new OracleConnection(_connectionString))
+            else
             {
-                try
-                {
-                    connection.Open();
-                    string query = "SELECT DEPOTS_CODE FROM MES_INV_ITEM_STOCKS WHERE DEPOTS_CODE IS NOT NULL AND DEPOTS_CODE NOT IN ('MJ','CY-MJ') GROUP BY DEPOTS_CODE";
-                    using (var cmd = new OracleCommand(query, connection))
-                    using (var reader = cmd.ExecuteReader())
-                    {
-                        while (reader.Read())
-                            depotCodes.Add(reader.GetString(0));
-                    }
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine("鑾峰彇浠撳簱浠g爜鏃跺嚭閿�: " + ex.Message);
-                }
-            }
-            return depotCodes;
-        }
-
-        private void DeleteInventoryData()
-        {
-            using (var connection = new OracleConnection(_connectionString))
-            {
-                try
-                {
-                    connection.Open();
-                    using (var transaction = connection.BeginTransaction())
-                    {
-                        using (var deleteCmd = new OracleCommand("DELETE FROM ERPKCPC", connection))
-                        {
-                            deleteCmd.ExecuteNonQuery();
-                        }
-                        transaction.Commit();
-                    }
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine("鍒犻櫎搴撳瓨鏁版嵁鏃跺嚭閿�: " + ex.Message);
-                }
+                InsertInventoryData(inventoryData);
+                pageIndex++;
             }
         }
 
-        private void InsertInventoryData(InventoryResponse inventoryData)
-        {
-            using (var connection = new OracleConnection(_connectionString))
-            {
-                try
-                {
-                    connection.Open();
-                    using (var transaction = connection.BeginTransaction())
-                    {
-                        foreach (var item in inventoryData.Data)
-                        {
-                            string query = "INSERT INTO ERPKCPC (ITEM_ID, DEPOT_CODE, FQTY, ITEM_NO, ORGID) VALUES (:ITEM_ID, :DEPOT_CODE, :FQTY, :ITEM_NO, :ORGID)";
-                            using (var cmd = new OracleCommand(query, connection))
-                            {
-                                cmd.Parameters.Add(new OracleParameter(":ITEM_ID", item.FmaterialId));
-                                cmd.Parameters.Add(new OracleParameter(":DEPOT_CODE", item.FstockNumber));
-                                cmd.Parameters.Add(new OracleParameter(":FQTY", item.Fqty));
-                                cmd.Parameters.Add(new OracleParameter(":ITEM_NO", item.FmaterialNumber));
-                                cmd.Parameters.Add(new OracleParameter(":ORGID", item.FstockorgId));
+        return Ok("搴撳瓨鏁版嵁瀵煎叆瀹屾垚");
+    }
 
-                                try
-                                {
-                                    cmd.ExecuteNonQuery();
-                                }
-                                catch (Exception ex)
-                                {
-                                    transaction.Rollback();
-                                    Console.WriteLine("鎻掑叆搴撳瓨鏁版嵁鏃跺嚭閿�: " + ex.Message);
-                                    return;
-                                }
-                            }
-                        }
-                        transaction.Commit();
-                    }
-                }
-                catch (Exception ex)
+    private List<string> FetchDepotCodes()
+    {
+        var depotCodes = new List<string>();
+        using (var connection = new OracleConnection(_connectionString))
+        {
+            try
+            {
+                connection.Open();
+                var query =
+                    "SELECT DEPOTS_CODE FROM MES_INV_ITEM_STOCKS WHERE DEPOTS_CODE IS NOT NULL AND DEPOTS_CODE NOT IN ('MJ','CY-MJ') GROUP BY DEPOTS_CODE";
+                using (var cmd = new OracleCommand(query, connection))
+                using (var reader = cmd.ExecuteReader())
                 {
-                    Console.WriteLine("鏁版嵁搴撹繛鎺ュ嚭閿�: " + ex.Message);
+                    while (reader.Read())
+                        depotCodes.Add(reader.GetString(0));
                 }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("鑾峰彇浠撳簱浠g爜鏃跺嚭閿�: " + ex.Message);
+            }
+        }
+
+        return depotCodes;
+    }
+
+    private void DeleteInventoryData()
+    {
+        using (var connection = new OracleConnection(_connectionString))
+        {
+            try
+            {
+                connection.Open();
+                using (var transaction = connection.BeginTransaction())
+                {
+                    using (var deleteCmd =
+                           new OracleCommand("DELETE FROM ERPKCPC", connection))
+                    {
+                        deleteCmd.ExecuteNonQuery();
+                    }
+
+                    transaction.Commit();
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("鍒犻櫎搴撳瓨鏁版嵁鏃跺嚭閿�: " + ex.Message);
             }
         }
     }
 
+    private void InsertInventoryData(InventoryResponse inventoryData)
+    {
+        using (var connection = new OracleConnection(_connectionString))
+        {
+            try
+            {
+                connection.Open();
+                using (var transaction = connection.BeginTransaction())
+                {
+                    foreach (var item in inventoryData.Data)
+                    {
+                        var query =
+                            "INSERT INTO ERPKCPC (ITEM_ID, DEPOT_CODE, FQTY, ITEM_NO, ORGID) VALUES (:ITEM_ID, :DEPOT_CODE, :FQTY, :ITEM_NO, :ORGID)";
+                        using (var cmd = new OracleCommand(query, connection))
+                        {
+                            cmd.Parameters.Add(new OracleParameter(":ITEM_ID",
+                                item.FmaterialId));
+                            cmd.Parameters.Add(
+                                new OracleParameter(":DEPOT_CODE",
+                                    item.FstockNumber));
+                            cmd.Parameters.Add(
+                                new OracleParameter(":FQTY", item.Fqty));
+                            cmd.Parameters.Add(new OracleParameter(":ITEM_NO",
+                                item.FmaterialNumber));
+                            cmd.Parameters.Add(
+                                new OracleParameter(":ORGID",
+                                    item.FstockorgId));
+
+                            try
+                            {
+                                cmd.ExecuteNonQuery();
+                            }
+                            catch (Exception ex)
+                            {
+                                transaction.Rollback();
+                                Console.WriteLine("鎻掑叆搴撳瓨鏁版嵁鏃跺嚭閿�: " + ex.Message);
+                                return;
+                            }
+                        }
+                    }
+
+                    transaction.Commit();
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("鏁版嵁搴撹繛鎺ュ嚭閿�: " + ex.Message);
+            }
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3