[Frontend][系統監控] 熱點放入 forge3D 程序建置 | 串資料庫拿取設備座標放入 3d 圖建置 | [FrontendWebApi] 後端撈取設備座標API 調整 | [系統監控] 電梯判斷node程序調整
This commit is contained in:
parent
64e9b8e3f0
commit
34f6022b10
@ -45,8 +45,9 @@
|
|||||||
setLightColor();
|
setLightColor();
|
||||||
}
|
}
|
||||||
if (arr.indexOf(5) != -1) {
|
if (arr.indexOf(5) != -1) {
|
||||||
setHotspotPoint();
|
getHotspotPoint(() => {
|
||||||
show3DModel(data.urn_3D);
|
show3DModel(data.urn_3D);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -255,38 +256,38 @@
|
|||||||
|
|
||||||
function show3DModel(urn) {
|
function show3DModel(urn) {
|
||||||
launchViewerForHotspot(urn, (viewer, nodeIds) => {
|
launchViewerForHotspot(urn, (viewer, nodeIds) => {
|
||||||
getHotspotPoint();
|
|
||||||
},"[name=forgeViewer]");
|
},"[name=forgeViewer]");
|
||||||
}
|
}
|
||||||
|
|
||||||
function getHotspotPoint() {
|
function getHotspotPoint(callback = null) {
|
||||||
let url = baseApiUrl + "/api/GetDevForCor";
|
let url = baseApiUrl + "/api/GetDevForCor";
|
||||||
let sendData = [{
|
let sendData = {
|
||||||
"device_area_tag": pageAct.AreaTag,
|
"device_area_tag": pageAct.AreaTag,
|
||||||
"device_building_tag": pageAct.buiTag,
|
"device_building_tag": pageAct.buiTag,
|
||||||
"device_system_tag": pageAct.sysMainTag,
|
"device_system_tag": pageAct.sysMainTag,
|
||||||
"device_name_tag": pageAct.sysSubTag,
|
"device_name_tag": pageAct.sysSubTag,
|
||||||
}];
|
};
|
||||||
objSendData.Data = sendData;
|
objSendData.Data = sendData;
|
||||||
ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
|
ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
|
||||||
if (!res || res.code != "0000" || !res.data) {
|
if (!res || res.code != "0000" || !res.data) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
devicePointList.push(res.data.device_coordinate_3d);
|
let myDataList = res.data?.filter(x => x.device_coordinate_3d != null && isJSON(x.device_coordinate_3d)).map(x => { return { position: JSON.parse(x.device_coordinate_3d) } });
|
||||||
|
setHotspotPoint(myDataList);
|
||||||
|
callback ? callback() : "";
|
||||||
}
|
}
|
||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setHotspotPoint() {
|
function setHotspotPoint(myDataList = []) {
|
||||||
//先假設有抓到點位的座標 之後api改input後再接
|
console.log(myDataList)
|
||||||
const mydatalist = [{ position: { x: -21.95, y: 8.92, z: 63.27 } },
|
getHopspotPoint(myDataList);
|
||||||
{ position: { x: -21.95, y: 7.61, z: 63.27 } },
|
|
||||||
{ position: { x: -21.95, y: 6.43, z: 63.27 } },
|
|
||||||
{ position: { x: -21.95, y: 5.31, z: 63.27 } }
|
|
||||||
];
|
|
||||||
getHopspotPoint(mydatalist);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onEvent("autodesk:click:sprite", "[name=forgeViewer]", function (e, obj) {
|
||||||
|
console.log(e, obj)
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
@ -314,14 +314,15 @@ function getNodeIdByDbIds(allDbIdsStr, callback = null) {
|
|||||||
let _childId = 0;
|
let _childId = 0;
|
||||||
let evelMap = new Map();
|
let evelMap = new Map();
|
||||||
let finTimeout = null;
|
let finTimeout = null;
|
||||||
let isCalled = false;
|
let fin2Timeout = null;
|
||||||
|
let hasElec = false;
|
||||||
|
|
||||||
allDbIdsStr.forEach((dbId) => {
|
allDbIdsStr.forEach((dbId) => {
|
||||||
curDbId = parseInt(dbId);
|
curDbId = parseInt(dbId);
|
||||||
viewer.getProperties(curDbId, function (e) {
|
viewer.getProperties(curDbId, function (e) {
|
||||||
e.properties.forEach(function (item, idx) {
|
e.properties.forEach(function (item, idx) {
|
||||||
if (item.displayName == "tag_id" && e.name == "【電梯】") {
|
if (item.displayName == "tag_id" && e.name.indexOf("【電梯】") != -1) {
|
||||||
|
hasElec = true
|
||||||
tagId = e.dbId;
|
tagId = e.dbId;
|
||||||
viewer.getProperties(tagId, function (e2) {
|
viewer.getProperties(tagId, function (e2) {
|
||||||
e2.properties.forEach(function (item2, idx2) {
|
e2.properties.forEach(function (item2, idx2) {
|
||||||
@ -341,8 +342,7 @@ function getNodeIdByDbIds(allDbIdsStr, callback = null) {
|
|||||||
console.log("map: " + evelMap);
|
console.log("map: " + evelMap);
|
||||||
clearTimeout(finTimeout)
|
clearTimeout(finTimeout)
|
||||||
finTimeout = setTimeout(() => {
|
finTimeout = setTimeout(() => {
|
||||||
if (isCalled == false) {
|
if (hasElec == true) {
|
||||||
isCalled = true;
|
|
||||||
callback ? callback(evelMap) : "";
|
callback ? callback(evelMap) : "";
|
||||||
}
|
}
|
||||||
}, 10)
|
}, 10)
|
||||||
@ -353,10 +353,9 @@ function getNodeIdByDbIds(allDbIdsStr, callback = null) {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
clearTimeout(finTimeout)
|
clearTimeout(fin2Timeout)
|
||||||
finTimeout = setTimeout(() => {
|
fin2Timeout = setTimeout(() => {
|
||||||
if (isCalled == false) {
|
if (hasElec == false) {
|
||||||
isCalled = true;
|
|
||||||
callback ? callback([]) : "";
|
callback ? callback([]) : "";
|
||||||
}
|
}
|
||||||
}, 10)
|
}, 10)
|
||||||
@ -622,7 +621,7 @@ async function addHotPoint(data) {
|
|||||||
const DataVizCore = Autodesk.DataVisualization.Core;
|
const DataVizCore = Autodesk.DataVisualization.Core;
|
||||||
const viewableType = Autodesk.DataVisualization.Core.ViewableType.SPRITE;//DataVizCore.ViewableType.SPRITE;
|
const viewableType = Autodesk.DataVisualization.Core.ViewableType.SPRITE;//DataVizCore.ViewableType.SPRITE;
|
||||||
const spriteColor = new THREE.Color(0xffffff);
|
const spriteColor = new THREE.Color(0xffffff);
|
||||||
const spriteIcon = "/img/forge/hotspot.svg";
|
const spriteIcon = "/file/img/forge/hotspot.svg";
|
||||||
|
|
||||||
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
|
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
|
||||||
|
|
||||||
@ -654,6 +653,7 @@ async function addHotPoint(data) {
|
|||||||
if (event.dbId >= 10 && event.dbId <= 13) {//event.dbId > 0 && event.dbId < 19
|
if (event.dbId >= 10 && event.dbId <= 13) {//event.dbId > 0 && event.dbId < 19
|
||||||
console.log(`Sprite clicked: ${event.dbId}`);
|
console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
openHotspotModal();
|
openHotspotModal();
|
||||||
|
$(selector).trigger("autodesk:click:sprite", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.clickInfo != null) {
|
if (event.clickInfo != null) {
|
||||||
@ -671,11 +671,12 @@ async function addHotPoint(data) {
|
|||||||
|
|
||||||
if (dbIds.length > 0) {
|
if (dbIds.length > 0) {
|
||||||
// 處理已選取元件的邏輯
|
// 處理已選取元件的邏輯
|
||||||
|
$(selector).trigger("autodesk:click:sprite", event);
|
||||||
//openHotspotModal();
|
//openHotspotModal();
|
||||||
console.log(`------ name: ${viewer.model.getInstanceTree().getNodeName(dbIds)} , dbId: ${dbIds}`);//, id: ${event.clickInfo.object.id}, position.x: ${event.clickInfo.point.x}, y: ${event.clickInfo.point.y}, z: ${event.clickInfo.point.z}
|
console.log(`------ name: ${viewer.model.getInstanceTree().getNodeName(dbIds)} , dbId: ${dbIds}`);//, id: ${event.clickInfo.object.id}, position.x: ${event.clickInfo.point.x}, y: ${event.clickInfo.point.y}, z: ${event.clickInfo.point.z}
|
||||||
} else {
|
} else {
|
||||||
// 處理沒有選取元件的邏輯
|
// 處理沒有選取元件的邏輯
|
||||||
|
$(selector).trigger("autodesk:click:sprite", event);
|
||||||
console.log("no item");
|
console.log("no item");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ var baseApiUrl = "http://localhost:3604";
|
|||||||
var baseImgUrl = "https://localhost:44376";
|
var baseImgUrl = "https://localhost:44376";
|
||||||
var varRegApiUrl = "/reg/api/"; //註冊API路徑
|
var varRegApiUrl = "/reg/api/"; //註冊API路徑
|
||||||
var varApiUrl = "/api/"; //API路徑
|
var varApiUrl = "/api/"; //API路徑
|
||||||
|
var varPathDevIcon = "/upload/device_icon/";
|
||||||
var varPathImg = "/Upload/Images/";
|
var varPathImg = "/Upload/Images/";
|
||||||
var varPathFile = "/Upload/Files/";
|
var varPathFile = "/Upload/Files/";
|
||||||
var varGraPath = "/upload/graph_manage";
|
var varGraPath = "/upload/graph_manage";
|
||||||
|
@ -389,3 +389,12 @@ function strToDate(text, type = null, cal = 0) {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isJSON(str) {
|
||||||
|
try {
|
||||||
|
JSON.parse(str);
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -669,31 +669,29 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Route("api/GetDevForCor")]
|
[Route("api/GetDevForCor")]
|
||||||
public async Task<ActionResult<List<DevForCor>>> GetDevForCor([FromBody] List<Device> post)
|
public async Task<ActionResult<List<DevForCor>>> GetDevForCor([FromBody] Device p)
|
||||||
{
|
{
|
||||||
ApiResult<List<DevForCor>> apiResult = new ApiResult<List<DevForCor>>();
|
ApiResult<List<DevForCor>> apiResult = new ApiResult<List<DevForCor>>();
|
||||||
List<DevForCor> device = new List<DevForCor>();
|
List<DevForCor> device = new List<DevForCor>();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (post != null)
|
if (p != null)
|
||||||
{
|
{
|
||||||
if (post.Count > 0)
|
var param = new
|
||||||
{
|
{
|
||||||
foreach (var p in post)
|
@device_area_tag = p.device_area_tag,
|
||||||
{
|
@device_building_tag = p.device_building_tag,
|
||||||
var param = new { @device_area_tag = p.device_area_tag, @device_building_tag = p.device_building_tag, @device_system_tag = p.device_system_tag, @device_name_tag = p.device_name_tag,
|
@device_system_tag = p.device_system_tag,
|
||||||
@device_floor_tag = p.device_floor_tag };
|
@device_name_tag = p.device_name_tag,
|
||||||
var d = await backendRepository.GetOneAsync<DevForCor>($@"select * from device where deleted = 0 and select * from device
|
@device_floor_tag = p.device_floor_tag
|
||||||
where deleted = 0 and device_area_tag = @device_area_tag and device_building_tag = @device_building_tag
|
};
|
||||||
and device_system_tag = @device_system_tag and device_name_tag = @device_name_tag
|
var d = await backendRepository.GetAllAsync<DevForCor>($@"select device_guid,device_number,device_floor_tag,device_coordinate_3d,forge_dbid
|
||||||
and device_floor_tag = ifnull(@device_floor_tag, device_floor_tag) "
|
from device where deleted = 0 and device_area_tag = @device_area_tag and device_building_tag = @device_building_tag
|
||||||
, param);
|
and device_system_tag = @device_system_tag and device_name_tag = @device_name_tag
|
||||||
if (d != null)
|
and device_floor_tag = ifnull(@device_floor_tag, device_floor_tag) ", param);
|
||||||
device.Add(d);
|
|
||||||
}
|
apiResult.Data = d;
|
||||||
}
|
|
||||||
apiResult.Data = device;
|
|
||||||
apiResult.Code = "0000";
|
apiResult.Code = "0000";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -711,5 +709,49 @@ namespace FrontendWebApi.ApiControllers
|
|||||||
}
|
}
|
||||||
return Ok(apiResult);
|
return Ok(apiResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 燈控排程列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="account"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Route("api/Device/GetLigSchList")]
|
||||||
|
public async Task<ActionResult<ApiResult<BuildBuildingMenu>>> GetLigSchList([FromBody] FindDevice fd)
|
||||||
|
{
|
||||||
|
ApiResult<BuildBuildingMenu> apiResult = new ApiResult<BuildBuildingMenu>(jwt_str);
|
||||||
|
if (!jwtlife)
|
||||||
|
{
|
||||||
|
apiResult.Code = "5000";
|
||||||
|
return BadRequest(apiResult);
|
||||||
|
}
|
||||||
|
else if (string.IsNullOrEmpty(fd.device_guid))
|
||||||
|
{
|
||||||
|
apiResult.Code = "0002";
|
||||||
|
apiResult.Msg = "傳入參數不完整";
|
||||||
|
return apiResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var buiMenu = await frontendRepository.GetOneAsync<BuildBuildingMenu>(
|
||||||
|
@$"SELECT b.urn_3D,bm.* FROM building_menu bm
|
||||||
|
JOIN building b on b.building_tag = bm.building_tag
|
||||||
|
WHERE bm.building_tag = @building_tag AND bm.main_system_tag = @main_system_tag AND bm.sub_system_tag = @sub_system_tag",
|
||||||
|
new { @sub_system_tag = fd.sub_system_tag, @main_system_tag = fd.main_system_tag, @building_tag = fd.building_tag });
|
||||||
|
|
||||||
|
apiResult.Data = buiMenu;
|
||||||
|
|
||||||
|
apiResult.Code = "0000";
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
apiResult.Code = "9999";
|
||||||
|
apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
|
||||||
|
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||||
|
return Ok(apiResult);
|
||||||
|
}
|
||||||
|
return Ok(apiResult);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -31,5 +31,7 @@
|
|||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ProjectExtensions><VisualStudio><UserProperties appsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>
|
||||||
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -127,6 +127,6 @@ namespace FrontendWebApi.Models
|
|||||||
public string device_number { get; set; }
|
public string device_number { get; set; }
|
||||||
public string device_floor_tag { get; set; }
|
public string device_floor_tag { get; set; }
|
||||||
public string device_coordinate_3d { get; set; }
|
public string device_coordinate_3d { get; set; }
|
||||||
public int forge_dbid { get; set; }
|
public int? forge_dbid { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
"MySqlDBConfig": {
|
"MySqlDBConfig": {
|
||||||
"Server": "FYlY+w0XDIz+jmF2rlZWJw==", //0.201
|
"Server": "FYlY+w0XDIz+jmF2rlZWJw==", //0.201
|
||||||
"Port": "js2LutKe+rdjzdxMPQUrvQ==",
|
"Port": "js2LutKe+rdjzdxMPQUrvQ==",
|
||||||
"Database": "VJB2XC+lAtzuHObDGMVOAA==", //三菱
|
//"Database": "VJB2XC+lAtzuHObDGMVOAA==", //三菱
|
||||||
//"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
|
"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
|
||||||
"Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
|
"Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
|
||||||
"Password": "FVAPxztxpY4gJJKQ/se4bQ=="
|
"Password": "FVAPxztxpY4gJJKQ/se4bQ=="
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user