[後端] 優化存取程序, 修改getmenu增加判斷
[前端] 修改spinner問題
This commit is contained in:
parent
2206f5a3fe
commit
b4e4321453
@ -114,8 +114,8 @@ namespace Backend.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
string LightSwitchLevel = await niagaraDataSynchronizeRepository.getLightSwitchLevel(); //獲取照明開關 是否在 device or device_node
|
string LightSwitchLevel = await niagaraDataSynchronizeRepository.getLightSwitchLevel(); //獲取照明開關 是否在 device or device_node
|
||||||
//await niagaraDataSynchronizeRepository.InsertNiagaraTagList(ds, building, tag_quantity); // 匯入 MySQL table: import_niagara_tag
|
await niagaraDataSynchronizeRepository.InsertNiagaraTagList(ds, building, tag_quantity); // 匯入 MySQL table: import_niagara_tag
|
||||||
//await niagaraDataSynchronizeRepository.DeviceComparison(LightSwitchLevel);
|
await niagaraDataSynchronizeRepository.DeviceComparison(LightSwitchLevel);
|
||||||
await niagaraDataSynchronizeRepository.CheckDiffFullNameAndCover();
|
await niagaraDataSynchronizeRepository.CheckDiffFullNameAndCover();
|
||||||
await niagaraDataSynchronizeRepository.CheckFullNameEmptyReplaceByDeviceName();
|
await niagaraDataSynchronizeRepository.CheckFullNameEmptyReplaceByDeviceName();
|
||||||
await niagaraDataSynchronizeRepository.InsertBuildingMenu();
|
await niagaraDataSynchronizeRepository.InsertBuildingMenu();
|
||||||
|
@ -4,23 +4,9 @@ using System.Linq;
|
|||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Repository.Models;
|
using Repository.Models;
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using Repository.BackendRepository.Implement;
|
|
||||||
using Repository.BackendRepository;
|
|
||||||
using Ubiety.Dns.Core;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Repository.Models.CodeBeautify;
|
|
||||||
using NPOI.SS.Formula.Functions;
|
|
||||||
using Microsoft.AspNetCore.Localization;
|
|
||||||
using MySqlX.XDevAPI.Relational;
|
|
||||||
using Backend.Models;
|
|
||||||
using NPOI.OpenXmlFormats.Dml;
|
|
||||||
|
|
||||||
namespace Backend.Services.Implement
|
namespace Backend.Services.Implement
|
||||||
{
|
{
|
||||||
@ -151,6 +137,7 @@ namespace Backend.Services.Implement
|
|||||||
#region get control point data
|
#region get control point data
|
||||||
List<control_point> conPoint = new List<control_point>();
|
List<control_point> conPoint = new List<control_point>();
|
||||||
String cp_API_Url = bqlUrlString;
|
String cp_API_Url = bqlUrlString;
|
||||||
|
String building_tag = slot.Split("/")[2].Replace("|", "_").Trim(); //Ex: D2_, M_
|
||||||
|
|
||||||
HttpWebRequest cp_Postrequest = (HttpWebRequest)WebRequest.Create(cp_API_Url);
|
HttpWebRequest cp_Postrequest = (HttpWebRequest)WebRequest.Create(cp_API_Url);
|
||||||
cp_Postrequest.Method = "POST";
|
cp_Postrequest.Method = "POST";
|
||||||
@ -220,8 +207,14 @@ namespace Backend.Services.Implement
|
|||||||
|
|
||||||
XmlDocument xmlDoc2 = new XmlDocument();
|
XmlDocument xmlDoc2 = new XmlDocument();
|
||||||
xmlDoc2.LoadXml(responseString2);
|
xmlDoc2.LoadXml(responseString2);
|
||||||
|
// Create a namespace manager to handle the XML namespace
|
||||||
|
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xmlDoc2.NameTable);
|
||||||
|
string xmlns = xmlDoc2.DocumentElement.GetAttribute("xmlns") ?? "http://obix.org/ns/schema/1.0";
|
||||||
|
namespaceManager.AddNamespace("obix", xmlns);
|
||||||
|
|
||||||
foreach (XmlNode node2 in xmlDoc2.DocumentElement.ChildNodes)
|
// Select all "ref" nodes using an XPath expression
|
||||||
|
XmlNodeList refNodes = xmlDoc2.SelectNodes($"//obix:ref[starts-with(@name, '{building_tag}')]", namespaceManager);
|
||||||
|
foreach (XmlNode node2 in refNodes)
|
||||||
{
|
{
|
||||||
string tagName = node2.Attributes["name"].InnerText;
|
string tagName = node2.Attributes["name"].InnerText;
|
||||||
if (tagName.Split('_').Length == 9)
|
if (tagName.Split('_').Length == 9)
|
||||||
@ -241,8 +234,8 @@ namespace Backend.Services.Implement
|
|||||||
row.isHistory = true;
|
row.isHistory = true;
|
||||||
|
|
||||||
result.Add(row);
|
result.Add(row);
|
||||||
|
}
|
||||||
} else if (tagName.Split('_').Length == 6)
|
else if (tagName.Split('_').Length == 6)
|
||||||
{ //巨蛋 tag 5 段版本
|
{ //巨蛋 tag 5 段版本
|
||||||
ImpNiaItem row = new ImpNiaItem();
|
ImpNiaItem row = new ImpNiaItem();
|
||||||
if (tagName.Split('_')[1] == "S") //for security system
|
if (tagName.Split('_')[1] == "S") //for security system
|
||||||
|
@ -140,9 +140,9 @@
|
|||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
function SynchronizeData() {
|
function SynchronizeData() {
|
||||||
showSpinner();
|
|
||||||
document.getElementById('loadDataText').innerText = "同步中...";
|
|
||||||
if (ds.length > 0) {
|
if (ds.length > 0) {
|
||||||
|
document.getElementById('loadDataText').innerText = "同步中...";
|
||||||
|
showSpinner();
|
||||||
//比對資料,有差異的話,再同步到device等資料表
|
//比對資料,有差異的話,再同步到device等資料表
|
||||||
var url_synchronize_data = "/NiagaraDataSynchronize/CompareData/";
|
var url_synchronize_data = "/NiagaraDataSynchronize/CompareData/";
|
||||||
|
|
||||||
@ -160,16 +160,20 @@
|
|||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function (rel) {
|
success: function (rel) {
|
||||||
if (rel.code != "0000") {
|
if (rel.code != "0000") {
|
||||||
toast_error(rel.msg);
|
|
||||||
hideSpinner();
|
hideSpinner();
|
||||||
|
toast_error(rel.msg);
|
||||||
document.getElementById('loadDataText').innerText = "比對資料出錯了!";
|
document.getElementById('loadDataText').innerText = "比對資料出錯了!";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncDevItem();
|
SyncDevItem();
|
||||||
//var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
|
//var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
|
||||||
//var dateTime = date + ' ' + time;
|
//var dateTime = date + ' ' + time;
|
||||||
//document.getElementById('loadDataText').innerText = "比對完成 \n" + dateTime;
|
//document.getElementById('loadDataText').innerText = "比對完成 \n" + dateTime;
|
||||||
},
|
},
|
||||||
|
error: function () {
|
||||||
|
hideSpinner();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -194,6 +198,7 @@
|
|||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function (rel) {
|
success: function (rel) {
|
||||||
if (rel.code != "0000") {
|
if (rel.code != "0000") {
|
||||||
|
hideSpinner();
|
||||||
toast_error(rel.msg);
|
toast_error(rel.msg);
|
||||||
document.getElementById('loadDataText').innerText = "比對資料出錯了!";
|
document.getElementById('loadDataText').innerText = "比對資料出錯了!";
|
||||||
return;
|
return;
|
||||||
@ -221,6 +226,9 @@
|
|||||||
var dateTime = date + ' ' + time;
|
var dateTime = date + ' ' + time;
|
||||||
document.getElementById('loadDataText').innerText = "比對完成 \n" + dateTime;
|
document.getElementById('loadDataText').innerText = "比對完成 \n" + dateTime;
|
||||||
},
|
},
|
||||||
|
error: function () {
|
||||||
|
hideSpinner();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
|
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
|
||||||
var dateTime = date + ' ' + time;
|
var dateTime = date + ' ' + time;
|
||||||
|
@ -180,7 +180,7 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
v2.system_key subfull_name,
|
v2.system_key subfull_name,
|
||||||
v2.system_priority subpriority
|
v2.system_priority subpriority
|
||||||
from building_menu me
|
from building_menu me
|
||||||
left join building b on b.building_tag = me.building_tag
|
left join building b on b.building_tag = me.building_tag and b.deleted = 0
|
||||||
left join variable v1 on me.main_system_tag = v1.system_value and v1.deleted = 0 and v1.system_type = 'device_system_category_layer2'
|
left join variable v1 on me.main_system_tag = v1.system_value and v1.deleted = 0 and v1.system_type = 'device_system_category_layer2'
|
||||||
left join variable v2 on me.sub_system_tag = v2.system_value and v2.deleted = 0 and v2.system_type = 'device_system_category_layer3'
|
left join variable v2 on me.sub_system_tag = v2.system_value and v2.deleted = 0 and v2.system_type = 'device_system_category_layer3'
|
||||||
inner join (
|
inner join (
|
||||||
|
@ -13,6 +13,7 @@ using System.Data.SqlTypes;
|
|||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using Org.BouncyCastle.Utilities.Collections;
|
using Org.BouncyCastle.Utilities.Collections;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Repository.BackendRepository.Implement
|
namespace Repository.BackendRepository.Implement
|
||||||
{
|
{
|
||||||
@ -409,18 +410,18 @@ namespace Repository.BackendRepository.Implement
|
|||||||
|
|
||||||
//device有,niagara沒有,is_link 更新成 0
|
//device有,niagara沒有,is_link 更新成 0
|
||||||
sb.Append($@" SET SQL_SAFE_UPDATES = 0;
|
sb.Append($@" SET SQL_SAFE_UPDATES = 0;
|
||||||
UPDATE device d
|
UPDATE device
|
||||||
SET d.is_link = 0
|
SET is_link = 0
|
||||||
WHERE d.is_link = 1 and not exists (select niagara_tags from import_niagara_tag where niagara_tags = d.device_number);");
|
WHERE is_link = 1 AND device_number NOT IN (SELECT niagara_tags FROM import_niagara_tag);");
|
||||||
await conn.ExecuteAsync(sb.ToString(), commandTimeout: 100);
|
await conn.ExecuteAsync(sb.ToString(), commandTimeout: 100);
|
||||||
|
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
|
|
||||||
// device_node 有, niagara沒有, is_link 更新成 0
|
// device_node 有, niagara沒有, is_link 更新成 0
|
||||||
sb.Append($@" SET SQL_SAFE_UPDATES = 0;
|
sb.Append($@" SET SQL_SAFE_UPDATES = 0;
|
||||||
UPDATE device_node d
|
UPDATE device_node
|
||||||
SET d.is_link = 0
|
SET is_link = 0
|
||||||
WHERE d.is_link = 1 and not exists (select niagara_tags from import_niagara_tag where niagara_tags = d.device_number);");
|
WHERE is_link = 1 AND device_number NOT IN (SELECT niagara_tags FROM import_niagara_tag);");
|
||||||
await conn.ExecuteAsync(sb.ToString(), commandTimeout: 100);
|
await conn.ExecuteAsync(sb.ToString(), commandTimeout: 100);
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
@ -767,10 +768,16 @@ namespace Repository.BackendRepository.Implement
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.Append("update device d inner JOIN import_niagara_tag m ON m.niagara_tags = d.device_number " +
|
sb.Append(@"UPDATE device d
|
||||||
"set d.full_name=m.device_full_name " +
|
INNER JOIN import_niagara_tag m ON m.niagara_tags = d.device_number
|
||||||
"where m.device_full_name<>d.full_name;");
|
SET d.full_name = m.device_full_name
|
||||||
await conn.ExecuteAsync(sb.ToString(), commandTimeout: 999);
|
WHERE NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM import_niagara_tag m2
|
||||||
|
WHERE m2.niagara_tags = d.device_number
|
||||||
|
AND m2.device_full_name = d.full_name
|
||||||
|
);");
|
||||||
|
await conn.ExecuteAsync(sb.ToString());
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
@ -863,42 +870,18 @@ namespace Repository.BackendRepository.Implement
|
|||||||
using (IDbConnection conn = GetDbConnection())
|
using (IDbConnection conn = GetDbConnection())
|
||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled, new TimeSpan(0, 5, 0)))
|
StringBuilder sb = new StringBuilder();
|
||||||
|
List<DeviceDisasterOutput> deviceDisaster = new List<DeviceDisasterOutput>();
|
||||||
|
List<DeviceDisasterOutput> device = new List<DeviceDisasterOutput>();
|
||||||
|
using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.Append("select * from device_disaster;");
|
sb.Append("select * from device_disaster;");
|
||||||
var deviceDisaster = (await conn.QueryAsync<DeviceDisasterOutput>(sb.ToString())).ToList();
|
deviceDisaster = (await conn.QueryAsync<DeviceDisasterOutput>(sb.ToString())).ToList();
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
sb.Append("select * from device where deleted = 0;");
|
sb.Append("select * from device where deleted = 0;");
|
||||||
var device = (await conn.QueryAsync<DeviceDisasterOutput>(sb.ToString())).ToList();
|
device = (await conn.QueryAsync<DeviceDisasterOutput>(sb.ToString())).ToList();
|
||||||
dv = dv.Where(x => device.Any(d => d.device_number == x.value.Split('/')[6])).ToList();
|
|
||||||
|
|
||||||
sb.Clear();
|
|
||||||
var updateList = dv.Where(x => deviceDisaster.Any(dd => dd.device_number == x.value.Split('/')[6] && dd.device_system_value != x.disasterValue));
|
|
||||||
foreach (var d in updateList)
|
|
||||||
{
|
|
||||||
string device_number = d.value.Split('/')[6];
|
|
||||||
sb.Append($"update device_disaster set device_system_value = '{d.disasterValue}' where device_number = '{device_number}'; ");
|
|
||||||
}
|
|
||||||
|
|
||||||
var insertList = dv.Where(x => !deviceDisaster.Any(dd => dd.device_number == x.value.Split('/')[6]));
|
|
||||||
foreach (var d in insertList)
|
|
||||||
{
|
|
||||||
string device_number = d.value.Split('/')[6];
|
|
||||||
string device_guid = device.Where(x => x.device_number == device_number).Select(x => x.device_guid).FirstOrDefault();
|
|
||||||
string device_system_tag = device.Where(x => x.device_number == device_number).Select(x => x.device_system_tag).FirstOrDefault();
|
|
||||||
string device_name_tag = device.Where(x => x.device_number == device_number).Select(x => x.device_name_tag).FirstOrDefault();
|
|
||||||
sb.Append($@"
|
|
||||||
insert into device_disaster
|
|
||||||
(device_guid, device_system_value, device_building_tag, device_system_tag, device_name_tag, device_floor_tag, device_serial_tag, device_number)
|
|
||||||
values ('{device_guid}', '{d.disasterValue}', '{device_number.Split('_')[0]}', '{device_system_tag}', '{device_name_tag}', '{device_number.Split('_')[2]}',
|
|
||||||
'{device_number.Split('_')[4]}', '{device_number}'); ");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(sb.ToString()))
|
|
||||||
await conn.ExecuteAsync(sb.ToString());
|
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
@ -909,6 +892,46 @@ namespace Repository.BackendRepository.Implement
|
|||||||
conn.Close();
|
conn.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dv = dv.Where(x => device.Any(d => d.device_number == x.value.Split('/')[6])).ToList();
|
||||||
|
sb.Clear();
|
||||||
|
var updateList = dv.Where(x => deviceDisaster.Any(dd => dd.device_number == x.value.Split('/')[6] && dd.device_system_value != x.disasterValue)).ToList();
|
||||||
|
foreach (var d in updateList)
|
||||||
|
{
|
||||||
|
string device_number = d.value.Split('/')[6];
|
||||||
|
sb.Append($"update device_disaster set device_system_value = '{d.disasterValue}' where device_number = '{device_number}'; ");
|
||||||
|
}
|
||||||
|
|
||||||
|
var insertList = dv.Where(x => !deviceDisaster.Any(dd => dd.device_number == x.value.Split('/')[6])).ToList();
|
||||||
|
foreach (var d in insertList)
|
||||||
|
{
|
||||||
|
string device_number = d.value.Split('/')[6];
|
||||||
|
string device_guid = device.Where(x => x.device_number == device_number).Select(x => x.device_guid).FirstOrDefault();
|
||||||
|
string device_system_tag = device.Where(x => x.device_number == device_number).Select(x => x.device_system_tag).FirstOrDefault();
|
||||||
|
string device_name_tag = device.Where(x => x.device_number == device_number).Select(x => x.device_name_tag).FirstOrDefault();
|
||||||
|
sb.Append($@"
|
||||||
|
insert into device_disaster
|
||||||
|
(device_guid, device_system_value, device_building_tag, device_system_tag, device_name_tag, device_floor_tag, device_serial_tag, device_number)
|
||||||
|
values ('{device_guid}', '{d.disasterValue}', '{device_number.Split('_')[0]}', '{device_system_tag}', '{device_name_tag}', '{device_number.Split('_')[2]}',
|
||||||
|
'{device_number.Split('_')[4]}', '{device_number}'); ");
|
||||||
|
}
|
||||||
|
|
||||||
|
using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(sb.ToString()))
|
||||||
|
await conn.ExecuteAsync(sb.ToString());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user