diff --git a/Backend/Controllers/BuildInfoController.cs b/Backend/Controllers/BuildInfoController.cs index a1cea3f..e64cce8 100644 --- a/Backend/Controllers/BuildInfoController.cs +++ b/Backend/Controllers/BuildInfoController.cs @@ -104,22 +104,43 @@ namespace Backend.Controllers //新增 //抓取當前的Priority var current_priority = await backendRepository.GetCurrentPriority("building"); - var map_3d_guid = new Guid(); + var map_3d_guid = Guid.NewGuid(); - Dictionary building = new Dictionary(); - building = new Dictionary() + if (post.urn_3D != null) { - { "@building_tag", post.building_tag}, - { "@full_name", post.Full_name}, - { "@ip_address", post.Ip_address}, - { "@ip_port", post.Ip_port}, - { "@priority", current_priority + 1}, - { "@orgName_3D", post.orgName_3D}, - { "@saveName_3D", map_3d_guid}, - { "@extName_3D", post.extName_3D}, - { "@created_by", myUserInfo.Userinfo_guid} - }; - await backendRepository.AddOneByCustomTable(building, "building"); + Dictionary building = new Dictionary(); + building = new Dictionary() + { + { "@building_tag", post.building_tag}, + { "@full_name", post.Full_name}, + { "@ip_address", post.Ip_address}, + { "@ip_port", post.Ip_port}, + { "@priority", current_priority + 1}, + { "@orgName_3D", post.orgName_3D}, + { "@saveName_3D", map_3d_guid}, + { "@extName_3D", post.extName_3D}, + { "@urn_3D", post.urn_3D}, + { "@created_by", myUserInfo.Userinfo_guid} + }; + await backendRepository.AddOneByCustomTable(building, "building"); + } + else + { + Dictionary building = new Dictionary(); + building = new Dictionary() + { + { "@building_tag", post.building_tag}, + { "@full_name", post.Full_name}, + { "@ip_address", post.Ip_address}, + { "@ip_port", post.Ip_port}, + { "@priority", current_priority + 1}, + { "@orgName_3D", post.orgName_3D}, + { "@saveName_3D", map_3d_guid}, + { "@extName_3D", post.extName_3D}, + { "@created_by", myUserInfo.Userinfo_guid} + }; + await backendRepository.AddOneByCustomTable(building, "building"); + } if (post.orgName_3D != null && post.extName_3D != null) { @@ -186,18 +207,38 @@ namespace Backend.Controllers if (!judgeIPAddressRepeat) { - Dictionary building = new Dictionary(); - building = new Dictionary() + if (post.urn_3D != null) { - { "@full_name", post.Full_name}, - { "@ip_address", post.Ip_address}, - { "@ip_port", post.Ip_port}, - { "@orgName_3D", post.orgName_3D}, - { "@extName_3D", post.extName_3D}, - { "@updated_by", myUserInfo.Userinfo_guid}, - { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} - }; - await backendRepository.UpdateOneByCustomTable(building, "building", "building_tag='" + post.building_tag + "'"); + Dictionary building = new Dictionary(); + building = new Dictionary() + { + { "@full_name", post.Full_name}, + { "@ip_address", post.Ip_address}, + { "@ip_port", post.Ip_port}, + { "@orgName_3D", post.orgName_3D}, + { "@extName_3D", post.extName_3D}, + { "@urn_3D", post.urn_3D}, + { "@updated_by", myUserInfo.Userinfo_guid}, + { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} + }; + await backendRepository.UpdateOneByCustomTable(building, "building", "building_tag='" + post.building_tag + "'"); + } + else + { + Dictionary building = new Dictionary(); + building = new Dictionary() + { + { "@full_name", post.Full_name}, + { "@ip_address", post.Ip_address}, + { "@ip_port", post.Ip_port}, + { "@orgName_3D", post.orgName_3D}, + { "@extName_3D", post.extName_3D}, + { "@updated_by", myUserInfo.Userinfo_guid}, + { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} + }; + await backendRepository.UpdateOneByCustomTable(building, "building", "building_tag='" + post.building_tag + "'"); + } + if (post.orgName_3D != null && post.extName_3D != null) { diff --git a/Backend/Controllers/OSSController.cs b/Backend/Controllers/OSSController.cs index 340574c..6a5cb26 100644 --- a/Backend/Controllers/OSSController.cs +++ b/Backend/Controllers/OSSController.cs @@ -102,7 +102,7 @@ namespace forgeSample.Controllers /// [HttpPost] [Route("api/forge/oss/objects")] - public async Task UploadObject([FromForm] UploadFile input) + public async Task UploadObject([FromForm] UploadFile input) { // save the file on the server var fileSavePath = Path.Combine(_env.WebRootPath, Path.GetFileName(input.fileToUpload.FileName)); @@ -126,10 +126,10 @@ namespace forgeSample.Controllers // cleanup System.IO.File.Delete(fileSavePath); - var a = Base64Encode((string)uploadedObj.objectId); - //var test = new TreeNode(Base64Encode((string)uploadedObj.objectId), objInfo.Value.objectKey, "object", false) + string urn = Base64Encode((string)uploadedObj.objectId); + string result = urn + "," + uploadedObj.objectKey; - return uploadedObj; + return result;//uploadedObj; } public class UploadFile diff --git a/Backend/Models/BuildModel.cs b/Backend/Models/BuildModel.cs index 4e1fa3e..8c3784d 100644 --- a/Backend/Models/BuildModel.cs +++ b/Backend/Models/BuildModel.cs @@ -20,6 +20,7 @@ namespace Backend.Models public string orgName_3D { get; set; } public string saveName_3D { get; set; } public string extName_3D { get; set; } + public string urn_3D { get; set; } //public string Created_at { get; set; } //建立時間 } diff --git a/Backend/Views/BuildInfo/Index.cshtml b/Backend/Views/BuildInfo/Index.cshtml index c73ed0c..8770485 100644 --- a/Backend/Views/BuildInfo/Index.cshtml +++ b/Backend/Views/BuildInfo/Index.cshtml @@ -45,6 +45,7 @@ var selected_build_guid_top = ""; var selected_build_guid_top_name; var selected_floor_guid = ""; + let input3Dfile = null; //#region 區域基本資料 document ready $(function () { @@ -261,121 +262,367 @@ maxlength: 50, filterspace: true }, - file_3d_modal: { - accept: "image/svg+xml" + build_file_3d_modal: { + required: true, extension: "nwc|nwd" } - } + }, + messages: { build_file_3d_modal: "File must be nwc, nwd" } }); - //#endregion //#region 儲存區域基本資料 function SaveBuild() { if ($("#build-form").valid()) { $("#save-building-btn").html('').attr("disabled", true); - var url = "/BuildInfo/SaveBuildInfo"; - var formData = new FormData(); - formData.append("building_tag", $('#build_name_tag').val()); - formData.append("Full_name", $('#build_name_modal').val()); - formData.append("Ip_address", $('#ip_address_modal').val()); - formData.append("Ip_port", $('#ip_port_modal').val()); + if(input3Dfile != undefined && input3Dfile != null) {//上傳3d檔案至forge平台 + var file = input3Dfile; + var formData = new FormData(); + formData.append('fileToUpload', file); + formData.append('bucketKey', "ta3hqsffzqbnouxkpldkuksew4sj21w5-bims_models");//forge上傳平台-資料夾 - maps = $('#build_file_3d_modal')[0].files; - if (maps.length > 0) { - var file_names = maps[0].name.split("."); + $.ajax({ + url: '/api/forge/oss/objects', + data: formData, + processData: false, + contentType: false, + type: 'POST', + success: function (data) { + var datas = data.split(","); + var urn = datas[0]; + let m3d_names = datas[1].split("."); - formData.append("Map3dFile", maps[0]); - formData.append("orgName_3D", file_names[0]); - formData.append("extName_3D", file_names[1]); + var url = "/BuildInfo/SaveBuildInfo"; + + var formData2 = new FormData(); + formData2.append("building_tag", $('#build_name_tag').val()); + formData2.append("Full_name", $('#build_name_modal').val()); + formData2.append("Ip_address", $('#ip_address_modal').val()); + formData2.append("Ip_port", $('#ip_port_modal').val()); + + maps = $('#build_file_3d_modal')[0].files; + if (maps.length > 0) { + var file_names = maps[0].name.split("."); + + formData2.append("Map3dFile", maps[0]); + } + formData2.append("urn_3D", urn); + formData2.append("orgName_3D", m3d_names[0]); + formData2.append("extName_3D", m3d_names[1]); + + $.ajax({ + type: "POST", + url: url, + data: formData2, + cache: false, + contentType: false, + processData: false, + success: function (rel) { + $("#save-building-btn").html('確定').attr("disabled", false); + if (rel.code != "0000") { + if (rel.code == "9999") { + toast_error(rel.msg); + } + else { + toast_warning(rel.msg); + } + return; + } + else { + toast_ok(rel.msg); + buildInfoTable.ajax.reload(null, false); + $('#build-modal').modal('hide'); + return; + } + }, + fail: function (xhr, status, error) { + $("#save-building-btn").html('確定').attr("disabled", false); + } + }); + + }, + fail: function (xhr, status, error) { + toast_error("上傳3d模型檔失敗!"); + $("#save-building-btn").html('確定').attr("disabled", false); + } + }); } + else { + toast_warning("無3d模型檔案!"); + var url = "/BuildInfo/SaveBuildInfo"; - $.ajax({ - type: "POST", - url: url, - data: formData, - cache: false, - contentType: false, - processData: false, - success: function (rel) { - $("#save-building-btn").html('確定').attr("disabled", false); - if (rel.code != "0000") { - if (rel.code == "9999") { - toast_error(rel.msg); + var formData = new FormData(); + formData.append("building_tag", $('#build_name_tag').val()); + formData.append("Full_name", $('#build_name_modal').val()); + formData.append("Ip_address", $('#ip_address_modal').val()); + formData.append("Ip_port", $('#ip_port_modal').val()); + + maps = $('#build_file_3d_modal')[0].files; + if (maps.length > 0) { + var file_names = maps[0].name.split("."); + + formData.append("Map3dFile", maps[0]); + formData.append("orgName_3D", file_names[0]); + formData.append("extName_3D", file_names[1]); + } + + $.ajax({ + type: "POST", + url: url, + data: formData, + cache: false, + contentType: false, + processData: false, + success: function (rel) { + $("#save-building-btn").html('確定').attr("disabled", false); + if (rel.code != "0000") { + if (rel.code == "9999") { + toast_error(rel.msg); + } + else { + toast_warning(rel.msg); + } + return; } else { - toast_warning(rel.msg); + toast_ok(rel.msg); + buildInfoTable.ajax.reload(null, false); + $('#build-modal').modal('hide'); + return; } - return; + }, + fail: function (xhr, status, error) { + $("#save-building-btn").html('確定').attr("disabled", false); } - else { - toast_ok(rel.msg); - buildInfoTable.ajax.reload(null, false); - $('#build-modal').modal('hide'); - return; - } - }, - fail: function (xhr, status, error) { - $("#save-building-btn").html('確定').attr("disabled", false); - } - }); + }); + } + + //var url = "/BuildInfo/SaveBuildInfo"; + + //var formData = new FormData(); + //formData.append("building_tag", $('#build_name_tag').val()); + //formData.append("Full_name", $('#build_name_modal').val()); + //formData.append("Ip_address", $('#ip_address_modal').val()); + //formData.append("Ip_port", $('#ip_port_modal').val()); + + //maps = $('#build_file_3d_modal')[0].files; + //if (maps.length > 0) { + // var file_names = maps[0].name.split("."); + + // formData.append("Map3dFile", maps[0]); + // formData.append("orgName_3D", file_names[0]); + // formData.append("extName_3D", file_names[1]); + //} + + //$.ajax({ + // type: "POST", + // url: url, + // data: formData, + // cache: false, + // contentType: false, + // processData: false, + // success: function (rel) { + // $("#save-building-btn").html('確定').attr("disabled", false); + // if (rel.code != "0000") { + // if (rel.code == "9999") { + // toast_error(rel.msg); + // } + // else { + // toast_warning(rel.msg); + // } + // return; + // } + // else { + // toast_ok(rel.msg); + // buildInfoTable.ajax.reload(null, false); + // $('#build-modal').modal('hide'); + // return; + // } + // }, + // fail: function (xhr, status, error) { + // $("#save-building-btn").html('確定').attr("disabled", false); + // } + //}); + } } function EditBuild() { if ($("#build-form").valid()) { $("#save-building-btn").html('').attr("disabled", true); - var url = "/BuildInfo/EditBuildInfo"; - var formData = new FormData(); + if (input3Dfile != undefined && input3Dfile != null) {//上傳3d檔案至forge平台 + var file = input3Dfile; + var formData = new FormData(); + formData.append('fileToUpload', file); + formData.append('bucketKey', "ta3hqsffzqbnouxkpldkuksew4sj21w5-bims_models");//forge上傳平台-資料夾 - formData.append("building_tag", selected_build_guid); - formData.append("Full_name", $('#build_name_modal').val()); - formData.append("Ip_address", $('#ip_address_modal').val()); - formData.append("Ip_port", $('#ip_port_modal').val()); + $.ajax({ + url: '/api/forge/oss/objects', + data: formData, + processData: false, + contentType: false, + type: 'POST', + success: function (data) { + var datas = data.split(","); + var urn = datas[0]; + let m3d_names = datas[1].split("."); - maps = $('#build_file_3d_modal')[0].files; - if (maps.length > 0) { - var file_names = maps[0].name.split("."); + var url = "/BuildInfo/EditBuildInfo"; + var formData2 = new FormData(); - formData.append("Map3dFile", maps[0]); - formData.append("orgName_3D", file_names[0]); - formData.append("extName_3D", file_names[1]); + formData2.append("building_tag", selected_build_guid); + formData2.append("Full_name", $('#build_name_modal').val()); + formData2.append("Ip_address", $('#ip_address_modal').val()); + formData2.append("Ip_port", $('#ip_port_modal').val()); + + maps = $('#build_file_3d_modal')[0].files; + if (maps.length > 0) { + var file_names = maps[0].name.split("."); + + formData2.append("Map3dFile", maps[0]); + //formData2.append("orgName_3D", file_names[0]); + //formData2.append("extName_3D", file_names[1]); + } + formData2.append("urn_3D", urn); + formData2.append("orgName_3D", m3d_names[0]); + formData2.append("extName_3D", m3d_names[1]); + + $.ajax({ + type: "POST", + url: url, + data: formData2, + cache: false, + contentType: false, + processData: false, + success: function (rel) { + $("#save-building-btn").html('確定').attr("disabled", false); + if (rel.code != "0000") { + if (rel.code == "9999") { + toast_error(rel.msg); + } + else { + toast_warning(rel.msg); + } + return; + } + else { + toast_ok(rel.msg); + buildInfoTable.ajax.reload(null, false); + $('#build-modal').modal('hide'); + return; + } + }, + fail: function (xhr, status, error) { + $("#save-building-btn").html('確定').attr("disabled", false); + } + }); + + }, + fail: function (xhr, status, error) { + toast_error("上傳3d模型檔失敗!"); + $("#save-building-btn").html('確定').attr("disabled", false); + } + }); } + else { + var url = "/BuildInfo/EditBuildInfo"; + var formData = new FormData(); - $.ajax({ - type: "POST", - url: url, - data: formData, - cache: false, - contentType: false, - processData: false, - success: function (rel) { - $("#save-building-btn").html('確定').attr("disabled", false); - if (rel.code != "0000") { - if (rel.code == "9999") { - toast_error(rel.msg); + formData.append("building_tag", selected_build_guid); + formData.append("Full_name", $('#build_name_modal').val()); + formData.append("Ip_address", $('#ip_address_modal').val()); + formData.append("Ip_port", $('#ip_port_modal').val()); + + maps = $('#build_file_3d_modal')[0].files; + if (maps.length > 0) { + var file_names = maps[0].name.split("."); + + formData.append("Map3dFile", maps[0]); + formData.append("orgName_3D", file_names[0]); + formData.append("extName_3D", file_names[1]); + } + + $.ajax({ + type: "POST", + url: url, + data: formData, + cache: false, + contentType: false, + processData: false, + success: function (rel) { + $("#save-building-btn").html('確定').attr("disabled", false); + if (rel.code != "0000") { + if (rel.code == "9999") { + toast_error(rel.msg); + } + else { + toast_warning(rel.msg); + } + return; } else { - toast_warning(rel.msg); + toast_ok(rel.msg); + buildInfoTable.ajax.reload(null, false); + $('#build-modal').modal('hide'); + return; } - return; + }, + fail: function (xhr, status, error) { + $("#save-building-btn").html('確定').attr("disabled", false); } - else { - toast_ok(rel.msg); - buildInfoTable.ajax.reload(null, false); - $('#build-modal').modal('hide'); - return; - } - }, - fail: function (xhr, status, error) { - $("#save-building-btn").html('確定').attr("disabled", false); - } - }); + }); + } + + //var url = "/BuildInfo/EditBuildInfo"; + //var formData = new FormData(); + + //formData.append("building_tag", selected_build_guid); + //formData.append("Full_name", $('#build_name_modal').val()); + //formData.append("Ip_address", $('#ip_address_modal').val()); + //formData.append("Ip_port", $('#ip_port_modal').val()); + + //maps = $('#build_file_3d_modal')[0].files; + //if (maps.length > 0) { + // var file_names = maps[0].name.split("."); + + // formData.append("Map3dFile", maps[0]); + // formData.append("orgName_3D", file_names[0]); + // formData.append("extName_3D", file_names[1]); + //} + + //$.ajax({ + // type: "POST", + // url: url, + // data: formData, + // cache: false, + // contentType: false, + // processData: false, + // success: function (rel) { + // $("#save-building-btn").html('確定').attr("disabled", false); + // if (rel.code != "0000") { + // if (rel.code == "9999") { + // toast_error(rel.msg); + // } + // else { + // toast_warning(rel.msg); + // } + // return; + // } + // else { + // toast_ok(rel.msg); + // buildInfoTable.ajax.reload(null, false); + // $('#build-modal').modal('hide'); + // return; + // } + // }, + // fail: function (xhr, status, error) { + // $("#save-building-btn").html('確定').attr("disabled", false); + // } + //}); } } //#endregion - - } \ No newline at end of file diff --git a/Backend/Views/BuildInfo/_BuildInfo.cshtml b/Backend/Views/BuildInfo/_BuildInfo.cshtml index f3fd29b..2ec7661 100644 --- a/Backend/Views/BuildInfo/_BuildInfo.cshtml +++ b/Backend/Views/BuildInfo/_BuildInfo.cshtml @@ -57,7 +57,7 @@
- +
diff --git a/Backend/wwwroot/upload/build_map/0e41ff07-7aee-4d69-86f4-608171657bc4.nwd b/Backend/wwwroot/upload/build_map/0e41ff07-7aee-4d69-86f4-608171657bc4.nwd new file mode 100644 index 0000000..dd9b1c0 Binary files /dev/null and b/Backend/wwwroot/upload/build_map/0e41ff07-7aee-4d69-86f4-608171657bc4.nwd differ diff --git a/Backend/wwwroot/upload/build_map/65494fa9-8418-4d99-9935-c8eef7b3d461.nwc b/Backend/wwwroot/upload/build_map/65494fa9-8418-4d99-9935-c8eef7b3d461.nwc new file mode 100644 index 0000000..df46449 Binary files /dev/null and b/Backend/wwwroot/upload/build_map/65494fa9-8418-4d99-9935-c8eef7b3d461.nwc differ