新增歷史資料列表顯示, 資料顯示未完成

This commit is contained in:
dev02 2022-11-22 11:02:51 +08:00
parent 43751cad36
commit 7aeaf4b117
5 changed files with 184 additions and 16 deletions

162
Frontend/_historyData.html Normal file
View File

@ -0,0 +1,162 @@
<main id="js-page-content" role="main" class="page-content">
<div class="row">
<div class="col-sm-12 col-xl-2">
<div class="bg-success-900 rounded bg-info-gradient">
<div class="d-flex position-relative py-3 px-4">
<i class="fal fa-search color-success-700 position-absolute pos-left fs-lg px-3 py-2 mt-1 ml-4"></i>
<input type="text" id="js_nested_list_filter" class="form-control shadow-inset-1 pl-6 border-success" placeholder="Filter nested items (e.g buttons, chart)">
</div>
<!-- nav-menu-reset will reset the font colors -->
<ul id="js_nested_list" class="nav-menu nav-menu-reset nav-menu-compact bg-success-900 bg-info-gradient mb-sm-4 mb-md-0 rounded" data-nav-accordion="true">
</ul>
<div class="filter-message js-filter-message m-0 text-left pl-4 py-3 fw-500"></div>
</div>
</div>
<div class="col-sm-12 col-xl-10">
<h1 class="p-2 mb-0">歷史資料瀏覽</h1>
<div class="row bg-dark p-2 mb-5">
<div class="col-auto">
<div class="btn-group">
<button type="button" class="btn btn-secondary waves-effect waves-themed">日期</button>
<button type="button" class="btn btn-secondary waves-effect waves-themed">日區間</button>
<button type="button" class="btn btn-secondary waves-effect waves-themed"></button>
</div>
</div>
<div class="col-auto">
<div class="btn-group">
<button type="button" class="btn btn-secondary waves-effect waves-themed">今天</button>
<button type="button" class="btn btn-secondary waves-effect waves-themed">昨天</button>
</div>
</div>
<div class="col-auto">
<div class="form-group">
<input class="form-control" id="example-date" type="date" name="date" value="2023-07-23">
</div>
</div>
<div class="col-auto">
<a href="#" class="btn btn-info">查詢</a> <a href="#" class="btn btn-info waves-effect waves-themed">
<span class="fal fa-file-excel mr-1"></span>
匯出
</a>
</div>
</div>
<div class="row mb-2">
<div class="btn-group">
<button type="button" class="btn btn-secondary waves-effect waves-themed">溫度</button>
<button type="button" class="btn btn-secondary waves-effect waves-themed">輸入電壓</button>
<button type="button" class="btn btn-secondary waves-effect waves-themed">輸入電流</button>
</div>
</div>
<div class="row">
<div class="frame-wrap">
<table class="table table-bordered table-striped text-center m-0">
<thead class="thead-themed">
<tr>
<th>設備名稱</th>
<th>數值</th>
<th>紀錄時間</th>
</tr>
</thead>
<tbody>
<tr>
<td>儲冰設備A01</td>
<td>27.0</td>
<td>2021-08-01 23:55:00</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</main>
<script>
let sst = '';
let mst = '';
$(function () {
initList();
// default list filter
initApp.listFilter($('#js_default_list'), $('#js_default_list_filter'));
// custom response message
initApp.listFilter($('#js-list-msg'), $('#js-list-msg-filter'));
//accordion filter
initApp.listFilter($('#js_list_accordion'), $('#js_list_accordion_filter'));
// nested list filter
initApp.listFilter($('#js_nested_list'), $('#js_nested_list_filter'));
//init navigation
initApp.buildNavigation($('#js_nested_list'));
initData();
});
function initList() {
let sendData = {
building_tag: pageAct.buiTag
}
objSendData.Data = sendData;
let url = baseApiUrl + "/api/History/GetMainSub";
function success(res) {
let strHtml = ``;
$.each(res.data.history_Main_Systems, function (index, val) {
console.log(index)
strHtml += `<li>
<a href="#" data-filter-tags="user interface buttons compass action dropdown navigation sidebars" data-maintag="${val.main_system_tag}">
<span class="nav-link-text">${val.full_name}</span>
</a>
<ul style="${index == 0 ? `display:block;` : ``}">`;
$.each(val.history_Sub_systems, function (index2, val2) {
strHtml += `<li>
<a href="#" onClick="getData(${val2.sub_system_tag}, ${val.main_system_tag})" data-filter-tags="user interface buttons" data-subtag="${val2.sub_system_tag}">
<span class="nav-link-text">
${val2.full_name} ${val2.sub_system_tag}
</span>
</a>
</li>`;
if (index == 0 && index2 == 0) {
sst = val2.sub_system_tag;
mst = val.main_system_tag;
}
});
strHtml += `</ul> </li>`;
});
$('#js_nested_list').html(strHtml);
getData(sst, mst);
}
ytAjax = new YourTeam.Ajax(url, objSendData, success, null, "POST").send();
}
function initData() {
getHistoryDataByBaja("TPE_B1_EE_E4_R2F_NA_WHT_N1_A1",
1667232000000,
1667232000000,
"空調設備",
"Mitsubishi_Sup",
callbackForHistory);
}
function getData(sst2, mst1)
{
//getHistoryDataByBaja("TPE_B1_EE_E4_R2F_NA_WHT_N1_A1",
// 1667232000000,
// 1667232000000,
// "空調設備",
// "Mitsubishi_Sup",
// callbackForHistory);
}
function callBackFromHistory(res) {
console.log(res)
}
</script>

