558 lines
30 KiB
C#
558 lines
30 KiB
C#
|
using Backend.Models;
|
|||
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
using Microsoft.Extensions.Logging;
|
|||
|
using Repository.BackendRepository.Interface;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text.Json;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Backend.Controllers
|
|||
|
{
|
|||
|
public class BuildMenuController : MybaseController<BuildMenuController>
|
|||
|
{
|
|||
|
private readonly IBackendRepository backendRepository;
|
|||
|
public BuildMenuController(IBackendRepository backendRepository)
|
|||
|
{
|
|||
|
this.backendRepository = backendRepository;
|
|||
|
}
|
|||
|
public IActionResult Index()
|
|||
|
{
|
|||
|
return View();
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<List<KeyValue>>> BuildInfoList()
|
|||
|
{
|
|||
|
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
|||
|
List<KeyValue> KeyValue = new List<KeyValue>();
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
var sqlString = @$"select building_guid as Value, full_name as Name from building a where a.deleted = 0 and a.status = 0 ORDER BY A.priority ASC, A.created_at DESC";
|
|||
|
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString);
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = KeyValue;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<List<KeyValue>>> MainListBybuild(string build)
|
|||
|
{
|
|||
|
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
|||
|
List<KeyValue> KeyValue = new List<KeyValue>();
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
var sqlString = @$"select ms.main_system_guid value, ms.full_name name from (select main_system_guid from building_menu bm where bm.building_guid = '{build}' group by bm.main_system_guid ) bm left join main_system ms on ms.main_system_guid = bm.main_system_guid ORDER BY ms.priority ASC";
|
|||
|
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString);
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = KeyValue;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<List<KeyValue>>> MainList()
|
|||
|
{
|
|||
|
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
|||
|
List<KeyValue> KeyValue = new List<KeyValue>();
|
|||
|
try
|
|||
|
{
|
|||
|
var sqlString = @$"select ms.full_name Name,ms.main_system_guid Value from main_system ms where ms.deleted = 0 and ms.status = 0 ORDER BY ms.priority ASC";
|
|||
|
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString);
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = KeyValue;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<List<KeyValue>>> SubListNotAdd(SubListIn post)
|
|||
|
{
|
|||
|
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
|||
|
List<KeyValue> KeyValue = new List<KeyValue>();
|
|||
|
try
|
|||
|
{
|
|||
|
var sqlString = @$"select
|
|||
|
ss.sub_system_guid value,ss.full_name name
|
|||
|
from sub_system ss
|
|||
|
left join (
|
|||
|
select * from building_menu bm where bm.building_guid = '{post.build}') bm
|
|||
|
on ss.sub_system_guid = bm.sub_system_guid
|
|||
|
where bm.sub_system_guid is null and ss.deleted = 0 and ss.status = 0 and ss.main_system_guid = @guid ORDER BY ss.priority ASC, ss.created_at DESC";
|
|||
|
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString, new { guid = post.main });
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = KeyValue;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
string json = System.Text.Json.JsonSerializer.Serialize(post);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<string>> SavebuildMenuModal(BuildMenu buildMenu)
|
|||
|
{
|
|||
|
ApiResult<string> apiResult = new ApiResult<string>();
|
|||
|
try
|
|||
|
{
|
|||
|
var get = await backendRepository.GetOneAsync<BuildMenu>("building_menu", $"building_guid = '{buildMenu.building_guid}' and main_system_guid = '{buildMenu.main_system_guid}' and sub_system_guid = '{buildMenu.sub_system_guid}'");
|
|||
|
if (get == null)
|
|||
|
{
|
|||
|
var dictionary = new Dictionary<string, object>()
|
|||
|
{
|
|||
|
{"@building_guid", buildMenu.building_guid},
|
|||
|
{"@main_system_guid",buildMenu.main_system_guid },
|
|||
|
{"@sub_system_guid", buildMenu.sub_system_guid},
|
|||
|
{"@drawing",buildMenu.drawing },
|
|||
|
{"@created_by",myUserInfo.Userinfo_guid },
|
|||
|
{"@planimetric_click",buildMenu.planimetric_click}
|
|||
|
};
|
|||
|
|
|||
|
if (buildMenu.drawing == 2)
|
|||
|
{
|
|||
|
if (buildMenu.system_url != null && buildMenu.system_url.CompareTo("http://") < 0 && buildMenu.system_url.CompareTo("https://") < 0)
|
|||
|
{
|
|||
|
//未包含http || https 抓該棟ip + port
|
|||
|
var building_where = @"deleted = 0 AND building_guid = @Building_guid";
|
|||
|
var building = await backendRepository.GetOneAsync<BuildInfo>("building", building_where, new { Building_guid = buildMenu.building_guid });
|
|||
|
|
|||
|
buildMenu.system_url = string.Format("http://{0}:{1}{2}", building.Ip_address, building.Ip_port, buildMenu.system_url);
|
|||
|
}
|
|||
|
|
|||
|
dictionary.Add("@system_url", buildMenu.system_url);
|
|||
|
}
|
|||
|
else if (buildMenu.drawing == 4)
|
|||
|
{
|
|||
|
if (buildMenu.system_url != null && buildMenu.system_url.CompareTo("http://") < 0 && buildMenu.system_url.CompareTo("https://") < 0)
|
|||
|
{
|
|||
|
//未包含http || https 抓該棟ip + port
|
|||
|
var building_where = @"deleted = 0 AND building_guid = @Building_guid";
|
|||
|
var building = await backendRepository.GetOneAsync<BuildInfo>("building", building_where, new { Building_guid = buildMenu.building_guid });
|
|||
|
|
|||
|
buildMenu.system_url = string.Format("http://{0}:{1}{2}", building.Ip_address, building.Ip_port, buildMenu.system_url);
|
|||
|
}
|
|||
|
|
|||
|
dictionary.Add("@riser_diagram_url", buildMenu.riser_diagram_url);
|
|||
|
dictionary.Add("@icon_click", buildMenu.icon_click);
|
|||
|
dictionary.Add("@icon_click_url", buildMenu.icon_click_url);
|
|||
|
dictionary.Add("@icon_click_url_width", buildMenu.icon_click_url_width);
|
|||
|
dictionary.Add("@icon_click_url_height", buildMenu.icon_click_url_height);
|
|||
|
}
|
|||
|
else if (buildMenu.drawing == 1)
|
|||
|
{
|
|||
|
dictionary.Add("@planimetric_floor_guid", buildMenu.planimetric_floor_guid);
|
|||
|
}
|
|||
|
|
|||
|
await backendRepository.AddOneByCustomTable(dictionary, "building_menu");
|
|||
|
|
|||
|
var max = await backendRepository.GetOneAsync<int>("select Max(CONVERT(int,SUBSTRING(AuthCode,2,5))) AuthCode from auth_page ap where ap.AuthCode like 'F%'");
|
|||
|
var page = await backendRepository.GetOneAsync<Auth_page>($"select ss.full_name SubName,ms.full_name MainName from sub_system ss left join main_system ms on ms.main_system_guid = ss.main_system_guid where ss.sub_system_guid = '{buildMenu.sub_system_guid}' and ms.main_system_guid = '{buildMenu.main_system_guid}'");
|
|||
|
|
|||
|
var pagedictionary = new Dictionary<string, object>()
|
|||
|
{
|
|||
|
{"@AuthCode", "F" +(max+1).ToString() },
|
|||
|
{"@AuthType", 1 },
|
|||
|
{"@MainName", page.MainName},
|
|||
|
{"@SubName",page.SubName},
|
|||
|
{"@building_guid",buildMenu.building_guid},
|
|||
|
{"@ShowView",buildMenu.sub_system_guid}
|
|||
|
};
|
|||
|
await backendRepository.AddOneByCustomTable(pagedictionary, "auth_page");
|
|||
|
|
|||
|
await backendRepository.ExecuteSql(@"DELETE FROM auth_page
|
|||
|
WHERE auth_page.AuthCode like 'F%';
|
|||
|
INSERT INTO auth_page (AuthCode,AuthType,MainName,SubName,building_guid,ShowView)
|
|||
|
SELECT 'F' + CONVERT(varchar,ROW_NUMBER() OVER(ORDER BY bm.building_guid ASC)) AuthCode,'1' AuthType,ms.full_name MainName,ss.full_name SubName,bm.building_guid,bm.sub_system_guid ShowView FROM building_menu bm
|
|||
|
left join main_system ms on ms.main_system_guid = bm.main_system_guid
|
|||
|
left join sub_system ss on ss.sub_system_guid = bm.sub_system_guid");
|
|||
|
|
|||
|
await backendRepository.ExecuteSql(@"delete a from role_auth a join role b on a.role_guid = b.role_guid where b.layer = 0;
|
|||
|
INSERT INTO role_auth (role_guid,AuthCode,created_by)
|
|||
|
SELECT r.role_guid,ap.AuthCode,'0' created_by FROM auth_page ap,role r
|
|||
|
WHERE r.layer = 0;");
|
|||
|
|
|||
|
#region 新增至派送資料表
|
|||
|
var sql = $@"SELECT ra.* FROM role_auth ra join role r on ra.role_guid = r.role_guid where r.layer = 0";
|
|||
|
var role_auths = await backendRepository.GetAllAsync<RoleAuthList>(sql);
|
|||
|
|
|||
|
List<Dictionary<string, object>> role_auth_dicts = new List<Dictionary<string, object>>();
|
|||
|
foreach (var role_auth in role_auths)
|
|||
|
{
|
|||
|
Dictionary<string, object> role_auth_dict = new Dictionary<string, object>()
|
|||
|
{
|
|||
|
{ "role_guid", role_auth.Role_guid},
|
|||
|
{ "@AuthCode", role_auth.AuthCode},
|
|||
|
};
|
|||
|
|
|||
|
role_auth_dicts.Add(role_auth_dict);
|
|||
|
}
|
|||
|
|
|||
|
await backendRepository.ManualInsertBackgroundServiceTask("", "", "role_auth", "purge_specify_insert", role_auth_dicts);
|
|||
|
#endregion
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Msg = "儲存成功";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
var dictionary = new Dictionary<string, object>()
|
|||
|
{
|
|||
|
{"@drawing",buildMenu.drawing },
|
|||
|
{"@updated_by",myUserInfo.Userinfo_guid },
|
|||
|
{"@updated_at",DateTime.Now },
|
|||
|
{"@planimetric_click",buildMenu.planimetric_click}
|
|||
|
};
|
|||
|
if (buildMenu.drawing == 2)
|
|||
|
{
|
|||
|
if (buildMenu.system_url != null && buildMenu.system_url.CompareTo("http://") < 0 && buildMenu.system_url.CompareTo("https://") < 0)
|
|||
|
{
|
|||
|
//未包含http || https 抓該棟ip + port
|
|||
|
var building_where = @"deleted = 0 AND building_guid = @Building_guid";
|
|||
|
var building = await backendRepository.GetOneAsync<BuildInfo>("building", building_where, new { Building_guid = buildMenu.building_guid });
|
|||
|
|
|||
|
buildMenu.system_url = string.Format("http://{0}:{1}{2}", building.Ip_address, building.Ip_port, buildMenu.system_url);
|
|||
|
}
|
|||
|
|
|||
|
dictionary.Add("@system_url", buildMenu.system_url);
|
|||
|
}
|
|||
|
else if (buildMenu.drawing == 4)
|
|||
|
{
|
|||
|
if (buildMenu.system_url != null && buildMenu.system_url.CompareTo("http://") < 0 && buildMenu.system_url.CompareTo("https://") < 0)
|
|||
|
{
|
|||
|
//未包含http || https 抓該棟ip + port
|
|||
|
var building_where = @"deleted = 0 AND building_guid = @Building_guid";
|
|||
|
var building = await backendRepository.GetOneAsync<BuildInfo>("building", building_where, new { Building_guid = buildMenu.building_guid });
|
|||
|
|
|||
|
buildMenu.system_url = string.Format("http://{0}:{1}{2}", building.Ip_address, building.Ip_port, buildMenu.system_url);
|
|||
|
}
|
|||
|
|
|||
|
dictionary.Add("@riser_diagram_url", buildMenu.riser_diagram_url);
|
|||
|
dictionary.Add("@icon_click", buildMenu.icon_click);
|
|||
|
dictionary.Add("@icon_click_url", buildMenu.icon_click_url);
|
|||
|
dictionary.Add("@icon_click_url_width", buildMenu.icon_click_url_width);
|
|||
|
dictionary.Add("@icon_click_url_height", buildMenu.icon_click_url_height);
|
|||
|
}
|
|||
|
else if (buildMenu.drawing == 1)
|
|||
|
{
|
|||
|
dictionary.Add("@planimetric_floor_guid", buildMenu.planimetric_floor_guid);
|
|||
|
}
|
|||
|
|
|||
|
await backendRepository.UpdateOneByCustomTable(dictionary, "building_menu", $"building_guid = '{buildMenu.building_guid}' and main_system_guid = '{buildMenu.main_system_guid}' and sub_system_guid = '{buildMenu.sub_system_guid}'");
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Msg = "儲存成功";
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
string json = System.Text.Json.JsonSerializer.Serialize(buildMenu);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ActionResult> BuildMenuTable(BuildMenuTablePost post)
|
|||
|
{
|
|||
|
List<BuildMenuTable> buildMenuTables = new List<BuildMenuTable>();
|
|||
|
ApiResult<List<BuildMenuTable>> apiResult = new ApiResult<List<BuildMenuTable>>();
|
|||
|
try
|
|||
|
{
|
|||
|
buildMenuTables = await backendRepository.GetAllAsync<BuildMenuTable>($@"select bm.*,
|
|||
|
case drawing when 1 then '樓層平面圖' when 2 then '系統圖' when 4 then '昇位圖' end drawing_name,
|
|||
|
case icon_click when 1 then '開' when 0 then '關' end icon_click_name,
|
|||
|
case planimetric_click when 1 then '開' when 0 then '關' end planimetric_click_name,
|
|||
|
ms.full_name main_system_guid_name, ss.full_name sub_system_guid_name,ff.full_name floor_guid_name
|
|||
|
from building_menu bm
|
|||
|
left join main_system ms on ms.main_system_guid = bm.main_system_guid
|
|||
|
left join sub_system ss on ss.sub_system_guid = bm.sub_system_guid
|
|||
|
left join floor ff on ff.floor_guid = bm.planimetric_floor_guid
|
|||
|
where bm.building_guid = '{post.build}' and bm.main_system_guid in @MainList ORDER BY ms.priority ASC, ss.priority ASC, ss.created_at DESC ", new { MainList = post.MainList });
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = buildMenuTables;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】");
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
var result = Json(new
|
|||
|
{
|
|||
|
data = apiResult
|
|||
|
});
|
|||
|
return result;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<BuildMenuAddSub>> GetBuildMenu(MenuIn post)
|
|||
|
{
|
|||
|
ApiResult<BuildMenuAddSub> apiResult = new ApiResult<BuildMenuAddSub>();
|
|||
|
try
|
|||
|
{
|
|||
|
var BuildMenu = await backendRepository.GetOneAsync<BuildMenuAddSub>(
|
|||
|
$@"select *,ss.full_name sub_system_guid_name from building_menu bm
|
|||
|
left join sub_system ss on bm.sub_system_guid = ss.sub_system_guid
|
|||
|
where bm.building_guid = @bg and bm.main_system_guid = @msg and bm.sub_system_guid = @ssg", new { bg = post.build, msg = post.main, ssg = post.sub });
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = BuildMenu;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
string json = System.Text.Json.JsonSerializer.Serialize(post);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<string>> DeleteBuildMenu(MenuIn post)
|
|||
|
{
|
|||
|
ApiResult<string> apiResult = new ApiResult<string>();
|
|||
|
try
|
|||
|
{
|
|||
|
await backendRepository.PurgeOneByGuidWithCustomDBNameAndTable("building_menu", $"building_guid = '{post.build}' and main_system_guid = '{post.main}' and sub_system_guid = '{post.sub}'");
|
|||
|
var authcode = await backendRepository.GetOneAsync<string>(@$"select AuthCode from auth_page where building_guid = '{post.build}' and ShowView = '{post.sub}'");
|
|||
|
if (authcode != null)
|
|||
|
{
|
|||
|
await backendRepository.PurgeOneByGuidWithCustomDBNameAndTable("role_auth", $" AuthCode = '{authcode}'");
|
|||
|
await backendRepository.PurgeOneByGuidWithCustomDBNameAndTable("auth_page", $" AuthCode = '{authcode}'");
|
|||
|
await backendRepository.ExecuteSql(@"delete a from role_auth a join role b on a.role_guid = b.role_guid where b.layer = 0;
|
|||
|
INSERT INTO role_auth (role_guid,AuthCode,created_by)
|
|||
|
SELECT r.role_guid,ap.AuthCode,'0' created_by FROM auth_page ap,role r
|
|||
|
WHERE r.layer = 0;");
|
|||
|
|
|||
|
#region 新增至派送資料表
|
|||
|
var sql = $@"SELECT ra.* FROM role_auth ra join role r on ra.role_guid = r.role_guid where r.layer = 0";
|
|||
|
var role_auths = await backendRepository.GetAllAsync<RoleAuthList>(sql);
|
|||
|
|
|||
|
List<Dictionary<string, object>> role_auth_dicts = new List<Dictionary<string, object>>();
|
|||
|
foreach (var role_auth in role_auths)
|
|||
|
{
|
|||
|
Dictionary<string, object> role_auth_dict = new Dictionary<string, object>()
|
|||
|
{
|
|||
|
{ "role_guid", role_auth.Role_guid},
|
|||
|
{ "@AuthCode", role_auth.AuthCode},
|
|||
|
};
|
|||
|
|
|||
|
role_auth_dicts.Add(role_auth_dict);
|
|||
|
}
|
|||
|
|
|||
|
await backendRepository.ManualInsertBackgroundServiceTask("", "", "role_auth", "purge_specify_insert", role_auth_dicts);
|
|||
|
#endregion
|
|||
|
}
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Msg = "刪除成功";
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
string json = System.Text.Json.JsonSerializer.Serialize(post);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ActionResult> BuildMenuFloorTable(MenuIn post)
|
|||
|
{
|
|||
|
List<BuildMenuFloorTable> buildMenuFloorTables = new List<BuildMenuFloorTable>();
|
|||
|
ApiResult<List<BuildMenuFloorTable>> apiResult = new ApiResult<List<BuildMenuFloorTable>>();
|
|||
|
try
|
|||
|
{
|
|||
|
buildMenuFloorTables = await backendRepository.GetAllAsync<BuildMenuFloorTable>($@"
|
|||
|
select f.full_name floor_guid_name,sf.*,ms.full_name main_system_guid_name,ss.full_name sub_system_guid_name
|
|||
|
from (select * from sub_system_floor ssf where ssf.building_guid = '{post.build}' and ssf.main_system_guid = '{post.main}' and ssf.sub_system_guid = '{post.sub}' and deleted = 0 and status = 0) sf
|
|||
|
left join floor f on sf.floor_guid = f.floor_guid
|
|||
|
left join main_system ms on ms.main_system_guid = sf.main_system_guid
|
|||
|
left join sub_system ss on ss.sub_system_guid = sf.sub_system_guid
|
|||
|
ORDER BY ms.priority, ss.priority, f.priority");
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = buildMenuFloorTables;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】");
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
var result = Json(new
|
|||
|
{
|
|||
|
data = apiResult
|
|||
|
});
|
|||
|
return result;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<List<KeyValue>>> GetNotUsefloor(MenuIn post)
|
|||
|
{
|
|||
|
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
|||
|
List<KeyValue> KeyValue = new List<KeyValue>();
|
|||
|
try
|
|||
|
{
|
|||
|
var sqlString = @$"select fg.floor_guid value, fg.full_name name from
|
|||
|
(select * from floor fg where fg.building_guid = '{post.build}' and fg.deleted = 0 and fg.status = 0 ) fg
|
|||
|
left join (select * from sub_system_floor where building_guid = '{post.build}' and main_system_guid = '{post.main}' and sub_system_guid = '{post.sub}' and deleted = 0 and status = 0) ssf
|
|||
|
on ssf.floor_guid = fg.floor_guid
|
|||
|
where ssf.floor_guid is null ORDER BY fg.priority";
|
|||
|
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString);
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = KeyValue;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<string>> SaveAddsubfloor(MenuInfloor menuInfloor)
|
|||
|
{
|
|||
|
ApiResult<string> apiResult = new ApiResult<string>();
|
|||
|
try
|
|||
|
{
|
|||
|
var listdictionary = new List<Dictionary<string, object>>();
|
|||
|
|
|||
|
foreach (var a in menuInfloor.floorlist)
|
|||
|
{
|
|||
|
var dictionary = new Dictionary<string, object>()
|
|||
|
{
|
|||
|
{"@sub_system_floor_guid", Guid.NewGuid()},
|
|||
|
{"@building_guid",menuInfloor.build},
|
|||
|
{"@main_system_guid", menuInfloor.main},
|
|||
|
{"@sub_system_guid",menuInfloor.sub},
|
|||
|
{"@floor_guid",a},
|
|||
|
{"@created_by", myUserInfo.Userinfo_guid}
|
|||
|
};
|
|||
|
listdictionary.Add(dictionary);
|
|||
|
}
|
|||
|
await backendRepository.AddMutiByCustomTable(listdictionary, "sub_system_floor");
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Msg = "儲存成功";
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
string json = System.Text.Json.JsonSerializer.Serialize(menuInfloor);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<string>> DeleteBuildFloorMenu(string subfloorguid)
|
|||
|
{
|
|||
|
ApiResult<string> apiResult = new ApiResult<string>();
|
|||
|
try
|
|||
|
{
|
|||
|
//檢查該樓層底下是否有設備
|
|||
|
var sql = $@"
|
|||
|
SELECT
|
|||
|
CONCAT(b.full_name, ' - ', ms.full_name, ' - ', ss.full_name , ' - ', f.full_name)
|
|||
|
FROM device d
|
|||
|
LEFT JOIN (
|
|||
|
SELECT *
|
|||
|
FROM sub_system_floor ssf
|
|||
|
WHERE ssf.deleted = 0 AND ssf.sub_system_floor_guid = @Guid) ssf
|
|||
|
ON d.deleted = 0
|
|||
|
AND d.building_guid = ssf.building_guid
|
|||
|
AND d.main_system_guid = ssf.main_system_guid
|
|||
|
AND d.sub_system_guid = ssf.sub_system_guid
|
|||
|
AND d.floor_guid = ssf.floor_guid
|
|||
|
LEFT JOIN building b ON b.deleted = 0 AND d.building_guid = b.building_guid
|
|||
|
LEFT JOIN main_system ms ON ms.deleted = 0 AND d.main_system_guid = ms.main_system_guid
|
|||
|
LEFT JOIN sub_system ss ON ss.deleted = 0 AND d.sub_system_guid = ss.sub_system_guid
|
|||
|
LEFT JOIN floor f ON f.deleted = 0 AND d.floor_guid = f.floor_guid
|
|||
|
WHERE ssf.sub_system_floor_guid = @Guid";
|
|||
|
|
|||
|
var sub_system_floors = await backendRepository.GetAllAsync<string>(sql, new { Guid = subfloorguid });
|
|||
|
if (sub_system_floors.Count > 0)
|
|||
|
{
|
|||
|
apiResult.Code = "9997";
|
|||
|
apiResult.Msg = "設備管理中尚有設備正在使用該選單樓層,故無法刪除";
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
|
|||
|
await backendRepository.DeleteOne(subfloorguid, "sub_system_floor", "sub_system_floor_guid");
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Msg = "刪除成功";
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
string json = System.Text.Json.JsonSerializer.Serialize(subfloorguid);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
|
|||
|
[HttpPost]
|
|||
|
public async Task<ApiResult<List<KeyValue>>> GetFloorInSubSystem(MenuIn post)
|
|||
|
{
|
|||
|
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
|||
|
List<KeyValue> KeyValue = new List<KeyValue>();
|
|||
|
try
|
|||
|
{
|
|||
|
var sqlString = @$"select floor.floor_guid Value,floor.full_name Name from sub_system_floor sf left join floor on sf.floor_guid = floor.floor_guid
|
|||
|
where sf.deleted = 0 and sf.status = 0 and sf.building_guid = '{post.build}' and sf.main_system_guid = '{post.main}' and sf.sub_system_guid = '{post.sub}'
|
|||
|
ORDER BY floor.priority, floor.created_at";
|
|||
|
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString);
|
|||
|
|
|||
|
apiResult.Code = "0000";
|
|||
|
apiResult.Data = KeyValue;
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
apiResult.Code = "9999";
|
|||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
|||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
|||
|
}
|
|||
|
return apiResult;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|