Merge branch 'master' of https://gitea.mjm-staging.developers-homelab.net/BIMS/BIMS
This commit is contained in:
commit
420d5ece7d
File diff suppressed because it is too large
Load Diff
@ -646,7 +646,7 @@ namespace Backend.Controllers
|
||||
{
|
||||
var sqlString = @$"select v.id
|
||||
from building b
|
||||
join variable v on v.system_type = @system_type and system_key = N'是否有3D' and v.deleted = 0
|
||||
join variable v on v.system_type = @system_type and system_key = N'是否有3D' and system_value = 'Y' and v.deleted = 0
|
||||
where b.building_tag = @building_tag and (b.orgName_3D + b.saveName_3D) is not null;";
|
||||
KeyValue = await backendRepository.GetAllAsync<KeyValue>(sqlString, new { building_tag = post.building_tag, system_type = system_setting_type });
|
||||
|
||||
|
@ -201,7 +201,8 @@ namespace Backend.Controllers
|
||||
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_name_tag = d.device_name_tag
|
||||
ORDER BY d.priority ASC, d.device_number ASC";
|
||||
|
||||
var devices = await backendRepository.GetAllAsync<Device>(sql, new {
|
||||
var devices = await backendRepository.GetAllAsync<Device>(sql, new
|
||||
{
|
||||
building_tag = post.building_tag,
|
||||
main_system_tag = post.device_system_tag,
|
||||
sub_system_tag = post.device_name_tag,
|
||||
@ -333,7 +334,7 @@ namespace Backend.Controllers
|
||||
{
|
||||
List<Dictionary<string, object>> deviceDics = new List<Dictionary<string, object>>();
|
||||
List<Dictionary<string, object>> device_disaster_dicts = new List<Dictionary<string, object>>();
|
||||
|
||||
PostDeviceKind postDeviceKind = new PostDeviceKind();
|
||||
using (var reader = new StreamReader(post.SelectedDevicesFile.OpenReadStream()))
|
||||
{
|
||||
string content = reader.ReadToEnd();
|
||||
@ -345,12 +346,14 @@ namespace Backend.Controllers
|
||||
var guid = Guid.NewGuid();
|
||||
var split = device.Device_number.Split('_');
|
||||
|
||||
var device_building_tag = !string.IsNullOrEmpty(split[0]) ? split[0] : "";
|
||||
var device_system_tag = !string.IsNullOrEmpty(split[1]) ? split[1] : "";
|
||||
var device_floor_tag = !string.IsNullOrEmpty(split[2]) ? split[2] : "";
|
||||
var device_name_tag = !string.IsNullOrEmpty(split[3]) ? split[3] : "";
|
||||
var device_serial_tag = !string.IsNullOrEmpty(split[4]) ? split[4] : "";
|
||||
string device_master = null;
|
||||
var device_area_tag = !string.IsNullOrEmpty(split[0]) ? split[0] : "";
|
||||
var device_building_tag = !string.IsNullOrEmpty(post.Building_tag) ? post.Building_tag : "";
|
||||
var device_system_tag = !string.IsNullOrEmpty(post.Main_system_tag) ? post.Main_system_tag : "";
|
||||
var device_name_tag = !string.IsNullOrEmpty(post.Sub_system_tag) ? post.Sub_system_tag : "";
|
||||
var device_floor_tag = !string.IsNullOrEmpty(post.Floor_tag) ? post.Floor_tag : "";
|
||||
var device_last_name = !string.IsNullOrEmpty(split[6]) ? split[6] : "";
|
||||
var device_serial_tag = !string.IsNullOrEmpty(split[7]) ? split[7] : "";
|
||||
string device_master = "NA";
|
||||
|
||||
//針對燈具加入master
|
||||
if (device.Device_system_category_layer3 == "L1" || device.Device_system_category_layer3 == "L2")
|
||||
@ -361,18 +364,27 @@ namespace Backend.Controllers
|
||||
Dictionary<string, object> deviceDic = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@device_guid", guid},
|
||||
{ "@full_name", device_name_tag + device_serial_tag},
|
||||
{ "@device_area_tag", device_area_tag},
|
||||
{ "@device_building_tag", device_building_tag},
|
||||
{ "@device_system_tag", device_system_tag},
|
||||
{ "@device_floor_tag", device_floor_tag},
|
||||
{ "@device_name_tag", device_name_tag},
|
||||
{ "@device_serial_tag", device_serial_tag},
|
||||
{ "@device_last_name", device_last_name},
|
||||
{ "@device_master", device_master},
|
||||
{ "@device_number", device.Device_number},
|
||||
{ "@device_system_category_layer3", device.Device_system_category_layer3},
|
||||
{ "@created_by", myUserInfo.Userinfo_guid},
|
||||
};
|
||||
|
||||
postDeviceKind = new PostDeviceKind()
|
||||
{
|
||||
Device_building_tag = device_building_tag,
|
||||
Device_system_tag = device_system_tag,
|
||||
Device_floor_tag = device_floor_tag,
|
||||
Device_name_tag = device_name_tag,
|
||||
};
|
||||
|
||||
deviceDics.Add(deviceDic);
|
||||
|
||||
if (device.Device_disasters != null)
|
||||
@ -402,6 +414,8 @@ namespace Backend.Controllers
|
||||
|
||||
await ResetDeviceGroup(); //重新寫入設備群組
|
||||
|
||||
await AddDeviceKind(postDeviceKind);
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "修改成功";
|
||||
|
||||
@ -963,8 +977,8 @@ namespace Backend.Controllers
|
||||
FROM device d
|
||||
WHERE
|
||||
d.device_building_tag = @building_tag
|
||||
AND d.device_system_tag = @main_system_tag
|
||||
AND d.device_name_tag = @sub_system_tag
|
||||
AND d.device_system_tag = @device_system_tag
|
||||
AND d.device_name_tag = @device_name_tag
|
||||
-- AND d.floor_guid = @Floor_tag
|
||||
AND d.deleted = 0
|
||||
) d
|
||||
@ -1025,6 +1039,70 @@ namespace Backend.Controllers
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
|
||||
public async Task AddDeviceKind(PostDeviceKind post)
|
||||
{
|
||||
|
||||
string sWhere = @$"device_building_tag = @building_tag and device_system_tag = @system_tag and device_name_tag = @name_tag";
|
||||
|
||||
object param = new { building_tag = post.Device_building_tag, system_tag = post.Device_system_tag, name_tag = post.Device_name_tag };
|
||||
|
||||
var deviceKind = await backendRepository.GetOneAsync<DeviceKind>("device_kind", sWhere, param);
|
||||
|
||||
if (deviceKind == null)
|
||||
{
|
||||
//新增
|
||||
//產生一組GUID
|
||||
var guid = Guid.NewGuid();
|
||||
|
||||
//抓出點位名稱
|
||||
//var point_name = new PointName();
|
||||
|
||||
//var sql_device_normal_point = @"SELECT n.points AS device_normal_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_id = @device_normal_point_guid) n";
|
||||
//point_name.Device_normal_point_name = await backendRepository.GetOneAsync<string>(sql_device_normal_point, new { device_normal_point_guid = post.Device_normal_point_guid });
|
||||
|
||||
//var sql_device_close_point = @"SELECT c.points AS device_close_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_close_point_guid) c";
|
||||
//point_name.Device_close_point_name = await backendRepository.GetOneAsync<string>(sql_device_close_point, new { device_close_point_guid = post.Device_close_point_guid });
|
||||
|
||||
//var sql_device_error_point = @"SELECT e.points AS device_error_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_error_point_guid) e";
|
||||
//point_name.Device_error_point_name = await backendRepository.GetOneAsync<string>(sql_device_error_point, new { device_error_point_guid = post.Device_error_point_guid });
|
||||
|
||||
Dictionary<string, object> deviceKindDic = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@device_kind_guid", guid},
|
||||
{ "@device_building_tag", post.Device_building_tag},
|
||||
{ "@device_system_tag", post.Device_system_tag},
|
||||
//{ "@device_floor_tag", post.Device_floor_tag},
|
||||
{ "@device_name_tag", post.Device_name_tag},
|
||||
{ "@device_image", null },
|
||||
{ "@device_normal_text", post.Device_normal_text},
|
||||
{ "@device_normal_point_guid", post.Device_normal_point_guid},
|
||||
{ "@device_normal_point_name", null},
|
||||
{ "@device_normal_point_col", post.Device_normal_point_col},
|
||||
{ "@device_normal_point_value", post.Device_normal_point_value},
|
||||
{ "@device_normal_color", post.Device_normal_color},
|
||||
{ "@device_normal_flashing", post.Device_normal_flashing},
|
||||
{ "@device_close_text", post.Device_close_text},
|
||||
{ "@device_close_point_guid", post.Device_close_point_guid},
|
||||
{ "@device_close_point_name", null},
|
||||
{ "@device_close_point_col", post.Device_close_point_col},
|
||||
{ "@device_close_point_value", post.Device_close_point_value},
|
||||
{ "@device_close_color", post.Device_close_color},
|
||||
{ "@device_close_flashing", post.Device_close_flashing},
|
||||
{ "@device_error_text", post.Device_error_text},
|
||||
{ "@device_error_point_guid", post.Device_error_point_guid},
|
||||
{ "@device_error_point_name", null},
|
||||
{ "@device_error_point_col", post.Device_error_point_col},
|
||||
{ "@device_error_point_value", post.Device_error_point_value},
|
||||
{ "@device_error_color", post.Device_error_color},
|
||||
{ "@device_error_flashing", post.Device_error_flashing},
|
||||
{ "@device_error_independent", post.Device_error_independent},
|
||||
{ "@created_by", myUserInfo.Userinfo_guid}
|
||||
};
|
||||
await backendRepository.AddOneByCustomTable(deviceKindDic, "device_kind");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改 設備基本資料
|
||||
/// </summary>
|
||||
@ -1062,14 +1140,14 @@ namespace Backend.Controllers
|
||||
//抓出點位名稱
|
||||
var point_name = new PointName();
|
||||
|
||||
var sql_device_normal_point = @"SELECT n.points AS device_normal_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_normal_point_guid) n";
|
||||
point_name.Device_normal_point_name = await backendRepository.GetOneAsync<string>(sql_device_normal_point, new { device_normal_point_guid = post.Device_normal_point_guid });
|
||||
var sql_device_normal_point = @"SELECT n.points AS device_normal_point_name FROM (SELECT * FROM device_item di WHERE di.id = @device_normal_point_id) n";
|
||||
point_name.Device_normal_point_name = await backendRepository.GetOneAsync<string>(sql_device_normal_point, new { device_normal_point_id = post.Device_normal_point_guid });
|
||||
|
||||
var sql_device_close_point = @"SELECT c.points AS device_close_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_close_point_guid) c";
|
||||
point_name.Device_close_point_name = await backendRepository.GetOneAsync<string>(sql_device_close_point, new { device_close_point_guid = post.Device_close_point_guid });
|
||||
var sql_device_close_point = @"SELECT c.points AS device_close_point_name FROM (SELECT * FROM device_item di WHERE di.id = @device_close_point_id) c";
|
||||
point_name.Device_close_point_name = await backendRepository.GetOneAsync<string>(sql_device_close_point, new { device_close_point_id = post.Device_close_point_guid });
|
||||
|
||||
var sql_device_error_point = @"SELECT e.points AS device_error_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_error_point_guid) e";
|
||||
point_name.Device_error_point_name = await backendRepository.GetOneAsync<string>(sql_device_error_point, new { device_error_point_guid = post.Device_error_point_guid });
|
||||
var sql_device_error_point = @"SELECT e.points AS device_error_point_name FROM (SELECT * FROM device_item di WHERE di.id = @device_error_point_id) e";
|
||||
point_name.Device_error_point_name = await backendRepository.GetOneAsync<string>(sql_device_error_point, new { device_error_point_id = post.Device_error_point_guid });
|
||||
|
||||
Dictionary<string, object> deviceKindDic = new Dictionary<string, object>()
|
||||
{
|
||||
@ -1119,23 +1197,23 @@ namespace Backend.Controllers
|
||||
}
|
||||
|
||||
#region 新增至派送資料表
|
||||
List<Repository.Models.FileInfo> fileInfos = new List<Repository.Models.FileInfo>();
|
||||
if (post.Device_image_file != null)
|
||||
{
|
||||
var split = post.Device_image_file.FileName.Split(".");
|
||||
var fileName = guid + "." + split[split.Length - 1];
|
||||
//List<Repository.Models.FileInfo> fileInfos = new List<Repository.Models.FileInfo>();
|
||||
//if (post.Device_image_file != null)
|
||||
//{
|
||||
// var split = post.Device_image_file.FileName.Split(".");
|
||||
// var fileName = guid + "." + split[split.Length - 1];
|
||||
|
||||
var fullPath = Path.Combine(deviceKindFileSaveAsPath, fileName);
|
||||
// var fullPath = Path.Combine(deviceKindFileSaveAsPath, fileName);
|
||||
|
||||
Repository.Models.FileInfo fileInfo = new Repository.Models.FileInfo();
|
||||
fileInfo.Folder = "device_icon";
|
||||
fileInfo.OriginalFileName = null;
|
||||
fileInfo.FileName = fileName;
|
||||
fileInfo.File = fullPath;
|
||||
// Repository.Models.FileInfo fileInfo = new Repository.Models.FileInfo();
|
||||
// fileInfo.Folder = "device_icon";
|
||||
// fileInfo.OriginalFileName = null;
|
||||
// fileInfo.FileName = fileName;
|
||||
// fileInfo.File = fullPath;
|
||||
|
||||
fileInfos.Add(fileInfo);
|
||||
await backendRepository.ManualInsertFileBackgroundServiceTask("", "", "device_kind", fileInfos);
|
||||
}
|
||||
// fileInfos.Add(fileInfo);
|
||||
// await backendRepository.ManualInsertFileBackgroundServiceTask("", "", "device_kind", fileInfos);
|
||||
//}
|
||||
#endregion
|
||||
|
||||
apiResult.Code = "0000";
|
||||
@ -1160,14 +1238,14 @@ namespace Backend.Controllers
|
||||
//抓出點位名稱
|
||||
var point_name = new PointName();
|
||||
|
||||
var sql_device_normal_point = @"SELECT n.points AS device_normal_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_normal_point_guid) n";
|
||||
point_name.Device_normal_point_name = await backendRepository.GetOneAsync<string>(sql_device_normal_point, new { device_normal_point_guid = post.Device_normal_point_guid });
|
||||
var sql_device_normal_point = @"SELECT n.points AS device_normal_point_name FROM (SELECT * FROM device_item di WHERE di.id = @device_normal_point_id) n";
|
||||
point_name.Device_normal_point_name = await backendRepository.GetOneAsync<string>(sql_device_normal_point, new { device_normal_point_id = post.Device_normal_point_guid });
|
||||
|
||||
var sql_device_close_point = @"SELECT c.points AS device_close_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_close_point_guid) c";
|
||||
point_name.Device_close_point_name = await backendRepository.GetOneAsync<string>(sql_device_close_point, new { device_close_point_guid = post.Device_close_point_guid });
|
||||
var sql_device_close_point = @"SELECT c.points AS device_close_point_name FROM (SELECT * FROM device_item di WHERE di.id = @device_close_point_id) c";
|
||||
point_name.Device_close_point_name = await backendRepository.GetOneAsync<string>(sql_device_close_point, new { device_close_point_id = post.Device_close_point_guid });
|
||||
|
||||
var sql_device_error_point = @"SELECT e.points AS device_error_point_name FROM (SELECT * FROM device_item di WHERE di.device_item_guid = @device_error_point_guid) e";
|
||||
point_name.Device_error_point_name = await backendRepository.GetOneAsync<string>(sql_device_error_point, new { device_error_point_guid = post.Device_error_point_guid });
|
||||
var sql_device_error_point = @"SELECT e.points AS device_error_point_name FROM (SELECT * FROM device_item di WHERE di.id = @device_error_point_id) e";
|
||||
point_name.Device_error_point_name = await backendRepository.GetOneAsync<string>(sql_device_error_point, new { device_error_point_id = post.Device_error_point_guid });
|
||||
|
||||
Dictionary<string, object> deviceKindDic = new Dictionary<string, object>()
|
||||
{
|
||||
@ -1217,23 +1295,23 @@ namespace Backend.Controllers
|
||||
}
|
||||
|
||||
#region 新增至派送資料表
|
||||
List<Repository.Models.FileInfo> fileInfos = new List<Repository.Models.FileInfo>();
|
||||
if (post.Device_image_file != null)
|
||||
{
|
||||
var split = post.Device_image_file.FileName.Split(".");
|
||||
var fileName = image_guid + "." + split[split.Length - 1];
|
||||
//List<Repository.Models.FileInfo> fileInfos = new List<Repository.Models.FileInfo>();
|
||||
//if (post.Device_image_file != null)
|
||||
//{
|
||||
// var split = post.Device_image_file.FileName.Split(".");
|
||||
// var fileName = image_guid + "." + split[split.Length - 1];
|
||||
|
||||
var fullPath = Path.Combine(deviceKindFileSaveAsPath, fileName);
|
||||
// var fullPath = Path.Combine(deviceKindFileSaveAsPath, fileName);
|
||||
|
||||
Repository.Models.FileInfo fileInfo = new Repository.Models.FileInfo();
|
||||
fileInfo.Folder = "device_icon";
|
||||
fileInfo.OriginalFileName = deviceKind.Device_image;
|
||||
fileInfo.FileName = fileName;
|
||||
fileInfo.File = fullPath;
|
||||
// Repository.Models.FileInfo fileInfo = new Repository.Models.FileInfo();
|
||||
// fileInfo.Folder = "device_icon";
|
||||
// fileInfo.OriginalFileName = deviceKind.Device_image;
|
||||
// fileInfo.FileName = fileName;
|
||||
// fileInfo.File = fullPath;
|
||||
|
||||
fileInfos.Add(fileInfo);
|
||||
await backendRepository.ManualInsertFileBackgroundServiceTask("", "", "device_kind", fileInfos);
|
||||
}
|
||||
// fileInfos.Add(fileInfo);
|
||||
// await backendRepository.ManualInsertFileBackgroundServiceTask("", "", "device_kind", fileInfos);
|
||||
//}
|
||||
#endregion
|
||||
|
||||
apiResult.Code = "0000";
|
||||
@ -1257,7 +1335,7 @@ namespace Backend.Controllers
|
||||
//先刪除整個device_group
|
||||
var delete_group_sql = @"DROP TABLE IF EXISTS `device_group` ;
|
||||
CREATE TABLE `device_group` (
|
||||
`id` int(11) NOT NULL,
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`device_disaster` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '災類',
|
||||
`device_building_tag` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '設備東別guid',
|
||||
`device_floor_guid` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '設備樓層guid',
|
||||
@ -1274,13 +1352,14 @@ namespace Backend.Controllers
|
||||
INSERT INTO device_group (device_disaster, device_building_tag, device_floor_guid, device_system_category_layer2, device_system_category_layer3, device_amount)
|
||||
SELECT
|
||||
dd.device_system_value AS device_disaster,
|
||||
d.building_tag AS device_building_tag,
|
||||
d.floor_guid AS device_floor_guid,
|
||||
d.device_building_tag AS device_building_tag,
|
||||
f.floor_guid AS device_floor_guid,
|
||||
vv.device_system_category_layer2 AS device_system_category_layer2,
|
||||
d.device_system_category_layer3 AS device_system_category_layer3,
|
||||
count(*) AS device_amount
|
||||
FROM device d
|
||||
JOIN device_disaster dd ON d.device_guid = dd.device_guid
|
||||
JOIN floor f ON d.device_floor_tag = f.full_name
|
||||
JOIN (SELECT
|
||||
v.system_value AS device_system_category_layer3,
|
||||
v2.system_value AS device_system_category_layer2
|
||||
@ -1290,8 +1369,8 @@ namespace Backend.Controllers
|
||||
) vv ON d.device_system_category_layer3 = vv.device_system_category_layer3
|
||||
WHERE d.deleted = 0
|
||||
GROUP BY dd.device_system_value,
|
||||
d.building_tag,
|
||||
d.floor_guid,
|
||||
d.device_building_tag,
|
||||
f.floor_guid,
|
||||
vv.device_system_category_layer2,
|
||||
d.device_system_category_layer3";
|
||||
|
||||
@ -1317,7 +1396,7 @@ namespace Backend.Controllers
|
||||
|
||||
deviceGroupsDics.Add(deviceGroupDic);
|
||||
}
|
||||
await backendRepository.ManualInsertBackgroundServiceTask("", "", "device_group", "purge_all_insert", deviceGroupsDics);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@ -1581,7 +1660,7 @@ namespace Backend.Controllers
|
||||
|
||||
try
|
||||
{
|
||||
string sWhere = "deleted = 0 AND sub_system_tag = @Sub_system_tag";
|
||||
string sWhere = "deleted = 0 AND device_name_tag = @Sub_system_tag";
|
||||
|
||||
object param = new { Sub_system_tag = sub_system_tag };
|
||||
|
||||
|
@ -175,7 +175,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-12" id="" name="drawing_extend">
|
||||
<div class="form-group col-12" id="build_menu_planimetric_modal_div" name="drawing_extend" >
|
||||
<div class="col-12 mb-2 custom-control custom-checkbox align-content-center" >
|
||||
<input type="checkbox" class="custom-control-input" name="planimetric_click" id="planimetric_click" value="1" />
|
||||
<label class="custom-control-label" for="planimetric_click">是否顯示平面圖</label>
|
||||
@ -263,7 +263,13 @@
|
||||
<label class="form-label"><span class="text-danger">*</span>預設頁面</label>
|
||||
<div class="row" id="build_menu_drawing_modal_r">
|
||||
<div class="col">
|
||||
<input type="radio" name="drawing_r" id="drawing_4_r" value="4" checked>
|
||||
<input type="radio" name="drawing_r" id="drawing_0_r" value="0" checked>
|
||||
<label for="drawing_0_r">
|
||||
不顯示
|
||||
</label>
|
||||
</div>
|
||||
<div class="col">
|
||||
<input type="radio" name="drawing_r" id="drawing_4_r" value="4">
|
||||
<label for="drawing_4_r">
|
||||
昇位圖
|
||||
</label>
|
||||
@ -294,7 +300,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-12" id="" name="drawing_extend_r">
|
||||
<div class="form-group col-12" id="build_menu_planimetric_modal_div_r" name="drawing_extend_r">
|
||||
<div class="col-12 mb-2 custom-control custom-checkbox align-content-center">
|
||||
<input type="checkbox" class="custom-control-input" name="planimetric_click_r" id="planimetric_click_r" value="1" />
|
||||
<label class="custom-control-label" for="planimetric_click_r">是否顯示平面圖</label>
|
||||
@ -973,7 +979,7 @@
|
||||
$(drawingParent).find('[id^=build_menu_icon_click_url_width_height_modal_div]').hide();
|
||||
$(drawingParent).find('[id^=build_menu_planimetric_floor_modal_div]').hide();
|
||||
$(drawingParent).find('[id^=build_menu_systemurl_modal_div]').hide();
|
||||
|
||||
$(drawingParent).find('[id^=build_menu_planimetric_modal_div]').show();
|
||||
if ($(value).val() == 2) {
|
||||
$(drawingParent).find('[id^=planimetric_click]').attr("disabled", false);
|
||||
$(drawingParent).find('[id^=build_menu_systemurl_modal_div]').show();
|
||||
@ -992,6 +998,8 @@
|
||||
$(drawingParent).find('[id^=build_menu_blankurl_modal_div]').show();
|
||||
} else if ($(value).val() == 3) {
|
||||
$(drawingParent).find('[id^=planimetric_click]').prop("checked", false).attr("disabled", true);
|
||||
} else {
|
||||
$(drawingParent).find('[id^=build_menu_planimetric_modal_div]').hide();
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -166,7 +166,7 @@
|
||||
<div class="row mb-3 align-items-center justify-content-start">
|
||||
<div class="col-12">
|
||||
<div class="row mb-2 align-items-center justify-content-start">
|
||||
<span class="col-1">區域</span>
|
||||
<span class="col-1">棟別</span>
|
||||
<div class="col-11 row">
|
||||
<div id="import-temp-building-tag-list" class="col-12">
|
||||
</div>
|
||||
@ -1494,10 +1494,10 @@
|
||||
"url": "/DeviceManage/DeviceKindTableList",
|
||||
"type": "POST",
|
||||
"data": function (d) {
|
||||
d.Building_tag = selected_building_menu.building_tag ? selected_building_menu.building_tag : "";
|
||||
d.Main_system_tag = selected_building_menu.main_system ? selected_building_menu.main_system.main_system_tag : "";
|
||||
d.Sub_system_tag = selected_building_menu.main_system ? selected_building_menu.main_system.sub_system ? selected_building_menu.main_system.sub_system.sub_system_tag : "" : "";
|
||||
d.Floor_tag = selected_floor_tag ? selected_floor_tag : "";
|
||||
d.building_tag = selected_building_menu.building_tag ? selected_building_menu.building_tag : "";
|
||||
d.device_system_tag = selected_building_menu.main_system ? selected_building_menu.main_system.main_system_tag : "";
|
||||
d.device_name_tag = selected_building_menu.main_system ? selected_building_menu.main_system.sub_system ? selected_building_menu.main_system.sub_system.sub_system_tag : "" : "";
|
||||
//d.Floor_tag = selected_floor_tag ? selected_floor_tag : "";
|
||||
},
|
||||
"dataSrc": function (rel) {
|
||||
if (rel.code == "9999") {
|
||||
@ -1545,7 +1545,6 @@
|
||||
return;
|
||||
}
|
||||
else {
|
||||
|
||||
device_kind_data = rel.data;
|
||||
|
||||
//取得單一設備基本資料
|
||||
@ -1575,9 +1574,9 @@
|
||||
$("#device_close_point_name_modal").append($("<option />").val("").text("未選擇"));
|
||||
$("#device_error_point_name_modal").append($("<option />").val("").text("未選擇"));
|
||||
$.each(rel.data, function (index, val) {
|
||||
$("#device_normal_point_name_modal").append($("<option />").val(val.device_item_guid).text(val.points));
|
||||
$("#device_close_point_name_modal").append($("<option />").val(val.device_item_guid).text(val.points));
|
||||
$("#device_error_point_name_modal").append($("<option />").val(val.device_item_guid).text(val.points));
|
||||
$("#device_normal_point_name_modal").append($("<option />").val(val.id).text(val.points));
|
||||
$("#device_close_point_name_modal").append($("<option />").val(val.id).text(val.points));
|
||||
$("#device_error_point_name_modal").append($("<option />").val(val.id).text(val.points));
|
||||
});
|
||||
|
||||
|
||||
@ -2571,7 +2570,7 @@
|
||||
//#region 變更新增設備基本資料modal的過濾條件
|
||||
function ChangeDeviceImportPanel(building_tag, system_tag = "", floor_tag = "") {
|
||||
if (building_tag == undefined && building_tag == null || building_tag == "") {
|
||||
toast_warning("請先選擇區域");
|
||||
toast_warning("請先選擇棟別");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2734,6 +2733,7 @@
|
||||
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append("Building_tag", selectedBuilding_tag);
|
||||
formData.append("Main_system_tag", selectedMain_system_tag);
|
||||
formData.append("Sub_system_tag", selectedSub_system_tag);
|
||||
formData.append("Floor_tag", selectedFloor_tag);
|
||||
|
@ -139,7 +139,7 @@
|
||||
</ul>
|
||||
</li>
|
||||
}
|
||||
@if (ViewBag.role.Contains("EmergencySettingIndex")
|
||||
@*@if (ViewBag.role.Contains("EmergencySettingIndex")
|
||||
|| ViewBag.role.Contains("EmergencyGroupingIndex")
|
||||
|| ViewBag.role.Contains("RescueDeviceFireExtinguisher")
|
||||
|| ViewBag.role.Contains("RescueDeviceAED"))
|
||||
@ -184,7 +184,7 @@
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
}
|
||||
}*@
|
||||
|
||||
@*@if (ViewBag.role.Contains("EmergencyDeviceMenuIndex")
|
||||
|| ViewBag.role.Contains("EmergencyContactIndex")
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 2.0 MiB |
@ -17,7 +17,7 @@ using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
namespace FrontendWebApi.ApiControllers
|
||||
{
|
||||
public class LoginController : Controller
|
||||
{
|
||||
@ -45,15 +45,9 @@ namespace FrontendWebApi.Controllers
|
||||
this.frontendRepository = frontendRepository;
|
||||
}
|
||||
|
||||
public IActionResult Index(string jwt)
|
||||
{
|
||||
ViewBag.jwt = jwt;
|
||||
return View();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("api/Login")]
|
||||
public async Task<ActionResult<ApiResult<TnToken>>> Login(Login login)
|
||||
public async Task<ActionResult<ApiResult<TnToken>>> Login([FromBody] Login login)
|
||||
{
|
||||
ApiResult<TnToken> apiResult = new ApiResult<TnToken>(null);
|
||||
ErrorCode errorCode = new ErrorCode();
|
||||
@ -67,6 +61,7 @@ namespace FrontendWebApi.Controllers
|
||||
if (User == null)
|
||||
{
|
||||
apiResult.Code = "9998";
|
||||
apiResult.Msg = "查無此帳戶";
|
||||
return Ok(apiResult);
|
||||
}
|
||||
JwtLogin jwtLoing = new JwtLogin()
|
||||
@ -77,6 +72,7 @@ namespace FrontendWebApi.Controllers
|
||||
userinfo_guid = User.userinfo_guid
|
||||
};
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "登入成功";
|
||||
apiResult.Data = jwt.GenerateToken(jwtLoing);
|
||||
}
|
||||
catch
|
@ -2,6 +2,7 @@
|
||||
using FrontendWebApi.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Repository.BackendRepository.Interface;
|
||||
using Repository.BaseRepository.Interface;
|
||||
using Repository.FrontendRepository.Interface;
|
||||
@ -38,5 +39,617 @@ namespace FrontendWebApi.ApiControllers
|
||||
apiResult.Data = myUser;
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 帳號管理列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<List<UserManagerList>>> UserManagerList()
|
||||
{
|
||||
ApiResult<List<UserManagerList>> apiResult = new ApiResult<List<UserManagerList>>();
|
||||
List<UserManagerList> userManagerList = new List<UserManagerList>();
|
||||
|
||||
try
|
||||
{
|
||||
var sqlString = @$"SELECT A.userinfo_guid, A.full_name, B.full_name AS 'Role_full_name', A.email, A.phone, A.created_at,A.Account ,B.layer
|
||||
FROM userinfo A
|
||||
LEFT JOIN role B ON A.role_guid=B.role_guid AND B.deleted='0'
|
||||
WHERE A.deleted = 0
|
||||
ORDER BY A.created_at DESC";
|
||||
userManagerList = await backendRepository.GetAllAsync<UserManagerList>(sqlString);
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = userManagerList;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 角色管理列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<List<RoleManagerList>>> RoleManagerList(int post) //是否判斷layer 0:否 1:是
|
||||
{
|
||||
ApiResult<List<RoleManagerList>> apiResult = new ApiResult<List<RoleManagerList>>();
|
||||
List<RoleManagerList> roleList = new List<RoleManagerList>();
|
||||
|
||||
try
|
||||
{
|
||||
var layersql = "";
|
||||
if (post == 1)
|
||||
{
|
||||
layersql = "and A.layer = 1 ";
|
||||
}
|
||||
var sqlString = @$"SELECT *
|
||||
FROM role A
|
||||
WHERE A.deleted = 0 {layersql}
|
||||
ORDER BY A.created_at DESC";
|
||||
roleList = await backendRepository.GetAllAsync<RoleManagerList>(sqlString);
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = roleList;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增 / 修改 使用者
|
||||
/// </summary>
|
||||
/// <param name="post"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<string>> SaveUser(SaveUserManager post)
|
||||
{
|
||||
ApiResult<string> apiResult = new ApiResult<string>();
|
||||
|
||||
UserInfos userInfo = null;
|
||||
|
||||
try
|
||||
{
|
||||
userInfo = await backendRepository.GetOneAsync<UserInfos>("userinfo", $"userinfo_guid='{post.Id.ToString()}'");
|
||||
|
||||
if (userInfo == null)
|
||||
{
|
||||
|
||||
if (post.Id != "0")
|
||||
{
|
||||
apiResult.Code = "9998";
|
||||
apiResult.Msg = "查無該使用者。";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
#region 新增使用者
|
||||
//判斷帳號 是否已存在
|
||||
var exist = await backendRepository.HasExistsWithGuid(post.Account, "userinfo", "account");
|
||||
if (exist)
|
||||
{
|
||||
apiResult.Code = "9986";
|
||||
apiResult.Msg = "該帳號已被註冊,請重新輸入";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
EDFunction edFunction = new EDFunction();
|
||||
|
||||
//隨機產生亂數密碼
|
||||
Random random = new Random((int)DateTime.Now.Ticks);
|
||||
const string chars = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789";
|
||||
string random_password = new string(Enumerable.Repeat(chars, 8).Select(s => s[random.Next(chars.Length)]).ToArray());
|
||||
|
||||
var newPassword = edFunction.GetSHA256Encryption(random_password);
|
||||
|
||||
//產生一組GUID
|
||||
var guid = Guid.NewGuid(); //使用者GUID
|
||||
|
||||
Dictionary<string, object> userinfo = new Dictionary<string, object>();
|
||||
userinfo = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@userinfo_guid", guid},
|
||||
{ "@Full_name", post.Name},
|
||||
{ "@Email", post.Email},
|
||||
{ "@Account", post.Account},
|
||||
{ "@Password", newPassword},
|
||||
{ "@Role_guid", post.RoleId},
|
||||
{ "@Phone", post.Phone},
|
||||
{ "@created_by", myUser.userinfo_guid}
|
||||
};
|
||||
|
||||
await backendRepository.AddOneByCustomTable(userinfo, "userinfo");
|
||||
|
||||
var sWhere = "system_type = 'website_config' AND system_key = 'website_url'";
|
||||
var website_url = await backendRepository.GetOneAsync<Variable>("variable", sWhere);
|
||||
|
||||
|
||||
var sendSubject = "新增帳號成功";
|
||||
var sendContent = $@"您的新密碼為:{random_password}
|
||||
<br>立即前往:<a href='{website_url.system_value}' target='_blank'>{website_url.system_value}</a>";
|
||||
|
||||
Dictionary<string, object> insertNotify = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@task_type", 0},
|
||||
{ "@recipient_name", post.Name},
|
||||
{ "@recipient_phone", post.Phone},
|
||||
{ "@recipient_email", post.Email},
|
||||
{ "@message_content", sendContent}
|
||||
};
|
||||
|
||||
await backendRepository.AddOneByCustomTable(insertNotify, "background_service_message_notification_task");
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "儲存成功";
|
||||
#endregion
|
||||
}
|
||||
else
|
||||
{
|
||||
#region 修改使用者
|
||||
Dictionary<string, object> userinfo = new Dictionary<string, object>();
|
||||
var role = await backendRepository.GetOneAsync<byte>(@$"select layer from role where role_guid = '{post.RoleId}'");
|
||||
var infoguid = await backendRepository.GetAllAsync<string>($@"select r.full_name from userinfo u
|
||||
left join role r on u.role_guid = r.role_guid
|
||||
where r.layer = 0 and u.userinfo_guid != '{post.Id}'");
|
||||
if (infoguid.Count == 0 && role == 1)
|
||||
{
|
||||
apiResult.Code = "9998";
|
||||
var getrolename = await backendRepository.GetOneAsync<string>("select r.full_name from role r where r.layer = 0");
|
||||
apiResult.Msg = getrolename + "-僅剩一位<br>故無法儲存";
|
||||
}
|
||||
else
|
||||
{
|
||||
userinfo = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@Full_name", post.Name},
|
||||
{ "@Email", post.Email},
|
||||
{ "@Role_guid", post.RoleId},
|
||||
{ "@Phone", post.Phone},
|
||||
{ "@updated_by", myUser.userinfo_guid},
|
||||
{ "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
|
||||
};
|
||||
await backendRepository.UpdateOneByCustomTable(userinfo, "userinfo", $"userinfo_guid='{post.Id}'");
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "儲存成功";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得單一使用者
|
||||
/// </summary>
|
||||
/// <param name="guid"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<SimpleUser>> GetOneUser(string guid)
|
||||
{
|
||||
ApiResult<SimpleUser> apiResult = new ApiResult<SimpleUser>();
|
||||
|
||||
SimpleUser simpleUser = null;
|
||||
|
||||
try
|
||||
{
|
||||
simpleUser = await backendRepository.GetOneAsync<SimpleUser>("userinfo", $"userinfo_guid='{guid}'");
|
||||
|
||||
if (simpleUser == null)
|
||||
{
|
||||
apiResult.Code = "9998";
|
||||
apiResult.Msg = "查無該使用者。";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = simpleUser;
|
||||
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 軟刪除單一使用者
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<string>> DeleteOneUser(string guid)
|
||||
{
|
||||
ApiResult<string> apiResult = new ApiResult<string>();
|
||||
|
||||
SimpleUser simpleUser = null;
|
||||
|
||||
try
|
||||
{
|
||||
simpleUser = await backendRepository.GetOneAsync<SimpleUser>("userinfo", $"userinfo_guid='{guid}'");
|
||||
|
||||
if (simpleUser == null)
|
||||
{
|
||||
apiResult.Code = "9998";
|
||||
apiResult.Msg = "查無該使用者。";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
await backendRepository.DeleteOne(guid, "userinfo", "userinfo_guid");
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "刪除成功";
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增 / 修改 角色
|
||||
/// </summary>
|
||||
/// <param name="post"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<string>> SaveRole(PostRole post)
|
||||
{
|
||||
ApiResult<string> apiResult = new ApiResult<string>();
|
||||
|
||||
RoleManagerList roleManager = null;
|
||||
|
||||
try
|
||||
{
|
||||
roleManager = await backendRepository.GetOneAsync<RoleManagerList>("role", $"role_guid='{post.Id.ToString()}'");
|
||||
|
||||
if (roleManager == null)
|
||||
{
|
||||
|
||||
if (post.Id != "0")
|
||||
{
|
||||
apiResult.Code = "9994";
|
||||
apiResult.Msg = "查無該角色";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
#region 新增角色
|
||||
//產生一組GUID
|
||||
var guid = Guid.NewGuid(); //角色GUID
|
||||
Dictionary<string, object> role = new Dictionary<string, object>();
|
||||
role = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@role_guid", guid},
|
||||
{ "@Full_name", post.Name},
|
||||
{ "@created_by", myUser.userinfo_guid}
|
||||
};
|
||||
|
||||
await backendRepository.AddOneByCustomTable(role, "role");
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "儲存成功";
|
||||
#endregion
|
||||
}
|
||||
else
|
||||
{
|
||||
#region 修改角色
|
||||
Dictionary<string, object> role = new Dictionary<string, object>();
|
||||
role = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@Full_name", post.Name},
|
||||
{ "@updated_by", myUser.userinfo_guid},
|
||||
{ "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
|
||||
};
|
||||
await backendRepository.UpdateOneByCustomTable(role, "role", $"role_guid='{post.Id}'");
|
||||
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "儲存成功";
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得單一角色
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<SimpleRole>> GetOneRole(string guid)
|
||||
{
|
||||
ApiResult<SimpleRole> apiResult = new ApiResult<SimpleRole>();
|
||||
|
||||
SimpleRole simpleRole = null;
|
||||
|
||||
try
|
||||
{
|
||||
simpleRole = await backendRepository.GetOneAsync<SimpleRole>("role", $"role_guid='{guid}'");
|
||||
|
||||
if (simpleRole == null)
|
||||
{
|
||||
apiResult.Code = "9994";
|
||||
apiResult.Msg = "查無該角色";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = simpleRole;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 軟刪除單一角色
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<string>> DeleteOneRole(string guid)
|
||||
{
|
||||
ApiResult<string> apiResult = new ApiResult<string>();
|
||||
|
||||
SimpleRole simpleRole = null;
|
||||
|
||||
try
|
||||
{
|
||||
simpleRole = await backendRepository.GetOneAsync<SimpleRole>("role", $"role_guid='{guid}'");
|
||||
|
||||
if (simpleRole == null)
|
||||
{
|
||||
apiResult.Code = "9998";
|
||||
apiResult.Msg = "查無該角色";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
//檢查是否有使用者為該角色
|
||||
var sWhere = $@"deleted = 0 AND role_guid = @Guid";
|
||||
var userInfos = await backendRepository.GetAllAsync<UserInfos>("userinfo", sWhere, new { Guid = guid });
|
||||
if (userInfos.Count > 0)
|
||||
{
|
||||
apiResult.Code = "9997";
|
||||
apiResult.Msg = "帳號管理中尚有帳號正在使用該角色,故無法刪除";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
|
||||
await backendRepository.DeleteOne(guid, "role", "role_guid");
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Msg = "刪除成功";
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 角色權限管理列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<List<RoleAuthList>>> RoleAuthList(PostRoleAuthFilter post)
|
||||
{
|
||||
ApiResult<List<RoleAuthList>> apiResult = new ApiResult<List<RoleAuthList>>();
|
||||
List<RoleAuthList> roleAuthList = new List<RoleAuthList>();
|
||||
|
||||
try
|
||||
{
|
||||
var sqlString = @$"SELECT A.role_guid, A.AuthCode, B.full_name AS 'Role_full_name', C.AuthType, C.MainName, C.SubName, D.full_name AS 'Building_full_name', A.created_at
|
||||
FROM role_auth A
|
||||
LEFT JOIN role B ON A.role_guid=B.role_guid AND B.deleted=0
|
||||
INNER JOIN auth_page C ON A.AuthCode=C.AuthCode
|
||||
LEFT JOIN building D ON C.building_tag=D.building_tag AND D.deleted=0
|
||||
WHERE A.role_guid='{post.SelectedRoleId}'
|
||||
ORDER BY A.created_at DESC";
|
||||
roleAuthList = await backendRepository.GetAllAsync<RoleAuthList>(sqlString);
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = roleAuthList;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得此角色未選擇的權限
|
||||
/// </summary>
|
||||
/// <param name="post"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<ApiResult<List<AuthPage>>> GetRoleNotAuthPageList(PostRoleAuthFilter post)
|
||||
{
|
||||
ApiResult<List<AuthPage>> apiResult = new ApiResult<List<AuthPage>>();
|
||||
List<AuthPage> authPage = new List<AuthPage>();
|
||||
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(post.SelectedRoleId))
|
||||
{
|
||||
var buildingGuid = "";
|
||||
if (post.SelectedBuild != "0")
|
||||
{
|
||||
buildingGuid = $" AND ap.building_tag = '{post.SelectedBuild}'";
|
||||
}
|
||||
var sqlString = @$" SELECT ap.AuthCode, ap.MainName, ap.SubName FROM auth_page ap
|
||||
WHERE ap.AuthType='{post.SelectedAuthType}'
|
||||
{buildingGuid}
|
||||
AND ap.AuthCode NOT IN (
|
||||
SELECT ra.AuthCode FROM role_auth ra
|
||||
LEFT JOIN auth_page ap ON ra.AuthCode = ap.AuthCode
|
||||
WHERE ra.role_guid = '{post.SelectedRoleId}'
|
||||
{buildingGuid}
|
||||
AND ap.AuthType='{post.SelectedAuthType}'
|
||||
)";
|
||||
authPage = await backendRepository.GetAllAsync<AuthPage>(sqlString);
|
||||
}
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = authPage;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增 權限
|
||||
/// </summary>
|
||||
/// <param name="post"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<string>> SaveRoleAuth(PostSaveRoleAuth post)
|
||||
{
|
||||
ApiResult<string> apiResult = new ApiResult<string>();
|
||||
|
||||
RoleManagerList roleManager = null;
|
||||
|
||||
try
|
||||
{
|
||||
roleManager = await backendRepository.GetOneAsync<RoleManagerList>("role", $"role_guid='{post.SelectedRoleId}'");
|
||||
|
||||
if (roleManager == null)
|
||||
{
|
||||
apiResult.Code = "9994";
|
||||
apiResult.Msg = "查無該角色";
|
||||
return apiResult;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (post.SaveCheckAuth.Count > 0)
|
||||
{
|
||||
foreach (var item in post.SaveCheckAuth)
|
||||
{
|
||||
#region 新增權限
|
||||
Dictionary<string, object> roleAuth = new Dictionary<string, object>();
|
||||
roleAuth = new Dictionary<string, object>()
|
||||
{
|
||||
{ "@role_guid", post.SelectedRoleId},
|
||||
{ "@AuthCode", item},
|
||||
{ "@created_by", myUser.userinfo_guid}
|
||||
};
|
||||
|
||||
await backendRepository.AddOneByCustomTable(roleAuth, "role_auth");
|
||||
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刪除 權限
|
||||
/// </summary>
|
||||
/// <param name="post"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<string>> DeleteOneRoleAuth(PostDeleteRoleAuth post)
|
||||
{
|
||||
ApiResult<string> apiResult = new ApiResult<string>();
|
||||
|
||||
RoleManagerList roleManager = null;
|
||||
|
||||
try
|
||||
{
|
||||
roleManager = await backendRepository.GetOneAsync<RoleManagerList>("role", $"role_guid='{post.RoleId}'");
|
||||
|
||||
if (roleManager == null)
|
||||
{
|
||||
apiResult.Code = "9994";
|
||||
apiResult.Msg = "查無該角色";
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
await backendRepository.PurgeOneByGuidWithCustomDBNameAndTable("role_auth", $"role_guid='{post.RoleId}' AND AuthCode='{post.AuthCode}'");
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,232 +0,0 @@
|
||||
using FrontendWebApi.Models;
|
||||
using iTextSharp.text;
|
||||
using iTextSharp.text.html.simpleparser;
|
||||
using iTextSharp.text.pdf;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.XSSF.UserModel;
|
||||
using Repository.BackendRepository.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
{
|
||||
public class EmergencyContactController : MyBaseController<EmergencyContactController>
|
||||
{
|
||||
private readonly IBackendRepository backendRepository;
|
||||
public EmergencyContactController(IBackendRepository backendRepository)
|
||||
{
|
||||
this.backendRepository = backendRepository;
|
||||
}
|
||||
public IActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ActionResult> EmergencyContactTable (List<int> selectgroupidlist)
|
||||
{
|
||||
List<EmergencyContactTable> Emergency_member_tables = new List<EmergencyContactTable>();
|
||||
ApiResult<List<EmergencyContactTable>> apiResult = new ApiResult<List<EmergencyContactTable>>();
|
||||
try
|
||||
{
|
||||
Emergency_member_tables = await backendRepository.GetAllAsync<EmergencyContactTable>($@"
|
||||
select v.system_key groupingName,va.system_key departmentName,* from emergency_member em left join variable v on em.grouping = v.id
|
||||
left join (select * from variable vs where vs.system_type = 'department' and vs.deleted = 0) va on va.system_value = em.department
|
||||
where em.grouping in @groupinglist and em.deleted = 0",new { groupinglist = selectgroupidlist });
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = Emergency_member_tables;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
public FileResult ExportPDF(string post)
|
||||
{
|
||||
var grouping = JsonConvert.DeserializeObject<export>(post);
|
||||
var stream = new MemoryStream();
|
||||
try
|
||||
{
|
||||
var Emergency_member_tables = backendRepository.GetAllAsync<EmergencyContactTable>($@"
|
||||
select v.system_key groupingName,va.system_key departmentName,* from emergency_member em left join variable v on em.grouping = v.id
|
||||
left join (select * from variable vs where vs.system_type = 'department' and vs.deleted = 0) va on va.system_value = em.department
|
||||
where em.grouping in @groupinglist and em.deleted = 0", new { groupinglist = grouping.groupidlist });
|
||||
using (var doc = new Document())
|
||||
{
|
||||
using (var writer = PdfWriter.GetInstance(doc, stream))
|
||||
{
|
||||
writer.CloseStream = false;
|
||||
BaseFont BaseF = BaseFont.CreateFont("C:\\Windows\\Fonts\\kaiu.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
|
||||
Font fontCh = new Font(BaseF, 14);
|
||||
doc.Open();
|
||||
PdfPTable table = new PdfPTable(new float[] { 1, 1, 1, 1, 1 ,1 });
|
||||
table.TotalWidth = 480f;
|
||||
table.LockedWidth = true;
|
||||
PdfPCell header = new PdfPCell(new Phrase(grouping.disaster+"-聯絡清單", fontCh));
|
||||
header.Colspan = 6;
|
||||
table.AddCell(header);
|
||||
table.AddCell(new Phrase("組別", fontCh));
|
||||
table.AddCell(new Phrase("姓名", fontCh));
|
||||
table.AddCell(new Phrase("部門", fontCh));
|
||||
table.AddCell(new Phrase("電話", fontCh));
|
||||
table.AddCell(new Phrase("LINE ID", fontCh));
|
||||
table.AddCell(new Phrase("電子信箱", fontCh));
|
||||
|
||||
foreach(var group in Emergency_member_tables.Result)
|
||||
{
|
||||
table.AddCell(new Phrase(group.groupingName, fontCh));
|
||||
table.AddCell(new Phrase(group.full_name, fontCh));
|
||||
table.AddCell(new Phrase(group.departmentName, fontCh));
|
||||
table.AddCell(new Phrase(group.phone, fontCh));
|
||||
table.AddCell(new Phrase(group.lineid, fontCh));
|
||||
table.AddCell(new Phrase(group.email, fontCh));
|
||||
}
|
||||
doc.Add(table);
|
||||
doc.Close();
|
||||
}
|
||||
}
|
||||
var bytes = stream.ToArray();
|
||||
stream.Position = 0;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】");
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
return File(stream, "application/pdf", grouping.disaster+"-聯絡清單.pdf");
|
||||
}
|
||||
|
||||
public FileResult ExportExcel(string post)
|
||||
{
|
||||
var grouping = JsonConvert.DeserializeObject<export>(post);
|
||||
var workbook = new XSSFWorkbook();
|
||||
var ms = new NpoiMemoryStream
|
||||
{
|
||||
AllowClose = false
|
||||
};
|
||||
#region excel設定
|
||||
IFont font12 = workbook.CreateFont();
|
||||
font12.FontName = "新細明體";
|
||||
font12.FontHeightInPoints = 12;
|
||||
ICellStyle style12 = workbook.CreateCellStyle();
|
||||
style12.SetFont(font12);
|
||||
style12.Alignment = HorizontalAlignment.Center;
|
||||
style12.VerticalAlignment = VerticalAlignment.Center;
|
||||
IFont font12Times = workbook.CreateFont();
|
||||
font12Times.FontName = "Times New Roman";
|
||||
font12Times.FontHeightInPoints = 12;
|
||||
IFont font18 = workbook.CreateFont();
|
||||
font18.FontName = "新細明體";
|
||||
font18.FontHeightInPoints = 18;
|
||||
font18.IsBold = true;
|
||||
ICellStyle styleTitle18 = workbook.CreateCellStyle();
|
||||
styleTitle18.SetFont(font18);
|
||||
styleTitle18.Alignment = HorizontalAlignment.Center;
|
||||
styleTitle18.VerticalAlignment = VerticalAlignment.Center;
|
||||
ICellStyle styleLeft12 = workbook.CreateCellStyle();
|
||||
styleLeft12.SetFont(font12);
|
||||
styleLeft12.Alignment = HorizontalAlignment.Left;
|
||||
styleLeft12.VerticalAlignment = VerticalAlignment.Center;
|
||||
ICellStyle styleLine12 = workbook.CreateCellStyle();
|
||||
styleLine12.SetFont(font12);
|
||||
styleLine12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
|
||||
styleLine12.VerticalAlignment = VerticalAlignment.Center;
|
||||
styleLine12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
styleLine12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
styleLine12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
styleLine12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
ICellStyle stylein12 = workbook.CreateCellStyle();
|
||||
stylein12.SetFont(font12Times);
|
||||
stylein12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
|
||||
stylein12.VerticalAlignment = VerticalAlignment.Center;
|
||||
stylein12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
stylein12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
stylein12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||||
stylein12.WrapText = true;
|
||||
#endregion
|
||||
try
|
||||
{
|
||||
var Emergency_member_tables = backendRepository.GetAllAsync<EmergencyContactTable>($@"
|
||||
select v.system_key groupingName,va.system_key departmentName,* from emergency_member em left join variable v on em.grouping = v.id
|
||||
left join (select * from variable vs where vs.system_type = 'department' and vs.deleted = 0) va on va.system_value = em.department
|
||||
where em.grouping in @groupinglist and em.deleted = 0", new { groupinglist = grouping.groupidlist }).Result;
|
||||
var sheet = workbook.CreateSheet(grouping.disaster+"-聯絡清單");
|
||||
int RowPosition = 0;
|
||||
IRow row = sheet.CreateRow(RowPosition);
|
||||
sheet.SetColumnWidth(0, 4 * 160 * 6);
|
||||
sheet.SetColumnWidth(1, 4 * 160 * 6);
|
||||
sheet.SetColumnWidth(2, 4 * 160 * 6);
|
||||
sheet.SetColumnWidth(3, 4 * 160 * 6);
|
||||
sheet.SetColumnWidth(4, 4 * 160 * 6);
|
||||
sheet.SetColumnWidth(5, 4 * 160 * 6);
|
||||
ICell cell = row.CreateCell(0);
|
||||
cell.SetCellValue("組別");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue("姓名");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(2);
|
||||
cell.SetCellValue("部門");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(3);
|
||||
cell.SetCellValue("電話");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(4);
|
||||
cell.SetCellValue("LINE ID");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(5);
|
||||
cell.SetCellValue("電子信箱");
|
||||
cell.CellStyle = styleLine12;
|
||||
foreach (var group in Emergency_member_tables)
|
||||
{
|
||||
RowPosition += 1;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(0);
|
||||
cell.SetCellValue(group.groupingName);
|
||||
cell.CellStyle = style12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue(group.full_name);
|
||||
cell.CellStyle = style12;
|
||||
cell = row.CreateCell(2);
|
||||
cell.SetCellValue(group.departmentName);
|
||||
cell.CellStyle = style12;
|
||||
cell = row.CreateCell(3);
|
||||
cell.SetCellValue(group.phone);
|
||||
cell.CellStyle = style12;
|
||||
cell = row.CreateCell(4);
|
||||
cell.SetCellValue(group.lineid);
|
||||
cell.CellStyle = style12;
|
||||
cell = row.CreateCell(5);
|
||||
cell.SetCellValue(group.email);
|
||||
cell.CellStyle = style12;
|
||||
}
|
||||
workbook.Write(ms);
|
||||
ms.Flush();
|
||||
ms.Seek(0, SeekOrigin.Begin);
|
||||
}
|
||||
catch(Exception exception)
|
||||
{
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】");
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
return File(ms, "application/vnd.ms-excel", grouping.disaster + "-聯絡清單.xlsx");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
{
|
||||
public class EmergencyDeviceMenuController : MyBaseController<EmergencyDeviceMenuController>
|
||||
{
|
||||
private readonly ILogger<EmergencyDeviceMenuController> _logger;
|
||||
|
||||
public EmergencyDeviceMenuController(ILogger<EmergencyDeviceMenuController> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,142 +0,0 @@
|
||||
using FrontendWebApi.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Repository.BackendRepository.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
{
|
||||
public class EmergencyRecordController : MyBaseController<EmergencyRecordController>
|
||||
{
|
||||
private readonly IBackendRepository backendRepository;
|
||||
public EmergencyRecordController(IBackendRepository backendRepository)
|
||||
{
|
||||
this.backendRepository = backendRepository;
|
||||
}
|
||||
public IActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ApiResult<List<KeyValue>>> DisasterList()
|
||||
{
|
||||
ApiResult<List<KeyValue>> apiResult = new ApiResult<List<KeyValue>>();
|
||||
List<KeyValue> Variable = new List<KeyValue>();
|
||||
|
||||
try
|
||||
{
|
||||
var sqlString = @$"select system_value as Value, system_key as Name from variable a where a.system_type = 'disaster' and a.deleted = 0";
|
||||
Variable = await backendRepository.GetAllAsync<KeyValue>(sqlString);
|
||||
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = Variable;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
|
||||
return apiResult;
|
||||
}
|
||||
|
||||
[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<ActionResult> EmergencyRecordTable(EmergencyRecordEventPost post)
|
||||
{
|
||||
List<EmergencyRecordEventTable> EmergencyRecordEvent = new List<EmergencyRecordEventTable>();
|
||||
ApiResult<List<EmergencyRecordEventTable>> apiResult = new ApiResult<List<EmergencyRecordEventTable>>();
|
||||
try
|
||||
{
|
||||
var sqlplus = "";
|
||||
if(post.selectaType != 2 )
|
||||
{
|
||||
sqlplus = $"and ee.type = '{post.selectaType}'";
|
||||
}
|
||||
if (post.dateranger != null)
|
||||
{
|
||||
var date = post.dateranger.Replace(" ", "").Split("-");
|
||||
sqlplus += $"and ee.created_at between '{date[0].Replace(" / ", " - ")} 00:00:00' and '{date[1].Replace(" / ", " - ")} 23:59:59'";
|
||||
}
|
||||
|
||||
EmergencyRecordEvent = await backendRepository.GetAllAsync<EmergencyRecordEventTable>($@"
|
||||
select d.device_number device_name,v.system_key disaster_name,ee.*,b.full_name building_name from emergency_event ee
|
||||
left join (select * from variable v where v.system_type = 'disaster') v on v.system_value = ee.disaster
|
||||
left join device d on d.device_guid = ee.device_guid
|
||||
left join building b on b.building_guid = ee.building_guid
|
||||
where ee.deleted = 0 and ee.building_guid = '{post.selectaBuild}' and ee.disaster = '{post.selectaDisaster}' {sqlplus}
|
||||
");
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = EmergencyRecordEvent;
|
||||
}
|
||||
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<ActionResult> EmergencyItemTable(string event_guid)
|
||||
{
|
||||
List<EmergencyRecordItem> EmergencyRecordEvent = new List<EmergencyRecordItem>();
|
||||
ApiResult<List<EmergencyRecordItem>> apiResult = new ApiResult<List<EmergencyRecordItem>>();
|
||||
try
|
||||
{
|
||||
EmergencyRecordEvent = await backendRepository.GetAllAsync<EmergencyRecordItem>($@"
|
||||
select * from emergency_item where event_guid = '{event_guid}' order by created_at desc
|
||||
");
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = EmergencyRecordEvent;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
{
|
||||
public class HomeController : MyBaseController<HomeController>
|
||||
{
|
||||
private readonly ILogger<HomeController> _logger;
|
||||
|
||||
public HomeController(ILogger<HomeController> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,167 +0,0 @@
|
||||
using FrontendWebApi.Jwt;
|
||||
using FrontendWebApi.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Repository.BackendRepository.Interface;
|
||||
using Repository.BaseRepository.Interface;
|
||||
using Repository.FrontendRepository.Interface;
|
||||
using Repository.Helper;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
{
|
||||
public class MyBaseController<T> : Controller where T : MyBaseController<T>
|
||||
{
|
||||
private ILogger<T> _logger;
|
||||
protected ILogger<T> Logger => _logger ?? (_logger = HttpContext?.RequestServices.GetService<ILogger<T>>());
|
||||
|
||||
private IJwtHelpers jwt => HttpContext?.RequestServices.GetService<IJwtHelpers>();
|
||||
|
||||
private IFrontendRepository frontendRepository => HttpContext?.RequestServices.GetService<IFrontendRepository>();
|
||||
|
||||
public MyBaseController() { }
|
||||
protected MyUserInfo myUserInfo = null;
|
||||
protected JwtGet myUser;
|
||||
protected string jwt_str = null;
|
||||
protected bool jwtlife = true;
|
||||
public string controllerName;
|
||||
public string actionName;
|
||||
public ErrorCode errorCode = new ErrorCode();
|
||||
[Authorize]
|
||||
public override void OnActionExecuting(ActionExecutingContext filterContext)
|
||||
{
|
||||
EDFunction edFunction = new EDFunction();
|
||||
var myAccount = edFunction.AESDecrypt(HttpContext.Session.GetString("MyApiAccount"));
|
||||
controllerName = ControllerContext.RouteData.Values["controller"].ToString(); //controller名稱
|
||||
actionName = ControllerContext.RouteData.Values["action"].ToString(); //action名稱
|
||||
|
||||
//紀錄當前PID
|
||||
Process currentProcess = Process.GetCurrentProcess();
|
||||
Dictionary<string, object> updateProcess = new Dictionary<string, object>();
|
||||
updateProcess.Add("@system_value", currentProcess.Id.ToString());
|
||||
|
||||
frontendRepository.UpdateProcessPID(updateProcess, "variable", "system_type = 'watchDogCongfig' AND system_key = 'AlarmPID'");
|
||||
|
||||
bool isAjaxCall = filterContext.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest";
|
||||
if (string.IsNullOrEmpty(myAccount))
|
||||
{
|
||||
|
||||
if (isAjaxCall)
|
||||
{
|
||||
filterContext.HttpContext.Response.Clear();
|
||||
filterContext.HttpContext.Response.StatusCode = 499;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
filterContext.Result = new RedirectToRouteResult(
|
||||
new RouteValueDictionary
|
||||
{
|
||||
{"controller", "Login"},
|
||||
{"action", "Index"}
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//取得當前登入使用者資訊
|
||||
myUserInfo = frontendRepository.GetMyUserInfoByAccount<MyUserInfo>(myAccount);
|
||||
var showview = frontendRepository.GetAllAsync<string>($@"select ap.ShowView from userinfo us
|
||||
left join role_auth ra on ra.role_guid = us.role_guid
|
||||
left join auth_page ap on ap.AuthCode = ra.AuthCode
|
||||
where us.userinfo_guid = '{myUserInfo.Userinfo_guid}'");
|
||||
myUserInfo.ShowView = showview.Result;
|
||||
ViewBag.myUserInfo = myUserInfo;
|
||||
ViewBag.role = showview.Result;
|
||||
|
||||
//var showviewt = new List<string>()
|
||||
// {
|
||||
// "EmergencyDeviceMenuIndex",
|
||||
// "EmergencyContactIndex",
|
||||
// "EmergencyRecordIndex",
|
||||
// "RescueDeviceFireExtinguisher",
|
||||
// "RescueDeviceAED",
|
||||
// };
|
||||
//ViewBag.role = showviewt;
|
||||
}
|
||||
|
||||
//var ctx = filterContext.HttpContext;
|
||||
//ctx.Response.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||
//ctx.Response.Headers.Add("Access-Control-Allow-Headers", "*");
|
||||
//ctx.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
|
||||
//var a = User.Claims.Select(p => new { Type = p.Type, Value = p.Value }).ToList();
|
||||
//myUser = new JwtGet()
|
||||
//{
|
||||
// account = User.Claims.Where(a => a.Type == "account").Select(e => e.Value).FirstOrDefault(),
|
||||
// email = User.Claims.Where(a => a.Type == "email").Select(e => e.Value).FirstOrDefault(),
|
||||
// full_name = User.Claims.Where(a => a.Type == "full_name").Select(e => e.Value).FirstOrDefault(),
|
||||
// exp = User.Claims.Where(a => a.Type == "exp").Select(e => Convert.ToInt32(e.Value)).FirstOrDefault(),
|
||||
// nbf = User.Claims.Where(a => a.Type == "nbf").Select(e => Convert.ToInt32(e.Value)).FirstOrDefault(),
|
||||
// userinfo_guid = User.Claims.Where(a => a.Type == "userinfo_guid").Select(e => e.Value).FirstOrDefault(),
|
||||
//};
|
||||
|
||||
//TODO 模擬JWT,記得刪除
|
||||
//myUser.account = "Bajascript";
|
||||
//myUser.email = "asd@com";
|
||||
//myUser.full_name = "野原廣志";
|
||||
//myUser.exp = 3600;
|
||||
//myUser.userinfo_guid = "1EF9CEAC-4DBF-E2BE-8B1D-CB3014E0DA17";
|
||||
|
||||
//if (myUser.exp == 0)
|
||||
//{
|
||||
// jwt_str = "Jwt Token不合法";
|
||||
// jwtlife = false;
|
||||
|
||||
// ViewBag.myUserInfo = null;
|
||||
// ViewBag.role = null;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (myUser.exp <= DateTime.Now.AddHours(-8).AddMinutes(10).Subtract(new DateTime(1970, 1, 1)).TotalSeconds)
|
||||
// {
|
||||
// //取得當前登入使用者資訊
|
||||
// myUserInfo = frontendRepository.GetMyUserInfoByAccount<MyUserInfo>(myUser.account);
|
||||
// //var showview = frontendRepository.GetAllAsync<string>($@"select ap.ShowView from userinfo us
|
||||
// // left join role_auth ra on ra.role_guid = us.role_guid
|
||||
// // left join auth_page ap on ap.AuthCode = ra.AuthCode
|
||||
// // where us.userinfo_guid = '{myUserInfo.Userinfo_guid}'");
|
||||
// //myUserInfo.ShowView = showview.Result;
|
||||
// ViewBag.myUserInfo = myUserInfo;
|
||||
|
||||
// var showviewt = new List<string>()
|
||||
// {
|
||||
// "EmergencyDeviceMenuIndex",
|
||||
// "EmergencyContactIndex",
|
||||
// "EmergencyRecordIndex",
|
||||
// "RescueDeviceFireExtinguisher",
|
||||
// "RescueDeviceAED",
|
||||
// };
|
||||
// //ViewBag.role = showview.Result;
|
||||
// ViewBag.role = showviewt;
|
||||
|
||||
// jwtlife = true;
|
||||
// JwtLogin jwtLoing = new JwtLogin()
|
||||
// {
|
||||
// account = myUser.account,
|
||||
// email = myUser.email,
|
||||
// full_name = myUser.full_name,
|
||||
// userinfo_guid = myUser.userinfo_guid
|
||||
// };
|
||||
// jwt_str = jwt.GenerateToken(jwtLoing).token;
|
||||
// }
|
||||
//}
|
||||
base.OnActionExecuting(filterContext);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.HSSF.UserModel;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.XSSF.UserModel;
|
||||
using Repository.BackendRepository.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FrontendWebApi.Controllers
|
||||
{
|
||||
public class RescueDeviceController : MyBaseController<RescueDeviceController>
|
||||
{
|
||||
private readonly IBackendRepository backendRepository;
|
||||
|
||||
public RescueDeviceController(IBackendRepository backendRepository)
|
||||
{
|
||||
this.backendRepository = backendRepository;
|
||||
}
|
||||
public IActionResult FireExtinguisher()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
public IActionResult AED()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
@ -24,6 +24,7 @@ namespace FrontendWebApi.Models
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
}
|
||||
|
||||
public class JwtLogin
|
||||
{
|
||||
public string userinfo_guid { get; set; }
|
||||
@ -31,6 +32,7 @@ namespace FrontendWebApi.Models
|
||||
public string full_name { get; set; }
|
||||
public string email { get; set; }
|
||||
}
|
||||
|
||||
public class JwtGet : JwtLogin
|
||||
{
|
||||
public int nbf { get; set; }
|
||||
|
@ -45,4 +45,11 @@ namespace FrontendWebApi.Models
|
||||
{
|
||||
public int id { get; set; }
|
||||
}
|
||||
|
||||
public class Variable : Actor
|
||||
{
|
||||
public string System_type { get; set; }
|
||||
public string System_key { get; set; }
|
||||
public string system_value { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -15,10 +15,159 @@ namespace FrontendWebApi.Models
|
||||
public string phone { get; set; }
|
||||
public string tel { get; set; }
|
||||
public string email { get; set; }
|
||||
public List<string> ShowView { get; set; }
|
||||
}
|
||||
public class Login
|
||||
{
|
||||
public string account { get; set; }
|
||||
//public string password { get; set; }
|
||||
public string password { get; set; }
|
||||
}
|
||||
|
||||
public enum UserStatusEnum : byte
|
||||
{
|
||||
Suspend = 0, //停權
|
||||
Normal = 1, //正常
|
||||
}
|
||||
|
||||
public class UserInfos : Actor
|
||||
{
|
||||
public string Userinfo_guid { get; set; }
|
||||
public byte Deleted { get; set; } //是否刪除
|
||||
public byte Status { get; set; } //狀態
|
||||
public string StatusText //狀態文字
|
||||
{
|
||||
get
|
||||
{
|
||||
Dictionary<int, string> pairs = new Dictionary<int, string>()
|
||||
{
|
||||
{ 0, "停權"},
|
||||
{ 1, "正常"},
|
||||
};
|
||||
|
||||
return pairs[Status];
|
||||
}
|
||||
}
|
||||
public string Role_guid { get; set; } //角色guid
|
||||
public string Full_name { get; set; } //姓名
|
||||
public string Account { get; set; } //帳號
|
||||
public string Password { get; set; } //密碼
|
||||
public string Tel { get; set; } //市話
|
||||
public string Phone { get; set; } //手機
|
||||
public string Email { get; set; } //信箱
|
||||
}
|
||||
|
||||
public class UserManagerList : Actor
|
||||
{
|
||||
public string Userinfo_guid { get; set; }
|
||||
public string Full_name { get; set; } //姓名
|
||||
public string Role_full_name { get; set; } //角色名稱
|
||||
public string Email { get; set; } //信箱
|
||||
public string Phone { get; set; } //手機
|
||||
public string Account { get; set; }
|
||||
public byte Layer { get; set; }
|
||||
}
|
||||
|
||||
public class RoleManagerList : Actor
|
||||
{
|
||||
public string Role_guid { get; set; }
|
||||
public string Full_name { get; set; } //姓名
|
||||
public byte Layer { get; set; }
|
||||
}
|
||||
|
||||
public class SaveUserManager
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; } //姓名
|
||||
public string Email { get; set; } //信箱
|
||||
public string Account { get; set; } //帳號
|
||||
public string Phone { get; set; } //手機號碼
|
||||
public string RoleId { get; set; } //角色GUID
|
||||
}
|
||||
|
||||
public class SimpleUser
|
||||
{
|
||||
public string Full_name { get; set; } //姓名
|
||||
public string Account { get; set; } //帳號
|
||||
public string Email { get; set; } //信箱
|
||||
public string Phone { get; set; } //手機
|
||||
public string Role_guid { get; set; } //角色GUID
|
||||
}
|
||||
|
||||
public class PostRole
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class SimpleRole
|
||||
{
|
||||
public string Full_name { get; set; } //姓名
|
||||
}
|
||||
|
||||
public class RoleAuthList : Actor
|
||||
{
|
||||
public string Role_guid { get; set; } //角色GUID
|
||||
public string AuthCode { get; set; } //權限代碼
|
||||
public string Role_full_name { get; set; } //角色名稱
|
||||
public int AuthType { get; set; } //角色類型 1:前台 2:後台
|
||||
public string AuthTypeText //角色類型文字
|
||||
{
|
||||
get
|
||||
{
|
||||
Dictionary<int, string> pairs = new Dictionary<int, string>()
|
||||
{
|
||||
{ 1, "前台"},
|
||||
{ 2, "後台"},
|
||||
};
|
||||
|
||||
return pairs[AuthType];
|
||||
}
|
||||
}
|
||||
public string MainName { get; set; } //大項名稱
|
||||
public string SubName { get; set; } //功能名稱
|
||||
public string Building_full_name { get; set; } //區域名稱
|
||||
}
|
||||
|
||||
public class PostRoleAuthFilter
|
||||
{
|
||||
public string SelectedRoleId { get; set; }
|
||||
public string SelectedAuthType { get; set; }
|
||||
public string SelectedBuild { get; set; }
|
||||
}
|
||||
|
||||
public class AuthPage
|
||||
{
|
||||
public string AuthCode { get; set; }
|
||||
public string MainName { get; set; }
|
||||
public string SubName { get; set; }
|
||||
}
|
||||
|
||||
public class PostSaveRoleAuth
|
||||
{
|
||||
public string SelectedRoleId { get; set; }
|
||||
public List<string> SaveCheckAuth { get; set; }
|
||||
//public FrontEndCheckAuth BackEndCheckAuth { get; set; }
|
||||
}
|
||||
|
||||
public class PostDeleteRoleAuth
|
||||
{
|
||||
public string RoleId { get; set; }
|
||||
public string AuthCode { get; set; }
|
||||
}
|
||||
|
||||
//public class FrontEndCheckAuth
|
||||
//{
|
||||
// public string Building { get; set; }
|
||||
// public List<string> SelectedAuth { get; set; }
|
||||
//}
|
||||
public class Auth_page
|
||||
{
|
||||
public string AuthCode { get; set; }
|
||||
public byte AuthType { get; set; }
|
||||
public string MainName { get; set; }
|
||||
public string SubName { get; set; }
|
||||
public string building_guid { get; set; }
|
||||
public string ShowView { get; set; }
|
||||
public string created_at { get; set; }
|
||||
}
|
||||
}
|
||||
|
22
slnBIMS.sln
22
slnBIMS.sln
@ -1,12 +1,10 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.31702.278
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.3.32929.385
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendWebApi", "FrontendWebApi\FrontendWebApi.csproj", "{E70B0F92-8E08-4BD5-9CEC-95A2ABC5071F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Frontend", "Frontend\Frontend.csproj", "{4B65CA2A-AB4B-4113-B0E8-486828B07506}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Repository", "Repository\Repository.csproj", "{AE535279-C120-4DC7-AC07-5DB3C618F58C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backend", "Backend\Backend.csproj", "{C0B93B4D-F0AF-4C80-ABF9-5C984425749C}"
|
||||
@ -15,10 +13,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BackendWorkerService", "Bac
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "z01_WinAPP", "z01_WinAPP\z01_WinAPP.csproj", "{28AC1ECB-436F-4AB8-91A0-1DC9A33708B2}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendWorkerService", "FrontendWorkerService\FrontendWorkerService.csproj", "{7B02C712-3283-4948-8713-E341D61FF532}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlarmMonitorWorkerService", "AlarmMonitorWorkerService\AlarmMonitorWorkerService.csproj", "{24404D5B-C372-41E1-A454-757A06E73CE9}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@ -29,10 +23,6 @@ Global
|
||||
{E70B0F92-8E08-4BD5-9CEC-95A2ABC5071F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E70B0F92-8E08-4BD5-9CEC-95A2ABC5071F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E70B0F92-8E08-4BD5-9CEC-95A2ABC5071F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4B65CA2A-AB4B-4113-B0E8-486828B07506}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4B65CA2A-AB4B-4113-B0E8-486828B07506}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4B65CA2A-AB4B-4113-B0E8-486828B07506}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4B65CA2A-AB4B-4113-B0E8-486828B07506}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AE535279-C120-4DC7-AC07-5DB3C618F58C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AE535279-C120-4DC7-AC07-5DB3C618F58C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AE535279-C120-4DC7-AC07-5DB3C618F58C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@ -49,14 +39,6 @@ Global
|
||||
{28AC1ECB-436F-4AB8-91A0-1DC9A33708B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{28AC1ECB-436F-4AB8-91A0-1DC9A33708B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{28AC1ECB-436F-4AB8-91A0-1DC9A33708B2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7B02C712-3283-4948-8713-E341D61FF532}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7B02C712-3283-4948-8713-E341D61FF532}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7B02C712-3283-4948-8713-E341D61FF532}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7B02C712-3283-4948-8713-E341D61FF532}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{24404D5B-C372-41E1-A454-757A06E73CE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24404D5B-C372-41E1-A454-757A06E73CE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24404D5B-C372-41E1-A454-757A06E73CE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{24404D5B-C372-41E1-A454-757A06E73CE9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -30,7 +30,7 @@ namespace tpDomeWinAPP.Service
|
||||
{
|
||||
bool result = false;
|
||||
//tag
|
||||
InsertNiagaraTagList(dt, building);
|
||||
insertNiagaraTagList(dt, building);
|
||||
insertItemFromNiagara(dt, building);
|
||||
deviceComparison();
|
||||
deviceItemComparison();
|
||||
@ -39,7 +39,7 @@ namespace tpDomeWinAPP.Service
|
||||
return result;
|
||||
}
|
||||
|
||||
protected void InsertNiagaraTagList(List<device_value2> dt, string building)
|
||||
protected void insertNiagaraTagList(List<device_value2> dt, string building)
|
||||
{
|
||||
var ds2 = dt.GroupBy(x => new
|
||||
{
|
||||
@ -209,6 +209,7 @@ namespace tpDomeWinAPP.Service
|
||||
|
||||
conn.Open();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder sb2 = new StringBuilder();
|
||||
sb.Append($@" SELECT m.*
|
||||
FROM import_niagara_tag m
|
||||
LEFT JOIN device d
|
||||
@ -237,11 +238,19 @@ namespace tpDomeWinAPP.Service
|
||||
data.device_serial_tag + "', '" +
|
||||
data.niagara_tags + "', '" +
|
||||
data.device_system_tag + "', now(), now() );");
|
||||
|
||||
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());");
|
||||
}
|
||||
if(sb.Length > 0)
|
||||
{
|
||||
conn.Execute(sb.ToString());
|
||||
conn.Execute(sb2.ToString());
|
||||
sb.Clear();
|
||||
sb2.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user