Introdução
Configuração
Para a configuração da Folha Tarefa / Associação Tarefa nos clientes deve-se criar as tabelas padrão, configurar o menu de Folha Tarefa e o de Atividade x Méticas, e configurar o link para a tela Atividade X Métrica, para que a funcionalidade seja utilizada da forma correta e sem problemas. Estes itens estão descritos em detalhes nos tópicos abaixo:
Criação das Tabelas
[!NOTE] OBS: As configurações descritas no código segue o modelo padrão de nomenclatura de tabelas, mas existem bases onde as tabelas tem o prefixo MO na nomenclatura, para que funcione é necessário configurar os nomes das tabelas na tabela nfs_core_par_parametros para subtituir na configuração original como no exemplo abaixo:
NOME CONTEUDO
-----------------------------------------------------------------
ASSOCIATION_TASK_OPER | MO_OPER
-----------------------------------------------------------------
ASSOCIATION_TASK_OPER_GRUPO | MO_OPER_GRUPO
-----------------------------------------------------------------
ASSOCIATION_TASK_OPER_GRUPO_METRICA | MO_OPER_GRUPO_METRICA
-----------------------------------------------------------------
ASSOCIATION_TASK_OPER_OPER_GRUPO | MO_OPER_MO_OPER_GRUPO
1. app_oper
CREATE TABLE `app_oper` (
`SEQ_DB` bigint unsigned NOT NULL AUTO_INCREMENT,
`EMPRESA` int NOT NULL,
`FILIAL` int NOT NULL,
`LOCAL` int NOT NULL,
`INS_DH` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`INS_USUARIO_SEQ_DB` bigint unsigned NOT NULL,
`UPD_DH` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`UPD_USUARIO_SEQ_DB` bigint unsigned DEFAULT NULL,
`SOURCE` varchar(50) DEFAULT NULL,
`ATIVO` tinyint(1) DEFAULT '1',
`DELETED` tinyint(1) DEFAULT '0',
`RO` tinyint(1) DEFAULT '0',
`ID` int unsigned NOT NULL,
`CODIGO` varchar(50) DEFAULT NULL,
`DESCRICAO` varchar(250) DEFAULT NULL,
`UNIDADE_MEDIDA_SEQ_DB` bigint unsigned DEFAULT NULL,
`QIG_DISPLAY` tinyint unsigned DEFAULT '1',
`REVISAO_DH` timestamp NULL DEFAULT NULL,
`MO_APT_FKL` bigint unsigned DEFAULT NULL,
`MO_APT_FKL_DH` timestamp NULL DEFAULT NULL,
`MO_APT_PRODUCAO_FKL` bigint unsigned DEFAULT NULL,
`MO_APT_PRODUCAO_FKL_DH` timestamp NULL DEFAULT NULL,
`INDICE` decimal(11,2) DEFAULT NULL,
PRIMARY KEY (`EMPRESA`,`FILIAL`,`LOCAL`,`ID`),
UNIQUE KEY `SEQ_DB_UNIQUE` (`SEQ_DB`),
KEY `fk_oper_unidade_medida` (`UNIDADE_MEDIDA_SEQ_DB`),
CONSTRAINT `app_oper_ibfk_1` FOREIGN KEY (`UNIDADE_MEDIDA_SEQ_DB`) REFERENCES `app_unidade_medida` (`SEQ_DB`)
) ENGINE=InnoDB AUTO_INCREMENT=22439 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT;
2. app_oper_grupo
CREATE TABLE `app_oper_grupo` (
`SEQ_DB` bigint unsigned NOT NULL AUTO_INCREMENT,
`EMPRESA` int NOT NULL,
`FILIAL` int NOT NULL,
`LOCAL` int NOT NULL,
`INS_DH` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`INS_USUARIO_SEQ_DB` bigint unsigned NOT NULL,
`UPD_DH` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`UPD_USUARIO_SEQ_DB` bigint unsigned DEFAULT NULL,
`SOURCE` varchar(50) DEFAULT NULL,
`ATIVO` tinyint(1) DEFAULT '1',
`DELETED` tinyint(1) DEFAULT '0',
`RO` tinyint(1) DEFAULT '0',
`ID` int unsigned NOT NULL,
`CODIGO` varchar(100) DEFAULT NULL,
`DESCRICAO` varchar(250) DEFAULT NULL,
`TIPO` char(1) DEFAULT '',
`OPER_GRUPO_SEQ_DB` bigint unsigned DEFAULT NULL,
`REVISAO_DH` timestamp NULL DEFAULT NULL,
`ETAPA_SEQ_DB` bigint unsigned DEFAULT NULL,
`MO_APT_FKL` bigint unsigned DEFAULT NULL,
`MO_APT_FKL_DH` timestamp NULL DEFAULT NULL,
`MO_APT_PRODUCAO_FKL` bigint unsigned DEFAULT NULL,
`MO_APT_PRODUCAO_FKL_DH` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`EMPRESA`,`FILIAL`,`LOCAL`,`ID`),
UNIQUE KEY `SEQ_DB_UNIQUE` (`SEQ_DB`),
KEY `FK_app_oper_grupo_app_oper_grupo` (`OPER_GRUPO_SEQ_DB`),
KEY `fk_oper_grupo_etapa` (`ETAPA_SEQ_DB`),
CONSTRAINT `FK_app_oper_grupo_app_oper_grupo` FOREIGN KEY (`OPER_GRUPO_SEQ_DB`) REFERENCES `app_oper_grupo` (`SEQ_DB`) ON DELETE RESTRICT,
CONSTRAINT `fk_oper_grupo_etapa` FOREIGN KEY (`ETAPA_SEQ_DB`) REFERENCES `app_etapa` (`SEQ_DB`) ON DELETE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=4865 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
3. app_oper_grupo_metrica
CREATE TABLE `app_oper_grupo_metrica` (
`SEQ_DB` bigint unsigned NOT NULL AUTO_INCREMENT,
`EMPRESA` int NOT NULL,
`FILIAL` int NOT NULL,
`LOCAL` int NOT NULL,
`INS_DH` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`INS_USUARIO_SEQ_DB` bigint unsigned NOT NULL,
`UPD_DH` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`UPD_USUARIO_SEQ_DB` bigint unsigned DEFAULT NULL,
`SOURCE` varchar(50) DEFAULT NULL,
`ATIVO` tinyint(1) DEFAULT '1',
`DELETED` tinyint(1) DEFAULT '0',
`RO` tinyint(1) DEFAULT '0',
`ID` int unsigned NOT NULL,
`OPER_SEQ_DB` bigint unsigned DEFAULT NULL,
`OPER_GRUPO_SEQ_DB` bigint unsigned DEFAULT NULL,
`FOLHA_TAREFA_SEQ_DB` bigint unsigned DEFAULT NULL,
`METRICA1` decimal(10,2) DEFAULT NULL,
`METRICA2` int DEFAULT NULL,
PRIMARY KEY (`EMPRESA`,`FILIAL`,`LOCAL`,`ID`),
UNIQUE KEY `SEQ_DB_UNIQUE` (`SEQ_DB`),
KEY `fk_oper_grupo_metrica_folha_tarefa` (`FOLHA_TAREFA_SEQ_DB`),
KEY `fk_oper_grupo_metrica_oper` (`OPER_SEQ_DB`),
KEY `fk_oper_grupo_metrica_oper_grupo` (`OPER_GRUPO_SEQ_DB`),
CONSTRAINT `fk_oper_grupo_metrica_folha_tarefa` FOREIGN KEY (`FOLHA_TAREFA_SEQ_DB`) REFERENCES `app_folha_tarefa` (`SEQ_DB`),
CONSTRAINT `fk_oper_grupo_metrica_oper` FOREIGN KEY (`OPER_SEQ_DB`) REFERENCES `app_oper` (`SEQ_DB`),
CONSTRAINT `fk_oper_grupo_metrica_oper_grupo` FOREIGN KEY (`OPER_GRUPO_SEQ_DB`) REFERENCES `app_oper_grupo` (`SEQ_DB`)
) ENGINE=InnoDB AUTO_INCREMENT=467 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
4. app_oper_n_oper_grupo
CREATE TABLE `app_oper_n_oper_grupo` (
`SEQ_DB` bigint unsigned NOT NULL AUTO_INCREMENT,
`EMPRESA` int NOT NULL,
`FILIAL` int NOT NULL,
`LOCAL` int NOT NULL,
`INS_DH` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`INS_USUARIO_SEQ_DB` bigint unsigned NOT NULL,
`UPD_DH` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`UPD_USUARIO_SEQ_DB` bigint unsigned DEFAULT NULL,
`SOURCE` varchar(50) DEFAULT NULL,
`ATIVO` tinyint(1) DEFAULT '1',
`DELETED` tinyint(1) DEFAULT '0',
`RO` tinyint(1) DEFAULT '0',
`ID` int unsigned NOT NULL,
`OPER_GRUPO_SEQ_DB` bigint unsigned DEFAULT NULL,
`OPER_SEQ_DB` bigint unsigned DEFAULT NULL,
`DESCRICAO` varchar(250) DEFAULT NULL,
`REVISAO_DH` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`EMPRESA`,`FILIAL`,`LOCAL`,`ID`),
UNIQUE KEY `SEQ_DB_UNIQUE` (`SEQ_DB`),
KEY `FK_app_oper_n_oper_grupo_app_oper_grupo` (`OPER_GRUPO_SEQ_DB`),
KEY `FK_app_oper_n_oper_grupo_app_oper` (`OPER_SEQ_DB`),
CONSTRAINT `FK_app_oper_n_oper_grupo_app_oper` FOREIGN KEY (`OPER_SEQ_DB`) REFERENCES `app_oper` (`SEQ_DB`),
CONSTRAINT `FK_app_oper_n_oper_grupo_app_oper_grupo` FOREIGN KEY (`OPER_GRUPO_SEQ_DB`) REFERENCES `app_oper_grupo` (`SEQ_DB`)
) ENGINE=InnoDB AUTO_INCREMENT=12044 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
IMPORTANTE! Esse modelo de tabelas é o padrão, não podendo ser alterado, pois esta funcionalidade ainda não é customizável. {.is-danger}
Configuração dos menus Folha Tarefa e Atividade x Métricas
A configuração dos menus é feita na tabela nfs_core_menu, o exemplo abaixo é referente ao que foi cadastrado na base Egenko:
OBS:Não deve ser copiado e executado, pois em outras bases os campos podem não ser correspondentes fazendo com que não funcione como o esperado, este é apenas um exemplo.
INSERT INTO {{minha base}}.nfs_core_menu (EMPRESA,FILIAL,`LOCAL`,DESCRICAO,`TYPE`,ATIVO,FATHER,MENUORDER,URL,`FILTER`,ICON) VALUES
(9999,9999,9999,'Folha Tarefa','CRUD',1,3,5,NULL,'{"allowed":[
"FOLHA_TAREFA",
"OPER_GRUPO_METRICA"
]
}','fa fa-users'),
(9999,9999,9999,'Folha Tarefa','LINK',1,500,NULL,'reports/parte_diaria/filters',NULL,'fa fa-file-text-o'),
(9999,9999,9999,'Folha Tarefa','CRUD',1,3,5,NULL,'{"allowed":[
"FOLHA_TAREFA"
]
}','fa fa-users'),
(9999,9999,9999,'Atividades','CRUD',1,3,4,NULL,'{"allowed":[
"OPER",
"UNIDADE_MEDIDA",
"OPER_GRUPO",
"OPER_OPER_GRUPO",
"ETAPA"
]}',NULL);
Configuração do Link Atividade x Métricas
Para configurar o link Atividade x Métrica deve-se inserir na tabela nfs_core_ds_tabela_campo a configuração abaixo:
INSERT INTO {{minha base}}.nfs_core_ds_tabela_campo (TABELA_NOME,NOME,SEQ,SYS,SEND_XMOVA,GRID,GRID_MOBILE,DESCRICAO,DESCRICAO_RESUMIDA,TIPO,OBRIGATORIO,TAMANHO,TAMANHO_DECIMAL,MASCARA,INSERT_UPDATE,DISABLED,HINT,LINK,VALIDACAO,OPCOES,VALOR_DEFAULT,VALIDACAO_VIEW,FILTRO_VIEW,TOOLTIP_MESSAGE,PROPERTIES) VALUES
('FOLHA_TAREFA','LINK_ATIVIDADE_METRICAS',11,0,1,0,1,'Métricas Folha Tarefa','Métricas Folha Tarefa','LINK',NULL,NULL,NULL,NULL,'IU','0',NULL,'FOLHA_TAREFA','','type:GET_URL;url:associationtask;p1:taskSheet;v1:SEQ_DB;icon:fa fa-link',NULL,NULL,NULL,NULL,NULL);
Lembrando que no campo OPCOES deve conter o seguinte : {.is-warning}
type:GET_URL;url:associationtask;p1:taskSheet;v1:SEQ_DB;icon:fa fa-link
Após realizar os passos acima corretamente o ambiente já estará configurado para utilizar a ferramenta Folha Tarefa/Atividade x Métricas.
Associação de tarefas (custom)
Podemos fazer a configuração das tabelas que irão corresponder a cada nivel/camada da “arvore de atividades” na associação de tarefas, para utilizar basta configurar o parâmetro na tabela nfs_core_par_parametros e criar o link através da tabela nfs_core_ds_tabela_campo. exemplo de arquivo de configuração na tabela nfs_core_par_parametros:
INSERT INTO nfs_homol_civilmaster_mo_construmobil.nfs_core_par_parametros
(EMPRESA, FILIAL, `LOCAL`, NOME, CONTEUDO, TIPO)
VALUES(9999, 9999, 9999, 'TREE_VIEW', '{
"layers":{
"1":{
"table":"AREA",
"associationTable":"DISTRIBUICAO_OBJETO"
},
"2":{
"table":"OBJETO",
"associationTable":"DETALHAMENTO_OBJETO"
},
"3":{
"table":"OPER",
"isTask":true
}
}
}', 1);
agora basta adicionar o link ao registro:
INSERT INTO nfs_homol_milplanengenharia_construmobil.nfs_core_ds_tabela_campo(TABELA_NOME, NOME, SEQ, SYS, SEND_XMOVA, GRID, GRID_MOBILE, DESCRICAO, DESCRICAO_RESUMIDA, TIPO, OBRIGATORIO, TAMANHO, TAMANHO_DECIMAL, MASCARA, INSERT_UPDATE, DISABLED, HINT, LINK, VALIDACAO, OPCOES, VALOR_DEFAULT, VALIDACAO_VIEW, FILTRO_VIEW, TOOLTIP_MESSAGE, PROPERTIES)
VALUES('FOLHA_TAREFA', 'LINK_ATIVIDADE_METRICAS', 11, 0, 1, 0, 1, 'Métricas Folha Tarefa', 'Métricas Folha Tarefa', 'LINK', NULL, NULL, NULL, NULL, 'IU', '0', NULL, 'FOLHA_TAREFA', '', 'type:GET_URL;url:associationtask;p1:taskSheet;v1:SEQ_DB;icon:fa fa-link', NULL, NULL, NULL, NULL, NULL);
Configuração
Legendas:
-
layers(camadas): Atributo onde serão definidas as tabelas de cada camada, bem como a tabela que fara a associação com os níveis “filho”(subnivel do nivel atual), quando for uma task, usaremos o propriedade isTask: true no lugar ta tabela de associação;
-
niveis: Os niveis sempre irão contar no menos para o maior, na estrutura de arvore o nivel 1 seria a raiz(ou root), não possuindo pai e de onde os proximos niveis serão ramificados;
-
nivel: Um nível corresponde a alguma tabela que será usada para para relacionar um nivel aos demais, fazendo a ligação entre os nós “pai”(que antecedem) e “filhos”(que sucedem);
-
Campos que serão utilizados como métricas.
-
valores padrão(default): permite difinir um valor padrão para as metricas, possuindo os seguintes tipos:
- value: um valor fixo que será utilizado ao abrir o modal para inserção das metricas;
- field: o nome de um campo da tabela de atividade;
- taskSheet: o nome de um campo correspondente aos campos da folha tarefa.
Caso queira definir a tabela final onde sera salva a metrica, basta adicionar a propriedade metricAssociationTable desta forma:
{
'metricAssociationTable':"OPER_GRUPO_METRICA",
'layers':{
"1":{
"table":"AREA",
"associationTable":"DISTRIBUICAO_OBJETO"
},
"2":{
"table":"OBJETO",
"associationTable":"DETALHAMENTO_OBJETO"
},
"3":{
"table":"OPER",
"isTask":true
}
}
...
}