| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 | BemsWebApplication.FacilityTaskReport = 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 useBusinessFiltering = ko.observable(false);    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('chartPieDayTReport', 'dxPieChart'),        chartBarDay = BWA.Chart.Instance('chartBarDayTReport', 'dxChart');    //chartPieMonth = BWA.Chart.Instance('chartPieMonth', 'dxPieChart'),    //chartBarMonth = BWA.Chart.Instance('chartBarMonth', 'dxChart');    var BF = ko.observableArray(),        progresses = ko.observableArray();    var LCCViewGet = new BWA.Chart.PointHistory_LCCViewGet(BWA.UserInfo.SiteId());    var LCCViewPreSumGet = new BWA.Chart.PointHistory_LCCViewPreSumGet(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 workDataSource = BWA.DataUtil.createDataSource({        dataSourceOptions: {            select: [            'SiteId', 'WorkRequestId', 'FmsWorkRequest/FmsWorkCodeType/Name',            'FmsWorkRequest/WorkTypeId', 'Title', 'OrderDate', 'FmsWorkRequest/WorkProgressId',            'CmUser/Name', // 작업지시자            'FmsWorkRequest/CmBusinessField/Name',            'BusinessFieldId', 'FmsWorkRequest/CmBusinessField/Name', 'FmsWorkRequest/BusinessFieldId'            ],            expand: ['FmsWorkRequest',            'FmsWorkResult',            'FmsWorkResult/CmUser',            'FmsWorkResult/IsConfirmed',            'FmsWorkResult/ConfirmedDate',            'FmsWorkRequest/FmsWorkCodeType',            'FmsWorkRequest/CmBusinessField',            'FmsWorkRequest/FmsWorkCodeProgress',            'CmBusinessField', 'CmUser'],            extendOptions: {                forceOriginalField: true,            }        },    }, 'FmsWorkOrder');    //}, 'FmsWorkRequest');    // 2016 05 11 추가    var workDataSource2 = BWA.DataUtil.createDataSource({        dataSourceOptions: {            select: [                'SiteId', 'WorkRequestId',                'StartDate', 'EndDate',                'ConfirmedDate', 'ConfirmedUserId', 'IsConfirmed',                'CauseClassId', 'Content',                'FmsWorkRequest/WorkTypeId',                'FmsWorkOrder/Title',                'FmsWorkOrder/OrderDate',                'FmsWorkRequest/WorkProgressId',                'CmUser/Name', // 작업자                'CmUser1/Name', // 승인자                'FmsWorkRequest/FmsWorkCodeType/Name',                'FmsWorkRequest/CmBusinessField/Name',                'FmsWorkRequest/FmsWorkCodeProgress/Name',                'FmsWorkOrder/BusinessFieldId',                'FmsWorkOrder/Content',                'FmsWorkRequest/Content',            ],            expand: [                'FmsWorkRequest',                'FmsWorkOrder',                'FmsWorkRequest/FmsWorkCodeType',                'FmsWorkRequest/CmBusinessField',                'FmsWorkRequest/FmsWorkCodeProgress',                'FmsWorkOrder/CmBusinessField', 'CmUser', 'CmUser1'],            extendOptions: {                forceOriginalField: true            }        },    }, 'FmsWorkResult');    function handleViewShown() {        if (initialized === false) {            BFDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),//**kgpark            ]);            $.when(                BFDataSource.load(),                progressDataSource.load()            ).done(function (BFResult, progressResult) {                BF = BFResult[0];                progresses = progressResult[0];                BWA.ChartOptions.FacilityTaskReport.MakeSeries(progresses);                chartPieDay = chartPieDay(BWA.ChartOptions.FacilityTaskReport.getPieChartDayOptions());                chartBarDay = chartBarDay(BWA.ChartOptions.FacilityTaskReport.getBarChartDayOptions());                handleSearchInSearchView();            });            initialized = true;        }        else            handleSearchInSearchView();    }    function handleSearchInSearchView() {        if (!useBusinessFiltering) {            workDataSource.filter([            eq('SiteId', BWA.UserInfo.SiteId()),            and,            eq('FmsWorkRequest/WorkProgressId', 3) // 대기            ]);        } else {            workDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                eq('FmsWorkRequest/WorkProgressId', 3), // 대기                and,                [eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]]);        }        workDataSource.load().done(function (workResult) {            works(workResult);        });        if (!useBusinessFiltering) {            workDataSource2.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                [                    eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING),                    'or',                    eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORK_HOLD)                ]            ]);        } else {            workDataSource2.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                [eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING), 'or', eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORK_HOLD)],                and,                [eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]]);        }        workDataSource2.load().done(function (workResult) {            works2(workResult);        });        if (!useBusinessFiltering) {            workDataSource.filter([               [                   eq('SiteId', BWA.UserInfo.SiteId()),                   and,                   [eq('FmsWorkRequest/WorkProgressId', 3),                   'or',                   eq('FmsWorkRequest/WorkProgressId', 4),                   'or',                   eq('FmsWorkRequest/WorkProgressId', 5),                   'or',                   eq('FmsWorkRequest/WorkProgressId', 7)], // 작업보류 추가 2016 05 10               ]            ]);        } else {            workDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                [                   [eq('FmsWorkRequest/WorkProgressId', 3),                   'or',                   eq('FmsWorkRequest/WorkProgressId', 4),                   'or',                   eq('FmsWorkRequest/WorkProgressId', 5),                   'or',                   eq('FmsWorkRequest/WorkProgressId', 7)], // 작업보류 추가 2016 05 10                ],                and,                [eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]]);        }        workDataSource.load().done(function (workResult) {            works3(workResult);            var now = new Date();            now = new Date(now.getFullYear(), now.getMonth(), 1, 0, 0, 0);            //now = new Date(2015, 8, 1, 0, 0, 0);            if (!useBusinessFiltering) {                workDataSource.filter([                   [                       eq('SiteId', BWA.UserInfo.SiteId()),                       and,                       eq('FmsWorkRequest/WorkProgressId', 6), // 완료승인                       and,                       eq('FmsWorkResult/IsConfirmed', true),                       and,                       ['FmsWorkResult/ConfirmedDate', ">=", now]                   ]                ]);            } else {                workDataSource.filter([                    eq('SiteId', BWA.UserInfo.SiteId()),                    and,                    [                       eq('FmsWorkRequest/WorkProgressId', 6), // 완료승인                       and,                       eq('FmsWorkResult/IsConfirmed', true),                       and,                       ['FmsWorkResult/ConfirmedDate', ">=", now]                    ],                    and,                    [eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]]);            }            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()),                        작업보류: getWorkProcessCount(workResult, 7, x.BusinessFieldId()),                    });                });                //2015 11 24 차트 다시 그리지 않는 문제                 //chartBarDay().option('dataSource', barDataArray); 대신 아래3줄로 변경                var options = BWA.ChartOptions.FacilityTaskReport.getBarChartDayOptions();                options.dataSource = barDataArray;                chartBarDay().option(options);                _.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        });    }    function handleViewHidden() {        visiblePopup(false);    }    function handleViewShowing() {        useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName);    }    function getWorkProcessCount(datas, type, bf) {        var cnt = 0;        _.each(datas, function (x) {            if (x['SiteId']() == BWA.UserInfo.SiteId() && x['FmsWorkRequest/WorkProgressId']() == type && (bf == null || x['FmsWorkRequest/BusinessFieldId']() == bf))  //**kgpark                //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,            useNumberColumn: true,            dataSource: works,            datagridId: 'gridContainer',            paging: {                enabled: true,                pageSize: 6            },            pager: {                //allowedPageSizes: true,                showPageSizeSelector: false,                allowedPageSizes: [6],                visible: true            },            columns: [                { dataField: 'WorkRequestId', caption: $G('number'), width: '8%', alignment: 'center' },                { dataField: 'FmsWorkRequest/CmBusinessField/Name', caption: $G('businessFieldName'), width: '15%', alignment: 'center' },                { dataField: 'FmsWorkRequest/FmsWorkCodeType/Name', caption: $G('workTypeName'), width: '15%', alignment: 'center' },                {                    dataField: 'OrderDate', caption: $G('orderedDate'), width: '20%', alignment: 'center', sortOrder: 'desc',                    customizeText: function (cellInfo) {                        return $G.date(cellInfo.value);                    }                },                { dataField: 'Title', caption: '작업명', width: '30%', alignment: 'center' },                //{ dataField: 'CmUser/Name', caption: '작업지시자', width: '8%', alignment: 'center' },            ],        }),        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);*/            },            //rowAlternationEnabled: true,            dataSource: works2,            datagridId: 'gridContainer2',            useNumberColumn: true,            paging: {                enabled: true,                pageSize: 6            },            pager: {                //allowedPageSizes: true,                showPageSizeSelector: false,                allowedPageSizes: [6],                visible: true            },             columns: [                { dataField: 'WorkRequestId', caption: $G('number'), width: '8%', alignment: 'center' },                { dataField: 'FmsWorkRequest/CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' },                { dataField: 'FmsWorkRequest/FmsWorkCodeType/Name', caption: $G('workTypeName'), width: '10%', alignment: 'center' },                {                    dataField: 'FmsWorkOrder/OrderDate', caption: $G('orderedDate'), width: '15%', alignment: 'center', sortOrder: 'desc',                    customizeText: function (cellInfo) {                        return $G.date(cellInfo.value);                    }                },                {                    dataField: 'EndDate', caption: '종료예정일', width: '15%', alignment: 'center',                    customizeText: function (cellInfo) {                        return $G.date(cellInfo.value);                    }                },                { dataField: 'FmsWorkOrder/Title', caption: '작업명', width: '30%', alignment: 'center' },                { dataField: 'CmUser/Name', caption: '작업자', width: '10%', alignment: 'center' },            ],        })    });    viewModel.timeBoxForSearch = timeBoxForSearch;    viewModel.popupOptions = {        width: 300,        height: 100,        contentTemplate: "info",        showTitle: false,        title: "메세지",        visible: visiblePopup,        dragEnabled: false,        shading: false,        closeOnOutsideClick: false    };    return viewModel;};
 |