Commit 9aa94e533196c619ed2ee6e241d3b9e5fb0352a9

Authored by rogerio.costa
2 parents cbf56551 bc85aa37
Exists in master

Merge branch 'desenvolvimento' of http://ferramentasgo.centralit.com.br:8080/scm…

…/git/cit-grp-ecm into desenvolvimento
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoListUnidadeController.js 0 → 100644
... ... @@ -0,0 +1,483 @@
  1 +'use strict';
  2 +
  3 +citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', 'workflowFilterCriteriaService', 'appService', 'environmentService', 'FormBuilderRepository', 'FlowRepository', 'BusinessProcessRepository', 'RuntimeManagerRepository', 'DomainRepository', '$compile', '$translate', '$modal', '$injector', '$parse', '$rootScope', '$timeout', 'BusinessProcessCategoryRepository','ProcessoRepository',
  4 + function GerenciarProcessoListUnidadeController($scope, workflowFilterCriteriaService, appService, environmentService, FormBuilderRepository, FlowRepository, BusinessProcessRepository, RuntimeManagerRepository, DomainRepository, $compile, $translate, $modal, $injector, $parse, $rootScope, $timeout, BusinessProcessCategoryRepository, ProcessoRepository) {
  5 + $scope.compile = $compile;
  6 + $scope.$showAdvancedFilters = false;
  7 + $scope.workflowFilterCriteriaService = workflowFilterCriteriaService;
  8 +
  9 +
  10 + $scope.signalEventInput = new SignalEventInput("", "", "", "", "", 0);
  11 + $scope.totalPagesFluxo = 10;
  12 + $scope.totalItensFluxo = 0;
  13 +
  14 + $scope.totalPages = 10;
  15 + $scope.totalItens = 0;
  16 + $scope.limit = 10;
  17 + $scope.processos = [];
  18 + $scope.businessProcess = null;
  19 + $scope.indexProcessoNegocio = null;
  20 +
  21 + $scope.idPainelItem = 0;
  22 +
  23 + $scope.tabAtual = 0;
  24 +
  25 + $scope.tabs = [ {active: true}
  26 + ,{active: false}
  27 + ];
  28 +
  29 + // default criteria that will be sent to the server to request data from WorkItem
  30 + $scope.filterCriteria = {
  31 + start : 1,
  32 + sort : 'workItem.id',
  33 + limit : 10,
  34 + deadline : 1,
  35 + processDeadline : 1,
  36 + timeManagementStatus : "",
  37 + fields : [ 'workItem.id'],
  38 + filters : [{type: 'numeric', field: 'workItem.id'}
  39 + , {type: 'string', field: 'workItem.flowElement.name'}
  40 + , {type: 'numeric', field: 'workItem.processInstance.id'}
  41 + , {type: 'string', field: 'workItem.processInstance.businessProcess.description'}
  42 + , {type: 'string', field: 'workItem.processInstance.flowStatus.name'}]
  43 + };
  44 +
  45 + $scope.fetchBusinessProcess = function() {
  46 + $scope.setLoading(true);
  47 + $scope.categorias = [];
  48 + BusinessProcessCategoryRepository.findParents().then(function(result) {
  49 + for(var i = 0; i < result.length; i++) {
  50 + result[i].originalElement.sinalPositivo = result[i].originalElement.hasChildren || result[i].originalElement.hasProcesses;
  51 + $scope.categorias.push(result[i].originalElement);
  52 + }
  53 + $scope.setLoading(false);
  54 + }, function() {
  55 + $scope.setLoading(false);
  56 + });
  57 + };
  58 +
  59 + $scope.filterProcessos = {
  60 + start : 1,
  61 + dir : 'asc',
  62 + sort : 'name',
  63 + limit : 999999,
  64 + fields: ['id', 'category.name', 'description', 'flow.description'],
  65 + filters : [{type: 'numeric', field: 'category.id'}, {type: 'string', field: 'category.name'}, {type: 'string', field: 'description'}, {type: 'string', field: 'flow.description'}]
  66 + };
  67 +
  68 + // Will be called when filtering the grid, will reset the page number to one
  69 + $scope.filterResult = function() {
  70 +
  71 + //Timeout adicionado para que os filtros de pesquisa funcionem
  72 + $timeout(function(){
  73 + $scope.filterCriteria.start = 1;
  74 + $scope.fetchResult().then(function() {
  75 + // The request fires correctly but sometimes the ui doesn't update,
  76 + // that's a fix
  77 + $scope.filterCriteria.start = 1;
  78 + });
  79 +
  80 + });
  81 + };
  82 +
  83 + // call back function that we passed to our custom directive sortBy, will be
  84 + // called when clicking on any field to sort
  85 + $scope.onSort = function(sortedBy, sortDir) {
  86 + $scope.filterCriteria.dir = sortDir;
  87 + $scope.filterCriteria.sort = sortedBy;
  88 + $scope.filterCriteria.start = 1;
  89 + $scope.fetchResult().then(function() {
  90 + // The request fires correctly but sometimes the ui doesn't update,
  91 + // that's a fix
  92 + $scope.filterCriteria.start = 1;
  93 + });
  94 + };
  95 +
  96 + // RECUPERA LISTA DE TAREFAS E SETA RESULTADO NA GRID
  97 + $scope.fetchResult = function(page) {
  98 + $scope.setLoading(true);
  99 +
  100 + return BusinessProcessRepository.tasksByParam($scope.filterCriteria).then(function(result) {
  101 + var dataAtual = new Date();
  102 +
  103 + $scope.assignments = result.originalElement.objects;
  104 + angular.forEach($scope.assignments, function (assignment) {
  105 + assignment.classePrazoProcesso = new Date(assignment.processInstance.estimatedEndTimestamp) >= dataAtual ? 'green' : 'red';
  106 + assignment.classePrazoTarefa = new Date(assignment.estimatedEndTimestamp) >= dataAtual ? 'green' : 'red';
  107 +
  108 + ProcessoRepository.getProcessoByIdProcessInstance(assignment.processInstance.id).then(function(result) {
  109 + if( result){
  110 + assignment.processo = result.originalElement;
  111 + }
  112 + });
  113 +
  114 + });
  115 +
  116 + $scope.totalPages = result.originalElement.totalPages;
  117 + $scope.totalItens = result.originalElement.totalItens;
  118 + $scope.setLoading(false);
  119 + }, function() {
  120 + $scope.totalPages = 0;
  121 + $scope.totalItens = 0;
  122 + $scope.setLoading(false);
  123 + });
  124 + };
  125 +
  126 + $scope.filterSigad = function(){
  127 +
  128 + if($scope.processoSigad && $scope.processoSigad != ''){
  129 + ProcessoRepository.getProcessoByProtocolo($scope.processoSigad).then(function(result) {
  130 + if(result){
  131 + $scope.filterCriteria.filters[2].value = result.originalElement.idProcessInstance;
  132 + $timeout(function(){
  133 + $scope.filterResult();
  134 + });
  135 + }else{
  136 + $scope.filterCriteria.filters[2].value = null;
  137 + $scope.filterResult();
  138 + }
  139 + });
  140 + }else{
  141 + $scope.filterCriteria.filters[2].value = null;
  142 + $scope.filterResult();
  143 + }
  144 + };
  145 +
  146 + $scope.filterSigadProtocolo = function(){
  147 +
  148 + if($scope.sigadProtocolo && $scope.sigadProtocolo != ''){
  149 +
  150 + ProcessoRepository.getProcessoByProtocolo($scope.sigadProtocolo).then(function(result) {
  151 + if(result){
  152 + $scope.filterCriteria.filters[2].value = result.originalElement.idProcessInstance;
  153 + $timeout(function(){
  154 + $scope.filterResult();
  155 + });
  156 + }else{
  157 + $scope.filterCriteria.filters[2].value = null;
  158 + $scope.filterResult();
  159 + }
  160 +
  161 + });
  162 +
  163 + }else{
  164 + $scope.filterCriteria.filters[2].value = null;
  165 + $scope.filterResult();
  166 + }
  167 + };
  168 +
  169 + $scope.recuperarPermissoes = function(assignment){
  170 + assignment.workItem = {};
  171 + BusinessProcessRepository.getPermissions({id: assignment.id}).then(function(result) {
  172 + assignment.workItem = result.originalElement;
  173 + if (!assignment.workItem.execute && !assignment.workItem.delegate && !assignment.workItem.suspend && !assignment.workItem.restart && !assignment.workItem.visualize) {
  174 + $scope.fetchResult();
  175 + }
  176 + });
  177 + };
  178 +
  179 + // ADICIONA CHECK NA VERSAOFLUXO SELECIONADA
  180 +/* $scope.checkProcessoNegocio = function (indexProcessoNegocio, processoNegocio) {
  181 + $scope.indexProcessoNegocio = indexProcessoNegocio;
  182 + $scope.businessProcess = processoNegocio;
  183 + };*/
  184 +
  185 +/* $scope.iniciarProcessoNegocio = function(processo){
  186 + BusinessProcessRepository.initialize(processo).then(function(result) {
  187 + $scope.businessProcess = result.originalElement.businessProcess;
  188 +
  189 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/startBusinessProcess.html';
  190 + if ($scope.businessProcess.target == 'FLOW') {
  191 + $scope.flowVersion = result.originalElement.flowVersion;
  192 + if ($scope.flowVersion.userInterface && $scope.flowVersion.userInterface.executeCustomPage) {
  193 + pagina = $scope.flowVersion.userInterface.URLCustomPage;
  194 + $scope.abrirPaginaProcesso(pagina);
  195 + }else if ($scope.flowVersion.userInterface && $scope.flowVersion.userInterface.resource && $scope.flowVersion.userInterface.resourceName) {
  196 + FormBuilderRepository.getByName($scope.flowVersion.userInterface.resourceName).then(function(result) {
  197 + pagina = '/cit-esi-web/forms/'+result.originalElement.path+'/'+result.originalElement.resource.name+"_process.html";
  198 + $scope.abrirPaginaProcesso(pagina);
  199 + });
  200 + }else{
  201 + $scope.abrirPaginaProcesso(pagina);
  202 + }
  203 + }else if ($scope.businessProcess.target == 'FORM') {
  204 + FormBuilderRepository.getByName($scope.businessProcess.form.name).then(function(result) {
  205 + pagina = '/cit-esi-web/forms/'+result.originalElement.path+'/'+result.originalElement.resource.name+"_process.html";
  206 + $scope.abrirPaginaProcesso(pagina);
  207 + });
  208 + }else if ($scope.businessProcess.target == 'PAGE') {
  209 + pagina = '/cit-esi-web/pages/'+$scope.businessProcess.pageVersion.fileName;
  210 + $scope.abrirPaginaProcesso(pagina);
  211 + }else if ($scope.businessProcess.target == 'URL') {
  212 + pagina = $scope.businessProcess.url;
  213 + $scope.abrirPaginaProcesso(pagina);
  214 + }else{
  215 + $scope.abrirPaginaProcesso(pagina);
  216 + }
  217 + });
  218 + };*/
  219 +
  220 +/* $scope.abrirPaginaProcesso = function(pagina) {
  221 + if (appService.existsWorkspace(pagina)) {
  222 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_PROCESSO'));
  223 + return ;
  224 + }
  225 +
  226 + $rootScope.businessProcess = $scope.businessProcess;
  227 + $rootScope.controllerScope = $scope;
  228 + $rootScope.listaBreadcrumb = [];
  229 +
  230 + $scope.addNewWorkspace($rootScope.businessProcess.description, pagina, true, 'mod-orange', $rootScope.businessProcess);
  231 + };*/
  232 +
  233 + $scope.executarTarefa = function(assignment){
  234 + $scope.task = assignment.workItem;
  235 +
  236 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTask.html';
  237 + if ($scope.task.flowElement.userInterface && $scope.task.flowElement.userInterface.executeCustomPage) {
  238 + pagina = $scope.task.flowElement.userInterface.URLCustomPage;
  239 + $scope.abrirPaginaTarefa(pagina);
  240 + }else if ($scope.task.flowElement.userInterface && $scope.task.flowElement.userInterface.resource && $scope.task.flowElement.userInterface.resourceName) {
  241 + FormBuilderRepository.getByName($scope.task.flowElement.userInterface.resourceName).then(function(result) {
  242 + pagina = '/cit-esi-web/forms/'+result.originalElement.path+'/'+result.originalElement.resource.name+"_task.html";
  243 + $scope.abrirPaginaTarefa(pagina);
  244 + });
  245 + }else{
  246 + $scope.abrirPaginaTarefa(pagina);
  247 + }
  248 + };
  249 +
  250 + $scope.abrirPaginaTarefa = function(pagina){
  251 + if (appService.existsWorkspace(pagina)) {
  252 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA'));
  253 + return ;
  254 + }
  255 +
  256 + $scope.processInstance = $scope.task.processInstance;
  257 + $scope.processInstance.collapsed = true;
  258 + $scope.processInstance.collapsedError = true;
  259 +
  260 + $rootScope.task = $scope.task;
  261 + $rootScope.processInstance = $scope.processInstance;
  262 + $rootScope.controllerScope = $scope;
  263 +
  264 + var nome = $scope.task.flowElement.description;
  265 + if (!nome || nome == '')
  266 + nome = $scope.task.flowElement.name;
  267 +
  268 + $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.EXECUTAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-orange', $scope.task);
  269 + };
  270 +
  271 + $scope.delegarTarefa = function(assignment){
  272 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTaskDelegation.html';
  273 +
  274 + if (appService.existsWorkspace(pagina)) {
  275 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_DELEGACAO'));
  276 + return ;
  277 + }
  278 +
  279 + $scope.task = assignment.workItem;
  280 +
  281 + $scope.processInstance = $scope.task.processInstance;
  282 + $scope.processInstance.collapsed = true;
  283 + $scope.processInstance.collapsedError = true;
  284 +
  285 + $rootScope.task = $scope.task;
  286 + $rootScope.processInstance = $scope.processInstance;
  287 + $rootScope.controllerScope = $scope;
  288 +
  289 + var nome = $scope.task.flowElement.description;
  290 + if (!nome || nome == '')
  291 + nome = $scope.task.flowElement.name;
  292 +
  293 + $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.DELEGAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-orange', $scope.task);
  294 + };
  295 +
  296 + $scope.capturarTarefa = function(assignment){
  297 + $scope.$openModalConfirm({
  298 + message: $translate.instant('ESI.MSG.CONFIRMA_CAPTURA'),
  299 + callback: function () {
  300 + $scope.$modalConfirmInstance.dismiss('cancel');
  301 +
  302 + $scope.setLoading(true,$translate.instant('ESI.CAPTURANDO_TAREFA')+" "+assignment.workItem.flowElement.description);
  303 +
  304 + var param = new RuntimeEnvironmentInput("",[]);
  305 + param.workItemId = assignment.workItem.id;
  306 +
  307 + RuntimeManagerRepository.captureTask(param).then(function(result) {
  308 + $scope.setLoading(false);
  309 + $scope.fetchResult();
  310 + $scope.showAlert("success","ESI.MSG.TAREFA_CAPTURADA","");
  311 + });
  312 + }
  313 + });
  314 +
  315 + };
  316 +
  317 + $scope.suspenderProcesso = function(assignment){
  318 + $scope.$openModalConfirm({
  319 + message: $translate.instant('ESI.MSG.CONFIRMA_SUSPENSAO'),
  320 + callback: function () {
  321 + $scope.$modalConfirmInstance.dismiss('cancel');
  322 +
  323 + $scope.setLoading(true);
  324 + RuntimeManagerRepository.suspendProcessInstance(assignment.workItem.processInstance.id).then(function(result) {
  325 + $scope.setLoading(false);
  326 + $scope.fetchResult();
  327 + $scope.showAlert("success","ESI.MSG.PROCESSO_SUSPENSO","");
  328 + });
  329 + }
  330 + });
  331 + };
  332 +
  333 + $scope.reativarProcesso = function(assignment){
  334 + $scope.$openModalConfirm({
  335 + message: $translate.instant('ESI.MSG.CONFIRMA_REATIVACAO'),
  336 + callback: function () {
  337 + $scope.$modalConfirmInstance.dismiss('cancel');
  338 +
  339 + $scope.setLoading(true);
  340 + RuntimeManagerRepository.restartProcessInstance(assignment.workItem.processInstance.id).then(function(result) {
  341 + $scope.setLoading(false);
  342 + $scope.fetchResult();
  343 + $scope.showAlert("success","ESI.MSG.PROCESSO_REATIVADO","");
  344 + });
  345 + }
  346 + });
  347 + };
  348 +
  349 + $scope.visualizarFluxo = function(assignment){
  350 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/visualizacaoEsi.html';
  351 +
  352 + if (appService.existsWorkspace(pagina)) {
  353 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_VISUALIZACAO'));
  354 + return ;
  355 + }
  356 +
  357 + $scope.tarefa = assignment.workItem;
  358 + $scope.instancia = $scope.tarefa.processInstance;
  359 + $rootScope.tarefa = $scope.tarefa;
  360 + $rootScope.instancia = $scope.instancia;
  361 + $rootScope.controllerScope = $scope;
  362 + $scope.addNewWorkspace(assignment.workItem.processInstance.businessProcess.description, pagina, true, 'mod-orange', $scope.tarefa);
  363 + };
  364 +
  365 + $scope.consultarHistorico = function(assignment){
  366 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/consultaLog.html';
  367 +
  368 + if (appService.existsWorkspace(pagina)) {
  369 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_HISTORICO'));
  370 + return ;
  371 + }
  372 +
  373 + $scope.processInstance = assignment.workItem.processInstance;
  374 + $rootScope.processInstance = $scope.processInstance;
  375 + $rootScope.controllerScope = $scope;
  376 +
  377 + $scope.processInstance.collapsed = true;
  378 + $scope.processInstance.collapsedError = true;
  379 + $scope.processInstance.instances = [];
  380 +
  381 + $scope.addNewWorkspace(assignment.workItem.processInstance.businessProcess.description, pagina, true, 'mod-orange', $scope.processInstance);
  382 + };
  383 +
  384 + $scope.retrieveAditionalHtml = function(assignment) {
  385 + assignment.$show = !assignment.$show;
  386 + if (!assignment.$show)
  387 + return;
  388 +
  389 + if (!assignment.workItem) {
  390 + BusinessProcessRepository.getPermissions({id: assignment.id}).then(function(result) {
  391 + assignment.workItem = result.originalElement;
  392 + $scope.showAditionalHtml(assignment.workItem);
  393 + });
  394 + }else{
  395 + $scope.showAditionalHtml(assignment.workItem);
  396 + }
  397 + };
  398 +
  399 + $scope.showAditionalHtml = function(workItem) {
  400 + var id = "divHtmlAdicional_" + $scope.idPainelItem + "_" + workItem.id;
  401 +
  402 + var el = document.getElementById(id);
  403 + if (!el || el.innerHTML != '')
  404 + return;
  405 +
  406 + var element = angular.element("#"+id);
  407 + environmentService.retrieveAditionalHtml($scope, workItem, element, $injector);
  408 + el.focus();
  409 + };
  410 +
  411 + $scope.signalEvent = function() {
  412 + $scope.setLoading(true);
  413 + RuntimeManagerRepository.signalEvent($scope.signalEventInput).then(function(result) {
  414 + $scope.setLoading(false);
  415 + });
  416 + };
  417 +
  418 + $scope.getAplicacaoFluxo = function(processoNegocio) {
  419 + return DomainRepository.getEnumDescription(processoNegocio['flow.flowApplication'], $scope.aplicacaoFluxo);
  420 + };
  421 +
  422 + $scope.getTimeManagementStatus = function(processInstance) {
  423 + if (processInstance && processInstance.timeManagementStatus) {
  424 + processInstance.backgroundColorTimeStatus = processInstance.timeManagementStatus === 'SUSPENDED' ? "red" : processInstance.timeManagementStatus === 'NOT_STARTED' ? "yellow-dark" : "green";
  425 + processInstance.textColorTimeStatus = processInstance.timeManagementStatus === 'NOT_STARTED' ? "black" : "white";
  426 + return DomainRepository.getEnumDescription(processInstance.timeManagementStatus, $scope.timeManagementStatus);
  427 + }else{
  428 + return "";
  429 + }
  430 + };
  431 +
  432 +/* $scope.mostrarFilhos = function(categoriaSelecionada){
  433 +
  434 + // Valida se a estrutura possui filho
  435 + if(categoriaSelecionada.sinalPositivo) {
  436 + categoriaSelecionada.sinalPositivo = !categoriaSelecionada.sinalPositivo;
  437 +
  438 + $scope.setLoadingPesquisa(true);
  439 +
  440 + categoriaSelecionada.subCategories = [];
  441 +
  442 + var categoria = categoriaSelecionada.originalElement ? categoriaSelecionada.originalElement : categoriaSelecionada;
  443 +
  444 + $scope.scrollToCadastro('#categoria_'+categoria.id);
  445 +
  446 + $scope.recuperaProcessos(categoria);
  447 +
  448 + // busca os filhos da estrutura selecionada
  449 + BusinessProcessCategoryRepository.findChildrens(categoria.id).then(function(result) {
  450 + // Percorre as estruturas filhas setando a propriedade do sinal positivo/negativo e adiciona o filho na lista de filhos da estrutura selecionada
  451 + angular.forEach(result, function(categoriaFilha){
  452 + categoriaFilha.originalElement.sinalPositivo = categoriaFilha.originalElement.hasChildren || categoriaFilha.originalElement.hasProcesses;
  453 + categoriaSelecionada.subCategories.push(categoriaFilha.originalElement);
  454 + categoriaFilha.originalElement.subCategories = [];
  455 + //$scope.recuperaProcessos(categoriaFilha);
  456 + });
  457 + $scope.setLoadingPesquisa(false);
  458 + });
  459 +
  460 + } else {
  461 +
  462 + categoriaSelecionada.sinalPositivo = !categoriaSelecionada.sinalPositivo;
  463 +
  464 + categoriaSelecionada.subCategories = [];
  465 +
  466 + categoriaSelecionada.processos = [];
  467 + }
  468 +
  469 + };*/
  470 +
  471 + $scope.recuperaProcessos = function(categoria) {
  472 + $scope.setLoadingPesquisa(true);
  473 + categoria.processos = [];
  474 + $scope.filterProcessos.filters[0].value = categoria.id;
  475 + BusinessProcessRepository.getProcessesForStart($scope.usuarioLogado.username, $scope.filterProcessos).then(function(result) {
  476 + categoria.processos = result.originalElement.objects;
  477 + });
  478 + };
  479 +
  480 + $scope.fetchResult();
  481 +}]);
  482 +
  483 +
... ...