From 5ad77f8491b3137238bafe30c2e2d83c60558bdb Mon Sep 17 00:00:00 2001 From: kyy <3283105747@qq.com> Date: 星期四, 31 七月 2025 16:23:14 +0800 Subject: [PATCH] 修改sop获取数据 --- MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs | 74 ++++++++++++++++++++++++++++++++++-- 1 files changed, 69 insertions(+), 5 deletions(-) diff --git a/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs b/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs index 7993a32..fdd951b 100644 --- a/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs +++ b/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs @@ -6,25 +6,45 @@ namespace MESApplication.Controllers.RealTimeInventory; +/// <summary> +/// 瀹炴椂搴撳瓨鎺у埗鍣� +/// 璐熻矗鍚屾绗笁鏂圭郴缁熷簱瀛樻暟鎹埌鏈湴鏁版嵁搴� +/// </summary> [Route("api/[controller]")] [ApiController] public class RealTimeInventoryController : ControllerBase { + // K3Cloud绯荤粺鐨勫熀纭�API鍦板潃 private readonly string _baseUrl = "http://122.227.249.70:5050/k3cloud"; + // 鏁版嵁搴撹繛鎺ュ瓧绗︿覆 private readonly string _connectionString; + /// <summary> + /// 鏋勯�犲嚱鏁� + /// 閫氳繃渚濊禆娉ㄥ叆鑾峰彇閰嶇疆淇℃伅 + /// </summary> + /// <param name="configuration">閰嶇疆瀵硅薄</param> public RealTimeInventoryController(IConfiguration configuration) { + // 浠庨厤缃腑鑾峰彇鏁版嵁搴撹繛鎺ュ瓧绗︿覆 _connectionString = configuration["AppSettings:DataBaseConn"]; } + /// <summary> + /// 鍚屾搴撳瓨鏁版嵁API + /// 浠嶬3Cloud绯荤粺鑾峰彇搴撳瓨鏁版嵁骞跺悓姝ュ埌鏈湴鏁版嵁搴� + /// </summary> + /// <returns>鍚屾缁撴灉</returns> [HttpPost("syncInventory")] public async Task<IActionResult> SyncInventory() { + // 鍒涘缓鑷畾涔塇TTP瀹㈡埛绔疄渚� var httpClient = new HttpClientEx(); + // 璁剧疆韬唤楠岃瘉API鍦板潃 httpClient.Url = $"{_baseUrl}/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc"; + // 鍑嗗鐧诲綍鍙傛暟 var parameters = new List<object> { "6654201b47f099", // 甯愬Id @@ -33,66 +53,92 @@ 2052 // 璇█锛堜腑鏂囷級 }; + // 搴忓垪鍖栧弬鏁板苟璁剧疆涓鸿姹傚唴瀹� httpClient.Content = JsonConvert.SerializeObject(parameters); + // 鍙戦�佺櫥褰曡姹傚苟瑙f瀽缁撴灉 var result = JObject.Parse(httpClient.AsyncRequest())["LoginResultType"] .Value<int>(); + // 鐧诲綍澶辫触杩斿洖閿欒淇℃伅 if (result != 1) return BadRequest("鐧诲綍澶辫触"); + // 鑾峰彇闇�瑕佸悓姝ョ殑浠撳簱浠g爜鍒楄〃 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) { + // 鏋勫缓搴撳瓨鏌ヨ鍙傛暟妯″瀷 var model = new InventoryParamModel { - fstocknumbers = depotCodesStr, - isshowauxprop = true, - isshowstockloc = true, - pageindex = pageIndex, - pagerows = 10000 + fstocknumbers = depotCodesStr, // 浠撳簱浠g爜 + isshowauxprop = true, // 鏄惁鏄剧ず杈呭姪灞炴�� + isshowstockloc = true, // 鏄惁鏄剧ず搴撳瓨浣嶇疆 + pageindex = pageIndex, // 褰撳墠椤电爜 + pagerows = 10000 // 姣忛〉璁板綍鏁� }; + // 璁剧疆搴撳瓨鏌ヨAPI鍦板潃 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 (inventoryData?.Data == null || inventoryData.Data.Count == 0) { hasMoreData = false; } else { + // 灏嗗綋鍓嶉〉鏁版嵁鎻掑叆鏁版嵁搴� InsertInventoryData(inventoryData); + // 鍑嗗鑾峰彇涓嬩竴椤垫暟鎹� pageIndex++; } } + // 杩斿洖鍚屾瀹屾垚娑堟伅 return Ok("搴撳瓨鏁版嵁瀵煎叆瀹屾垚"); } + /// <summary> + /// 浠庢湰鍦版暟鎹簱鑾峰彇浠撳簱浠g爜鍒楄〃 + /// 鎺掗櫎鐗瑰畾浠撳簱浠g爜('MJ','CY-MJ') + /// </summary> + /// <returns>浠撳簱浠g爜鍒楄〃</returns> private List<string> FetchDepotCodes() { var depotCodes = new List<string>(); + // 浣跨敤Oracle杩炴帴 using (var connection = new OracleConnection(_connectionString)) { try { + // 鎵撳紑鏁版嵁搴撹繛鎺� connection.Open(); + // 鏌ヨ鏈夋晥浠撳簱浠g爜鐨凷QL 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()) { @@ -109,6 +155,10 @@ return depotCodes; } + /// <summary> + /// 娓呯┖ERPKCPC琛ㄤ腑鐨勭幇鏈夊簱瀛樻暟鎹� + /// 浣跨敤浜嬪姟纭繚鎿嶄綔鐨勫師瀛愭�� + /// </summary> private void DeleteInventoryData() { using (var connection = new OracleConnection(_connectionString)) @@ -116,14 +166,17 @@ try { connection.Open(); + // 寮�濮嬫暟鎹簱浜嬪姟 using (var transaction = connection.BeginTransaction()) { + // 鎵ц鍒犻櫎鎿嶄綔 using (var deleteCmd = new OracleCommand("DELETE FROM ERPKCPC", connection)) { deleteCmd.ExecuteNonQuery(); } + // 鎻愪氦浜嬪姟 transaction.Commit(); } } @@ -134,6 +187,11 @@ } } + /// <summary> + /// 灏嗗簱瀛樻暟鎹彃鍏ュ埌ERPKCPC琛ㄤ腑 + /// 浣跨敤浜嬪姟纭繚鎵�鏈夋暟鎹涔堝叏閮ㄦ彃鍏ユ垚鍔燂紝瑕佷箞鍏ㄩ儴澶辫触 + /// </summary> + /// <param name="inventoryData">搴撳瓨鏁版嵁鍝嶅簲瀵硅薄</param> private void InsertInventoryData(InventoryResponse inventoryData) { using (var connection = new OracleConnection(_connectionString)) @@ -141,10 +199,13 @@ try { connection.Open(); + // 寮�濮嬫暟鎹簱浜嬪姟 using (var transaction = connection.BeginTransaction()) { + // 閬嶅巻姣忔潯搴撳瓨鏁版嵁 foreach (var item in inventoryData.Data) { + // 鎻掑叆SQL璇彞 var query = "INSERT INTO ERPKCPC (ITEM_ID, DEPOT_CODE, FQTY, ITEM_NO, ORGID,Fstockstatusnumber,Fstockstatusname) VALUES (:ITEM_ID, :DEPOT_CODE, :FQTY, :ITEM_NO, :ORGID,:Fstockstatusnumber,:Fstockstatusname)"; using (var cmd = new OracleCommand(query, connection)) @@ -159,10 +220,12 @@ try { + // 鎵ц鎻掑叆鍛戒护 cmd.ExecuteNonQuery(); } catch (Exception ex) { + // 鍑洪敊鏃跺洖婊氫簨鍔� transaction.Rollback(); Console.WriteLine("鎻掑叆搴撳瓨鏁版嵁鏃跺嚭閿�: " + ex.Message); return; @@ -170,6 +233,7 @@ } } + // 鎵�鏈夋暟鎹彃鍏ユ垚鍔燂紝鎻愪氦浜嬪姟 transaction.Commit(); } } -- Gitblit v1.9.3