Merge branch 'master' of https://gitea.mjm-staging.developers-homelab.net/BIMS/BIMS
This commit is contained in:
		
						commit
						23bd391c5d
					
				@ -389,6 +389,17 @@ namespace Backend.Controllers
 | 
			
		||||
                                ORDER BY bm.priority, mv.system_priority ASC, sv.system_priority ASC, sv.created_at DESC ",
 | 
			
		||||
                new { building_tag = post.building_tag, MainList = post.MainList, main_system_type = main_system_type, sub_system_type = sub_system_type });
 | 
			
		||||
 | 
			
		||||
                if (buildMenuTables.Any())
 | 
			
		||||
                {
 | 
			
		||||
                    var data = buildMenuTables.Where(x => x.main_system_tag == "S" && x.sub_system_tag.Contains("CA")).ToList();
 | 
			
		||||
                    foreach (var d in data)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (d.sub_system_tag.Length == 3 && !(d.building_tag[0] == d.sub_system_tag[0]))
 | 
			
		||||
                        {
 | 
			
		||||
                            buildMenuTables.Remove(d);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = buildMenuTables;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -557,21 +557,33 @@ namespace Backend.Controllers
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    Dictionary<string, object> Device_itemDic = new Dictionary<string, object>()
 | 
			
		||||
                    {
 | 
			
		||||
                        { "@full_name", device_Item.full_name},
 | 
			
		||||
                        { "@points", device_Item.points},
 | 
			
		||||
                        { "@unit", device_Item.unit},
 | 
			
		||||
                        { "@is_show", device_Item.is_show},
 | 
			
		||||
                        { "@is_show_riserDiagram", device_Item.is_show_riserDiagram},
 | 
			
		||||
                        { "@is_controll", device_Item.is_controll},
 | 
			
		||||
                        { "@is_bool", device_Item.is_bool},
 | 
			
		||||
                        { "@is_show_history", device_Item.is_show_history},
 | 
			
		||||
                        { "@updated_by", myUserInfo.Userinfo_guid},
 | 
			
		||||
                        { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
 | 
			
		||||
                    };
 | 
			
		||||
                    var sql = $@"SELECT di.id FROM device_item di 
 | 
			
		||||
                                                    WHERE di.deleted = 0 AND device_system_tag = @device_system_tag and device_name_tag = @device_name_tag and points = @points";
 | 
			
		||||
 | 
			
		||||
                    await backendRepository.UpdateOneByCustomTable(Device_itemDic, "device_item", "id='" + device_Item.id + "'");
 | 
			
		||||
                    var deviceItemId = await backendRepository.GetAllAsync<int>(sql,
 | 
			
		||||
                                            new { points = device_Item.points, device_system_tag = main_tag, device_name_tag = sub_tag });
 | 
			
		||||
 | 
			
		||||
                    if (deviceItemId.Count() > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        foreach (var id in deviceItemId)
 | 
			
		||||
                        {
 | 
			
		||||
                            Dictionary<string, object> Device_itemDic = new Dictionary<string, object>()
 | 
			
		||||
                            {
 | 
			
		||||
                                { "@full_name", device_Item.full_name},
 | 
			
		||||
                                { "@points", device_Item.points},
 | 
			
		||||
                                { "@unit", device_Item.unit},
 | 
			
		||||
                                { "@is_show", device_Item.is_show},
 | 
			
		||||
                                { "@is_show_riserDiagram", device_Item.is_show_riserDiagram},
 | 
			
		||||
                                { "@is_controll", device_Item.is_controll},
 | 
			
		||||
                                { "@is_bool", device_Item.is_bool},
 | 
			
		||||
                                { "@is_show_history", device_Item.is_show_history},
 | 
			
		||||
                                { "@updated_by", myUserInfo.Userinfo_guid},
 | 
			
		||||
                                { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
 | 
			
		||||
                            };
 | 
			
		||||
 | 
			
		||||
                            await backendRepository.UpdateOneByCustomTable(Device_itemDic, "device_item", "id='" + id + "'");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    apiResult.Code = "0000";
 | 
			
		||||
                    apiResult.Msg = "修改成功";
 | 
			
		||||
@ -652,7 +664,7 @@ namespace Backend.Controllers
 | 
			
		||||
            {
 | 
			
		||||
                string sWhere = @$"deleted = @Deleted AND id = @id";
 | 
			
		||||
 | 
			
		||||
                object param = new { Deleted = 0, id = id};
 | 
			
		||||
                object param = new { Deleted = 0, id = id };
 | 
			
		||||
 | 
			
		||||
                var device_Item = await backendRepository.GetOneAsync<Device_item>("device_item", sWhere, param);
 | 
			
		||||
 | 
			
		||||
@ -663,7 +675,9 @@ namespace Backend.Controllers
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await backendRepository.DeleteOne(id.ToString(), "device_item", "id");
 | 
			
		||||
                string sql = $@"update device_item set deleted = 1 where device_system_tag = '{device_Item.device_system_tag}' and device_name_tag = '{device_Item.device_name_tag}' and deleted = 0
 | 
			
		||||
                                and points = '{device_Item.points}'";
 | 
			
		||||
                await backendRepository.ExecuteSql(sql);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Msg = "刪除成功";
 | 
			
		||||
 | 
			
		||||
@ -520,7 +520,7 @@ namespace Backend.Controllers
 | 
			
		||||
                    {
 | 
			
		||||
                        buildingGuid = $" AND ap.building_tag = '{post.SelectedBuild}'";
 | 
			
		||||
                    }
 | 
			
		||||
                    var sqlString = @$" SELECT ap.AuthCode, ap.MainName, ap.SubName FROM auth_page ap
 | 
			
		||||
                    var sqlString = @$" SELECT ap.AuthCode, ap.MainName, ap.SubName, ap.ShowView FROM auth_page ap
 | 
			
		||||
                                    WHERE ap.AuthType='{post.SelectedAuthType}' 
 | 
			
		||||
                                    {buildingGuid}
 | 
			
		||||
                                    AND ap.AuthCode NOT IN ( 
 | 
			
		||||
@ -531,6 +531,23 @@ namespace Backend.Controllers
 | 
			
		||||
	                                    AND ap.AuthType='{post.SelectedAuthType}'
 | 
			
		||||
                                     )";
 | 
			
		||||
                    authPage = await backendRepository.GetAllAsync<AuthPage>(sqlString);
 | 
			
		||||
 | 
			
		||||
                    if (authPage.Any())
 | 
			
		||||
                    {
 | 
			
		||||
                        var sub_system = await backendRepository.GetAllAsync<VariableInfo>($@"select * from variable where system_type = 'device_system_category_layer3' and system_value LIKE '%CA'
 | 
			
		||||
                                                                                            and LENGTH(system_value) = 3 and system_value != '{post.SelectedBuild[0]}CA'");
 | 
			
		||||
                        if (sub_system.Any())
 | 
			
		||||
                        {
 | 
			
		||||
                            foreach (var d in sub_system)
 | 
			
		||||
                            {
 | 
			
		||||
                                var ap = authPage.Where(x => x.ShowView.Equals(d.id.ToString())).FirstOrDefault();
 | 
			
		||||
                                if (authPage != null)
 | 
			
		||||
                                {
 | 
			
		||||
                                    authPage.Remove(ap);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = authPage;
 | 
			
		||||
 | 
			
		||||
@ -121,6 +121,7 @@ namespace Backend.Models
 | 
			
		||||
        public string AuthCode { get; set; }
 | 
			
		||||
        public string MainName { get; set; }
 | 
			
		||||
        public string SubName { get; set; }
 | 
			
		||||
        public string ShowView { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PostSaveRoleAuth
 | 
			
		||||
 | 
			
		||||
@ -235,24 +235,23 @@ namespace Backend.Services.Implement
 | 
			
		||||
 | 
			
		||||
                        result.Add(row);
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (tagName.Split('_').Length == 6) 
 | 
			
		||||
                    else if (tagName.Split('_').Length == 7) 
 | 
			
		||||
                    { //巨蛋 tag 5 段版本
 | 
			
		||||
                        ImpNiaItem row = new ImpNiaItem();
 | 
			
		||||
                        if (tagName.Split('_')[1] == "S") //for security system
 | 
			
		||||
                        if (tagName.Split('_')[2] == "S" || tagName.Split('_')[2] == "B" || tagName.Split('_')[2] == "CWB") //for security system and parking system
 | 
			
		||||
                        {
 | 
			
		||||
                            row.device_building_tag = tagName.Split('_')[0];
 | 
			
		||||
                            row.device_system_tag = tagName.Split('_')[1];
 | 
			
		||||
                            row.device_floor_tag = tagName.Split('_')[2];
 | 
			
		||||
                            row.device_name_tag = tagName.Split('_')[3];
 | 
			
		||||
                            row.device_point_name = tagName.Split('_')[5];
 | 
			
		||||
                            row.device_building_tag = tagName.Split('_')[1];
 | 
			
		||||
                            row.device_system_tag = tagName.Split('_')[2];
 | 
			
		||||
                            row.device_floor_tag = tagName.Split('_')[3];
 | 
			
		||||
                            row.device_name_tag = tagName.Split('_')[4];
 | 
			
		||||
                            row.device_point_name = tagName.Split('_')[6];
 | 
			
		||||
                        }
 | 
			
		||||
                        else //for normal
 | 
			
		||||
                        {
 | 
			
		||||
                            row.device_building_tag = tagName.Split('_')[0];
 | 
			
		||||
                            //row.device_system_tag = tagName.Split('_')[1];
 | 
			
		||||
                            row.device_floor_tag = tagName.Split('_')[2];
 | 
			
		||||
                            row.device_name_tag = tagName.Split('_')[1];
 | 
			
		||||
                            row.device_point_name = tagName.Split('_')[5];
 | 
			
		||||
                            row.device_building_tag = tagName.Split('_')[1];
 | 
			
		||||
                            row.device_floor_tag = tagName.Split('_')[3];
 | 
			
		||||
                            row.device_name_tag = tagName.Split('_')[2];
 | 
			
		||||
                            row.device_point_name = tagName.Split('_')[6];
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        row.parent_path = stationName;
 | 
			
		||||
@ -288,7 +287,7 @@ namespace Backend.Services.Implement
 | 
			
		||||
                }
 | 
			
		||||
                else if (n.name.Split('/').Length == 7) // Arena/D2/CWB/L110/CAP/D2_CWB_L110_CAP_MET1/Summery
 | 
			
		||||
                {
 | 
			
		||||
                    if (n.name.Split('/')[3] == "S" || n.name.Split('/')[3] == "CWB") //for security system and CWB system
 | 
			
		||||
                    if (n.name.Split('/')[2] == "S" || n.name.Split('/')[2] == "B" || n.name.Split('/')[2] == "CWB") //for security system and CWB system
 | 
			
		||||
                    {
 | 
			
		||||
                        result.Add(new ImpNiaItem {
 | 
			
		||||
                            device_building_tag = n.name.Split('/')[1],
 | 
			
		||||
 | 
			
		||||
@ -22,9 +22,9 @@
 | 
			
		||||
      //"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
 | 
			
		||||
      //"Database": "iuaY0h0+TWkir44/eZLDqw==", //tpe_dome_office
 | 
			
		||||
      //"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
 | 
			
		||||
      //"Database": "+5RAiFLJVU+LRyDxF1K/pcLZaoZa4k/thZqF6xKoCag=", //dome_online_0821
 | 
			
		||||
      "Database": "+5RAiFLJVU+LRyDxF1K/pcLZaoZa4k/thZqF6xKoCag=", //dome_online_0821
 | 
			
		||||
      //"Database": "2U+9jYGy0dCbMzLaguBXow==", //tpe_dome_mall
 | 
			
		||||
      "Database": "FbHCCU4CapG9UryANXC1W+iMe403Bd82RnA7bCNVbL0=", //ibms_dome_cinema,
 | 
			
		||||
      //"Database": "FbHCCU4CapG9UryANXC1W+iMe403Bd82RnA7bCNVbL0=", //ibms_dome_cinema,
 | 
			
		||||
      "Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
 | 
			
		||||
      "Password": "FVAPxztxpY4gJJKQ/se4bQ=="
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
@ -585,7 +585,7 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
                                    left join floor f on d.device_floor_tag = f.full_name and f.deleted = 0
 | 
			
		||||
                                    {disasterjoinsql}
 | 
			
		||||
                                    LEFT JOIN building_menu bm ON d.device_building_tag = bm.building_tag AND d.device_system_tag = bm.main_system_tag AND d.device_name_tag = bm.sub_system_tag
 | 
			
		||||
                                    where d.deleted = 0 and d.device_building_tag = '{post.building_tag}' {sWhere}
 | 
			
		||||
                                    where d.deleted = 0 and d.is_link = 1 and d.device_building_tag = '{post.building_tag}' {sWhere} 
 | 
			
		||||
                                    order by d.priority ASC, left(device_serial_tag, LENGTH(device_serial_tag) - 1) ASC";
 | 
			
		||||
 | 
			
		||||
                var devicelist = await backendRepository.GetAllAsync<DeviceFloor>(sql);
 | 
			
		||||
 | 
			
		||||
@ -283,7 +283,7 @@ namespace Repository.BackendRepository.Implement
 | 
			
		||||
                            sb.Append($@" update import_niagara_item a join dic_system b 
 | 
			
		||||
				                                on a.device_name_tag COLLATE utf8mb4_0900_ai_ci = b.s2_code COLLATE utf8mb4_0900_ai_ci
 | 
			
		||||
                                        set device_system_tag = b.s1_code 
 | 
			
		||||
                                        where (device_system_tag <> 'S' and device_system_tag <> 'CWB');");
 | 
			
		||||
                                        where (device_system_tag <> 'S' and device_system_tag <> 'CWB' and device_system_tag <> 'B');");
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        sb.Append($@" update import_niagara_item set full_name = device_point_name where full_name = '' or full_name is null;");
 | 
			
		||||
@ -315,200 +315,236 @@ namespace Repository.BackendRepository.Implement
 | 
			
		||||
            using (IDbConnection conn = GetDbConnection())
 | 
			
		||||
            {
 | 
			
		||||
                conn.Open();
 | 
			
		||||
                using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                    try
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    List<NiagaraTags> result;
 | 
			
		||||
                    StringBuilder sb = new StringBuilder();
 | 
			
		||||
                    StringBuilder sb2 = new StringBuilder();
 | 
			
		||||
                    sb.Append($@"SELECT m.*
 | 
			
		||||
                                FROM import_niagara_tag m
 | 
			
		||||
                                WHERE NOT EXISTS (
 | 
			
		||||
                                    SELECT 1
 | 
			
		||||
                                    FROM device d
 | 
			
		||||
                                    WHERE m.niagara_tags = d.device_number
 | 
			
		||||
                                );");
 | 
			
		||||
                    result = (await conn.QueryAsync<NiagaraTags>(sb.ToString())).ToList<NiagaraTags>();
 | 
			
		||||
 | 
			
		||||
                    sb.Clear();
 | 
			
		||||
                    #region device, device_kind 新增
 | 
			
		||||
                    //新增至device, is_link = 1
 | 
			
		||||
                    if (result.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        List<NiagaraTags> result;
 | 
			
		||||
                        StringBuilder sb = new StringBuilder();
 | 
			
		||||
                        StringBuilder sb2 = new StringBuilder();
 | 
			
		||||
                        sb.Append($@"SELECT m.*
 | 
			
		||||
                                    FROM import_niagara_tag m
 | 
			
		||||
                                    WHERE NOT EXISTS (
 | 
			
		||||
                                        SELECT 1
 | 
			
		||||
                                        FROM device d
 | 
			
		||||
                                        WHERE m.niagara_tags = d.device_number
 | 
			
		||||
                                    );");
 | 
			
		||||
                        result = (await conn.QueryAsync<NiagaraTags>(sb.ToString())).ToList<NiagaraTags>();
 | 
			
		||||
 | 
			
		||||
                        sb.Clear();
 | 
			
		||||
                        #region device, device_kind 新增
 | 
			
		||||
                        //新增至device, is_link = 1
 | 
			
		||||
                        if (result.Count > 0)
 | 
			
		||||
                        var result2 = result.GroupBy(x => new
 | 
			
		||||
                        {
 | 
			
		||||
                            var result2 = result.GroupBy(x => new
 | 
			
		||||
                            {
 | 
			
		||||
                                device_building_tag2 = x.device_building_tag,
 | 
			
		||||
                                device_system_tag2 = x.device_system_tag,
 | 
			
		||||
                                device_name_tag2 = x.device_name_tag
 | 
			
		||||
                            }).Select(x => new Device_item8
 | 
			
		||||
                            {
 | 
			
		||||
                                device_building_tag = x.Key.device_building_tag2,
 | 
			
		||||
                                device_system_tag = x.Key.device_system_tag2,
 | 
			
		||||
                                device_name_tag = x.Key.device_name_tag2
 | 
			
		||||
                            });
 | 
			
		||||
                            device_building_tag2 = x.device_building_tag,
 | 
			
		||||
                            device_system_tag2 = x.device_system_tag,
 | 
			
		||||
                            device_name_tag2 = x.device_name_tag
 | 
			
		||||
                        }).Select(x => new Device_item8
 | 
			
		||||
                        {
 | 
			
		||||
                            device_building_tag = x.Key.device_building_tag2,
 | 
			
		||||
                            device_system_tag = x.Key.device_system_tag2,
 | 
			
		||||
                            device_name_tag = x.Key.device_name_tag2
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
                            int count = 0;
 | 
			
		||||
                            foreach (var data in result)
 | 
			
		||||
                        int count = 0;
 | 
			
		||||
                        foreach (var data in result)
 | 
			
		||||
                        {
 | 
			
		||||
                            //開關控制在個別燈具(device_node層) and 小類為二線式照明系統 and tag第八段開頭不是 G
 | 
			
		||||
                            if (LightSwitchLevel == "node" && data.device_name_tag == "L1" && data.device_serial_tag.Substring(0, 1) != "G")
 | 
			
		||||
                            {
 | 
			
		||||
                                //開關控制在個別燈具(device_node層) and 小類為二線式照明系統 and tag第八段開頭不是 G
 | 
			
		||||
                                if (LightSwitchLevel == "node" && data.device_name_tag == "L1" && data.device_serial_tag.Substring(0, 1) != "G")
 | 
			
		||||
                                // 燈具新增 device_node
 | 
			
		||||
                                continue;
 | 
			
		||||
                            }
 | 
			
		||||
                            else { 
 | 
			
		||||
                                    sb.Append($@" insert device(device_guid, deleted, status, priority, is_link, device_area_tag, 
 | 
			
		||||
                                    device_building_tag, device_system_tag, device_name_tag, full_name, device_floor_tag, device_master, 
 | 
			
		||||
                                    device_last_name, device_serial_tag, device_number, device_system_category_layer3, visible, created_at, updated_at)
 | 
			
		||||
                                    values(uuid(), 0, 1, 0, 1, '" +
 | 
			
		||||
                                        data.device_area_tag + "', '" +
 | 
			
		||||
                                        data.device_building_tag + "', '" +
 | 
			
		||||
                                        data.device_system_tag + "', '" +
 | 
			
		||||
                                        data.device_name_tag + "', '" +
 | 
			
		||||
                                        data.device_full_name + "', '" + 
 | 
			
		||||
                                        data.device_floor_tag + "', '" +
 | 
			
		||||
                                        data.device_master_tag + "', '" +
 | 
			
		||||
                                        data.device_last_name_tag + "', '" +
 | 
			
		||||
                                        data.device_serial_tag + "', '" +
 | 
			
		||||
                                        data.niagara_tags + "', '" +
 | 
			
		||||
                                        data.device_system_tag + "', 1, now(), now() );");
 | 
			
		||||
                                count += 1;
 | 
			
		||||
                                if (count >= 100)
 | 
			
		||||
                                {
 | 
			
		||||
                                    // 燈具新增 device_node
 | 
			
		||||
                                    continue;
 | 
			
		||||
                                }
 | 
			
		||||
                                else { 
 | 
			
		||||
                                     sb.Append($@" insert device(device_guid, deleted, status, priority, is_link, device_area_tag, 
 | 
			
		||||
                                        device_building_tag, device_system_tag, device_name_tag, full_name, device_floor_tag, device_master, 
 | 
			
		||||
                                        device_last_name, device_serial_tag, device_number, device_system_category_layer3, visible, created_at, updated_at)
 | 
			
		||||
                                     values(uuid(), 0, 1, 0, 1, '" +
 | 
			
		||||
                                            data.device_area_tag + "', '" +
 | 
			
		||||
                                            data.device_building_tag + "', '" +
 | 
			
		||||
                                            data.device_system_tag + "', '" +
 | 
			
		||||
                                            data.device_name_tag + "', '" +
 | 
			
		||||
                                            data.device_full_name + "', '" + 
 | 
			
		||||
                                            data.device_floor_tag + "', '" +
 | 
			
		||||
                                            data.device_master_tag + "', '" +
 | 
			
		||||
                                            data.device_last_name_tag + "', '" +
 | 
			
		||||
                                            data.device_serial_tag + "', '" +
 | 
			
		||||
                                            data.niagara_tags + "', '" +
 | 
			
		||||
                                            data.device_system_tag + "', 1, now(), now() );");
 | 
			
		||||
                                    count += 1;
 | 
			
		||||
                                    if (count >= 100)
 | 
			
		||||
                                    using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                                    {
 | 
			
		||||
                                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                                        sb.Clear();
 | 
			
		||||
                                        count = 0;
 | 
			
		||||
                                    }
 | 
			
		||||
                                    sb.Clear();
 | 
			
		||||
                                    count = 0;
 | 
			
		||||
                                }
 | 
			
		||||
                            }                               
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                            count = 0;
 | 
			
		||||
                            foreach (var data in result2)
 | 
			
		||||
                        count = 0;
 | 
			
		||||
                        foreach (var data in result2)
 | 
			
		||||
                        {
 | 
			
		||||
                            var sqlString = new StringBuilder();
 | 
			
		||||
                            sqlString.Append("select * from device_kind where device_building_tag = '" + data.device_building_tag + "' and device_system_tag = '" + data.device_system_tag + "' and device_name_tag = '" + data.device_name_tag + "'");
 | 
			
		||||
                            var dk = (await conn.QueryAsync<device_kind>(sqlString.ToString())).ToList<device_kind>();
 | 
			
		||||
 | 
			
		||||
                            if (dk.Count == 0)
 | 
			
		||||
                            {
 | 
			
		||||
                                var sqlString = new StringBuilder();
 | 
			
		||||
                                sqlString.Append("select * from device_kind where device_building_tag = '" + data.device_building_tag + "' and device_system_tag = '" + data.device_system_tag + "' and device_name_tag = '" + data.device_name_tag + "'");
 | 
			
		||||
                                var dk = (await conn.QueryAsync<device_kind>(sqlString.ToString())).ToList<device_kind>();
 | 
			
		||||
 | 
			
		||||
                                if (dk.Count == 0)
 | 
			
		||||
                                sb2.Append($@"INSERT device_kind (device_kind_guid, device_building_tag, device_system_tag, device_name_tag, 
 | 
			
		||||
                                    device_normal_flashing, device_close_flashing, device_error_flashing, device_error_independent, 
 | 
			
		||||
                                    created_by, created_at)
 | 
			
		||||
                                    VALUES (uuid(), '" + data.device_building_tag + "', '" + data.device_system_tag + "', '" + data.device_name_tag +
 | 
			
		||||
                                            "', 0, 0, 1, 0, 'B43E3CA7-96DD-4FC7-B6E6-974ACC3B0878', now());");
 | 
			
		||||
                                count += 1;
 | 
			
		||||
                                if (count >= 100)
 | 
			
		||||
                                {
 | 
			
		||||
                                    sb2.Append($@"INSERT device_kind (device_kind_guid, device_building_tag, device_system_tag, device_name_tag, 
 | 
			
		||||
                                        device_normal_flashing, device_close_flashing, device_error_flashing, device_error_independent, 
 | 
			
		||||
                                        created_by, created_at)
 | 
			
		||||
                                        VALUES (uuid(), '" + data.device_building_tag + "', '" + data.device_system_tag + "', '" + data.device_name_tag +
 | 
			
		||||
                                                "', 0, 0, 1, 0, 'B43E3CA7-96DD-4FC7-B6E6-974ACC3B0878', now());");
 | 
			
		||||
                                    count += 1;
 | 
			
		||||
                                    if (count >= 100)
 | 
			
		||||
                                    using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                                    {
 | 
			
		||||
                                        await conn.ExecuteAsync(sb2.ToString());
 | 
			
		||||
                                        sb2.Clear();
 | 
			
		||||
                                        count = 0;
 | 
			
		||||
                                    }
 | 
			
		||||
                                    sb2.Clear();
 | 
			
		||||
                                    count = 0;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                            if (sb.Length > 0)
 | 
			
		||||
                        if (sb.Length > 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                            {
 | 
			
		||||
                                await conn.ExecuteAsync(sb.ToString()); 
 | 
			
		||||
                                await conn.ExecuteAsync(sb2.ToString()); 
 | 
			
		||||
 | 
			
		||||
                                sb.Clear();
 | 
			
		||||
                                sb2.Clear();
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            sb.Clear();
 | 
			
		||||
                            sb2.Clear();
 | 
			
		||||
                        }
 | 
			
		||||
                        #endregion
 | 
			
		||||
                    }
 | 
			
		||||
                    #endregion
 | 
			
		||||
 | 
			
		||||
                        #region device_node 新增 
 | 
			
		||||
                        sb.Append($@" SELECT m.*
 | 
			
		||||
                                        FROM import_niagara_tag m
 | 
			
		||||
                                        WHERE NOT EXISTS (
 | 
			
		||||
                                            SELECT 1
 | 
			
		||||
                                            FROM device_node d
 | 
			
		||||
                                            WHERE m.niagara_tags COLLATE utf8mb4_0900_ai_ci = d.device_number COLLATE utf8mb4_0900_ai_ci
 | 
			
		||||
                                        );");
 | 
			
		||||
                        result = (await conn.QueryAsync<NiagaraTags>(sb.ToString())).ToList<NiagaraTags>();
 | 
			
		||||
                        sb.Clear();
 | 
			
		||||
                    #region device_node 新增 
 | 
			
		||||
                    sb.Append($@" SELECT m.*
 | 
			
		||||
                                    FROM import_niagara_tag m
 | 
			
		||||
                                    WHERE NOT EXISTS (
 | 
			
		||||
                                        SELECT 1
 | 
			
		||||
                                        FROM device_node d
 | 
			
		||||
                                        WHERE m.niagara_tags COLLATE utf8mb4_0900_ai_ci = d.device_number COLLATE utf8mb4_0900_ai_ci
 | 
			
		||||
                                    );");
 | 
			
		||||
                    result = (await conn.QueryAsync<NiagaraTags>(sb.ToString())).ToList<NiagaraTags>();
 | 
			
		||||
                    sb.Clear();
 | 
			
		||||
 | 
			
		||||
                        if (result.Count > 0)
 | 
			
		||||
                    if (result.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        var result2 = result.GroupBy(x => new
 | 
			
		||||
                        {
 | 
			
		||||
                            var result2 = result.GroupBy(x => new
 | 
			
		||||
                            {
 | 
			
		||||
                                device_building_tag2 = x.device_building_tag,
 | 
			
		||||
                                device_system_tag2 = x.device_system_tag,
 | 
			
		||||
                                device_name_tag2 = x.device_name_tag
 | 
			
		||||
                            }).Select(x => new Device_item8
 | 
			
		||||
                            {
 | 
			
		||||
                                device_building_tag = x.Key.device_building_tag2,
 | 
			
		||||
                                device_system_tag = x.Key.device_system_tag2,
 | 
			
		||||
                                device_name_tag = x.Key.device_name_tag2
 | 
			
		||||
                            });
 | 
			
		||||
                            device_building_tag2 = x.device_building_tag,
 | 
			
		||||
                            device_system_tag2 = x.device_system_tag,
 | 
			
		||||
                            device_name_tag2 = x.device_name_tag
 | 
			
		||||
                        }).Select(x => new Device_item8
 | 
			
		||||
                        {
 | 
			
		||||
                            device_building_tag = x.Key.device_building_tag2,
 | 
			
		||||
                            device_system_tag = x.Key.device_system_tag2,
 | 
			
		||||
                            device_name_tag = x.Key.device_name_tag2
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
                            int count = 0;
 | 
			
		||||
                            foreach (var data in result)
 | 
			
		||||
                        int count = 0;
 | 
			
		||||
                        foreach (var data in result)
 | 
			
		||||
                        {
 | 
			
		||||
                            //開關控制在個別燈具(device_node層) and 小類為二線式照明系統 and tag第八段開頭不是 G
 | 
			
		||||
                            if (LightSwitchLevel == "node" && data.device_name_tag == "L1" && data.device_serial_tag.Substring(0, 1) != "G")
 | 
			
		||||
                            {
 | 
			
		||||
                                //開關控制在個別燈具(device_node層) and 小類為二線式照明系統 and tag第八段開頭不是 G
 | 
			
		||||
                                if (LightSwitchLevel == "node" && data.device_name_tag == "L1" && data.device_serial_tag.Substring(0, 1) != "G")
 | 
			
		||||
                                // 燈具新增 device_node
 | 
			
		||||
                                sb.Append($@"INSERT INTO  device_node(device_node_guid, deleted, device_guid, device_number, full_name, created_by, created_at, updated_at) 
 | 
			
		||||
                                    VALUES (uuid(), 0, '' " + //device_guid 父層需要 forge 那邊提供
 | 
			
		||||
                                        ",'" + data.niagara_tags + // device_number
 | 
			
		||||
                                    "', '" + data.device_full_name + //full_name
 | 
			
		||||
                                    "','B43E3CA7-96DD-4FC7-B6E6-974ACC3B0878', now(), now());");
 | 
			
		||||
                                count += 1;
 | 
			
		||||
                                if (count >= 100)
 | 
			
		||||
                                {
 | 
			
		||||
                                    // 燈具新增 device_node
 | 
			
		||||
                                    sb.Append($@"INSERT INTO  device_node(device_node_guid, deleted, device_guid, device_number, full_name, created_by, created_at, updated_at) 
 | 
			
		||||
                                        VALUES (uuid(), 0, '' " + //device_guid 父層需要 forge 那邊提供
 | 
			
		||||
                                         ",'" + data.niagara_tags + // device_number
 | 
			
		||||
                                        "', '" + data.device_full_name + //full_name
 | 
			
		||||
                                        "','B43E3CA7-96DD-4FC7-B6E6-974ACC3B0878', now(), now());");
 | 
			
		||||
                                    count += 1;
 | 
			
		||||
                                    if (count >= 100)
 | 
			
		||||
                                    using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                                    {
 | 
			
		||||
                                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                                        sb.Clear();
 | 
			
		||||
                                        count = 0;
 | 
			
		||||
                                    }
 | 
			
		||||
                                    sb.Clear();
 | 
			
		||||
                                    count = 0;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                            if (sb.Length > 0)
 | 
			
		||||
                        if (sb.Length > 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                            {
 | 
			
		||||
                                await conn.ExecuteAsync(sb.ToString()); 
 | 
			
		||||
                                sb.Clear(); 
 | 
			
		||||
                            }
 | 
			
		||||
                            sb.Clear(); 
 | 
			
		||||
                        }
 | 
			
		||||
                        #endregion
 | 
			
		||||
                    }
 | 
			
		||||
                    #endregion
 | 
			
		||||
 | 
			
		||||
                        //device有,niagara沒有,is_link 更新成 0
 | 
			
		||||
                        sb.Append($@" SET SQL_SAFE_UPDATES = 0;
 | 
			
		||||
                            UPDATE device d
 | 
			
		||||
                    //device有,niagara有,is_link 更新成 1
 | 
			
		||||
                    sb.Append($@" SET SQL_SAFE_UPDATES = 0;
 | 
			
		||||
                        UPDATE device d
 | 
			
		||||
                        JOIN (
 | 
			
		||||
		                        SELECT niagara_tags
 | 
			
		||||
		                        FROM import_niagara_tag
 | 
			
		||||
		                        LIMIT 100000
 | 
			
		||||
                        ) i ON d.device_number = i.niagara_tags 
 | 
			
		||||
                        SET d.is_link = 1");
 | 
			
		||||
                    using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                    {
 | 
			
		||||
                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    sb.Clear();
 | 
			
		||||
 | 
			
		||||
                    //device有,niagara沒有,is_link 更新成 0
 | 
			
		||||
                    sb.Append($@" SET SQL_SAFE_UPDATES = 0;
 | 
			
		||||
                        UPDATE device d
 | 
			
		||||
                        left JOIN (
 | 
			
		||||
		                        SELECT niagara_tags
 | 
			
		||||
		                        FROM import_niagara_tag
 | 
			
		||||
		                        LIMIT 100000
 | 
			
		||||
                        ) i ON d.device_number = i.niagara_tags 
 | 
			
		||||
                        SET d.is_link = 0
 | 
			
		||||
                        WHERE d.is_link = 1 and i.niagara_tags is null;");
 | 
			
		||||
                    using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                    {
 | 
			
		||||
                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    sb.Clear();
 | 
			
		||||
 | 
			
		||||
                    // device_node 有, niagara沒有, is_link 更新成 0
 | 
			
		||||
                    sb.Append($@" SET SQL_SAFE_UPDATES = 0;
 | 
			
		||||
                            UPDATE device_node dn
 | 
			
		||||
                            left JOIN (
 | 
			
		||||
		                            SELECT niagara_tags
 | 
			
		||||
		                            FROM import_niagara_tag
 | 
			
		||||
		                            LIMIT 100000
 | 
			
		||||
                            ) i ON d.device_number = i.niagara_tags 
 | 
			
		||||
                            SET d.is_link = 0
 | 
			
		||||
                            WHERE d.is_link = 1 and i.niagara_tags is null;");
 | 
			
		||||
                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                                SELECT niagara_tags
 | 
			
		||||
                                FROM import_niagara_tag
 | 
			
		||||
                                LIMIT 100000
 | 
			
		||||
                            ) i ON dn.device_number COLLATE utf8mb4_0900_ai_ci = i.niagara_tags COLLATE utf8mb4_0900_ai_ci
 | 
			
		||||
                            SET dn.is_link = 0 
 | 
			
		||||
                            WHERE dn.is_link = 1 and i.niagara_tags is null;");
 | 
			
		||||
 | 
			
		||||
                        sb.Clear();
 | 
			
		||||
 | 
			
		||||
                        // device_node 有, niagara沒有, is_link 更新成 0
 | 
			
		||||
                        sb.Append($@" SET SQL_SAFE_UPDATES = 0;
 | 
			
		||||
                                UPDATE device_node dn
 | 
			
		||||
                                left JOIN (
 | 
			
		||||
                                    SELECT niagara_tags
 | 
			
		||||
                                    FROM import_niagara_tag
 | 
			
		||||
                                    LIMIT 100000
 | 
			
		||||
                                ) i ON dn.device_number COLLATE utf8mb4_0900_ai_ci = i.niagara_tags COLLATE utf8mb4_0900_ai_ci
 | 
			
		||||
                                SET dn.is_link = 0 
 | 
			
		||||
                                WHERE dn.is_link = 1 and i.niagara_tags is null;");
 | 
			
		||||
                    using (TransactionScope scope = new TransactionScope((TransactionScopeOption)TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                    {
 | 
			
		||||
                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception exception)
 | 
			
		||||
                    {
 | 
			
		||||
                        //throw exception;
 | 
			
		||||
                        throw;
 | 
			
		||||
                    }
 | 
			
		||||
                    finally
 | 
			
		||||
                    {
 | 
			
		||||
                        conn.Close();
 | 
			
		||||
                    }
 | 
			
		||||
                {
 | 
			
		||||
                }
 | 
			
		||||
                catch (Exception exception)
 | 
			
		||||
                {
 | 
			
		||||
                    //throw exception;
 | 
			
		||||
                    throw;
 | 
			
		||||
                }
 | 
			
		||||
                finally
 | 
			
		||||
                {
 | 
			
		||||
                    conn.Close();
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -956,27 +992,43 @@ namespace Repository.BackendRepository.Implement
 | 
			
		||||
            using (IDbConnection conn = GetDbConnection())
 | 
			
		||||
            {
 | 
			
		||||
                conn.Open();
 | 
			
		||||
                using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    try
 | 
			
		||||
                    StringBuilder sb = new StringBuilder();
 | 
			
		||||
                    //先全部關閉
 | 
			
		||||
                    sb.Append("update device_item set is_show_history=0;");
 | 
			
		||||
                    using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                    {
 | 
			
		||||
                        StringBuilder sb = new StringBuilder();
 | 
			
		||||
                        //先全部關閉
 | 
			
		||||
                        //sb.Append("update device_item set is_show_history=0;");
 | 
			
		||||
                        sb.Append("update device_item set is_show_history = 0 " +
 | 
			
		||||
                            "WHERE(device_system_tag, device_name_tag, points, full_name, is_show_history) NOT IN " +
 | 
			
		||||
                            "(select  distinct  device_system_tag, device_name_tag, device_point_name, full_name, is_history From import_niagara_item where is_history = 1);");
 | 
			
		||||
                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception exception)
 | 
			
		||||
 | 
			
		||||
                    sb.Clear();
 | 
			
		||||
 | 
			
		||||
                    sb.Append($@"SET SQL_SAFE_UPDATES = 0;
 | 
			
		||||
                                update device_item di 
 | 
			
		||||
                                JOIN (
 | 
			
		||||
                                    select distinct device_system_tag, device_name_tag, device_point_name, full_name, device_building_tag from import_niagara_item where is_history = 1 limit 100000
 | 
			
		||||
                                ) niagara
 | 
			
		||||
                                ON di.device_system_tag = niagara.device_system_tag
 | 
			
		||||
                                    AND di.device_name_tag = niagara.device_name_tag
 | 
			
		||||
                                    AND di.points = niagara.device_point_name
 | 
			
		||||
                                    AND di.full_name = niagara.full_name
 | 
			
		||||
                                    AND di.device_building_tag = niagara.device_building_tag
 | 
			
		||||
                                set di.is_show_history = 1");
 | 
			
		||||
                    using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
 | 
			
		||||
                    {
 | 
			
		||||
                        throw exception;
 | 
			
		||||
                    }
 | 
			
		||||
                    finally
 | 
			
		||||
                    {
 | 
			
		||||
                        conn.Close();
 | 
			
		||||
                        await conn.ExecuteAsync(sb.ToString());
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                catch (Exception exception)
 | 
			
		||||
                {
 | 
			
		||||
                    throw exception;
 | 
			
		||||
                }
 | 
			
		||||
                finally
 | 
			
		||||
                {
 | 
			
		||||
                    conn.Close();
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user