[Backend] [區域資料管理][區域設定] 上傳3D模型,紀錄urn到資料庫
This commit is contained in:
parent
194ef691d4
commit
65e3655c6f
@ -104,8 +104,28 @@ namespace Backend.Controllers
|
|||||||
//新增
|
//新增
|
||||||
//抓取當前的Priority
|
//抓取當前的Priority
|
||||||
var current_priority = await backendRepository.GetCurrentPriority("building");
|
var current_priority = await backendRepository.GetCurrentPriority("building");
|
||||||
var map_3d_guid = new Guid();
|
var map_3d_guid = Guid.NewGuid();
|
||||||
|
|
||||||
|
if (post.urn_3D != null)
|
||||||
|
{
|
||||||
|
Dictionary<string, object> building = new Dictionary<string, object>();
|
||||||
|
building = new Dictionary<string, object>()
|
||||||
|
{
|
||||||
|
{ "@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<string, object> building = new Dictionary<string, object>();
|
Dictionary<string, object> building = new Dictionary<string, object>();
|
||||||
building = new Dictionary<string, object>()
|
building = new Dictionary<string, object>()
|
||||||
{
|
{
|
||||||
@ -120,6 +140,7 @@ namespace Backend.Controllers
|
|||||||
{ "@created_by", myUserInfo.Userinfo_guid}
|
{ "@created_by", myUserInfo.Userinfo_guid}
|
||||||
};
|
};
|
||||||
await backendRepository.AddOneByCustomTable(building, "building");
|
await backendRepository.AddOneByCustomTable(building, "building");
|
||||||
|
}
|
||||||
|
|
||||||
if (post.orgName_3D != null && post.extName_3D != null)
|
if (post.orgName_3D != null && post.extName_3D != null)
|
||||||
{
|
{
|
||||||
@ -185,6 +206,24 @@ namespace Backend.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!judgeIPAddressRepeat)
|
if (!judgeIPAddressRepeat)
|
||||||
|
{
|
||||||
|
if (post.urn_3D != null)
|
||||||
|
{
|
||||||
|
Dictionary<string, object> building = new Dictionary<string, object>();
|
||||||
|
building = new Dictionary<string, object>()
|
||||||
|
{
|
||||||
|
{ "@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<string, object> building = new Dictionary<string, object>();
|
Dictionary<string, object> building = new Dictionary<string, object>();
|
||||||
building = new Dictionary<string, object>()
|
building = new Dictionary<string, object>()
|
||||||
@ -198,6 +237,8 @@ namespace Backend.Controllers
|
|||||||
{ "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
|
{ "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
|
||||||
};
|
};
|
||||||
await backendRepository.UpdateOneByCustomTable(building, "building", "building_tag='" + post.building_tag + "'");
|
await backendRepository.UpdateOneByCustomTable(building, "building", "building_tag='" + post.building_tag + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (post.orgName_3D != null && post.extName_3D != null)
|
if (post.orgName_3D != null && post.extName_3D != null)
|
||||||
{
|
{
|
||||||
|
@ -102,7 +102,7 @@ namespace forgeSample.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Route("api/forge/oss/objects")]
|
[Route("api/forge/oss/objects")]
|
||||||
public async Task<dynamic> UploadObject([FromForm] UploadFile input)
|
public async Task<string> UploadObject([FromForm] UploadFile input)
|
||||||
{
|
{
|
||||||
// save the file on the server
|
// save the file on the server
|
||||||
var fileSavePath = Path.Combine(_env.WebRootPath, Path.GetFileName(input.fileToUpload.FileName));
|
var fileSavePath = Path.Combine(_env.WebRootPath, Path.GetFileName(input.fileToUpload.FileName));
|
||||||
@ -126,10 +126,10 @@ namespace forgeSample.Controllers
|
|||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
System.IO.File.Delete(fileSavePath);
|
System.IO.File.Delete(fileSavePath);
|
||||||
var a = Base64Encode((string)uploadedObj.objectId);
|
string urn = Base64Encode((string)uploadedObj.objectId);
|
||||||
//var test = new TreeNode(Base64Encode((string)uploadedObj.objectId), objInfo.Value.objectKey, "object", false)
|
string result = urn + "," + uploadedObj.objectKey;
|
||||||
|
|
||||||
return uploadedObj;
|
return result;//uploadedObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UploadFile
|
public class UploadFile
|
||||||
|
@ -20,6 +20,7 @@ namespace Backend.Models
|
|||||||
public string orgName_3D { get; set; }
|
public string orgName_3D { get; set; }
|
||||||
public string saveName_3D { get; set; }
|
public string saveName_3D { get; set; }
|
||||||
public string extName_3D { get; set; }
|
public string extName_3D { get; set; }
|
||||||
|
public string urn_3D { get; set; }
|
||||||
//public string Created_at { get; set; } //建立時間
|
//public string Created_at { get; set; } //建立時間
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
var selected_build_guid_top = "";
|
var selected_build_guid_top = "";
|
||||||
var selected_build_guid_top_name;
|
var selected_build_guid_top_name;
|
||||||
var selected_floor_guid = "";
|
var selected_floor_guid = "";
|
||||||
|
let input3Dfile = null;
|
||||||
|
|
||||||
//#region 區域基本資料 document ready
|
//#region 區域基本資料 document ready
|
||||||
$(function () {
|
$(function () {
|
||||||
@ -261,17 +262,92 @@
|
|||||||
maxlength: 50,
|
maxlength: 50,
|
||||||
filterspace: true
|
filterspace: true
|
||||||
},
|
},
|
||||||
file_3d_modal: {
|
build_file_3d_modal: {
|
||||||
accept: "image/svg+xml"
|
required: true, extension: "nwc|nwd"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
messages: { build_file_3d_modal: "File must be nwc, nwd" }
|
||||||
});
|
});
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region 儲存區域基本資料
|
//#region 儲存區域基本資料
|
||||||
function SaveBuild() {
|
function SaveBuild() {
|
||||||
if ($("#build-form").valid()) {
|
if ($("#build-form").valid()) {
|
||||||
$("#save-building-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);
|
$("#save-building-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);
|
||||||
|
|
||||||
|
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上傳平台-資料夾
|
||||||
|
|
||||||
|
$.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(".");
|
||||||
|
|
||||||
|
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";
|
var url = "/BuildInfo/SaveBuildInfo";
|
||||||
|
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
@ -319,11 +395,135 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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() {
|
function EditBuild() {
|
||||||
if ($("#build-form").valid()) {
|
if ($("#build-form").valid()) {
|
||||||
$("#save-building-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);
|
$("#save-building-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);
|
||||||
|
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上傳平台-資料夾
|
||||||
|
|
||||||
|
$.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(".");
|
||||||
|
|
||||||
|
var url = "/BuildInfo/EditBuildInfo";
|
||||||
|
var formData2 = new FormData();
|
||||||
|
|
||||||
|
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 url = "/BuildInfo/EditBuildInfo";
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
|
|
||||||
@ -371,11 +571,58 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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
|
//#endregion
|
||||||
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
//#region 樓層設定 document ready
|
//#region 樓層設定 document ready
|
||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
@ -701,29 +948,13 @@
|
|||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region 變更樓層平面圖
|
//#region 變更樓層平面圖 3d模型
|
||||||
function changeImage(input) {
|
function changeImage(input) {
|
||||||
$(`#map_file_preview_modal`).attr("data-src", window.URL.createObjectURL(input.files[0]));
|
$(`#map_file_preview_modal`).attr("data-src", window.URL.createObjectURL(input.files[0]));
|
||||||
|
input3Dfile = input.files[0];
|
||||||
console.log("---- abc test ---");
|
|
||||||
var file = input.files[0];
|
|
||||||
|
|
||||||
var formData = new FormData();
|
|
||||||
formData.append('fileToUpload', file);
|
|
||||||
formData.append('bucketKey', "ta3hqsffzqbnouxkpldkuksew4sj21w5-bims_models");
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: '/api/forge/oss/objects',
|
|
||||||
data: formData,
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
type: 'POST',
|
|
||||||
success: function (data) {
|
|
||||||
$('#appBuckets').jstree(true).refresh_node(node);
|
|
||||||
_this.value = '';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
}
|
}
|
@ -57,7 +57,7 @@
|
|||||||
<input type="text" id="ip_port_modal" class="form-control" name="ip_port_modal">
|
<input type="text" id="ip_port_modal" class="form-control" name="ip_port_modal">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-12">
|
<div class="form-group col-12">
|
||||||
<label class="form-label" for="build_file_3d_modal">3D檔(限制SVG格式)</label>
|
<label class="form-label" for="build_file_3d_modal">3D檔(限制NWD、NWC格式)</label>
|
||||||
<input type="file" id="build_file_3d_modal" class="form-control" name="build_file_3d_modal" onchange="changeImage(this)">
|
<input type="file" id="build_file_3d_modal" class="form-control" name="build_file_3d_modal" onchange="changeImage(this)">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user