Commit e6a6d14cc9b533c2b75890203b1ea3dbcf47fef6

Authored by rogerio.costa
1 parent 5686a9b8
Exists in master

#3216 - Classificar a Informação de Documentos e Processos

cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java
@@ -66,7 +66,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -66,7 +66,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
66 * 66 *
67 */ 67 */
68 @Entity 68 @Entity
69 -@JsonIgnoreProperties({ "$checked" }) 69 +@JsonIgnoreProperties({ "$checked", "nivelAcessoList" })
70 public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { 70 public class DocumentoGed extends PersistentObjectUnidade implements Cloneable {
71 71
72 /** Atributo serialVersionUID. */ 72 /** Atributo serialVersionUID. */
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java
@@ -26,9 +26,11 @@ import br.com.centralit.api.model.DocumentoGed; @@ -26,9 +26,11 @@ import br.com.centralit.api.model.DocumentoGed;
26 import br.com.centralit.api.model.InteressadoDocumento; 26 import br.com.centralit.api.model.InteressadoDocumento;
27 import br.com.centralit.api.model.Processo; 27 import br.com.centralit.api.model.Processo;
28 import br.com.centralit.api.service.AnexoGedService; 28 import br.com.centralit.api.service.AnexoGedService;
  29 +import br.com.centralit.api.service.CredencialProcessoService;
29 import br.com.centralit.api.service.DocumentoGedService; 30 import br.com.centralit.api.service.DocumentoGedService;
30 import br.com.centralit.api.service.DominioService; 31 import br.com.centralit.api.service.DominioService;
31 import br.com.centralit.api.service.NivelAcessoTipoDocumentoService; 32 import br.com.centralit.api.service.NivelAcessoTipoDocumentoService;
  33 +import br.com.centralit.api.service.NotificacaoService;
32 import br.com.centralit.api.service.PlanoClassificacaoService; 34 import br.com.centralit.api.service.PlanoClassificacaoService;
33 import br.com.centralit.api.service.ProcessoService; 35 import br.com.centralit.api.service.ProcessoService;
34 import br.com.centralit.api.service.SigiloService; 36 import br.com.centralit.api.service.SigiloService;
@@ -38,6 +40,9 @@ import br.com.centralit.api.service.UnidadeProcessoService; @@ -38,6 +40,9 @@ import br.com.centralit.api.service.UnidadeProcessoService;
38 import br.com.centralit.framework.exception.BusinessException; 40 import br.com.centralit.framework.exception.BusinessException;
39 import br.com.centralit.framework.exception.CodigoErro; 41 import br.com.centralit.framework.exception.CodigoErro;
40 import br.com.centralit.framework.model.Dominio; 42 import br.com.centralit.framework.model.Dominio;
  43 +import br.com.centralit.framework.model.Grupo;
  44 +import br.com.centralit.framework.model.Notificacao;
  45 +import br.com.centralit.framework.model.NotificacaoGrupo;
41 import br.com.centralit.framework.service.arquitetura.GedFileService; 46 import br.com.centralit.framework.service.arquitetura.GedFileService;
42 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 47 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
43 import br.com.centralit.framework.util.UtilColecao; 48 import br.com.centralit.framework.util.UtilColecao;
@@ -124,6 +129,14 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo @@ -124,6 +129,14 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo
124 @Autowired 129 @Autowired
125 private UnidadeProcessoService unidadeProcessoService; 130 private UnidadeProcessoService unidadeProcessoService;
126 131
  132 + /** Atributo notificacaoService. */
  133 + @Autowired
  134 + private NotificacaoService notificacaoService;
  135 +
  136 + /** Atributo credencialProcessoService. */
  137 + @Autowired
  138 + private CredencialProcessoService credencialProcessoService;
  139 +
127 /** Atributo solrService. */ 140 /** Atributo solrService. */
128 @Autowired 141 @Autowired
129 private SolrService solrService; 142 private SolrService solrService;
@@ -276,6 +289,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo @@ -276,6 +289,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo
276 entity.setSigilo(this.sigiloService.getReference(entity.getSigilo().getId())); 289 entity.setSigilo(this.sigiloService.getReference(entity.getSigilo().getId()));
277 entity.setStatus(this.dominioService.findByChaveAndCodigo("statusDocumentoGed", 0L)); 290 entity.setStatus(this.dominioService.findByChaveAndCodigo("statusDocumentoGed", 0L));
278 this.atribuirPrazoPadraoDocumento(entity); 291 this.atribuirPrazoPadraoDocumento(entity);
  292 + this.enviarNotificacaoDocumentoSigiloso(entity);
279 } else { 293 } else {
280 294
281 entity.setSigilo(null); 295 entity.setSigilo(null);
@@ -293,7 +307,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo @@ -293,7 +307,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo
293 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 307 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
294 * </p> 308 * </p>
295 * 309 *
296 - * Método responsável por 310 + * Método responsável por validar o nivel de acesso do documento
297 * 311 *
298 * @author andre.silva 312 * @author andre.silva
299 * 313 *
@@ -302,28 +316,31 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo @@ -302,28 +316,31 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
302 */ 316 */
303 private void validarNivelAcessoDocumento(DocumentoGed entity) { 317 private void validarNivelAcessoDocumento(DocumentoGed entity) {
304 318
305 - if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() == 0L && entity.getNivelAcesso().getNivelAcesso().getCodigo() == 2L) {  
306 - throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());  
307 - } else if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() == 1L) {  
308 - if (entity.getNivelAcesso().getNivelAcesso().getCodigo() != 1L && !UtilObjeto.isReferencia(entity.getSigilo())) {  
309 - throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());  
310 - }  
311 - } else if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() == 2L) {  
312 - if (entity.getNivelAcesso().getNivelAcesso().getCodigo() == 0L) {  
313 - throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());  
314 - }  
315 - } 319 + if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() != 2L) {
316 320
317 - if (UtilObjeto.isReferencia(entity.getProcesso().getSigilo())) {  
318 - if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 1L) {  
319 - if (entity.getSigilo().getTipoSigilo().getCodigo() == 0L) { 321 + if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() == 0L && entity.getNivelAcesso().getNivelAcesso().getCodigo() == 2L) {
  322 + throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
  323 + } else if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() == 1L) {
  324 + if (entity.getNivelAcesso().getNivelAcesso().getCodigo() != 1L && !UtilObjeto.isReferencia(entity.getSigilo())) {
320 throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue()); 325 throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
321 } 326 }
322 - } else if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 2L) {  
323 - if (!UtilObjeto.isReferencia(entity.getSigilo()) || entity.getSigilo().getTipoSigilo().getCodigo() != 2L) { 327 + } else if (entity.getProcesso().getNivelAcesso().getNivelAcesso().getCodigo() == 2L) {
  328 + if (entity.getNivelAcesso().getNivelAcesso().getCodigo() == 0L) {
324 throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue()); 329 throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
325 } 330 }
326 } 331 }
  332 +
  333 + if (UtilObjeto.isReferencia(entity.getProcesso().getSigilo())) {
  334 + if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 1L) {
  335 + if (entity.getSigilo().getTipoSigilo().getCodigo() == 0L) {
  336 + throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
  337 + }
  338 + } else if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 2L) {
  339 + if (!UtilObjeto.isReferencia(entity.getSigilo()) || entity.getSigilo().getTipoSigilo().getCodigo() != 2L) {
  340 + throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
  341 + }
  342 + }
  343 + }
