2022-10-14 16:08:54 +08:00
using System ;
using System.Collections.Generic ;
using System.Text ;
using System.Configuration ;
using tpDomeWinAPP.Models ;
using System.Data ;
using System.Data.SqlClient ;
using MySql.Data.MySqlClient ;
using Repository.Helper ;
using Repository.BackendRepository.Interface ;
using Dapper ;
2023-07-28 13:31:33 +08:00
using System.Linq ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.Extensions.Logging ;
using FrontendWebApi.Models ;
using Autodesk.Forge.Model ;
using MySql.Data.MySqlClient ;
using System.Data.SqlTypes ;
2022-10-14 16:08:54 +08:00
namespace tpDomeWinAPP.Service
{
public class getDeviceSvc
{
string Connection1 = string . Empty ;
protected readonly IDatabaseHelper _databaseHelper ;
protected string UseDB ;
protected IDbConnection con ;
private readonly IBackendRepository backendRepository ;
public getDeviceSvc ( string Connection_parame = null )
{
if ( ! string . IsNullOrEmpty ( Connection_parame ) )
{
Connection1 = Connection_parame ;
}
else
{
Connection1 = ConfigurationManager . ConnectionStrings [ "dbConStr" ] . ConnectionString ;
}
}
2023-07-28 13:31:33 +08:00
public IDbConnection GetDbConnection ( )
{
IDbConnection conn ;
//if (UseDB == "MSSQL")
//{
// conn = new SqlConnection(Connection1);
//}
//else
//{
//conn = new MySqlConnection(this._databaseHelper.GetMySqlConnectionString());
conn = new MySqlConnection ( ConfigurationManager . ConnectionStrings [ "dbConStr" ] . ConnectionString ) ;
//}
return conn ;
}
//public List<NiagaraTags> getNiagaraPara()
//{
// var sqlObix = $@"SELECT system_value as Value, system_key as Name FROM variable WHERE deleted = 0 AND system_type = 'obixConfig'";
// List<NiagaraTags> result;
// //using (MySqlConnection conn = new MySqlConnection(Connection1))
// //{
// // //CONCAT('{baseURL}', '{deviceKindFilePath}', dk.device_image) AS device_image_url,
// // conn.Open();
// // StringBuilder sb = new StringBuilder();
// // sb.Append(sql);
// // result = conn.Query<NiagaraTags>(sb.ToString()).ToList<NiagaraTags>();
// //}
// //var variableObix = backendRepository.GetAllAsync<Backend.Models.KeyValue>(sqlObix).Result;
// //var obixApiConfig = new Backend.Models.ObixApiConfig();
// //EDFunction ed = new EDFunction();
// //obixApiConfig.ApiBase = variableObix.Where(x => x.Name == "ApiBase").Select(x => x.Value).FirstOrDefault();
// //obixApiConfig.UserName = variableObix.Where(x => x.Name == "UserName").Select(x => x.Value).FirstOrDefault();
// //obixApiConfig.Password = variableObix.Where(x => x.Name == "Password").Select(x => x.Value).FirstOrDefault();
// ////obixApiConfig.UrlSlot = variableObix.Where(x => x.Name == "url_slot").Select(x => x.Value).FirstOrDefault();
// //webRequestService svc = new webRequestService();
// //var data = svc.obixHisQuery_v2(obixApiConfig.ApiBase + "obix/config/Program/ObixQuery/query/", obixApiConfig.ApiBase + "obix/histories", "",
// // obixApiConfig.UserName, obixApiConfig.Password);
// //// ds.AddRange(data);
// return result;
//}
public List < FrontendWebApi . Models . HydroMeterOutput > test_bgWork_sql ( )
{
string jwt_str = null ;
string tableType = "day" ;
string startTime = "2023-07" ;
string endTime = "2023-07-21" ;
List < HydroMeterOutput > apiResult = new List < HydroMeterOutput > ( ) ;
try
{
//using (IDbConnection conn = GetDbConnection())
//{
// try
// {
// var sql = sqlString;
// result = await conn.QueryFirstOrDefaultAsync<A>(sql, param);
// }
// catch (Exception exception)
// {
// throw exception;
// }
// return result;
//}
using ( IDbConnection conn = GetDbConnection ( ) )
{
//CONCAT('{baseURL}', '{deviceKindFilePath}', dk.device_image) AS device_image_url,
startTime = tableType = = "day" | | tableType = = "week"
? startTime + "-01"
: tableType = = "month" | | tableType = = "year" ? startTime + "-01-01"
: null ;
endTime = tableType = = "day" | | tableType = = "week"
? startTime . Split ( "-" ) [ 0 ] + "-" + ( Int32 . Parse ( startTime . Split ( "-" ) [ 1 ] ) + 1 ) . ToString ( ) . PadLeft ( 2 , '0' ) + "-01"
: tableType = = "month" ? ( Int32 . Parse ( startTime . Split ( "-" ) [ 0 ] ) + 1 ) + "-01-01"
: tableType = = "year" ? ( Int32 . Parse ( endTime ) + 1 ) . ToString ( ) + "-01-01"
: null ;
string sqlWhere = "" ;
string sqlGroup = "" ;
string sqlAvgRawData = "" ;
string building_tag = "G6" ;
string dbDateName = startTime . Split ( "-" ) [ 0 ] . ToString ( ) . PadLeft ( 4 , '0' ) + startTime . Split ( "-" ) [ 1 ] . ToString ( ) . PadLeft ( 2 , '0' ) ;
string buildingSql = "" ;
conn . Open ( ) ;
//string tag_quantity = await backendRepository.GetOneAsync<string>("select system_value from variable where system_type = 'obixConfig' and system_key = 'tag_quantity' and deleted = 0");
string tag_quantity = conn . Query < string > ( "select system_value from variable where system_type = 'obixConfig' and system_key = 'tag_quantity' and deleted = 0" ) . FirstOrDefault ( ) . ToString ( ) ;
if ( tag_quantity = = "5" )
buildingSql = " and SUBSTRING_INDEX(device_number, '_', 1) = @building_tag " ;
else
buildingSql = " and SUBSTRING_INDEX(SUBSTRING_INDEX(device_number, '_', 2), '_', -1) = @building_tag " ;
//if (input.floor_tag.Count > 0)
//{
// if (tag_quantity == "5")
// sqlWhere = $@" and substring_index(substring_index(device_number, '_', 3), '_', -1) in @floor_tag ";
// else
// sqlWhere = $@" and substring_index(substring_index(device_number, '_', 5), '_', -1) in @floor_tag ";
//}
if ( tableType = = "year" )
{
sqlGroup = $@" group by year(start_timestamp), year(end_timestamp), device_number " ;
sqlAvgRawData = " round(avg(avg_rawdata), 2) as avg_rawdata, year(start_timestamp) as start_timestamp, year(end_timestamp) as end_timestamp " ;
}
else
sqlAvgRawData = " round(avg_rawdata, 2) as avg_rawdata, start_timestamp, end_timestamp " ;
var table = tableType = = "year" ? "archive_electric_meter_month" : "archive_electric_meter_" + tableType + ( tableType = = "day" ? "_" + dbDateName : "" ) ;
var schema = conn . Query < string > ( $"select system_value from variable where system_type = 'project_name'" ) . FirstOrDefault ( ) ;
var isTable = conn . Query < string > ( $"select table_name from information_schema.tables where table_name = '{table}' and table_schema = '{schema.Split('/')[0]}'" ) . FirstOrDefault ( ) ;
if ( string . IsNullOrEmpty ( isTable ) ) //check for has table or not
{
//MessageBox.Show("Empty");
}
var dateFormat = tableType = = "day" | | tableType = = "week" ? "%Y-%m-%d" : tableType = = "month" ? "%Y-%m" : tableType = = "year" ? "%Y" : null ;
var aemmEndDate = tableType = = "year" ? $"year(DATE_ADD(fd.date, INTERVAL +1 {tableType}))" : $"DATE_ADD(fd.date, INTERVAL +1 {tableType})" ;
var aemmStaDate = tableType = = "year" ? "year(fd.date)" : "fd.date" ;
var sql = $ @ "set @i = -1;
select fd . device_number , case when aemm . avg_rawdata = - 1 then ' NaN ' when aemm . avg_rawdata is null then 0.00 else aemm . avg_rawdata end as avg_rawdata , DATE_FORMAT ( fd . date , @dateFormat ) as timestamp
from (
select *
from (
(
SELECT DATE ( ADDDATE ( @startTime , INTERVAL @i : = @i + 1 day ) ) AS date
FROM { table }
HAVING @i < TIMESTAMPDIFF ( { tableType } , @startTime , ADDDATE ( @endTime , INTERVAL - 1 DAY ) )
) d ,
(
select device_number
from { table }
where start_timestamp > = @startTime and end_timestamp < @endTime and point = ' KWH ' { buildingSql }
{ sqlWhere }
group by device_number
) dn
)
) fd
left join (
select device_number , { sqlAvgRawData }
from { table }
where start_timestamp > = @startTime and end_timestamp < @endTime and point = ' KWH ' { buildingSql }
{ sqlWhere } { sqlGroup }
) aemm on aemm . start_timestamp > = { aemmStaDate } and aemm . end_timestamp < { aemmEndDate } and aemm . device_number = fd . device_number
order by fd . device_number , fd . date ";
var rawData = conn . Query < FrontendWebApi . Models . HydroMeterRawDataOutput > ( sql ,
new { startTime = startTime , endtime = endTime , building_tag = building_tag , dateFormat = dateFormat } ) ;
List < HydroMeterOutput > list = new List < HydroMeterOutput > ( ) ;
if ( tag_quantity = = "5" )
{
list = rawData
. GroupBy ( x = > new { building_tag = x . device_number . Split ( "_" ) [ 0 ] , floor_tag = x . device_number . Split ( "_" ) [ 2 ] , device_serial_tag = x . device_number . Split ( "_" ) [ 4 ] , device_number = x . device_number } )
. Select ( x = > new FrontendWebApi . Models . HydroMeterOutput { building_tag = x . Key . building_tag , floor_tag = x . Key . floor_tag , device_serial_tag = x . Key . device_serial_tag , device_number = x . Key . device_number } )
. ToList ( ) ;
}
else
{
list = rawData
. GroupBy ( x = > new { building_tag = x . device_number . Split ( "_" ) [ 1 ] , floor_tag = x . device_number . Split ( "_" ) [ 4 ] , device_master = x . device_number . Split ( "_" ) [ 5 ] , device_serial_tag = x . device_number . Split ( "_" ) [ 7 ] , device_number = x . device_number } )
. Select ( x = > new FrontendWebApi . Models . HydroMeterOutput { building_tag = x . Key . building_tag , floor_tag = x . Key . floor_tag , device_serial_tag = x . Key . device_serial_tag , device_master = x . Key . device_master , device_number = x . Key . device_number } )
. ToList ( ) ;
}
foreach ( var l in list )
{
l . rawData = new List < HydroMeterRawDataOutput > ( ) ;
l . device_full_name = conn . Query < string > ( $"select full_name from device where device_number = '{l.device_number}'" ) . FirstOrDefault ( ) ;
if ( tag_quantity = = "5" )
{
l . rawData . AddRange (
rawData . Where ( x = > x . device_number . Split ( "_" ) [ 0 ] = = l . building_tag & & x . device_number . Split ( "_" ) [ 2 ] = = l . floor_tag & & x . device_number . Split ( "_" ) [ 4 ] = = l . device_serial_tag )
) ;
}
else
{
l . rawData . AddRange (
rawData . Where ( x = > x . device_number . Split ( "_" ) [ 1 ] = = l . building_tag & & x . device_number . Split ( "_" ) [ 4 ] = = l . floor_tag & & x . device_number . Split ( "_" ) [ 5 ] = = l . device_master & & x . device_number . Split ( "_" ) [ 7 ] = = l . device_serial_tag )
) ;
}
l . building_name = conn . Query < string > ( "select full_name from building where building_tag = @building_tag and deleted = 0" ,
new { building_tag = l . building_tag } ) . FirstOrDefault ( ) ;
l . total = l . rawData . Where ( x = > x . avg_rawdata ! = "NaN" ) . Sum ( x = > decimal . Parse ( x . avg_rawdata ? ? "0" , System . Globalization . NumberStyles . Float ) ) . ToString ( ) ;
//l.price = input.price.HasValue
// ? (Math.Round(input.price.Value, 2)).ToString()
// : Math.Round((await backendRepository.GetOneAsync<decimal>("select system_value from variable where system_type = 'ElectricPrice' and deleted = 0")), 2).ToString();
l . price = "5" ;
l . total_price = Math . Round ( ( Decimal . Parse ( l . total ) * Decimal . Parse ( l . price ) ) , 2 ) . ToString ( ) ;
}
//apiResult.Code = "0000";
//apiResult.Data = list;
return list ;
}
}
catch ( Exception exception )
{
throw exception . InnerException ;
//apiResult.Code = "9999";
//apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
//string json = System.Text.Json.JsonSerializer.Serialize(input);
//Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
//Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
}
public List < tpDomeWinAPP . Models . Device > getDevices ( )
2022-10-14 16:08:54 +08:00
{
using ( SqlConnection conn = new SqlConnection ( Connection1 ) )
{
//CONCAT('{baseURL}', '{deviceKindFilePath}', dk.device_image) AS device_image_url,
conn . Open ( ) ;
var sql = $ @ "SELECT
d . * ,
d . full_name AS Device_full_name ,
b . full_name AS Building_full_name ,
ms . full_name AS Main_system_full_name ,
ss . full_name AS Sub_system_full_name ,
f . full_name AS Floor_full_name ,
dk . device_image ,
device_image AS device_image_url ,
dk . device_close_color ,
dk . device_normal_color ,
dk . device_error_color ,
dk . device_normal_flashing ,
dk . device_close_flashing ,
dk . device_error_flashing ,
( SELECT
STRING_AGG ( ISNULL ( system_key , ' ' ) , ',' )
FROM device_disaster dd
JOIN variable v ON v . deleted = 0 AND v . system_type = ' disaster ' AND v . system_value = dd . device_system_value
WHERE dd . device_guid = d . device_guid
) AS Device_disaster_type_text
FROM (
SELECT *
FROM device d
WHERE
- - d . building_guid = @Building_guid
- - AND d . main_system_guid = @Main_system_guid
- - AND d . sub_system_guid = @Sub_system_guid
- - AND d . floor_guid = @Floor_guid AND
d . deleted = 0
) d
JOIN building b ON d . building_guid = b . building_guid
JOIN main_system ms ON d . main_system_guid = ms . main_system_guid
JOIN sub_system ss ON d . sub_system_guid = ss . sub_system_guid
JOIN floor f ON d . floor_guid = f . floor_guid
LEFT JOIN device_kind dk ON dk . device_building_tag = d . device_building_tag
AND dk . device_system_tag = d . device_system_tag
- - AND dk . device_floor_tag = d . device_floor_tag
AND dk . device_name_tag = d . device_name_tag
ORDER BY d . priority ASC , d . device_number ASC
";
2023-07-28 13:31:33 +08:00
var devices = conn . Query < tpDomeWinAPP . Models . Device > ( sql ) . AsList < tpDomeWinAPP . Models . Device > ( ) ;
2022-10-14 16:08:54 +08:00
return devices ;
//var sql_node = $@"SELECT
// dn.device_node_guid,
// dn.device_guid,
// dn.full_name AS Device_node_full_name,
// dn.device_node_coordinate,
// dn.priority
// FROM device_node dn
// WHERE dn.deleted = 0 AND dn.device_guid = @device_guid
// ORDER BY dn.priority ASC";
//foreach (var device in devices)
//{
// device.Device_nodes = await backendRepository.GetAllAsync<DeviceNode>(sql_node, new { device_guid = device.Device_guid });
//}
}
}
#region insert DB
public bool clearTb_importData ( )
{
bool result = false ;
using ( SqlConnection conn = new SqlConnection ( Connection1 ) )
{
//CONCAT('{baseURL}', '{deviceKindFilePath}', dk.device_image) AS device_image_url,
conn . Open ( ) ;
StringBuilder sb = new StringBuilder ( ) ;
int i = 0 ;
sb . Append ( $ @ " truncate table importExcel;
truncate table importData_batch ; ");
try
{
conn . Execute ( sb . ToString ( ) ) ;
}
catch ( Exception ex )
{
throw ex ;
}
}
return result ;
}
public bool insertDB ( DataTable dt )
{
bool result = false ;
using ( SqlConnection conn = new SqlConnection ( Connection1 ) )
{
//CONCAT('{baseURL}', '{deviceKindFilePath}', dk.device_image) AS device_image_url,
conn . Open ( ) ;
StringBuilder sb = new StringBuilder ( ) ;
int i = 0 ;
foreach ( DataRow row in dt . Rows )
{
sb . Append ( $@" insert importExcel(intro, old_tags, new_tags, floor, device_name, device_note, device_type, device_number, atDateTime) values('" +
row [ "tag_name_zh" ] . ToString ( ) + "', '" +
row [ "old_tags" ] . ToString ( ) + "', '" +
row [ "new_tags" ] . ToString ( ) + "', '" +
row [ "floor" ] . ToString ( ) + "', '" +
row [ "device_name" ] . ToString ( ) + "', '" +
row [ "device_note" ] . ToString ( ) + "', '" +
row [ "device_type" ] . ToString ( ) + "', '" +
row [ "device_number" ] . ToString ( ) + "' , getdate());" ) ;
i + + ;
try
{
if ( i > = 100 )
{
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
i = 0 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
}
if ( sb . Length > 0 )
{
conn . Execute ( sb . ToString ( ) ) ;
}
}
return result ;
}
public bool insertDB_batch ( ) {
bool result = false ;
using ( SqlConnection conn = new SqlConnection ( Connection1 ) )
{
//CONCAT('{baseURL}', '{deviceKindFilePath}', dk.device_image) AS device_image_url,
conn . Open ( ) ;
StringBuilder sb = new StringBuilder ( ) ;
sb . Append ( $ @ " select old_tags, new_tags, tag_no5, serial, tagName from
(
select old_tags , new_tags , tagName tag_no5
from importExcel a CROSS APPLY [ Func_StringSplit ] ( a . new_tags , '_' )
where serial = 5 and new_tags like ' % ~ % '
) b CROSS APPLY [ Func_StringSplit ] ( b . tag_no5 , '~' )
where serial = 2 ; ");
var batchData = conn . Query < Device_batch > ( sb . ToString ( ) ) ;
int i = 0 ;
sb . Clear ( ) ;
foreach ( var row in batchData )
{
var ss = row . tag_no5 . Split ( '~' ) ;
int start_num = int . Parse ( ss [ 0 ] ) ;
int end_num = int . Parse ( ss [ 1 ] ) ;
var ss_old = row . old_tags . Split ( '_' ) ;
var ss_new = row . new_tags . Split ( '_' ) ;
string vv5 = string . Empty ;
//if (row.new_tags == "H_M10_B4F_FCU_001~108")
//{
// Console.WriteLine("here");
//}
for ( int j = 1 ; j < = end_num ; j + + )
{
switch ( ss [ 0 ] . Length )
{
case 2 : vv5 = ( j < = 9 ) ? "0" + j . ToString ( ) : j . ToString ( ) ; break ;
case 3 :
if ( j < = 9 )
// vv5 = "00" + j.ToString();
vv5 = "0" + j . ToString ( ) ;
else if ( j < = 99 )
// vv5 = "0" + j.ToString();
vv5 = j . ToString ( ) ;
else vv5 = j . ToString ( ) ;
break ;
}
string old_tag = ss_old [ 0 ] + "_" + ss_old [ 1 ] + "_" + ss_old [ 2 ] + "_" + ss_old [ 3 ] + "_" + vv5 ;
string new_tag = ss_new [ 0 ] + "_" + ss_new [ 1 ] + "_" + ss_new [ 2 ] + "_" + ss_new [ 3 ] + "_" + vv5 ;
sb . Append ( $@" insert importData_batch(old_tags, new_tags) values('" +
old_tag + "', '" +
new_tag + "'); " ) ;
}
try
{
if ( sb . Length > 0 )
{
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
result = true ;
}
}
catch ( Exception ex )
{
throw ex ;
}
}
try
{
#region 更 新 web 端 新 匯 入 的 excel
sb . Append ( $@" update device set device_number_old = device_number where device_number_old is null" ) ;
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
//1.2.更新欄位 device_number_old
sb . Append ( $ @ " update device set device_system_tag_old = b.tagName
from ( select device_number , device_number_old , serial , tagName
2022-10-19 13:24:45 +08:00
from device a CROSS APPLY [ Func_StringSplit ] ( a . device_number , '_' )
2022-10-14 16:08:54 +08:00
where serial = 2 and device_system_tag_old is null ) b
where device . device_number_old = b . device_number_old and device_system_tag_old is null ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
#endregion
sb . Append ( "delete from importExcel where new_tags like '%~%'" ) ;
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
sb . Append ( @ "insert importExcel(new_tags, old_tags)
select new_tags , old_tags from importData_batch ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
#region 製 作 比 對 用 table : import_dbTag_niagaraTag
#region 判 斷 table 是 否 存 在
string s1 = @ " CREATE TABLE [dbo].[import_dbTag_niagaraTag](
[device_guid] [ varchar ] ( 36 ) NOT NULL ,
[full_name] [ varchar ] ( 50 ) NOT NULL ,
[device_number] [ varchar ] ( 50 ) NOT NULL ,
[niagaraTag] [ varchar ] ( 50 ) NOT NULL ,
[device_coordinate] [ varchar ] ( 50 ) NULL ,
[device_number_old] [ varchar ] ( 50 ) NULL ,
[device_building_tag] [ varchar ] ( 50 ) NOT NULL ,
[device_system_tag] [ varchar ] ( 50 ) NOT NULL ,
[device_system_tag_old] [ varchar ] ( 50 ) NULL ,
[device_floor_tag] [ varchar ] ( 50 ) NOT NULL ,
[device_name_tag] [ varchar ] ( 50 ) NOT NULL ,
[device_serial_tag] [ varchar ] ( 50 ) NOT NULL ,
[atDateTime] [ smalldatetime ] NULL ,
CONSTRAINT [ PK_import_dbTag_niagaraTag ] PRIMARY KEY CLUSTERED
(
[device_guid] ASC
) WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [ PRIMARY ]
) ON [ PRIMARY ] ; ";
//string ss = @"IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'import_dbTag_niagaraTag'))
// BEGIN
// drop table import_dbTag_niagaraTag;
// END";
sb . Append ( "truncate table import_dbTag_niagaraTag" ) ;
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
#endregion
sb . Append ( $ @ " insert import_dbTag_niagaraTag(device_guid, full_name, device_number, niagaraTag, device_coordinate, device_number_old, device_building_tag, device_system_tag, device_system_tag_old, device_floor_tag, device_name_tag, device_serial_tag, atDateTime)
select device_guid , full_name , device_number , ' ' , device_coordinate , device_number_old , device_building_tag , device_system_tag , device_system_tag_old , device_floor_tag , device_name_tag , device_serial_tag , getDate ( )
from device where deleted = 0 ; ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
#region update niagara_tags
sb . Clear ( ) ;
sb . Append ( $ @ "update import_dbTag_niagaraTag set niagaraTag = b.niagara_tags
2022-10-19 13:24:45 +08:00
from [ dbo ] . [ import_niagara_tag ] b
2022-10-14 16:08:54 +08:00
where import_dbTag_niagaraTag . device_number = b . niagara_tags ");
conn . Execute ( sb . ToString ( ) ) ;
#endregion
#endregion 製 作 比 對 用 table : import_dbTag_niagaraTag
sb . Append ( @ "update import_dbTag_niagaraTag set device_number = b.new_tags,
device_system_tag = b . device_system_tag
from (
select old_tags , new_tags , serial , tagName as device_system_tag
from importExcel a CROSS APPLY [ Func_StringSplit ] ( a . new_tags , '_' )
where serial = 2 ) b
where [ import_dbTag_niagaraTag ] . device_number_old = b . old_tags ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
sb . Append ( @ "update [dbo].[device] set device.device_number = b.new_tags,
device_system_tag = b . device_system_tag
from (
select old_tags , new_tags , serial , tagName as device_system_tag
from importExcel a CROSS APPLY [ Func_StringSplit ] ( a . new_tags , '_' )
where serial = 2 ) b
where [ device ] . device_number_old = b . old_tags ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
sb . Append ( @ "update device_import_ckeck_temp set device_system_tag = b.device_system_tag,
device_number = b . device_number
from device b
where device_import_ckeck_temp . device_building_tag = b . device_building_tag and
device_import_ckeck_temp . device_system_tag_old = b . device_system_tag_old and
device_import_ckeck_temp . device_number_old = b . device_number_old
and device_import_ckeck_temp . device_number < > b . device_number ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
sb . Append ( @ "update device_kind set device_system_tag = b.device_system_tag
from device b
where device_kind . device_building_tag = b . device_building_tag and
device_kind . device_system_tag_old = b . device_system_tag_old and
device_kind . device_name_tag = b . device_name_tag ");
conn . Execute ( sb . ToString ( ) ) ;
sb . Clear ( ) ;
result = true ;
}
catch ( Exception ex )
{
throw ex ;
}
}
return result ;
}
#endregion
}
}