BemsWebApplication.DailyCheckReport = function (params, viewInfo) { "use strict"; var initialized = false, shouldReload = false, dataSource; var CODE = $Code, FuelType = CODE.FuelType, FacilityType = CODE.FacilityType, FacilityCode = CODE.FacilityCode, F = CODE.Formula, TIT = CODE.TimeIntervalType; var visiblePopup = ko.observable(false); //var barDataArray = []; var works = ko.observableArray(); var works2 = ko.observableArray(); var works3 = ko.observableArray(); // bar chart용 var works4 = ko.observableArray(); // bar chart용 var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; //or = BWA.DataUtil.orFilter; var BFDataSource = BemsWebApplication.db.createDataSource('CmBusinessField'), progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress'), chartPieDay = BWA.Chart.Instance('chartPieDayDReport', 'dxPieChart'), chartBarDay = BWA.Chart.Instance('chartBarDayDReport', 'dxChart'), chartPieMonth = BWA.Chart.Instance('chartPieMonthDReport', 'dxPieChart'), chartBarMonth = BWA.Chart.Instance('chartBarMonthDReport', 'dxChart'); var BF = ko.observableArray(), progresses = ko.observableArray(); var LCCViewGet = new BWA.Chart.PointHistory_LCCViewGet(BWA.UserInfo.SiteId()); var FmsHouseStockGet = new BWA.Chart.FmsHouseStockGet(BWA.UserInfo.SiteId()); var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly); var factorToe = null; var Toe = $Code.FuelType.WATER + 1; var fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'), fuelTypesForSearch = ko.observableArray(), timeTypesForSearch = ko.observableArray(), timeTypeIdForSearch = ko.observable(0), fuelTypeIdForSearch = ko.observable(), deferredForSearch = new $.Deferred(); var dataArray = ko.observableArray(), dataDayForPie = ko.observableArray(), dataMonthForPie = ko.observableArray(), dataDayForBar = ko.observableArray(), dataMonthForBar = ko.observableArray() ; var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId()); timeTypesForSearch($G.TimeTypes); var m = moment(); /*dataDayForBar([ { DateTime: new Date(m.year(), m.month(), 1), PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 2), Value: 50, PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 3), Value: 60, PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 4), Value: 80, PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 5), Value: 100, PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 6), Value: 40, PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 7), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 }, { DateTime: new Date(m.year(), m.month(), 31), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 } ]); dataMonthForBar(dataDayForBar()); dataDayForPie([ { FuelTypeName: '전기', Value: 320 }, { FuelTypeName: '가스', Value: 350 }, { FuelTypeName: '수도', Value: 360 }, ]); dataMonthForPie(dataDayForPie()); */ var InOutDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.FmsMaterialStockHistoryDaily, select: [ 'HistoryId', 'SiteId', 'BusinessFieldId', 'MaterialId', 'MaterialCode', 'MaterialName', 'Unit', 'YearMonth', 'YearMonthDate', 'StoredCount', 'ReleaseCount', 'ReleaseLossCount', 'ReleaseReturnCount', 'FirstClassId', 'SecondClassId', 'ThirdClassId', 'WarehouseId', 'StockCount', 'StockAmount', 'FirstClassId', 'SecondClassId', 'ThirdClassId', 'Standard' ], filter: [eq('SiteId', BWA.UserInfo.SiteId())], }, }, 'FmsMaterialStockHistoryDaily'); var workDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { store: BemsWebApplication.odata.FmsMaterialEx, select: [ 'SiteId', 'BusinessFieldId', 'MaterialId', 'MaterialCode', 'Name', 'FirstClassId', 'SecondClassId', 'ThirdClassId', 'LocationId', 'MaterialTypeId', 'TradeCompanyId', 'WarehouseId', 'WHouseName', 'Rfid', 'Unit', 'DurableYears', 'ReasonableStockCount', 'Manufacturer', 'Standard', 'FinalPrice', 'ImageFileId', 'Note', 'IsDiscontinued', 'IsUse', 'FinalStockCount', 'FinalTotalStockAmount', 'StockCount', 'StockAmount', ], //expand: ['CmSite', 'FmsMaterialWarehouse' ], filter: [ //['BusinessFieldId', '=', BWA.UserInfo.BusinessFieldId()], //'or', //['BusinessFieldId', '=', 1] ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['WarehouseId', '<>', 0], ] }, }); //}, 'FmsWorkRequest'); /* var workDataSource2 = BWA.DataUtil.createDataSource({ dataSourceOptions: { select: [ 'SiteId', 'WorkRequestId', 'WorkProgressId', 'CmBusinessField/Name', 'FmsWorkResult/' ], expand: [ 'FmsWorkResult', 'FmsWorkResult/CmUser', 'FmsWorkResult/IsConfirmed', 'FmsWorkResult/ConfirmedDate', 'FmsWorkRequest/FmsWorkCodeType', 'FmsWorkRequest/FmsWorkCodeProgress', 'CmBusinessField', 'CmUser'], extendOptions: { forceOriginalField: true, }, }, }, 'FmsWorkRequest'); */ /* var searchViewOptions = { searchViewItems: [ { id: 'TimeTypeId', defaultValue: 0, value: timeTypeIdForSearch, dataSource: timeTypesForSearch }, { id: 'FuelTypeId', ignoreValue: 0, defaultValue: 1, value: fuelTypeIdForSearch, dataSource: fuelTypesForSearch }, { id: 'DateForHour', type: 'dateRange' }, { id: 'TimeForHour', type: 'dateRange' }, ], promiseDataInSearchView: deferredForSearch.promise() };*/ function handleViewShown() { if (initialized === false) { //var chartOption = BWA.ChartOptions.LCCView; $.when( BFDataSource.load(), progressDataSource.load() ).done(function (BFResult, progressResult) { BF = BFResult[0]; progresses = progressResult[0]; BWA.ChartOptions.DailyCheckReport.MakeSeries(progresses); chartPieDay = chartPieDay(BWA.ChartOptions.DailyCheckReport.getPieChartDayOptions()); chartBarDay = chartBarDay(BWA.ChartOptions.DailyCheckReport.getBarChartDayOptions()); //chartPieMonth = chartPieMonth(BWA.ChartOptions.FacilityTaskReport.getPieChartMonthOptions()); //chartBarMonth = chartBarMonth(BWA.ChartOptions.FacilityTaskReport.getBarChartMonthOptions()); handleSearchInSearchView(); //loadMonthlyEnergyUsage(); //loadDailyEnergyUsage(); }); //$('#chartPieDay').dxPieChart(chartOption.getPieChartDayOptions(dataDayForPie)); //$('#chartBarDay').dxChart(chartOption.getBarChartDayOptions(dataDayForBar)); //$('#chartPieMonth').dxPieChart(chartOption.getPieChartMonthOptions(dataMonthForPie)); //$('#chartBarMonth').dxChart(chartOption.getBarChartMonthOptions(dataMonthForBar)); initialized = true; } else handleSearchInSearchView(); } function handleSearchInSearchView() { //visiblePopup(true); /* var filterA = []; filterA.push(['FacilityCode', "<>", 0]); filterA.push(['ValueType', ">", 0]); _.each(filter, function (x) { filterA.push(x); }); workDataSource.filter(filterA); */ //workDataSource._storeLoadOptions.filter.push(filter); //workDataSource._paginate = false; var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName) /* var param = { SiteId: BWA.UserInfo.SiteId(), BusinessId: BWA.UserInfo.BusinessFieldId(), //TimeIntervalType: timeType, //StartDate: date.startDate, //EndDate: date.endDate, }; var promises = []; promises.push(FmsHouseStockGet.apiGet(_.extend(param))); $.when.apply(this, promises).done(function (predata) { var i; i = predata[0]; works2(predata); }); */ InOutDataSource.load().done(function (workResult) { works(workResult); }); workDataSource.load().done(function (workResult) { works2(workResult); }); /* workDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('FmsWorkRequest/WorkProgressId', 4) ]); workDataSource.load().done(function (workResult) { //works2(workResult); }); workDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('FmsWorkRequest/WorkProgressId', 3), 'or', eq('FmsWorkRequest/WorkProgressId', 4), 'or', eq('FmsWorkRequest/WorkProgressId', 5), ]); workDataSource.load().done(function (workResult) { works3(workResult); var now = new Date(); now = new Date(now.getFullYear(), now.getMonth(), now.getDay(), 0, 0, 0); //now = new Date(2015, 8, 1, 0, 0, 0); workDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('FmsWorkRequest/WorkProgressId', 6), and, eq('FmsWorkResult/IsConfirmed', true), and, ['FmsWorkResult/ConfirmedDate', ">=", now] ]); workDataSource.load().done(function (workResult2) { works4(workResult2); var pieDataArray = []; var barDataArray = []; _.each(BF, function (x) { barDataArray.push({ PType: x.Name(), 작업대기: getWorkProcessCount(workResult, 3, x.BusinessFieldId()), 작업진행중: getWorkProcessCount(workResult, 4, x.BusinessFieldId()), 작업완료: getWorkProcessCount(workResult, 5, x.BusinessFieldId()), 완료승인: getWorkProcessCount(workResult2, 6, x.BusinessFieldId()), }); }); chartBarDay().option('dataSource', barDataArray); //MakeMonthClickChart(date.endDate.getMonth() + 1); _.each(progresses, function (x) { if (x.WorkProgressId() >= 3) pieDataArray.push({ FuelTypeName: x.Name(), Value: (x.WorkProgressId() == 6) ? workResult2.length : getWorkProcessCount(workResult, x.WorkProgressId(), null) }) }); chartPieDay().option('dataSource', pieDataArray); }); });*/ $("#large-indicator").dxLoadIndicator({ height: 60, width: 60 }); } //var fuelTypes = [FuelType.ELECTRICITY, FuelType.GAS, FuelType.WATER]; function handleViewHidden() { visiblePopup(false); //hideOverlay(); // var dataGrid = $('#gridContainer').dxDataGrid('instance'); // dataGrid.clearSelection(); } function handleViewShowing() { } function getWorkProcessCount(datas, type, bf) { var cnt = 0; _.each(datas, function (x) { if (x['FmsWorkRequest/WorkProgressId']() == type && (bf == null || x.BusinessFieldId() == bf)) //alert(x.BusinessFieldId()); //alert(x['FmsWorkRequest/WorkProgressId']()); //if (x.FmsWorkRequest/WorkProgressId() == type && x.BusinessFieldId() == bf) cnt++; }); return cnt; } function refreshList() { //dataSource.pageIndex(0); //dataSource.load(); } //var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), { var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, null, ko.observable(null), handleViewShown), { refreshList: refreshList, viewShowing: handleViewShowing, workDataGridOptions: utils.datagrid.defaultOptions({ rowClick: function (row) { //selData = row.data; /*fName(row.values[1]); Name(row.values[2]); Energy(row.values[3]); Type(row.values[4]); getValue(row.values[5]); setValue(row.values[6]); visiblePopup(true);*/ }, rowAlternationEnabled: true, dataSource: works, columns: [ { dataField: 'MaterialCode', caption: '자재코드', width: '25%', alignment: 'right' }, { dataField: 'MaterialName', caption: '자재명', width: '25%', alignment: 'left' }, { dataField: 'YearMonthDate', caption: '날짜', width: '20%', alignment: 'center', sortOrder: 'desc', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'StoredCount', caption: '입고수량', width: '15%', alignment: 'center', format: 'currency' }, { dataField: 'ReleaseCount', caption: '정상출고', width: '15%', alignment: 'center', format: 'currency' }, { dataField: 'ReleaseLossCount', caption: '조정출고손실', width: '20%', alignment: 'center', format: 'currency' }, { dataField: 'ReleaseReturnCount', caption: '조정출고반납', width: '20%', alignment: 'center', format: 'currency' }, { dataField: 'StockCount', caption: '재고수량', width: '20%', alignment: 'center', format: 'currency' }, ], }), workDataGridOptions2: utils.datagrid.defaultOptions({ rowClick: function (row) { //selData = row.data; /*fName(row.values[1]); Name(row.values[2]); Energy(row.values[3]); Type(row.values[4]); getValue(row.values[5]); setValue(row.values[6]); visiblePopup(true);*/ }, groupPanel: { visible: true }, rowAlternationEnabled: true, dataSource: works2, columns: [ //{ dataField: 'WorkRequestId', caption: $G('number'), width: '8%', alignment: 'center' }, //{ dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' }, /* { dataField: 'HouseName', caption: '창고명', width: '30%', alignment: 'center' },*/ { dataField: 'WHouseName', caption: '창고명', alignment: 'right', groupIndex: 0 }, { dataField: 'MaterialCode', caption: '자재코드', width: '30%', alignment: 'right' }, { dataField: 'Name', caption: '자재명', width: '40%', alignment: 'left' }, { dataField: 'StockCount', caption: '재고량', width: '30%', alignment: 'center' }, ], summary: { groupItems: [{ column: 'StockCount', summaryType: 'sum', displayFormat: '창고재고량 : {0} ', }] } }), }); viewModel.timeBoxForSearch = timeBoxForSearch; viewModel.popupOptions = { width: 300, height: 100, contentTemplate: "info", showTitle: false, title: "메세지", visible: visiblePopup, dragEnabled: false, shading: false, closeOnOutsideClick: false }; return viewModel; };