BemsWebApplication.LocalunionManUsage = function (params, viewInfo) { "use strict"; var beforeYearHash_gas = new Object(); var beforeYearHash_normalPower = new Object(); var beforeYearHash_nightPower = new Object(); var nowYearHash_gas = new Object(); var nowYearHash_normalPower = new Object(); var nowYearHash_nightPower = new Object(); var unitm3; var unitkWh; var gasFuelType = 0; var gasFacilityTypeId = 101; var gasFormulaId = 1; var gasFormulaCnt = 0; var gasFormulaArray; var beforeYearGasFormulaCnt = 0; var beforeYearGasFormulaArray; var normalPowerFuelType = 1; var normalPowerFacilityTypeId = 100; var normalPowerFormulaId = 3; var normalPowerFormulaCnt = 0; var normalPowerFormulaArray; var beforeYearNormalPowerFormulaCnt = 0; var beforeYearNormalPowerFormulaArray; var nightPowerFuelType = 2; var nightPowerFacilityTypeId = 100; var nightPowerFormulaId = 2; var nightPowerFormulaCnt = 0; var nightPowerFormulaArray; var beforeYearNightPowerFormulaCnt = 0; var beforeYearNightPowerFormulaArray; var selectButton = 0; //0 : 단위면적당, 1 : 1인당 var useIndex; var fuelcnt = 3; var fuelcntbefore = 3; var co2onoff = false; var endpointSelector = ""; if (BemsWebApplication.config.mode == "production") { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production; } else { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local; } var LocalunionManUsagePopup = null; var powerFactor, gasFactor, manCnt; var peopleIncrease = [{ month: "1", value: 0 }, { month: "2", value: 0 }, { month: "3", value: 0 }, { month: "4", value: 0 }, { month: "5", value: 0 }, { month: "6", value: 0 }, { month: "7", value: 0 }, { month: "8", value: 0 }, { month: "9", value: 0 }, { month: "10", value: 0 }, { month: "11", value: 0 }, { month: "12", value: 0 }]; var yearDataSource = [{ year: "전년(1.1~12.31)", gas: 0, normalPower: 0, nightPower: 0 }, { year: "금년(현재까지)", gas: 0, normalPower: 0, nightPower: 0 }]; var manYearDataSource = [{ year: "전년(1.1~12.31)", gas: 0, normalPower: 0, nightPower: 0 }, { year: "금년(현재까지)", gas: 0, normalPower: 0, nightPower: 0 }]; var temp_manYearDataSource = [{ year: "전년(1.1~12.31)", gas: 0, normalPower: 0, nightPower: 0 }, { year: "금년(현재까지)", gas: 0, normalPower: 0, nightPower: 0 }]; var monthDayNumDataSource = [{ month: "1", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "2", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "3", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "4", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "5", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "6", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "7", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "8", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "9", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "10", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "11", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }, { month: "12", dayNum_gas: 0, dayNum_normalPower: 0, dayNum_nightPower: 0, beforeDayNum_gas: 0, beforeDayNum_normalPower: 0, beforeDayNum_nightPower: 0, totalDayNum: 0, beforeTotalDayNum: 0 }]; var monthDataSource = [{ month: "1", gas: 0, normalPower: 0, nightPower: 0 }, { month: "2", gas: 0, normalPower: 0, nightPower: 0 }, { month: "3", gas: 0, normalPower: 0, nightPower: 0 }, { month: "4", gas: 0, normalPower: 0, nightPower: 0 }, { month: "5", gas: 0, normalPower: 0, nightPower: 0 }, { month: "6", gas: 0, normalPower: 0, nightPower: 0 }, { month: "7", gas: 0, normalPower: 0, nightPower: 0 }, { month: "8", gas: 0, normalPower: 0, nightPower: 0 }, { month: "9", gas: 0, normalPower: 0, nightPower: 0 }, { month: "10", gas: 0, normalPower: 0, nightPower: 0 }, { month: "11", gas: 0, normalPower: 0, nightPower: 0 }, { month: "12", gas: 0, normalPower: 0, nightPower: 0 }]; var manMonthDataSource = [{ month: "1", gas: 0, normalPower: 0, nightPower: 0 }, { month: "2", gas: 0, normalPower: 0, nightPower: 0 }, { month: "3", gas: 0, normalPower: 0, nightPower: 0 }, { month: "4", gas: 0, normalPower: 0, nightPower: 0 }, { month: "5", gas: 0, normalPower: 0, nightPower: 0 }, { month: "6", gas: 0, normalPower: 0, nightPower: 0 }, { month: "7", gas: 0, normalPower: 0, nightPower: 0 }, { month: "8", gas: 0, normalPower: 0, nightPower: 0 }, { month: "9", gas: 0, normalPower: 0, nightPower: 0 }, { month: "10", gas: 0, normalPower: 0, nightPower: 0 }, { month: "11", gas: 0, normalPower: 0, nightPower: 0 }, { month: "12", gas: 0, normalPower: 0, nightPower: 0 }]; function GetSitePeopleIncrease() { var now = new Date(); var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsPeopleIncrease" }, requireTotalCount: true, pageSize: 1 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["Date", "=", now.getFullYear().toString()] ]); dataSource.sort({ getter: "Date", desc: true }); dataSource.load() .done(function (result) { if (result.length != 0) { peopleIncrease[0].value = result[0].m1; peopleIncrease[1].value = result[0].m2; peopleIncrease[2].value = result[0].m3; peopleIncrease[3].value = result[0].m4; peopleIncrease[4].value = result[0].m5; peopleIncrease[5].value = result[0].m6; peopleIncrease[6].value = result[0].m7; peopleIncrease[7].value = result[0].m8; peopleIncrease[8].value = result[0].m9; peopleIncrease[9].value = result[0].m10; peopleIncrease[10].value = result[0].m11; peopleIncrease[11].value = result[0].m12; } else { utils.toast.show("데이터가 없습니다."); } for (var i = 0; i < 12; i++) { if (peopleIncrease[i].value != null) manCnt = peopleIncrease[i].value; } }) .fail(function (error) { utils.toast.show(error); }); } function numberWithCommas(x) { if (x != null) return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); else return ""; } function GetSiteData() { var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/CmSite" }, requireTotalCount: true, pageSize: 10 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], ]); dataSource.load() .done(function (result) { $("#Name").text(result[0].Name); $("#PhoneNo").text(result[0].PhoneNo); $("#AddressZip1").text(result[0].AddressZip1); $("#CompletionDate").text(result[0].CompletionDate); $("#Address").text(result[0].Address1); $("#BuildingSize").text(result[0].BuildingSize); $("#GrossArea").text(numberWithCommas(result[0].GrossArea) + '㎡'); $("#BuildingArea").text(numberWithCommas(result[0].BuildingArea) + '㎡'); $("#Ratio").text(numberWithCommas(result[0].FloorAreaRatio) + '%/' + numberWithCommas(result[0].BuildingCoverageRatio) + '%'); $("#HDDCDD").text(numberWithCommas(result[0].HDD) + '/' + numberWithCommas(result[0].CDD)); $("#MainUse").text(result[0].MainUse); useIndex = result[0].MainUse.toString(); var schedule = result[0].IsControlSchedule; if (schedule) { schedule = "적용"; } else { schedule = "미적용"; } $("#IsControlSchedule").text(schedule); $("#ScheduleCheckHour").text(result[0].ScheduleCheckHour); $("#Standard").text(result[0].Standard); $("#URL").text(result[0].URL); $("#Comment").text(result[0].Comment); }) .fail(function (error) { utils.toast.show(error); }); } function GetChartDataMonth(FuelType, FacilityTypeId, FormulaId) { var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 100 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["FacilityTypeId", "=", FacilityTypeId], "and", ["FormulaId", "=", FormulaId] ]); dataSource.sort({ getter: "ParameterId", desc: true }); dataSource.load() .done(function (result) { if (FuelType == 0) { gasFormulaCnt = result.length; gasFormulaArray = new Array(gasFormulaCnt); for (var i = 0; i < gasFormulaArray.length; i++) gasFormulaArray[i] = new Array(2); for (var i = 0; i < gasFormulaCnt; i++) { gasFormulaArray[i][0] = result[i].ParameterFacilityCode; gasFormulaArray[i][1] = result[i].ParameterPropertyId; } GetDailyData(FuelType, gasFormulaArray[gasFormulaCnt - 1][0], gasFormulaArray[gasFormulaCnt - 1][1]); } else if (FuelType == 1) { normalPowerFormulaCnt = result.length; normalPowerFormulaArray = new Array(normalPowerFormulaCnt); for (var i = 0; i < normalPowerFormulaArray.length; i++) normalPowerFormulaArray[i] = new Array(2); for (var i = 0; i < normalPowerFormulaCnt; i++) { normalPowerFormulaArray[i][0] = result[i].ParameterFacilityCode; normalPowerFormulaArray[i][1] = result[i].ParameterPropertyId; } GetDailyData(FuelType, normalPowerFormulaArray[normalPowerFormulaCnt - 1][0], normalPowerFormulaArray[normalPowerFormulaCnt - 1][1]); } else { nightPowerFormulaCnt = result.length; nightPowerFormulaArray = new Array(nightPowerFormulaCnt); for (var i = 0; i < nightPowerFormulaArray.length; i++) nightPowerFormulaArray[i] = new Array(2); for (var i = 0; i < nightPowerFormulaCnt; i++) { nightPowerFormulaArray[i][0] = result[i].ParameterFacilityCode; nightPowerFormulaArray[i][1] = result[i].ParameterPropertyId; } GetDailyData(FuelType, nightPowerFormulaArray[nightPowerFormulaCnt - 1][0], nightPowerFormulaArray[nightPowerFormulaCnt - 1][1]); } }) .fail(function (error) { utils.toast.show(error); }); } function GetDailyData(FuelType, FacilityCode, PropertyId) { var now = new Date(); var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistoryDaily" }, requireTotalCount: true, pageSize: 366 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["FacilityCode", "=", FacilityCode], "and", ["PropertyId", "=", PropertyId], "and", ["CreatedDateTime", ">=", new Date(now.getFullYear(), 1 - 1, 1)], "and", ["CreatedDateTime", "<=", new Date(now.getFullYear(), 12 - 1, 31)] ]); dataSource.sort({ getter: "CreatedDateTime", asc: true }); dataSource.load() .done(function (result) { // 일반, 심야, 가스 관제점의 값을 월별로 합산한다 for (var i = 0; i < result.length; i++) { if (FuelType == 0) { monthDataSource[result[i].CreatedDateTime.getMonth()].gas = monthDataSource[result[i].CreatedDateTime.getMonth()].gas + result[i].DailyValue; // 월별 가스 합산 if (!nowYearHash_gas[result[i].CreatedDateTime]) { // 월별로 전기,가스가 저장되어 있는 일수 저장 nowYearHash_gas[result[i].CreatedDateTime] = result[i].CreatedDateTime; monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].dayNum_gas = monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].dayNum_gas + 1; } } else if (FuelType == 1) { monthDataSource[result[i].CreatedDateTime.getMonth()].normalPower = monthDataSource[result[i].CreatedDateTime.getMonth()].normalPower + result[i].DailyValue; if (!nowYearHash_normalPower[result[i].CreatedDateTime]) { nowYearHash_normalPower[result[i].CreatedDateTime] = result[i].CreatedDateTime; monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].dayNum_normalPower = monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].dayNum_normalPower + 1; } } else { monthDataSource[result[i].CreatedDateTime.getMonth()].nightPower = monthDataSource[result[i].CreatedDateTime.getMonth()].nightPower + result[i].DailyValue; if (!nowYearHash_nightPower[result[i].CreatedDateTime]) { nowYearHash_nightPower[result[i].CreatedDateTime] = result[i].CreatedDateTime; monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].dayNum_nightPower = monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].dayNum_nightPower + 1; } } } // 전기, 가스 관제점의 마지막이다 if ((gasFormulaCnt + normalPowerFormulaCnt + nightPowerFormulaCnt) == 0 || (gasFormulaCnt + normalPowerFormulaCnt + nightPowerFormulaCnt) == 1) { var grossArea = 0; var dataSourceGrossArea = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/CmSite" }, requireTotalCount: true, pageSize: 10 }); dataSourceGrossArea.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], ]); dataSourceGrossArea.load() .done(function (resultGrossArea) { if (resultGrossArea[0].GrossArea != null) grossArea = parseFloat(resultGrossArea[0].GrossArea.toString()); // 연면적 var dayNum_gas = 0; // 수집한 가스 총 일수 var dayNum_normalPower = 0; var dayNum_nightPower = 0; var totalDayNum = 0; // 일년 총 일수 for (var i = 0; i < monthDayNumDataSource.length; i++) { monthDayNumDataSource[i].totalDayNum = 32 - new Date(now.getFullYear(), i, 32).getDate(); // 월별로 일수 계산 {31, 28, 31.....} totalDayNum = totalDayNum + monthDayNumDataSource[i].totalDayNum; // 월별로 일수의 합산 dayNum_gas = dayNum_gas + monthDayNumDataSource[i].dayNum_gas; // 가스가 저장되어 있는 총 일 수 dayNum_normalPower = dayNum_normalPower + monthDayNumDataSource[i].dayNum_normalPower; dayNum_nightPower = dayNum_nightPower + monthDayNumDataSource[i].dayNum_nightPower; } for (var i = 0; i < monthDataSource.length; i++) { manMonthDataSource[i].gas = monthDataSource[i].gas; // 인당 어레이에 월별로 가스량 저장 manMonthDataSource[i].normalPower = monthDataSource[i].normalPower; manMonthDataSource[i].nightPower = monthDataSource[i].nightPower; yearDataSource[1].gas = yearDataSource[1].gas + monthDataSource[i].gas; // 단위면적 어레이에 연도별로 가스량 저장 yearDataSource[1].normalPower = yearDataSource[1].normalPower + monthDataSource[i].normalPower; yearDataSource[1].nightPower = yearDataSource[1].nightPower + monthDataSource[i].nightPower; manYearDataSource[1].gas = manYearDataSource[1].gas + manMonthDataSource[i].gas; manYearDataSource[1].normalPower = manYearDataSource[1].normalPower + manMonthDataSource[i].normalPower; manYearDataSource[1].nightPower = manYearDataSource[1].nightPower + manMonthDataSource[i].nightPower; // 단위면적당 var temp_gas = monthDataSource[i].gas / monthDayNumDataSource[i].dayNum_gas * totalDayNum * unitkWh / unitm3 / grossArea; // 단위면적 어레이에 월별로 가스를 kwh 환산해서 연면적으로 나눠서 저장 monthDataSource[i].gas = (isNaN(temp_gas) ? 0 : temp_gas); // 0으로 나누면 NaN이 나오기 때문에 처리 var temp_normalPower = monthDataSource[i].normalPower / monthDayNumDataSource[i].dayNum_normalPower * totalDayNum / grossArea; monthDataSource[i].normalPower = (isNaN(temp_normalPower) ? 0 : temp_normalPower); // 0으로 나누면 NaN이 나오기 때문에 처리 var temp_nightPower = monthDataSource[i].nightPower / monthDayNumDataSource[i].dayNum_nightPower * totalDayNum / grossArea; monthDataSource[i].nightPower = (isNaN(temp_nightPower) ? 0 : temp_nightPower); // 0으로 나누면 NaN이 나오기 때문에 처리 // 인당 var man_temp_gas = manMonthDataSource[i].gas / monthDayNumDataSource[i].dayNum_gas * totalDayNum * unitkWh / unitm3 / manCnt; // 인당 어레이에 월별로 가스를 kwh 환산해서 인당으로 나눠서 저장 manMonthDataSource[i].gas = (isNaN(man_temp_gas) ? 0 : man_temp_gas); // 0으로 나누면 NaN이 나오기 때문에 처리 var man_temp_normalPower = manMonthDataSource[i].normalPower / monthDayNumDataSource[i].dayNum_normalPower * totalDayNum / manCnt; manMonthDataSource[i].normalPower = (isNaN(man_temp_normalPower) ? 0 : man_temp_normalPower); // 0으로 나누면 NaN이 나오기 때문에 처리 var man_temp_nightPower = manMonthDataSource[i].nightPower / monthDayNumDataSource[i].dayNum_nightPower * totalDayNum / manCnt; manMonthDataSource[i].nightPower = (isNaN(man_temp_nightPower) ? 0 : man_temp_nightPower); // 0으로 나누면 NaN이 나오기 때문에 처리 } // 연도 비교 yearDataSource[1].gas = (yearDataSource[1].gas / dayNum_gas * unitkWh / unitm3) * totalDayNum / grossArea; yearDataSource[1].gas = (isNaN(yearDataSource[1].gas) ? 0 : yearDataSource[1].gas); yearDataSource[1].normalPower = (yearDataSource[1].normalPower / dayNum_normalPower) * totalDayNum / grossArea; yearDataSource[1].normalPower = (isNaN(yearDataSource[1].normalPower) ? 0 : yearDataSource[1].normalPower); yearDataSource[1].nightPower = (yearDataSource[1].nightPower / dayNum_nightPower) * totalDayNum / grossArea; yearDataSource[1].nightPower = (isNaN(yearDataSource[1].nightPower) ? 0 : yearDataSource[1].nightPower); manYearDataSource[1].gas = (manYearDataSource[1].gas / dayNum_gas * unitkWh / unitm3) * totalDayNum / manCnt; manYearDataSource[1].gas = (isNaN(manYearDataSource[1].gas) ? 0 : manYearDataSource[1].gas); manYearDataSource[1].normalPower = (manYearDataSource[1].normalPower / dayNum_normalPower) * totalDayNum / manCnt; manYearDataSource[1].normalPower = (isNaN(manYearDataSource[1].normalPower) ? 0 : manYearDataSource[1].normalPower); manYearDataSource[1].nightPower = (manYearDataSource[1].nightPower / dayNum_nightPower) * totalDayNum / manCnt; manYearDataSource[1].nightPower = (isNaN(manYearDataSource[1].nightPower) ? 0 : manYearDataSource[1].nightPower); $("#chartMonth").dxChart("instance").option('dataSource', monthDataSource); // 전기, 가스별 월별 단위면적당 에너지 사용량 $("#chartYear").dxChart("instance").option('dataSource', yearDataSource); // 여기서는 올해 연도 데이터밖에 없음 // 연도별 전기,가스 사용량에 저장 일 합산으로 나누고, 연도 총일수를 곱하고 연면적으로 나눈다 $("#localUnion").dxLinearGauge("instance").option('value', (yearDataSource[1].gas + yearDataSource[1].normalPower + yearDataSource[1].nightPower)); var subTitle = $("#localUnion").dxLinearGauge("instance").option('subtitle'); if (parseFloat($("#Standard").text()) >= parseFloat($("#localUnion").dxLinearGauge("instance").option('value'))) { subTitle.text = "\n" + useIndex + "표준" + " : " + parseFloat($("#Standard").text()).toFixed(2).toString() + "\n표준보다 적게 사용중"; } else if (parseFloat($("#Standard").text()) < parseFloat($("#localUnion").dxLinearGauge("instance").option('value'))) { subTitle.text = "\n" + useIndex + "표준" + " : " + parseFloat($("#Standard").text()).toFixed(2).toString() + "\n표준보다 많이 사용중"; } else { subTitle.text = "\n" + useIndex + "표준" + " : " + parseFloat($("#Standard").text()).toFixed(2).toString() + "\n표준과 동일함"; } $("#localUnion").dxLinearGauge("instance").option('subtitle', subTitle); // 단위면적 게이지의 최소값, 최대값 결정 if (parseFloat($("#Standard").text()) >= parseFloat($("#localUnion").dxLinearGauge("instance").option('value'))) // 표준이 더 크다 { $("#localUnion").dxLinearGauge("instance").option('scale', { startValue: 0, endValue: parseFloat($("#Standard").text()) }); } else // 표준이 더 작거나 같다 { $("#localUnion").dxLinearGauge("instance").option('scale', { startValue: 0, endValue: parseFloat($("#localUnion").dxLinearGauge("instance").option('value')) + 200 }); } // // 단위면적당 표준에 CO2 팩터 곱합 $("#localCO2").dxLinearGauge("instance").option('value', parseFloat($("#localUnion").dxLinearGauge("instance").option('value')) * powerFactor); var subTitle = $("#localCO2").dxLinearGauge("instance").option('subtitle'); if (parseFloat($("#Standard").text()) * parseFloat(powerFactor) > parseFloat($("#localCO2").dxLinearGauge("instance").option('value'))) { subTitle.text = "\n" + useIndex + "표준" + " : " + (parseFloat($("#Standard").text()) * parseFloat(powerFactor)).toFixed(2).toString() + "\n표준보다 적게 사용중"; } else if (parseFloat($("#Standard").text()) * parseFloat(powerFactor) < parseFloat($("#localCO2").dxLinearGauge("instance").option('value'))) { subTitle.text = "\n" + useIndex + "표준" + " : " + (parseFloat($("#Standard").text()) * parseFloat(powerFactor)).toFixed(2).toString() + "\n표준보다 많이 사용중"; } else { subTitle.text = "\n" + useIndex + "표준" + " : " + (parseFloat($("#Standard").text()) * parseFloat(powerFactor)).toFixed(2).toString() + "\n표준과 동일함"; } $("#localCO2").dxLinearGauge("instance").option('subtitle', subTitle); // 단위면적 CO2 게이지의 최소값, 최대값 결정 if (parseFloat($("#Standard").text()) * parseFloat(powerFactor) > parseFloat($("#localCO2").dxLinearGauge("instance").option('value'))) // 표준이 더 크다 { $("#localCO2").dxLinearGauge("instance").option('scale', { startValue: 0, endValue: parseFloat($("#Standard").text()) * parseFloat(powerFactor) }); } else // 표준이 더 작거나 같다 { $("#localCO2").dxLinearGauge("instance").option('scale', { startValue: 0, endValue: parseFloat($("#localCO2").dxLinearGauge("instance").option('value')) + 10 }); } }) .fail(function (error) { utils.toast.show(error); }); } else { if (FuelType == 0) // 가스 { gasFormulaCnt--; if (gasFormulaCnt != 0) { GetDailyData(FuelType, gasFormulaArray[gasFormulaCnt - 1][0], gasFormulaArray[gasFormulaCnt - 1][1]); } } else if (FuelType == 1) // 일반 { normalPowerFormulaCnt--; if (normalPowerFormulaCnt != 0) { GetDailyData(FuelType, normalPowerFormulaArray[normalPowerFormulaCnt - 1][0], normalPowerFormulaArray[normalPowerFormulaCnt - 1][1]); } } else // 심야 { nightPowerFormulaCnt--; if (nightPowerFormulaCnt != 0) { GetDailyData(FuelType, nightPowerFormulaArray[nightPowerFormulaCnt - 1][0], nightPowerFormulaArray[nightPowerFormulaCnt - 1][1]); } } } }) .fail(function (error) { utils.toast.show(error); }); } function GetChartDataBeforeYear(FuelType, FacilityTypeId, FormulaId) { var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 100 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["FacilityTypeId", "=", FacilityTypeId], "and", ["FormulaId", "=", FormulaId] ]); dataSource.sort({ getter: "ParameterId", desc: true }); dataSource.load() .done(function (result) { if (FuelType == 0) { beforeYearGasFormulaCnt = result.length; beforeYearGasFormulaArray = new Array(beforeYearGasFormulaCnt); for (var i = 0; i < beforeYearGasFormulaArray.length; i++) beforeYearGasFormulaArray[i] = new Array(2); for (var i = 0; i < beforeYearGasFormulaCnt; i++) { beforeYearGasFormulaArray[i][0] = result[i].ParameterFacilityCode; beforeYearGasFormulaArray[i][1] = result[i].ParameterPropertyId; } GetBeforeYearDailyData(FuelType, beforeYearGasFormulaArray[beforeYearGasFormulaCnt - 1][0], gasFormulaArray[beforeYearGasFormulaCnt - 1][1]); } else if (FuelType == 1) { beforeYearNormalPowerFormulaCnt = result.length; beforeYearNormalPowerFormulaArray = new Array(beforeYearNormalPowerFormulaCnt); for (var i = 0; i < beforeYearNormalPowerFormulaArray.length; i++) beforeYearNormalPowerFormulaArray[i] = new Array(2); for (var i = 0; i < beforeYearNormalPowerFormulaCnt; i++) { beforeYearNormalPowerFormulaArray[i][0] = result[i].ParameterFacilityCode; beforeYearNormalPowerFormulaArray[i][1] = result[i].ParameterPropertyId; } GetBeforeYearDailyData(FuelType, beforeYearNormalPowerFormulaArray[beforeYearNormalPowerFormulaCnt - 1][0], beforeYearNormalPowerFormulaArray[beforeYearNormalPowerFormulaCnt - 1][1]); } else { beforeYearNightPowerFormulaCnt = result.length; beforeYearNightPowerFormulaArray = new Array(beforeYearNightPowerFormulaCnt); for (var i = 0; i < beforeYearNightPowerFormulaArray.length; i++) beforeYearNightPowerFormulaArray[i] = new Array(2); for (var i = 0; i < beforeYearNightPowerFormulaCnt; i++) { beforeYearNightPowerFormulaArray[i][0] = result[i].ParameterFacilityCode; beforeYearNightPowerFormulaArray[i][1] = result[i].ParameterPropertyId; } GetBeforeYearDailyData(FuelType, beforeYearNightPowerFormulaArray[beforeYearNightPowerFormulaCnt - 1][0], beforeYearNightPowerFormulaArray[beforeYearNightPowerFormulaCnt - 1][1]); } }) .fail(function (error) { utils.toast.show(error); }); } function GetBeforeYearDailyData(FuelType, FacilityCode, PropertyId) { var now = new Date(); var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistoryDaily" }, requireTotalCount: true, pageSize: 366 }); dataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], "and", ["FacilityCode", "=", FacilityCode], "and", ["PropertyId", "=", PropertyId], "and", ["CreatedDateTime", ">=", new Date(now.getFullYear() - 1, 1 - 1, 1)], "and", ["CreatedDateTime", "<=", new Date(now.getFullYear() - 1, 12 - 1, 31)] ]); dataSource.sort({ getter: "CreatedDateTime", asc: true }); dataSource.load() .done(function (result) { for (var i = 0; i < result.length; i++) { if (FuelType == 0) { yearDataSource[0].gas = yearDataSource[0].gas + result[i].DailyValue; // 전체 가스 값을 합한다 manYearDataSource[0].gas = manYearDataSource[0].gas + result[i].DailyValue; if (!beforeYearHash_gas[result[i].CreatedDateTime]) { // 월별로 전기,가스가 저장되어 있는 일수 저장 beforeYearHash_gas[result[i].CreatedDateTime] = result[i].CreatedDateTime; monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].beforeDayNum_gas = monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].beforeDayNum_gas + 1; } } else if (FuelType == 1) { yearDataSource[0].normalPower = yearDataSource[0].normalPower + result[i].DailyValue; manYearDataSource[0].normalPower = manYearDataSource[0].normalPower + result[i].DailyValue; if (!beforeYearHash_normalPower[result[i].CreatedDateTime]) { // 월별로 전기,가스가 저장되어 있는 일수 저장 beforeYearHash_normalPower[result[i].CreatedDateTime] = result[i].CreatedDateTime; monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].beforeDayNum_normalPower = monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].beforeDayNum_normalPower + 1; } } else { yearDataSource[0].nightPower = yearDataSource[0].nightPower + result[i].DailyValue; manYearDataSource[0].nightPower = manYearDataSource[0].nightPower + result[i].DailyValue; if (!beforeYearHash_nightPower[result[i].CreatedDateTime]) { // 월별로 전기,가스가 저장되어 있는 일수 저장 beforeYearHash_nightPower[result[i].CreatedDateTime] = result[i].CreatedDateTime; monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].beforeDayNum_nightPower = monthDayNumDataSource[result[i].CreatedDateTime.getMonth()].beforeDayNum_nightPower + 1; } } } if ((beforeYearGasFormulaCnt + beforeYearNormalPowerFormulaCnt + beforeYearNightPowerFormulaCnt) == 0 || (beforeYearGasFormulaCnt + beforeYearNormalPowerFormulaCnt + beforeYearNightPowerFormulaCnt) == 1) { var grossArea = 0; var dataSourceGrossArea = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/CmSite" }, requireTotalCount: true, pageSize: 10 }); dataSourceGrossArea.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], ]); dataSourceGrossArea.load() .done(function (resultGrossArea) { grossArea = parseFloat(resultGrossArea[0].GrossArea.toString()); // 연면적 var beforeDayNum_gas = 0; // 수집한 가스 총 일수 var beforeDayNum_normalPower = 0; var beforeDayNum_nightPower = 0; var beforeTotalDayNum = 0; // 일년 총 일수 for (var i = 0; i < monthDayNumDataSource.length; i++) { monthDayNumDataSource[i].beforeTotalDayNum = 32 - new Date(now.getFullYear() - 1, i, 32).getDate(); // 월별로 일수 계산 {31, 28, 31.....} beforeTotalDayNum = beforeTotalDayNum + monthDayNumDataSource[i].beforeTotalDayNum; // 월별로 일수의 합산 beforeDayNum_gas = beforeDayNum_gas + monthDayNumDataSource[i].beforeDayNum_gas; // 가스가 저장되어 있는 총 일 수 beforeDayNum_normalPower = beforeDayNum_normalPower + monthDayNumDataSource[i].beforeDayNum_normalPower; beforeDayNum_nightPower = beforeDayNum_nightPower + monthDayNumDataSource[i].beforeDayNum_nightPower; } // 단위면적당 yearDataSource[0].gas = (yearDataSource[0].gas / beforeDayNum_gas * unitkWh / unitm3) * beforeTotalDayNum / grossArea; yearDataSource[0].gas = (isNaN(yearDataSource[0].gas) ? 0 : yearDataSource[0].gas); yearDataSource[0].normalPower = (yearDataSource[0].normalPower / beforeDayNum_normalPower) * beforeTotalDayNum / grossArea; yearDataSource[0].normalPower = (isNaN(yearDataSource[0].normalPower) ? 0 : yearDataSource[0].normalPower); yearDataSource[0].nightPower = (yearDataSource[0].nightPower / beforeDayNum_nightPower) * beforeTotalDayNum / grossArea; yearDataSource[0].nightPower = (isNaN(yearDataSource[0].nightPower) ? 0 : yearDataSource[0].nightPower); // 인당 manYearDataSource[0].gas = (manYearDataSource[0].gas / beforeDayNum_gas * unitkWh / unitm3) * beforeTotalDayNum / manCnt; manYearDataSource[0].gas = (isNaN(manYearDataSource[0].gas) ? 0 : manYearDataSource[0].gas); manYearDataSource[0].normalPower = (manYearDataSource[0].normalPower / beforeDayNum_normalPower) * beforeTotalDayNum / manCnt; manYearDataSource[0].normalPower = (isNaN(manYearDataSource[0].normalPower) ? 0 : manYearDataSource[0].normalPower); manYearDataSource[0].nightPower = (manYearDataSource[0].nightPower / beforeDayNum_nightPower) * beforeTotalDayNum / manCnt; manYearDataSource[0].nightPower = (isNaN(manYearDataSource[0].nightPower) ? 0 : manYearDataSource[0].nightPower); $("#chartYear").dxChart("instance").option('dataSource', yearDataSource); }) .fail(function (error) { utils.toast.show(error); }); } else { if (FuelType == 0) // 가스 { beforeYearGasFormulaCnt--; if (beforeYearGasFormulaCnt != 0) { GetBeforeYearDailyData(FuelType, beforeYearGasFormulaArray[beforeYearGasFormulaCnt - 1][0], beforeYearGasFormulaArray[beforeYearGasFormulaCnt - 1][1]); } } else if (FuelType == 1) // 일반 { beforeYearNormalPowerFormulaCnt--; if (beforeYearNormalPowerFormulaCnt != 0) { GetBeforeYearDailyData(FuelType, beforeYearNormalPowerFormulaArray[beforeYearNormalPowerFormulaCnt - 1][0], normalPowerFormulaArray[beforeYearNormalPowerFormulaCnt - 1][1]); } } else // 심야 { beforeYearNightPowerFormulaCnt--; if (beforeYearNightPowerFormulaCnt != 0) { GetBeforeYearDailyData(FuelType, beforeYearNightPowerFormulaArray[beforeYearNightPowerFormulaCnt - 1][0], nightPowerFormulaArray[beforeYearNightPowerFormulaCnt - 1][1]); } } } }) .fail(function (error) { utils.toast.show(error); }); } function handleViewShown() { yearDataSource[1].gas = 0; yearDataSource[1].normalPower = 0; yearDataSource[1].nightPower = 0; manYearDataSource[1].gas = 0; manYearDataSource[1].normalPower = 0; manYearDataSource[1].nightPower = 0; $('#pManCnt').hide(); $('#manCnt').hide(); $('#acceptBtn').hide(); $("#locUnionBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)"); $("#manBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)"); GetSiteData(); GetChartDataMonth(gasFuelType, gasFacilityTypeId, gasFormulaId); GetChartDataMonth(normalPowerFuelType, normalPowerFacilityTypeId, normalPowerFormulaId); GetChartDataMonth(nightPowerFuelType, nightPowerFacilityTypeId, nightPowerFormulaId); GetChartDataBeforeYear(gasFuelType, gasFacilityTypeId, gasFormulaId); GetChartDataBeforeYear(normalPowerFuelType, normalPowerFacilityTypeId, normalPowerFormulaId); GetChartDataBeforeYear(nightPowerFuelType, nightPowerFacilityTypeId, nightPowerFormulaId); } var searchViewOptions = { }; function handleSearchInSearchView() { } function handleViewShowing() { var dataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsFactorToe" }, requireTotalCount: true, pageSize: 2 }); dataSource.sort({ getter: "FuelTypeId", asc: true }); dataSource.load() .done(function (result) { if (result != 0) { for (var i = 0; i < result.length; i++) { if (result[i].FuelTypeId == 1) unitm3 = result[i].TotalFactor; if (result[i].FuelTypeId == 2) unitkWh = result[i].TotalFactor; } } else { utils.toast.show("[BemsFactorToe] 데이터가 없습니다."); } }) .fail(function (error) { utils.toast.show("[BemsFactorToe] 데이터 조회를 실패했습니다."); }); var dataSourceTCO2 = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsFactorCo2" }, requireTotalCount: true, pageSize: 10 }); dataSourceTCO2.filter([ ["FuelTypeId", "<", 3], ]); dataSourceTCO2.load() .done(function (resultTCO2) { for (var i = 0; i < resultTCO2.length; i++) { if (resultTCO2[i].FuelTypeId == 1) powerFactor = resultTCO2[i].Factor if (resultTCO2[i].FuelTypeId == 2) gasFactor = resultTCO2[i].Factor } }) .fail(function (error) { utils.toast.show(error); }); GetSitePeopleIncrease(); } var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), { viewShowing: handleViewShowing, localUnion: { geometry: { orientation: "vertical" }, rangeContainer: { width: 30, backgroundColor: '#FFE400', horizontalOrientation: 'right' }, scale: { startValue: 0, endValue: 2000, }, title: { text: "단위면적당 에너지사용량\n(kWH/㎡)\n ", font: { size: 15, weight: 400 } }, subtitle: { text: "\n공공병원표준 : 872\n표준보다 적게 사용중", font: { size: 13, weight: 1000 } }, "export": { enabled: true }, valueIndicator: { type: 'textcloud', color: 'red' }, }, localCO2: { geometry: { orientation: "vertical" }, rangeContainer: { width: 30, backgroundColor: '#00D8FF', horizontalOrientation: 'right' }, scale: { startValue: 0, endValue: 2000, }, title: { text: "CO2배출량\n(tCO²)\n ", font: { size: 15, weight: 400 } }, subtitle: { text: "\n공공병원표준 : 146\n표준보다 적게 사용중", font: { size: 13, weight: 1000 } }, "export": { enabled: true }, valueIndicator: { type: 'textcloud', color: 'red' }, }, chartMonth: { dataSource: monthDataSource, commonSeriesSettings: { argumentField: "month", type: "stackedBar" }, series: [ { valueField: "gas", name: "가스" }, { valueField: "normalPower", name: "일반전력" }, { valueField: "nightPower", name: "심야전력" } ], legend: { position: 'outside', verticalAlignment: "top", horizontalAlignment: "center", itemTextPosition: 'bottom' }, valueAxis: { title: { text: "에너지 사용량(kWH/㎡)" }, position: "left" }, argumentAxis: { type: "stackedBar", position: 'bottom', grid: { visible: true } }, "export": { enabled: true }, title: { font: { size: 15 }, text: '월별 에너지 사용량(단위면적당)' }, tooltip: { enabled: true, customizeTooltip: function (point) { return { text: numberWithCommas(point.value.toFixed(2)) }; } } }, chartYear: { dataSource: yearDataSource, commonSeriesSettings: { argumentField: "year", type: "stackedBar" }, series: [ { valueField: "gas", name: "가스" }, { valueField: "normalPower", name: "일반전력" }, { valueField: "nightPower", name: "심야전력" } ], legend: { position: 'outside', verticalAlignment: "top", horizontalAlignment: "center", itemTextPosition: 'bottom', margin: 10 }, valueAxis: { title: { text: "에너지 사용량(kWH/㎡)" }, position: "left" }, "export": { enabled: true }, title: { font: { size: 15 }, text: '연간 에너지 사용량(단위면적당)' }, tooltip: { enabled: true, customizeTooltip: function (point) { return { text: numberWithCommas(point.value.toFixed(2)) }; } } }, locUnionBtn: function () { selectButton = 0; $('#pManCnt').hide(); $('#manCnt').hide(); $('#acceptBtn').hide(); $("#locUnionBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)"); $("#manBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)"); $("#chartMonth").dxChart("instance").option('dataSource', monthDataSource); var valAxis = $("#chartMonth").dxChart("instance").option('valueAxis'); valAxis.title.text = "에너지 사용량(kWH/㎡)"; $("#chartMonth").dxChart("instance").option('valueAxis', valAxis); var title = $("#chartMonth").dxChart("instance").option('title'); title.text = '월별 에너지 사용량(단위면적당)'; $("#chartMonth").dxChart("instance").option('title', title); $("#chartYear").dxChart("instance").option('dataSource', yearDataSource); var valAxis = $("#chartYear").dxChart("instance").option('valueAxis'); valAxis.title.text = "에너지 사용량(kWH/㎡)"; $("#chartYear").dxChart("instance").option('valueAxis', valAxis); var title = $("#chartYear").dxChart("instance").option('title'); title.text = '연간 에너지 사용량(단위면적당)'; $("#chartYear").dxChart("instance").option('title', title); }, manBtn: function () { selectButton = 1; $("#manBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)"); $("#locUnionBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)"); $("#chartMonth").dxChart("instance").option('dataSource', manMonthDataSource); var valAxis = $("#chartMonth").dxChart("instance").option('valueAxis'); valAxis.title.text = "에너지 사용량(kWH/명)"; $("#chartMonth").dxChart("instance").option('valueAxis', valAxis); var title = $("#chartMonth").dxChart("instance").option('title'); title.text = '월별 에너지 사용량(1인당)'; $("#chartMonth").dxChart("instance").option('title', title); $("#chartYear").dxChart("instance").option('dataSource', manYearDataSource); var valAxis = $("#chartYear").dxChart("instance").option('valueAxis'); valAxis.title.text = "에너지 사용량(kWH/명)"; $("#chartYear").dxChart("instance").option('valueAxis', valAxis); var title = $("#chartYear").dxChart("instance").option('title'); title.text = '연간 에너지 사용량(1인당)'; $("#chartYear").dxChart("instance").option('title', title); }, StandardBtn: function () { viewModel.LocalunionManUsagePopup.visible(true); } }); LocalunionManUsagePopup = viewModel.LocalunionManUsagePopup = BWA.Popup.LocalunionManUsage.create(viewInfo, viewModel); return viewModel; };