From 2568624e5203140866f3cdbe084b568923ce867e Mon Sep 17 00:00:00 2001 From: wanli Date: Wed, 4 Jan 2023 10:54:34 +0800 Subject: [PATCH] =?UTF-8?q?[Backend]=20=E6=9B=B4=E6=96=B0device=5Fnode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Backend/Controllers/DeviceImportController.cs | 56 ++++++++++--------- .../Implement/BaseRepository.cs | 35 ++++++++++++ .../Interface/IBaseRepository.cs | 12 ++++ 3 files changed, 78 insertions(+), 25 deletions(-) diff --git a/Backend/Controllers/DeviceImportController.cs b/Backend/Controllers/DeviceImportController.cs index fb0beb2..7b03b95 100644 --- a/Backend/Controllers/DeviceImportController.cs +++ b/Backend/Controllers/DeviceImportController.cs @@ -755,6 +755,7 @@ namespace Backend.Controllers public async Task> ImportDevForCor([FromBody] List post) { ApiResult apiResult = new ApiResult(); + var device_guid_record = ""; try { if (post != null) @@ -762,41 +763,46 @@ namespace Backend.Controllers if (post.Count > 0) { //清空device_node資料表 - //await backendRepository.TruncateTable("device_node"); + await backendRepository.TruncateTable("device_node"); - //int node_priority = 1; + int node_priority = 1; foreach(var idfc in post) { - //if(idfc.device_number.IndexOf("_LT_L1") > -1) - //{ - // //取得device_guid - // var sWhere = $@"where deleted = 0 and device_number = " + idfc.device_number; - // var device_guid = await backendRepository.GetOneAsync("device_node", sWhere, "device_guid"); + if (idfc.device_number.IndexOf("_LT_L1") > -1) + { + //取得device_guid + var sWhere = $@" deleted = 0 and device_number = '" + idfc.device_number + "'"; + var device_guid = await backendRepository.GetOneColAsync("device", sWhere, "device_guid"); + if(device_guid.ToString() != device_guid_record) + { + device_guid_record = device_guid.ToString(); + node_priority = 1; + } - // //燈具 - // Dictionary device = new Dictionary(); - // device.Add("@device_node_guid", Guid.NewGuid()); - // device.Add("@deleted", 0); - // device.Add("@device_guid", device_guid); - // device.Add("@device_node_coordinate_3d", idfc.device_coordinate_3d); - // device.Add("@forge_dbid", idfc.forge_dbid); - // device.Add("@priority", node_priority); - // device.Add("@created_by", myUserInfo.Userinfo_guid); - // device.Add("@created_at", DateTime.Now); + //燈具 + Dictionary device = new Dictionary(); + device.Add("@device_node_guid", Guid.NewGuid()); + device.Add("@deleted", 0); + device.Add("@device_guid", device_guid); + device.Add("@device_node_coordinate_3d", idfc.device_coordinate_3d); + device.Add("@forge_dbid", idfc.forge_dbid); + device.Add("@priority", node_priority); + device.Add("@created_by", myUserInfo.Userinfo_guid); + device.Add("@created_at", DateTime.Now); - // node_priority++; - // await backendRepository.AddOneByCustomTableReturnId(device, "device_node", false); - //} - //else - //{ + node_priority++; + await backendRepository.AddOneByCustomTableReturnId(device, "device_node", false); + } + else + { Dictionary device = new Dictionary(); device.Add("@device_coordinate_3d", idfc.device_coordinate_3d); device.Add("@forge_dbid", idfc.forge_dbid); await backendRepository.UpdateOneByCustomTable(device, "device", $@" device_number = '{idfc.device_number}'"); - //} - + } + + - } } apiResult.Code = "0000"; diff --git a/Repository/BaseRepository/Implement/BaseRepository.cs b/Repository/BaseRepository/Implement/BaseRepository.cs index 0de7f78..0543d8d 100644 --- a/Repository/BaseRepository/Implement/BaseRepository.cs +++ b/Repository/BaseRepository/Implement/BaseRepository.cs @@ -270,6 +270,41 @@ namespace Repository.BaseRepository.Implement return result; } } + /// + /// 取得單一筆資料某一欄位(排序) + /// + /// + /// + /// 填放欄位 + /// 參數值 + /// + /// + public virtual async Task GetOneColAsync(string tableName, string sWhere, string selCol, object param = null, string sOrderBy = "") + { + string result; + using (IDbConnection conn = GetDbConnection()) + { + try + { + var sql = $"SELECT {selCol} FROM {tableName}"; + if (!string.IsNullOrEmpty(sWhere)) + { + sql += $" WHERE {sWhere}"; + } + if (!string.IsNullOrEmpty(sOrderBy)) + { + sql += $" ORDER BY {sOrderBy}"; + } + + result = await conn.QueryFirstOrDefaultAsync(sql, param); + } + catch (Exception exception) + { + throw exception; + } + return result; + } + } /// /// 取得單一筆資料(根據自訂SQL, 自訂參數) diff --git a/Repository/BaseRepository/Interface/IBaseRepository.cs b/Repository/BaseRepository/Interface/IBaseRepository.cs index 1c041a0..33ff7eb 100644 --- a/Repository/BaseRepository/Interface/IBaseRepository.cs +++ b/Repository/BaseRepository/Interface/IBaseRepository.cs @@ -95,6 +95,18 @@ namespace Repository.BaseRepository.Interface /// Task GetOneAsync(string tableName, string sWhere, string selCol, object param = null, string sOrderBy = ""); /// + /// 取得單一筆資料某一欄位(排序),不需sWhere及sOrderBy填"" + /// + /// SELECT {selCol} FROM {tableName} WHERE {sWhere} ORDER BY {sOrderBy} + /// + /// + /// + /// + /// + /// 填放欄位 + /// + Task GetOneColAsync(string tableName, string sWhere, string selCol, object param = null, string sOrderBy = ""); + /// /// 取得單一筆資料(根據自訂SQL, 自訂參數) /// ///