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