327 } 344 }
328 345
329 } 346 }
@@ -816,6 +833,8 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo @@ -816,6 +833,8 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
816 if (!UtilColecao.isVazio(listaDocumentos)) { 833 if (!UtilColecao.isVazio(listaDocumentos)) {
817 for (DocumentoGed documento : listaDocumentos) { 834 for (DocumentoGed documento : listaDocumentos) {
818 DocumentoGed entity = (DocumentoGed) this.documentoGedDao.getReference(documento.getId()); 835 DocumentoGed entity = (DocumentoGed) this.documentoGedDao.getReference(documento.getId());
  836 + documento.setProcesso(entity.getProcesso());
  837 + this.validarNivelAcessoDocumento(documento);
819 entity.setSigiloOriginal(documento.getSigilo()); 838 entity.setSigiloOriginal(documento.getSigilo());
820 entity.setNivelAcessoOriginal(documento.getNivelAcesso()); 839 entity.setNivelAcessoOriginal(documento.getNivelAcesso());
821 entity.setSigilo(documento.getSigilo()); 840 entity.setSigilo(documento.getSigilo());
@@ -1008,6 +1027,51 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo @@ -1008,6 +1027,51 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
1008 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 1027 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
1009 * </p> 1028 * </p>
1010 * 1029 *
  1030 + * Método responsável por enviar notificação para os responsável sobre a criação do documento sigiloso
  1031 + *
  1032 + * @author rogerio.costa
  1033 + *
  1034 + * @param DocumentoGed
  1035 + */
  1036 + private void enviarNotificacaoDocumentoSigiloso(DocumentoGed documentoGed) {
  1037 +
  1038 + StringBuilder sb = new StringBuilder();
  1039 +
  1040 + sb.append("O documento ").append(documentoGed.getNumero()).append(" foi criado como ").append(documentoGed.getSigilo().getTipoSigilo().getDescricao());
  1041 +
  1042 + Dominio tipoNotificacao = this.dominioService.findByChaveAndCodigo("tipoNotificacao", 4L);
  1043 +
  1044 + Dominio tipoPrioridade = this.dominioService.findByChaveAndCodigo("tipoPrioridade", 2L);
  1045 +
  1046 + Notificacao notificacao = new Notificacao("Documento sigiloso", sb.toString(), tipoNotificacao, tipoPrioridade, null, null, null);
  1047 +
  1048 + Collection<Grupo> grupos = this.credencialProcessoService.findGrupoPorSigilo(documentoGed.getSigilo());
  1049 +
  1050 + if (!UtilColecao.isVazio(grupos)) {
  1051 +
  1052 + notificacao.setNotificacaoGrupos(new LinkedList<NotificacaoGrupo>());
  1053 +
  1054 + for (Grupo grupo : grupos) {
  1055 +
  1056 + NotificacaoGrupo notificacaoGrupo = new NotificacaoGrupo(grupo, notificacao);
  1057 +
  1058 + notificacao.getNotificacaoGrupos().add(notificacaoGrupo);
  1059 + }
  1060 +
  1061 + }
  1062 +
  1063 + this.notificacaoService.save(notificacao);
  1064 + }
  1065 +
  1066 + /**
  1067 + * <p>
  1068 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  1069 + * </p>
  1070 + *
  1071 + * <p>
  1072 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  1073 + * </p>
  1074 + *
1011 * Método responsável por obter através do id do PlanoClassificacao 1075 * Método responsável por obter através do id do PlanoClassificacao
1012 * 1076 *
1013 * @author rogerio.costa 1077 * @author rogerio.costa
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js
@@ -34,7 +34,6 @@ citApp.controller(&#39;ClassificarDocumentoProcessoController&#39;, [&#39;$scope&#39;, &#39;Processo @@ -34,7 +34,6 @@ citApp.controller(&#39;ClassificarDocumentoProcessoController&#39;, [&#39;$scope&#39;, &#39;Processo
34 delete item.unidadeNome; 34 delete item.unidadeNome;
35 delete item.documentoVersao; 35 delete item.documentoVersao;
36 delete item.originalElement; 36 delete item.originalElement;
37 - delete item.nivelAcessoList;  
38 37
39 if(item.nivelAcesso != undefined && item.nivelAcesso.sigilos != null){ 38 if(item.nivelAcesso != undefined && item.nivelAcesso.sigilos != null){
40 angular.forEach(item.nivelAcesso.sigilos, function (item) { 39 angular.forEach(item.nivelAcesso.sigilos, function (item) {
@@ -121,12 +120,12 @@ citApp.controller(&#39;ClassificarDocumentoProcessoController&#39;, [&#39;$scope&#39;, &#39;Processo @@ -121,12 +120,12 @@ citApp.controller(&#39;ClassificarDocumentoProcessoController&#39;, [&#39;$scope&#39;, &#39;Processo
121 }); 120 });
122 }; 121 };
123 122
124 - $scope.limparSigilo = function(documento){ 123 + $scope.limparSigilo = function(object){
125 124
126 $timeout(function(){ 125 $timeout(function(){
127 - if(documento.nivelAcesso.nivelAcesso.codigo != 0){ 126 + if(object.nivelAcesso && object.nivelAcesso.nivelAcesso.codigo != 0){
128 127
129 - documento.sigilo = null; 128 + object.sigilo = null;
130 129
131 } 130 }
132 }); 131 });
@@ -134,8 +133,12 @@ citApp.controller(&#39;ClassificarDocumentoProcessoController&#39;, [&#39;$scope&#39;, &#39;Processo @@ -134,8 +133,12 @@ citApp.controller(&#39;ClassificarDocumentoProcessoController&#39;, [&#39;$scope&#39;, &#39;Processo
134 133
135 $scope.findPorIdTipoProcesso = function(idTipoProcesso){ 134 $scope.findPorIdTipoProcesso = function(idTipoProcesso){
136 135
  136 + $scope.nivelAcessoList = [];
  137 +
137 NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(idTipoProcesso).then(function(result) { 138 NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(idTipoProcesso).then(function(result) {
138 - $scope.nivelAcessoList = result; 139 +
  140 + $scope.nivelAcessoList = result;
  141 +
139 }); 142 });
140 }; 143 };
141 144
cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html
@@ -60,24 +60,20 @@ @@ -60,24 +60,20 @@
60 <div class="col-md-4"> 60 <div class="col-md-4">
61 <label-select ng-id="processoValidacao.nivelAcesso" ng-label="ECM.LABEL.NIVEL_ACESSO" ng-disabled="aprovado" ng-model="processoValidacao.nivelAcesso" 61 <label-select ng-id="processoValidacao.nivelAcesso" ng-label="ECM.LABEL.NIVEL_ACESSO" ng-disabled="aprovado" ng-model="processoValidacao.nivelAcesso"
62 form="classificarDocumentoclassificarDocumentoProcessoForm" ng-obrigatorio="true" 62 form="classificarDocumentoclassificarDocumentoProcessoForm" ng-obrigatorio="true"
63 - ng-custom-options="nivelAcessoTipoProcesso.originalElement as nivelAcessoTipoProcesso.nivelAcesso.descricao for nivelAcessoTipoProcesso" track-by="track by nivelAcessoTipoProcesso.id"  
64 - ng-list="nivelAcessoList" /> 63 + ng-custom-options="nivelAcessoTipoProcesso.originalElement as nivelAcessoTipoProcesso.nivelAcesso.descricao for nivelAcessoTipoProcesso"
  64 + ng-list="nivelAcessoList" ng-custom-change="limparSigilo(processoValidacao)" track-by="track by nivelAcessoTipoProcesso.id"/>
65 </div> 65 </div>
66 66
67 <div class="col-md-4" ng-show="processoValidacao.nivelAcesso.nivelAcesso.codigo == 0"> 67 <div class="col-md-4" ng-show="processoValidacao.nivelAcesso.nivelAcesso.codigo == 0">
68 <div class="form-group"> 68 <div class="form-group">
69 - <label class="control-label block"  
70 - ng-class="{'has-error': classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$error.required && (!classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$pristine || classificarDocumentoProcessoForm.$submitted)}">  
71 - <translate>ECM.LABEL.SIGILO</translate> <span class="red">*</span> <i  
72 - ng-show="classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$error.required && (!classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$pristine || classificarDocumentoProcessoForm.$submitted)"  
73 - class='fa fa-warning red' tooltip="{{$translate.instant('LABEL.SIGILO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" tooltip-placement='top'></i>  
74 - </label>  
75 -  
76 - <label-select ng-id="processoValidacao.sigilo" ng-model="processoValidacao.sigilo" form="classificarDocumentoProcessoForm"  
77 - ng-custom-options="sigilo.originalElement as sigilo.tipoSigilo.descricao for sigilo" track-by="track by sigilo.id" ng-list="sigilos" ng-disabled="aprovado" /> 69 +
  70 + <label-select ng-id="processoValidacao.sigilo" ng-model="processoValidacao.sigilo" form="classificarDocumentoProcessoForm" ng-LABEL="ECM.LABEL.SIGILO"
  71 + ng-custom-options="sigiloTipoProcesso.sigilo as sigiloTipoProcesso.sigilo.tipoSigilo.descricao for sigiloTipoProcesso"
  72 + ng-list="processoValidacao.nivelAcesso.sigilos" ng-disabled="aprovado" ng-obrigatorio='processoValidacao.nivelAcesso.nivelAcesso.codigo == 0'/>
  73 +
78 </div> 74 </div>
79 </div> 75 </div>
80 - 76 +
81 <div class="col-md-4"> 77 <div class="col-md-4">
82 <label-input-checkbox ng-model="validado" ng-label="ECM.LABEL.VALIDADO"></label-input-checkbox> 78 <label-input-checkbox ng-model="validado" ng-label="ECM.LABEL.VALIDADO"></label-input-checkbox>
83 </div> 79 </div>
@@ -102,7 +98,7 @@ @@ -102,7 +98,7 @@
102 <tr> 98 <tr>
103 <th style="width: 15%;" class="text-center"><translate>ECM.LABEL.NUM_DOCUMENTO</translate></th> 99 <th style="width: 15%;" class="text-center"><translate>ECM.LABEL.NUM_DOCUMENTO</translate></th>
104 <th style="width: 20%;" class="text-center"><translate>ECM.LABEL.TIPODOCUMENTO</translate></th> 100 <th style="width: 20%;" class="text-center"><translate>ECM.LABEL.TIPODOCUMENTO</translate></th>
105 - <th class="text-center"><translate>ECM.LABEL.NIVEL_PROPOSTO</translate></th> 101 + <th style="width: 46%" class="text-center"><translate>ECM.LABEL.NIVEL_PROPOSTO</translate></th>
106 <th class="text-center"><translate>ECM.LABEL.NIVEL_REVISADO</translate></th> 102 <th class="text-center"><translate>ECM.LABEL.NIVEL_REVISADO</translate></th>
107 103
108 </tr> 104 </tr>
@@ -114,13 +110,13 @@ @@ -114,13 +110,13 @@
114 <td> 110 <td>
115 <div class="row"> 111 <div class="row">
116 <div class="col-md-6"> 112 <div class="col-md-6">
117 - <label-select ng-id="documentoValidacao.nivelAcesso" ng-model="documentoValidacao.nivelAcesso" form="classificarDocumentoProcessoForm" 113 + <label-select ng-id="documentoValidacao.nivelAcesso" ng-model="documentoValidacao.nivelAcesso" form="classificarDocumentoProcessoForm" ng-obrigatorio="true"
118 ng-custom-options="nivelAcessoTipoDocumento as nivelAcessoTipoDocumento.nivelAcesso.descricao for nivelAcessoTipoDocumento" 114 ng-custom-options="nivelAcessoTipoDocumento as nivelAcessoTipoDocumento.nivelAcesso.descricao for nivelAcessoTipoDocumento"
119 track-by="track by nivelAcessoTipoDocumento.id" ng-list="documentoValidacao.nivelAcessoList" ng-custom-change="limparSigilo(documentoValidacao)"/> 115 track-by="track by nivelAcessoTipoDocumento.id" ng-list="documentoValidacao.nivelAcessoList" ng-custom-change="limparSigilo(documentoValidacao)"/>
120 </div> 116 </div>
121 <div class="col-md-6" ng-show='documentoValidacao.nivelAcesso.nivelAcesso.codigo == 0'> 117 <div class="col-md-6" ng-show='documentoValidacao.nivelAcesso.nivelAcesso.codigo == 0'>
122 - <label-select ng-id="documentoValidacao.sigilo" ng-model="documentoValidacao.sigilo" form="classificarDocumentoProcessoForm"  
123 - ng-custom-options="sigiloTipoDocumento.sigilo as sigiloTipoDocumento.tipoSigiloDescricao for sigiloTipoDocumento" track-by="track by sigiloTipoDocumento.sigilo.id" ng-list="documentoValidacao.nivelAcesso.sigilos" /> 118 + <label-select ng-id="documentoValidacao.sigilo" ng-model="documentoValidacao.sigilo" form="classificarDocumentoProcessoForm" ng-obrigatorio="documentoValidacao.nivelAcesso.nivelAcesso.codigo == 0"
  119 + ng-custom-options="sigiloTipoDocumento.sigilo as sigiloTipoDocumento.sigilo.tipoSigilo.descricao for sigiloTipoDocumento" ng-list="documentoValidacao.nivelAcesso.sigilos"/>
124 120
125 </div> 121 </div>
126 </div> 122 </div>