View File

@ -1147,7 +1147,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
</div> </div>
</div> </div>
<div class="btn-group mx-4"> <div class="btn-group mx-4">
<a href="javascript:;" class="dropdown-toggle no-arrow text-center" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a href="javascript:;" name="topFunBtn" class="dropdown-toggle no-arrow text-center" data-page="historyData">
<i class="fal fa-chart-area fa-2x"></i><br>歷史資料 <i class="fal fa-chart-area fa-2x"></i><br>歷史資料
</a> </a>
</div> </div>

View File

@ -61,16 +61,16 @@ namespace FrontendWebApi.ApiControllers
{ {
var dbsub = await frontendRepository.GetAllAsync<HistoryDBMainSub>( var dbsub = await frontendRepository.GetAllAsync<HistoryDBMainSub>(
@$"select distinct v1.system_key main_name, v1.system_value main_system_tag, v2.system_key sub_name, v2.system_value sub_system_tag, v1.system_priority, v2.system_priority, @$"select distinct v1.system_key main_name, v1.system_value main_system_tag, v2.system_key sub_name, v2.system_value sub_system_tag, v1.system_priority, v2.system_priority,
dk.device_normal_color, dk.device_close_color, dk.device_error_color, dk.device_normal_color, dk.device_close_color, dk.device_error_color
di.full_name as device_item_name, di.points as device_item_points, di.unit as device_item_unit, di.is_show_riserDiagram as device_item_is_show_riserDiagram, -- di.full_name as device_item_name, di.points as device_item_points, di.unit as device_item_unit, di.is_show_riserDiagram as device_item_is_show_riserDiagram,
di.is_controll as device_item_is_controll, di.is_bool as device_item_is_bool, di.is_link as device_item_is_link -- di.is_controll as device_item_is_controll, di.is_bool as device_item_is_bool, di.is_link as device_item_is_link
from role_auth a from role_auth a
join auth_page b on a.AuthCode = b.AuthCode join auth_page b on a.AuthCode = b.AuthCode
join userinfo c on c.role_guid = a.role_guid join userinfo c on c.role_guid = a.role_guid
join variable v2 on b.ShowView = v2.id and v2.system_type = @sub_system_type join variable v2 on b.ShowView = v2.id and v2.system_type = @sub_system_type
join variable v1 on v1.id = v2.system_parent_id and v1.system_type = @main_system_type join variable v1 on v1.id = v2.system_parent_id and v1.system_type = @main_system_type
left join device_kind dk on v1.system_value = dk.device_system_tag and v2.system_value = dk.device_name_tag and dk.device_building_tag = @building_tag left join device_kind dk on v1.system_value = dk.device_system_tag and v2.system_value = dk.device_name_tag and dk.device_building_tag = @building_tag
left join device_item di on v2.system_value = di.device_name_tag and v1.system_value = di.device_system_tag and di.deleted = 0 -- left join device_item di on v2.system_value = di.device_name_tag and v1.system_value = di.device_system_tag and di.deleted = 0
where c.account = @account where c.account = @account
order by v1.system_priority, v2.system_priority", new { @account = myUser.account, @sub_system_type = sub_system_type, @main_system_type = main_system_type, @building_tag = fd.building_tag }); order by v1.system_priority, v2.system_priority", new { @account = myUser.account, @sub_system_type = sub_system_type, @main_system_type = main_system_type, @building_tag = fd.building_tag });
var mains = dbsub.GroupBy(a => a.main_system_tag).ToList(); var mains = dbsub.GroupBy(a => a.main_system_tag).ToList();

View File

@ -91,11 +91,6 @@ namespace FrontendWebApi.ApiControllers
sheet.SetColumnWidth(0, 4 * 160 * 12); sheet.SetColumnWidth(0, 4 * 160 * 12);
sheet.SetColumnWidth(1, 4 * 160 * 12); sheet.SetColumnWidth(1, 4 * 160 * 12);
sheet.SetColumnWidth(2, 4 * 160 * 12); sheet.SetColumnWidth(2, 4 * 160 * 12);
sheet.SetColumnWidth(3, 4 * 160 * 12);
sheet.SetColumnWidth(4, 4 * 160 * 12);
sheet.SetColumnWidth(5, 4 * 160 * 12);
sheet.SetColumnWidth(6, 4 * 160 * 12);
sheet.SetColumnWidth(7, 4 * 160 * 12);
ICell cell = row.CreateCell(0); ICell cell = row.CreateCell(0);
cell.SetCellValue("設備名稱"); cell.SetCellValue("設備名稱");
cell.CellStyle = styleLine12; cell.CellStyle = styleLine12;
@ -152,7 +147,7 @@ namespace FrontendWebApi.ApiControllers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("api/History/GetMainSub")] [Route("api/History/GetMainSub")]
public async Task<ActionResult<ApiResult<History_MainSubBuildFloor>>> GetMainSub() public async Task<ActionResult<ApiResult<History_MainSubBuildFloor>>> GetMainSub([FromBody] HistoryFind hf)
{ {
ApiResult<History_MainSubBuildFloor> apiResult = new ApiResult<History_MainSubBuildFloor>(jwt_str); ApiResult<History_MainSubBuildFloor> apiResult = new ApiResult<History_MainSubBuildFloor>(jwt_str);
if (!jwtlife) if (!jwtlife)
@ -160,6 +155,13 @@ namespace FrontendWebApi.ApiControllers
apiResult.Code = "5000"; apiResult.Code = "5000";
return BadRequest(apiResult); return BadRequest(apiResult);
} }
else if (string.IsNullOrEmpty(hf.building_tag))
{
apiResult.Code = "0002";
apiResult.Msg = "必須選擇東別";
return apiResult;
}
try try
{ {
var dbsub = await frontendRepository.GetAllAsync<HistoryDBMainSub>( var dbsub = await frontendRepository.GetAllAsync<HistoryDBMainSub>(
@ -176,9 +178,9 @@ namespace FrontendWebApi.ApiControllers
join auth_page b on a.AuthCode = b.AuthCode join auth_page b on a.AuthCode = b.AuthCode
join userinfo c on c.role_guid = a.role_guid join userinfo c on c.role_guid = a.role_guid
join building d on d.building_tag = b.building_tag join building d on d.building_tag = b.building_tag
where c.account = '{myUser.account}' where c.account = @account and d.building_tag = @building_tag
order by d.priority order by d.priority
", new { @account = myUser.account }); ", new { @account = myUser.account, @building_tag = hf.building_tag });
var mains = dbsub.GroupBy(a => a.main_system_tag).ToList(); var mains = dbsub.GroupBy(a => a.main_system_tag).ToList();
apiResult.Data = new History_MainSubBuildFloor(); apiResult.Data = new History_MainSubBuildFloor();
apiResult.Data.history_Main_Systems = new List<History_Main_system>(); apiResult.Data.history_Main_Systems = new List<History_Main_system>();
@ -189,12 +191,12 @@ namespace FrontendWebApi.ApiControllers
history_Main_System.full_name = main.Select(a => a.main_name).FirstOrDefault(); history_Main_System.full_name = main.Select(a => a.main_name).FirstOrDefault();
history_Main_System.History_Sub_systems = new List<History_Sub_system>(); history_Main_System.History_Sub_systems = new List<History_Sub_system>();
var subs = main.GroupBy(a => a.main_system_tag).ToList(); var subs = dbsub.Where(x => x.main_system_tag == main.Select(m => m.main_system_tag).FirstOrDefault()).ToList();
foreach (var sub in subs) foreach (var sub in subs)
{ {
History_Sub_system history_Sub_System = new History_Sub_system(); History_Sub_system history_Sub_System = new History_Sub_system();
history_Sub_System.full_name = sub.Select(a => a.sub_name).FirstOrDefault(); history_Sub_System.full_name = sub.sub_name;
history_Sub_System.sub_system_tag = sub.Select(a => a.sub_system_tag).FirstOrDefault(); history_Sub_System.sub_system_tag = sub.sub_system_tag;
history_Main_System.History_Sub_systems.Add(history_Sub_System); history_Main_System.History_Sub_systems.Add(history_Sub_System);
} }
apiResult.Data.history_Main_Systems.Add(history_Main_System); apiResult.Data.history_Main_Systems.Add(history_Main_System);

View File

@ -72,6 +72,10 @@ namespace FrontendWebApi.Models
public byte device_item_is_link { get; set; } public byte device_item_is_link { get; set; }
} }
public class HistoryFind
{
public string building_tag { get; set; }
}
public class BuildingFloorRawData public class BuildingFloorRawData
{ {
public string building_guid { get; set; } public string building_guid { get; set; }