dataImpModule.controller('extractFinancialDataController', ['$scope', '$log', '$translate', '$timeout', '$q', '$interval'
    , 'apiInterceptor', 'Upload', 'vatImportService', 'SweetAlert', 'uiGridConstants', '$uibModal'
    , 'vatSessionService', 'enums', 'vatOperationLogService'
    , 'projectService', 'vatCommonService','orgService', 'dataImportService',
    function ($scope, $log, $translate, $timeout, $q, $interval
        , apiInterceptor, Upload, vatImportService, SweetAlert, uiGridConstants, $uibModal
        , vatSessionService, enums, vatOperationLogService
        , projectService, vatCommonService , orgService,dataImportService) {
        'use strict';

        var comment = vatSessionService.project.name + " " + vatSessionService.project.year + "年" + vatSessionService.month + "月";
        $scope.period = $scope.periodId;
        $scope.moduleid = enums.vatModuleEnum.Import_TrialBalance;
        $scope.chunkSize = 100000;
        $scope.success = false;      
        $scope.showErrorTable = false;
        $scope.showInitTable = false;
        $scope.showImportTable = false;
        $scope.isSelectPeriod = true;
        $scope.isShowImportTotalBtn = true;
        $scope.projectID = vatSessionService.project.id;
        $scope.startRowNum = 2;
        $scope.validationType = 0;
        $scope.sheetData = { sheetNameList: [], dataList: [], selectedSheetIndex: 0 };
        $scope.sheetInfo = { selectedSheetName: '', selectedSheetIndex: 0 };
        $scope.balanceInputList = [];
        $scope.toInputList = [];
        $scope.importEnum = { Import: 0, CoverImport: 1, AddImport: 2, ApiImport: 2 }; //导入方式
        $scope.selectedPeriod = null;
        $scope.showTotalSecondRow = false;
        $scope.maxTitleLength = constant.maxButtonTitleLength;

        $scope.companyList = [];
        $scope.checkedCompanyList = [];
        $scope.checkedCompanyCodeList = [];
        $scope.checkedCompanyTypeList = "";

        $scope.fileTypeList = constant.fileTypeList;
        $scope.checkedFileList = [];
        $scope.checkedFileCodeList = [];
        $scope.checkedFileTypeList = "";

        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth();
        $scope.selectedDate = new Date(vatSessionService.year, vatSessionService.month - 1, 1);
        $scope.startDate = new Date(year - 20, 1, 1);
        $scope.endDate = new Date(year + 20, 1, 1);
        $scope.viewMode = 1;
        $scope.dateFormat = $translate.instant('dateFormat4YearMonth');

        $scope.importExcelFile = null;
        $scope.UploadPeriodTime = null;



        //写日志
        var logDto = {
            ID: '',
            OperationName: '',
            ModuleID: $scope.moduleid,
            OperationObject: $translate.instant('redLetterInformationTable'),
            OperationType: '',
            OperationContent: '',
            OriginalState: '',
            UpdateState: '',
            CreatorID: vatSessionService.logUser.ID,
            Comment: comment,
            IP: '',
            Period: $scope.period,
        };

        //初始化ack-pagination
        $scope.pagingOptions = {
            pageIndex: 1, //当前页码
            totalItems: 0, //总数据
            totalPages: 10, //总页数
            maxSize: 5, //分页数字的限制。
            pageSize: constant.page.pageSizeArrary[3], //每页多少条数据,100条
            pageSizeString: constant.page.pageSizeArrary[3].toString(),
            firstPage: $translate.instant('PagingFirstPage'),
            previousPage: $translate.instant('PagingPreviousPage'),
            nextPage: $translate.instant('PagingNextPage'),
            lastPage: $translate.instant('PagingLastPage'),
        };

        //初始化查询参数
        $scope.queryParams = {
            pageInfo: {
                totalCount: 0,
                pageIndex: 0,
                pageSize: 0,
                totalPage: 0,
            },
            periodId: $scope.period,
            serviceTypeId: $scope.serviceTypeId,
            projectId: $scope.projectID
        };

        //分页获取数据
        $scope.eventService = {
            refreshInvoiceDataGrid: function () {
                $log.debug("refreshInvoiceDataGrid");
            }
        };

        //导入事件
        var callFinancialApi = function () {
            if (!$scope.formParam || !$scope.formParam.orgIds || !$scope.formParam.dataTypes
                || !$scope.formParam.period) {
                SweetAlert.warning($translate.instant('PleaseSelectAtLeastOneItem'));
                return;
            }
            dataImportService.callExtractFinancialData($scope.formParam).success(function (data) {
                if (data) {
                    getFinancialDataStatus();
                }
            });
        };

        var getGridHeight = function () {
            if ($scope.isLoadComplete) {
                return { height: ($('.balance-ouput-grid-wrapper').height()) + "px" };
            }
            else {
                return { height: 0 + "px" };
            }
        };

        var loadExtractFinancialInfoDatagrid = function () {

            $scope.extractFinancialGridOptions = {
                bindingOptions: {
                    dataSource: 'extractFinancialGridSource'
                },
                showBorders: true,
                columns: [{
                    dataField: "id",
                    allowHeaderFiltering: false,
                    caption: $translate.instant('ExtractTaskId')
                }, {
                    dataField: "taxpayerIdNum",
                    width: '15%',
                    allowHeaderFiltering: false,
                    caption: $translate.instant('TaxpayerIdNum')
                }, {
                    dataField: "companyCode",
                    allowHeaderFiltering: false,
                    caption: $translate.instant('CompanyCode'),
                    width: '15%'
                }, {
                    dataField: "companyName",
                    allowHeaderFiltering: false,
                    width: '20%',
                    caption: $translate.instant('CompanyName')
                }, {
                    dataField: "fileType",
                    allowHeaderFiltering: false,
                    width: '15%',
                    caption: $translate.instant('ExtractFile')
                }, {
                    dataField: "periodYear",
                    allowHeaderFiltering: false,
                    width: '14%',
                    caption: $translate.instant('YearPeriod')
                },
                    /*{
                    dataField: "periodMonth",
                    allowHeaderFiltering: false,
                    width: '10%',
                    caption: $translate.instant('TMSPeriod')
                }, */
                    {
                    dataField: "periodMonth",
                    allowHeaderFiltering: false,
                    width: '8%',
                    caption: $translate.instant('Period')
                }, {
                    dataField: "recordSize",
                    allowHeaderFiltering: false,
                    width: '10%',
                    caption: $translate.instant('RecordSize')
                }, {
                    dataField: "errorMsg",
                    allowHeaderFiltering: false,
                    width: '20%',
                    caption: $translate.instant('Status')
                }, {
                        dataField: "operator",
                        allowHeaderFiltering: false,
                        width: '10%',
                        caption: $translate.instant('LogOperationUser')
                    }, {
                        dataField: "operateTime",
                        allowHeaderFiltering: false,
                        width: '10%',
                        caption: $translate.instant('LogOperationTime'),
                        calculateCellValue: function(data) {
                            return new Date(data.operateTime).formatDateTime('yyyy-MM-dd HH:mm:ss');
                        }
                    }
                ],
                onContentReady: function (e) {
                    $scope.extractFinancialInstance = e.component;
                    var totalCount = e.component.totalCount();
                    if (totalCount > 0) {
                        $scope.totalCount = totalCount;
                    }
                },
                loadPanel: {
                    enabled: false
                },
                selection: {
                    mode: "single"
                },
                grouping: {
                    autoExpandAll: false
                },
                allowColumnResizing: true,
                columnAutoWidth: true,
                showRowLines: true,
                showColumnLines: true,
                rowAlternationEnabled: true,  //单双行颜色
                noDataText: $translate.instant('NoDataText'),
                selectAllText: $translate.instant('SelectAll'),
                headerFilter: {
                    visible: false,
                    texts: {
                        cancel: $translate.instant('Cancel'),
                        ok: $translate.instant('Confirm'),
                        emptyValue: $translate.instant('Empty'),
                        selectAllText: $translate.instant('SelectAll')
                    }
                }
            };
            getFinancialDataStatus();
        };

        var getFinancialDataStatus = function () {
            vatImportService.displayImportLog($scope.pagingOptions,constant.importFileType.ExtractFinancialData).success(function (data) {
                if (data && data.list) {
                    $scope.extractFinancialGridSource = data.list;
                    $scope.pagingOptions.totalItems = data.pageInfo.totalCount;
                }else {
                    SweetAlert.error($translate.instant('SystemError'));
                }
            });
        };

        //日志
        var showOperateLogPop = function () {
            $scope.isShowLog = true;
        };


        var initPagingControl = function (totalItemsCount) {
            $scope.pagingOptions.totalItems = totalItemsCount;
        };


        // 检查用户机构权限
        var checkUserOrganizationPermissionList = function () {
            var list = [];
            var userManageTemp = constant.vatPermission.dataImport.balanceSheet;
            list.push(userManageTemp.importCode);
            $scope.hasImportPermission = false;
            $scope.$root.checkUserOrganizationPermissionList(list).success(function (data) {
                $scope.hasImportPermission = data[userManageTemp.importCode];
            });
        };


        //控制明细信息中删除权限
        var getUserPermission = function () {
            var list = [];
            var code = constant.vatPermission.dataImport.balanceSheet.importCode;
            list.push(code);

            $scope.$root.checkUserOrganizationPermissionList(list).success(function (data) {
                $scope.hasEditPermission = data[code];
            });
        };

        var setButtonWrapStyle = function () {
            if ($scope.fileName) {
                return { width: "100%" };
            }
        };

        var setGridStyle = function () {
            if ($scope.showTotalSecondRow) {
                return { 'margin-top': '60px' }
            }
            else {
                return { 'margin-top': '55px' }
            }
        };


        var initCompanyList = function () {
            orgService.getOrgListByUserId().success(function (data) {
                if (data) {
                    $scope.companyList = data;
                }
            });
        };


        var initParam = function () {
            $scope.callFinancialApi = callFinancialApi;
            $scope.initPagingControl = initPagingControl;
            $scope.setButtonWrapStyle = setButtonWrapStyle;
            $scope.getGridHeight = getGridHeight;
            $scope.showOperateLogPop = showOperateLogPop;
            $scope.setGridStyle = setGridStyle;
        };

        //刷新页面
        $scope.refreshConfigGrid = function () {
            getFinancialDataStatus();
        };

        //开始
        (function initialize() {
            $log.debug('ImportTBController.ctor()...');
            $scope.formParam = {

            };
            //机构下拉设置
            $scope.selectOrgOptions = {
                displayExpr: 'name',
                valueExpr: 'id',
                width: '95%',
                bindingOptions: {
                    value: 'formParam.orgIds',
                    dataSource: 'companyList'
                },
                height: '30px',
                placeholder: $translate.instant('PleaseSelected'),
                showClearButton: true,
                searchEnabled: true,
                noDataText: $translate.instant('RevenueNoOrgData'),
                showSelectionControls: true
            };

            //类型
            $scope.selectTypeOptions = {
                displayExpr: 'type',
                valueExpr: 'code',
                width: '95%',
                bindingOptions: {
                    value: 'formParam.dataTypes',
                    dataSource: 'fileTypeList'
                },
                height: '30px',
                placeholder: $translate.instant('PleaseSelected'),
                showClearButton: true,
                searchEnabled: true,
                noDataText: $translate.instant('NoData'),
                showSelectionControls: true
            };

            //日期
            $scope.dateBoxStart = {
                width: '100%',
                acceptCustomValue: false,
                openOnFieldClick: true,
                displayFormat: 'yyyy-MM',
                maxZoomLevel: "year",
                dateSerializationFormat: 'yyyy-MM',
                bindingOptions: {
                    value: 'formParam.period'
                }
            };
            initParam();
            checkUserOrganizationPermissionList();
            getUserPermission();
            initCompanyList();
            loadExtractFinancialInfoDatagrid();

            $timeout(function () {
                $scope.isLoadComplete = true;
            }, 500);
        })();
    }
]);