Commit 56ee39eeb2f5abed920a34dac782fd2204f006ab
1 parent
b89d7cdd
Exists in
master
Assinar documento digital
Showing
9 changed files
with
216 additions
and
68 deletions
Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java
| 1 | 1 | package br.com.centralit.api.dao.impl; |
| 2 | 2 | |
| 3 | +import java.util.ArrayList; | |
| 3 | 4 | import java.util.Calendar; |
| 4 | 5 | import java.util.Collection; |
| 6 | +import java.util.List; | |
| 5 | 7 | |
| 6 | 8 | import javax.persistence.FetchType; |
| 7 | 9 | |
| ... | ... | @@ -17,12 +19,14 @@ import org.springframework.security.core.context.SecurityContextHolder; |
| 17 | 19 | import org.springframework.stereotype.Repository; |
| 18 | 20 | |
| 19 | 21 | import br.com.centralit.api.dao.ProcessoDao; |
| 22 | +import br.com.centralit.api.model.CredencialProcesso; | |
| 20 | 23 | import br.com.centralit.api.model.Processo; |
| 21 | 24 | import br.com.centralit.api.model.SigiloPrivilegio; |
| 22 | 25 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
| 23 | 26 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
| 24 | 27 | import br.com.centralit.framework.model.Dominio; |
| 25 | 28 | import br.com.centralit.framework.model.Usuario; |
| 29 | +import br.com.centralit.framework.model.arquitetura.PersistentObject; | |
| 26 | 30 | import br.com.centralit.framework.util.UtilObjeto; |
| 27 | 31 | |
| 28 | 32 | import com.googlecode.genericdao.search.Filter; |
| ... | ... | @@ -63,6 +67,7 @@ import com.googlecode.genericdao.search.SearchResult; |
| 63 | 67 | * |
| 64 | 68 | */ |
| 65 | 69 | @Repository("processoDao") |
| 70 | +@SuppressWarnings("unchecked") | |
| 66 | 71 | public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoDao { |
| 67 | 72 | |
| 68 | 73 | /** |
| ... | ... | @@ -198,10 +203,45 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD |
| 198 | 203 | */ |
| 199 | 204 | public <RT> SearchResult<RT> searchAndCountPorSigilo(ISearch search) { |
| 200 | 205 | |
| 201 | - Long idUsuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId(); | |
| 202 | - | |
| 203 | 206 | Criteria criteria = this.newCriteria(); |
| 204 | 207 | |
| 208 | + DetachedCriteria detachedPrivilegio = getDetachedPorPermissaoEmSigilo(); | |
| 209 | + | |
| 210 | + // Joins | |
| 211 | + criteria.createAlias("documentos", "documentos", JoinType.LEFT_OUTER_JOIN); | |
| 212 | + | |
| 213 | + criteria.createAlias("documentos.status", "statusDocumento", JoinType.LEFT_OUTER_JOIN); | |
| 214 | + // Filtros | |
| 215 | + criteria.add(Restrictions.or(Restrictions.eq("statusDocumento.codigo", 0L), Restrictions.isNull("validado"), Restrictions.eq("validado", false))); | |
| 216 | + | |
| 217 | + criteria.add(Restrictions.or(Subqueries.propertyIn("sigilo.id", detachedPrivilegio), Subqueries.propertyIn("documentos.sigilo.id", detachedPrivilegio))); | |
| 218 | + | |
| 219 | + criteria.setProjection(Projections.distinct(Projections.property("id"))); | |
| 220 | + | |
| 221 | + search.getFilters().add(Filter.in("id", criteria.list())); | |
| 222 | + | |
| 223 | + return super.searchAndCount(search); | |
| 224 | + } | |
| 225 | + | |
| 226 | + /** | |
| 227 | + * <p> | |
| 228 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | |
| 229 | + * </p> | |
| 230 | + * | |
| 231 | + * <p> | |
| 232 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | |
| 233 | + * </p> | |
| 234 | + * | |
| 235 | + * Método responsável por filtrar o sigilo que o usuario logado tem permissão através do(s) grupo(s) que o mesmo pertence | |
| 236 | + * | |
| 237 | + * @author rogerio.costa | |
| 238 | + * | |
| 239 | + * @return DetachedCriteria/ ids dos sigilos | |
| 240 | + */ | |
| 241 | + private DetachedCriteria getDetachedPorPermissaoEmSigilo() { | |
| 242 | + | |
| 243 | + Long idUsuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId(); | |
| 244 | + | |
| 205 | 245 | DetachedCriteria detachedCriteriaPrivilegio = DetachedCriteria.forClass(SigiloPrivilegio.class); |
| 206 | 246 | |
| 207 | 247 | detachedCriteriaPrivilegio.setProjection(Projections.property("sigilo.id")); |
| ... | ... | @@ -218,19 +258,7 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD |
| 218 | 258 | |
| 219 | 259 | detachedCriteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); |
| 220 | 260 | |
| 221 | - criteria.add(Subqueries.propertyIn("sigilo.id", detachedCriteriaPrivilegio)); | |
| 222 | - | |
| 223 | - criteria.createAlias("documentos", "documentos", JoinType.LEFT_OUTER_JOIN); | |
| 224 | - | |
| 225 | - criteria.createAlias("documentos.status", "statusDocumento", JoinType.LEFT_OUTER_JOIN); | |
| 226 | - | |
| 227 | - criteria.add(Restrictions.or(Restrictions.eq("statusDocumento.codigo", 0L), Restrictions.isNull("validado"), Restrictions.eq("validado", false))); | |
| 228 | - | |
| 229 | - criteria.setProjection(Projections.distinct(Projections.property("id"))); | |
| 230 | - | |
| 231 | - search.getFilters().add(Filter.in("id", criteria.list())); | |
| 232 | - | |
| 233 | - return super.searchAndCount(search); | |
| 261 | + return detachedCriteriaPrivilegio; | |
| 234 | 262 | } |
| 235 | 263 | |
| 236 | 264 | @Override |
| ... | ... | @@ -248,17 +276,17 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD |
| 248 | 276 | |
| 249 | 277 | return UtilObjeto.isReferencia(criteria.uniqueResult()); |
| 250 | 278 | } |
| 251 | - | |
| 252 | - public Collection<Processo> autoCompleteProcessoByNupAndStatus(String nup, Dominio dominio){ | |
| 253 | - | |
| 279 | + | |
| 280 | + public Collection<Processo> autoCompleteProcessoByNupAndStatus(String nup, Dominio dominio) { | |
| 281 | + | |
| 254 | 282 | Search search = new SearchSeven(this.persistentClass); |
| 255 | 283 | |
| 256 | 284 | search.addFilterOr(Filter.ilike("nup", "%" + nup + "%"), Filter.ilike("nup", "%" + nup + "%")); |
| 257 | - | |
| 285 | + | |
| 258 | 286 | search.addFilterEqual("status.id", dominio.getId()); |
| 259 | - | |
| 287 | + | |
| 260 | 288 | search.addSortDesc("id"); |
| 261 | - | |
| 289 | + | |
| 262 | 290 | search.setMaxResults(10); |
| 263 | 291 | |
| 264 | 292 | return this.search(search); |
| ... | ... | @@ -271,17 +299,138 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD |
| 271 | 299 | Search search = new SearchSeven(this.persistentClass); |
| 272 | 300 | |
| 273 | 301 | search.addFilterOr(Filter.ilike("nup", "%" + nup + "%"), Filter.ilike("nup", "%" + nup + "%")); |
| 274 | - | |
| 302 | + | |
| 275 | 303 | search.getFilters().add(Filter.notEqual("status.codigo", 1L)); |
| 276 | - | |
| 304 | + | |
| 277 | 305 | search.getFilters().add(Filter.notEqual("status.codigo", 5L)); |
| 278 | - | |
| 306 | + | |
| 279 | 307 | search.getFilters().add(Filter.notEqual("status.codigo", 3L)); |
| 280 | - | |
| 308 | + | |
| 281 | 309 | search.addSortDesc("id"); |
| 282 | - | |
| 310 | + | |
| 283 | 311 | search.setMaxResults(10); |
| 284 | 312 | |
| 285 | 313 | return this.search(search); |
| 286 | 314 | } |
| 315 | + | |
| 316 | + @Override | |
| 317 | + public List<PersistentObject> findAutoComplete(String chave, String valor) { | |
| 318 | + | |
| 319 | + Criteria criteriaProcesso = this.newCriteria(Processo.class); | |
| 320 | + | |
| 321 | + this.filterProcessoPermissaoUsuario(criteriaProcesso); | |
| 322 | + | |
| 323 | + criteriaProcesso.add(Restrictions.ilike(chave, "%" + valor + "%")); | |
| 324 | + | |
| 325 | + return criteriaProcesso.list(); | |
| 326 | + } | |
| 327 | + | |
| 328 | + /** | |
| 329 | + * <p> | |
| 330 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | |
| 331 | + * </p> | |
| 332 | + * | |
| 333 | + * <p> | |
| 334 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | |
| 335 | + * </p> | |
| 336 | + * | |
| 337 | + * Método responsável por realizar os filtros em que o usuario logado tem permissão. | |
| 338 | + * | |
| 339 | + * @author rogerio.costa | |
| 340 | + * | |
| 341 | + * @param criteriaProcesso | |
| 342 | + */ | |
| 343 | + private void filterProcessoPermissaoUsuario(Criteria criteriaProcesso) { | |
| 344 | + | |
| 345 | + Usuario usuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ); | |
| 346 | + | |
| 347 | + // Verifica se o usuario está lotado na unidade | |
| 348 | + if (UtilObjeto.isReferencia(usuario.getUnidade())) { | |
| 349 | + | |
| 350 | + // Filtro de permissões herdadas através de grupos | |
| 351 | + DetachedCriteria detachedCriteriaPrivilegio = findSigiloUsuarioContemPermissaoAtravesDosGrupos(usuario); | |
| 352 | + | |
| 353 | + // Filtro da credencial do processo | |
| 354 | + DetachedCriteria detachedCredencialProcesso = findProcessoSigilosoPorCredencial(usuario); | |
| 355 | + | |
| 356 | + criteriaProcesso.add(Restrictions.eq("unidade.id", usuario.getUnidade().getId())); | |
| 357 | + | |
| 358 | + criteriaProcesso.add(Restrictions.or(Subqueries.propertyIn("sigilo.id", detachedCriteriaPrivilegio), Subqueries.propertyIn("id", detachedCredencialProcesso), Restrictions.or(Restrictions.eq("autor.id", usuario.getId()), Restrictions.isNull("sigilo")))); | |
| 359 | + | |
| 360 | + criteriaProcesso.add(Restrictions.isNotNull("idProcessInstance")); | |
| 361 | + | |
| 362 | + } | |
| 363 | + } | |
| 364 | + | |
| 365 | + /** | |
| 366 | + * <p> | |
| 367 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | |
| 368 | + * </p> | |
| 369 | + * | |
| 370 | + * <p> | |
| 371 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | |
| 372 | + * </p> | |
| 373 | + * | |
| 374 | + * Método responsável por retornar um detachedCriteria com os ids dos sigilos que o usuário tem permissão. O mesmo é consultado através dos grupos que o usuário pertence. | |
| 375 | + * | |
| 376 | + * @author rogerio.costa | |
| 377 | + * | |
| 378 | + * @param usuario | |
| 379 | + * @return DetachedCriteria/Sigilo.id | |
| 380 | + */ | |
| 381 | + private DetachedCriteria findSigiloUsuarioContemPermissaoAtravesDosGrupos(Usuario usuario) { | |
| 382 | + | |
| 383 | + DetachedCriteria detachedCriteriaPrivilegio = DetachedCriteria.forClass(SigiloPrivilegio.class); | |
| 384 | + | |
| 385 | + detachedCriteriaPrivilegio.setProjection(Projections.property("sigilo.id")); | |
| 386 | + | |
| 387 | + detachedCriteriaPrivilegio.createAlias("privilegio", "privilegio"); | |
| 388 | + | |
| 389 | + detachedCriteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio"); | |
| 390 | + | |
| 391 | + detachedCriteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo")); | |
| 392 | + | |
| 393 | + detachedCriteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario"); | |
| 394 | + | |
| 395 | + detachedCriteriaPrivilegio.add(Restrictions.isNull("grupoUsuario.dataInativo")); | |
| 396 | + | |
| 397 | + detachedCriteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", usuario.getId())); | |
| 398 | + | |
| 399 | + return detachedCriteriaPrivilegio; | |
| 400 | + } | |
| 401 | + | |
| 402 | + /** | |
| 403 | + * <p> | |
| 404 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | |
| 405 | + * </p> | |
| 406 | + * | |
| 407 | + * <p> | |
| 408 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | |
| 409 | + * </p> | |
| 410 | + * | |
| 411 | + * Método responsável por retornar os ids dos processo sigilosos que o usuário tem permissão, adicionado diretamente para o usuário e grupo que o mesmo está vinculado. | |
| 412 | + * | |
| 413 | + * @author rogerio.costa | |
| 414 | + * | |
| 415 | + * @param usuario | |
| 416 | + * @return DetachedCriteria/ Processo.id | |
| 417 | + */ | |
| 418 | + private DetachedCriteria findProcessoSigilosoPorCredencial(Usuario usuario) { | |
| 419 | + | |
| 420 | + DetachedCriteria detachedCredencialProcesso = DetachedCriteria.forClass(CredencialProcesso.class); | |
| 421 | + | |
| 422 | + detachedCredencialProcesso.setProjection(Projections.property("processo.id")); | |
| 423 | + | |
| 424 | + detachedCredencialProcesso.createAlias("grupo", "grupo", JoinType.LEFT_OUTER_JOIN); | |
| 425 | + | |
| 426 | + detachedCredencialProcesso.createAlias("grupo.grupoUsuarios", "grupoUsuario", JoinType.LEFT_OUTER_JOIN); | |
| 427 | + | |
| 428 | + detachedCredencialProcesso.add(Restrictions.isNull("grupoUsuario.dataInativo")); | |
| 429 | + | |
| 430 | + detachedCredencialProcesso.add(Restrictions.or(Restrictions.eq("grupoUsuario.usuario.id", usuario.getId()), Restrictions.eq("usuario.id", usuario.getId()))); | |
| 431 | + | |
| 432 | + detachedCredencialProcesso.add(Restrictions.isNull("dataInativo")); | |
| 433 | + | |
| 434 | + return detachedCredencialProcesso; | |
| 435 | + } | |
| 287 | 436 | } | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java
| ... | ... | @@ -93,7 +93,7 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un |
| 93 | 93 | return this.search(searchSeven); |
| 94 | 94 | |
| 95 | 95 | } |
| 96 | - | |
| 96 | + | |
| 97 | 97 | /** |
| 98 | 98 | * |
| 99 | 99 | * <p> |
| ... | ... | @@ -203,7 +203,7 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un |
| 203 | 203 | searchSeven.addFilterEqual("processo.id", idProcesso); |
| 204 | 204 | |
| 205 | 205 | searchSeven.addFilterEqual("unidade.id", idUnidade); |
| 206 | - | |
| 206 | + | |
| 207 | 207 | searchSeven.setMaxResults(1); |
| 208 | 208 | |
| 209 | 209 | return this.searchUnique(searchSeven); |
| ... | ... | @@ -222,34 +222,38 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un |
| 222 | 222 | @Override |
| 223 | 223 | public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus) { |
| 224 | 224 | |
| 225 | - // Filtro de permissões herdadas através de grupos | |
| 226 | - DetachedCriteria detachedCriteriaPrivilegio = findSigiloUsuarioContemPermissaoAtravesDosGrupos(usuario); | |
| 225 | + // Verifica se o usuario está lotado na unidade | |
| 226 | + if (UtilObjeto.isReferencia(usuario.getUnidade())) { | |
| 227 | 227 | |
| 228 | - // Filtro da credencial do processo | |
| 229 | - DetachedCriteria detachedCredencialProcesso = findProcessoSigilosoPorCredencial(usuario); | |
| 228 | + // Filtro de permissões herdadas através de grupos | |
| 229 | + DetachedCriteria detachedCriteriaPrivilegio = findSigiloUsuarioContemPermissaoAtravesDosGrupos(usuario); | |
| 230 | 230 | |
| 231 | - // Filtro da unidade, para processos públicos e restritos. | |
| 232 | - search.getFilters().add(Filter.or(Filter.not(Filter.equal("processo.status.id", idStatus)), Filter.isEmpty("processo.status.id"))); | |
| 233 | - | |
| 234 | - search.getFilters().add(Filter.notEqual("processo.status.codigo", 5L)); | |
| 231 | + // Filtro da credencial do processo | |
| 232 | + DetachedCriteria detachedCredencialProcesso = findProcessoSigilosoPorCredencial(usuario); | |
| 235 | 233 | |
| 236 | - // Verifica se o usuario está lotado na unidade | |
| 237 | - if (UtilObjeto.isReferencia(usuario.getUnidade())) { | |
| 234 | + // Filtro da unidade, para processos públicos e restritos. | |
| 235 | + search.getFilters().add(Filter.or(Filter.not(Filter.equal("processo.status.id", idStatus)), Filter.isEmpty("processo.status.id"))); | |
| 236 | + | |
| 237 | + search.getFilters().add(Filter.notEqual("processo.status.codigo", 5L)); | |
| 238 | 238 | |
| 239 | 239 | search.getFilters().add(Filter.equal("unidade.id", usuario.getUnidade().getId())); |
| 240 | - } | |
| 241 | 240 | |
| 242 | - Criteria criteriaProcessoSigiloso = this.newCriteria(Processo.class); | |
| 241 | + search.getFilters().add(Filter.or(Filter.equal("concluido", false), Filter.isNull("concluido"))); | |
| 243 | 242 | |
| 244 | - criteriaProcessoSigiloso.setProjection(Projections.property("id")); | |
| 243 | + Criteria criteriaProcessoSigiloso = this.newCriteria(Processo.class); | |
| 245 | 244 | |
| 246 | - criteriaProcessoSigiloso.add(Restrictions.or(Subqueries.propertyIn("sigilo.id", detachedCriteriaPrivilegio), Subqueries.propertyIn("id", detachedCredencialProcesso))); | |
| 245 | + criteriaProcessoSigiloso.setProjection(Projections.property("id")); | |
| 247 | 246 | |
| 248 | - search.getFilters().add(Filter.isNotNull("processo.idProcessInstance")); | |
| 247 | + criteriaProcessoSigiloso.add(Restrictions.or(Subqueries.propertyIn("sigilo.id", detachedCriteriaPrivilegio), Subqueries.propertyIn("id", detachedCredencialProcesso))); | |
| 249 | 248 | |
| 250 | - search.getFilters().add(Filter.or(Filter.equal("processo.autor.id", usuario.getId()), Filter.isNull("processo.sigilo"), Filter.in("processo.id", criteriaProcessoSigiloso.list()))); | |
| 249 | + search.getFilters().add(Filter.isNotNull("processo.idProcessInstance")); | |
| 251 | 250 | |
| 252 | - return super.searchAndCount(search); | |
| 251 | + search.getFilters().add(Filter.or(Filter.equal("processo.autor.id", usuario.getId()), Filter.isNull("processo.sigilo"), Filter.in("processo.id", criteriaProcessoSigiloso.list()))); | |
| 252 | + | |
| 253 | + return super.searchAndCount(search); | |
| 254 | + } | |
| 255 | + | |
| 256 | + return new SearchResult<RT>(); | |
| 253 | 257 | } |
| 254 | 258 | |
| 255 | 259 | /** |
| ... | ... | @@ -323,38 +327,37 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un |
| 323 | 327 | |
| 324 | 328 | return detachedCriteriaPrivilegio; |
| 325 | 329 | } |
| 326 | - | |
| 330 | + | |
| 327 | 331 | /** |
| 328 | 332 | * |
| 329 | 333 | */ |
| 330 | 334 | public Collection<UnidadeProcesso> findByPorIdProcessoEmExecucao(Long idProcesso) { |
| 331 | - | |
| 335 | + | |
| 332 | 336 | SearchSeven searchSeven = new SearchSeven(); |
| 333 | 337 | |
| 334 | 338 | searchSeven.addFilterEqual("processo.id", idProcesso); |
| 335 | - | |
| 339 | + | |
| 336 | 340 | searchSeven.addFilterOr(Filter.equal("concluido", false), Filter.isNull("concluido")); |
| 337 | 341 | |
| 338 | 342 | return this.search(searchSeven); |
| 339 | - | |
| 343 | + | |
| 340 | 344 | } |
| 341 | 345 | |
| 342 | 346 | public UnidadeProcesso obterPorUnidadeEProcessoEmExecucao(Long idProcesso, Long idUnidade) { |
| 343 | - | |
| 347 | + | |
| 344 | 348 | SearchSeven searchSeven = new SearchSeven(); |
| 345 | 349 | |
| 346 | 350 | searchSeven.addFilterEqual("processo.id", idProcesso); |
| 347 | 351 | |
| 348 | 352 | searchSeven.addFilterEqual("unidade.id", idUnidade); |
| 349 | - | |
| 350 | - searchSeven.addFilterOr( Filter.isNull("concluido")); | |
| 353 | + | |
| 354 | + searchSeven.addFilterOr(Filter.isNull("concluido")); | |
| 351 | 355 | |
| 352 | 356 | searchSeven.setMaxResults(1); |
| 353 | 357 | |
| 354 | 358 | return this.searchUnique(searchSeven); |
| 355 | 359 | } |
| 356 | 360 | |
| 357 | - | |
| 358 | 361 | /** |
| 359 | 362 | * <p> |
| 360 | 363 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> |
| ... | ... | @@ -384,6 +387,5 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un |
| 384 | 387 | |
| 385 | 388 | return UtilObjeto.isReferencia(criteria.uniqueResult()); |
| 386 | 389 | |
| 387 | - | |
| 388 | 390 | } |
| 389 | 391 | } | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java
| ... | ... | @@ -334,7 +334,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo |
| 334 | 334 | } |
| 335 | 335 | } |
| 336 | 336 | |
| 337 | - if (UtilObjeto.isReferencia(entity.getProcesso().getSigilo())) { | |
| 337 | + if (UtilObjeto.isReferencia(entity.getProcesso().getSigilo()) && UtilObjeto.isReferencia(entity.getSigilo())) { | |
| 338 | 338 | if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 1L) { |
| 339 | 339 | if (entity.getSigilo().getTipoSigilo().getCodigo() == 0L) { |
| 340 | 340 | throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue()); |
| ... | ... | @@ -344,6 +344,8 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo |
| 344 | 344 | throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue()); |
| 345 | 345 | } |
| 346 | 346 | } |
| 347 | + }else{ | |
| 348 | + throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue()); | |
| 347 | 349 | } |
| 348 | 350 | } |
| 349 | 351 | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/InicializarEcmServiceImpl.java
| ... | ... | @@ -240,10 +240,10 @@ public class InicializarEcmServiceImpl extends UtilStartup { |
| 240 | 240 | menuPesquisaProcesso.setIncludes(filesPesquisaProcesso); |
| 241 | 241 | this.menuService.mergeIfNotExist(menuPesquisaProcesso); |
| 242 | 242 | |
| 243 | - Pagina pgProcessoFinalizado = new Pagina("Processo Arquivado", "/cit-ecm-web/html/processoFinalizado/processoFinalizadoList.html"); | |
| 243 | + Pagina pgProcessoFinalizado = new Pagina("Processos Arquivados", "/cit-ecm-web/html/processoFinalizado/processoFinalizadoList.html"); | |
| 244 | 244 | pgProcessoFinalizado = this.paginaService.saveIfNotExist(pgProcessoFinalizado); |
| 245 | 245 | |
| 246 | - Menu menuProcessoFinalizado = new Menu("Processo Arquivado", pgProcessoFinalizado, menuProcesso, 2, 4, null, null, null, null, modulo, "PROCESSO_FINALIZADO"); | |
| 246 | + Menu menuProcessoFinalizado = new Menu("Processos Arquivados", pgProcessoFinalizado, menuProcesso, 2, 4, null, null, null, null, modulo, "PROCESSO_FINALIZADO"); | |
| 247 | 247 | menuProcessoFinalizado.setIncludes(this.gerarArquivosMenu(menuProcessoFinalizado, this.CIT_ECM_WEB_ANGULAR, "ProcessoFinalizado", false, true, false)); |
| 248 | 248 | this.menuService.mergeIfNotExist(menuProcessoFinalizado); |
| 249 | 249 | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
| ... | ... | @@ -19,9 +19,6 @@ import org.springframework.beans.factory.annotation.Qualifier; |
| 19 | 19 | import org.springframework.stereotype.Service; |
| 20 | 20 | import org.springframework.validation.Validator; |
| 21 | 21 | |
| 22 | -import com.googlecode.genericdao.search.ISearch; | |
| 23 | -import com.googlecode.genericdao.search.SearchResult; | |
| 24 | - | |
| 25 | 22 | import br.com.centralit.api.dao.ProcessoDao; |
| 26 | 23 | import br.com.centralit.api.model.DocumentoGed; |
| 27 | 24 | import br.com.centralit.api.model.EstruturaOrganizacionalECM; | ... | ... |
cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java
| ... | ... | @@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestParam; |
| 11 | 11 | import org.springframework.web.bind.annotation.ResponseBody; |
| 12 | 12 | |
| 13 | 13 | import br.com.centralit.api.framework.json.ViewsEcm; |
| 14 | -import br.com.centralit.api.model.PlanoClassificacao; | |
| 15 | 14 | import br.com.centralit.api.model.Processo; |
| 16 | 15 | import br.com.centralit.api.service.ProcessoService; |
| 17 | 16 | import br.com.centralit.api.service.UsuarioService; | ... | ... |
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
| ... | ... | @@ -138,7 +138,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen |
| 138 | 138 | list.add(new AcaoHistoricoAlteracaoProcesso("ENVIAR_PROCESSO", "Enviar Processo", "O processo foi enviado para a <<unidade>>.")); |
| 139 | 139 | list.add(new AcaoHistoricoAlteracaoProcesso("JUSTIFICATIVA_ACAO_PROCESSO", "Justificativa", "<<acao>> , protocolo <<protocolo>>. Justificativa: <<justificativa>>.")); |
| 140 | 140 | list.add(new AcaoHistoricoAlteracaoProcesso("ACAO_PROCESSO", "Ação", "<<acao>> , protocolo <<protocolo>>.")); |
| 141 | - list.add(new AcaoHistoricoAlteracaoProcesso("VALIDAR_PROCESSO", "Validar Processo", "O processo <<protocolo>> foi validado e seus documentos.")); | |
| 141 | + list.add(new AcaoHistoricoAlteracaoProcesso("VALIDAR_PROCESSO", "Validar Processo", "O processo <<protocolo>> e seus documentos foram validados de acordo com seu nível de acesso.")); | |
| 142 | 142 | list.add(new AcaoHistoricoAlteracaoProcesso("ATRIBUICAO_PROCESSO", "Atribuição de processo", "O processo <<protocolo>> foi atribuido para <<usuario>>.")); |
| 143 | 143 | list.add(new AcaoHistoricoAlteracaoProcesso("ASSINAR_DOCUMENTO", "Assinatura de documento", "O documento <<tipo_documento>> <<numero_documento>> foi assinado por <<usuario>>.")); |
| 144 | 144 | list.add(new AcaoHistoricoAlteracaoProcesso("ATUALIZAR_ANDAMENTO_PROCESSO", "Atualização de Andamento do Processo", "Situação do processo alterada para <<situacao>>.")); |
| ... | ... | @@ -298,7 +298,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen |
| 298 | 298 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOVOPROCESSO", " Novo Processo", dominio, modulo)); |
| 299 | 299 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPOPROTOCOLO", "Tipo de Protocolo", dominio, modulo)); |
| 300 | 300 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TOTAL_ITENS_HISTORICO", "Total de históricos", dominio, modulo)); |
| 301 | - internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VERSAO_ATUAL", "Versão Atual", dominio, modulo)); | |
| 301 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VERSAO_ATUAL", "Versão atual", dominio, modulo)); | |
| 302 | 302 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VERSAO_DOCUMENTO", "Versões do documento", dominio, modulo)); |
| 303 | 303 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VERSAO_INTERMEDIARIA", "Versão Intermediária", dominio, modulo)); |
| 304 | 304 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VERSOESDODOCUMENTO", "Versões do Documento", dominio, modulo)); |
| ... | ... | @@ -378,7 +378,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen |
| 378 | 378 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.OBJETO", "Objeto", dominio, modulo)); |
| 379 | 379 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATRIBUIDOA", "Atribuído a", dominio, modulo)); |
| 380 | 380 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.UNIDADE_GERADORA", "Unidade gestora", dominio, modulo)); |
| 381 | - internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.PRAZO_TEMPORALIDADE", "Unidade gestora", dominio, modulo)); | |
| 381 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.PRAZO_TEMPORALIDADE", "Prazo temporalidade", dominio, modulo)); | |
| 382 | 382 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.CLASSIFICACAO_ARQUIVISTICA", "Classificação Arquivística (Assunto)", dominio, modulo)); |
| 383 | 383 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.CRIADO_EM", "Criado em", dominio, modulo)); |
| 384 | 384 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_CONCLUSAO", "Data conclusão", dominio, modulo)); |
| ... | ... | @@ -414,7 +414,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen |
| 414 | 414 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.CAPTURAR", "Capturar", dominio, modulo)); |
| 415 | 415 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.HISTORICO_DE_ATRIBUICAO", "Histórico de atribuição", dominio, modulo)); |
| 416 | 416 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_ATRIBUICAO", "Data da atribuição", dominio, modulo)); |
| 417 | - internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATRIBUIDO_NOME", "Atribuído", dominio, modulo)); | |
| 417 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATRIBUIDO_NOME", "Atribuído a", dominio, modulo)); | |
| 418 | 418 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATRIBUIDO_POR", "Atribuído por", dominio, modulo)); |
| 419 | 419 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.REMOVIDO_POR", "Removido por", dominio, modulo)); |
| 420 | 420 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_REMOCAO", "Data remoção", dominio, modulo)); |
| ... | ... | @@ -556,7 +556,6 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen |
| 556 | 556 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_SEM_DOCUMENTO_ENVIO_UNIDADE", "Para enviar o processo é necessário incluir documento ao mesmo", dominio, modulo)); |
| 557 | 557 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.UNIDADE_SEM_GRUPO_PADRAO", "Não é possível enviar o processo para unidade selecionada. Motivo: Grupo padrão não contém usuário(s)!", dominio, modulo)); |
| 558 | 558 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_CONCLUIR_UNIDADE", "Concluir processo nesta unidade?", dominio, modulo)); |
| 559 | - internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_ENVIADO_SUCESSO", "Processo enviado com sucesso!", dominio, modulo)); | |
| 560 | 559 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG_HISTORICO_ECM.VALIDAR_PROCESSO", "Validar Processo", dominio, modulo)); |
| 561 | 560 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.EXISTE_PROCESSO_ABERTO", "Existe um processo aberto, deseja fechá-lo?", dominio, modulo)); |
| 562 | 561 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.ATRIBUICAO_PRIMEIRO_ACESSO", "Esté processo foi atribuido para você", dominio, modulo)); | ... | ... |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoListController.js
| ... | ... | @@ -17,7 +17,7 @@ citApp.controller('ClassificarDocumentoProcessoListController', ['$scope', 'Proc |
| 17 | 17 | fields: ['id', 'nup', 'sigiloOriginal.tipoSigilo.descricao', 'sigilo.tipoSigilo.descricao', 'prazoSigilo'], |
| 18 | 18 | filters : [{type : 'string', field : 'nup' }, |
| 19 | 19 | {type : 'string', field : 'sigiloOriginal.tipoSigilo.descricao' } , |
| 20 | - {type : 'string', field : 'sigilo.tipoSigilo.descricao', comparison : 'nn'}, | |
| 20 | + {type : 'string', field : 'sigilo.tipoSigilo.descricao'}, | |
| 21 | 21 | {type : 'date', field : 'prazoSigilo' }] |
| 22 | 22 | }; |
| 23 | 23 | ... | ... |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ProcessoFinalizadoListController.js
| ... | ... | @@ -14,7 +14,7 @@ citApp.controller('ProcessoFinalizadoListController', ['$scope', 'ProcessoReposi |
| 14 | 14 | $scope.filterCriteria = { |
| 15 | 15 | start : 1, |
| 16 | 16 | dir : 'asc', |
| 17 | - sort : 'id', | |
| 17 | + sort : 'dataConclusao', | |
| 18 | 18 | limit : 10, |
| 19 | 19 | fields: ['nup', 'tipoProcesso.nome', 'assunto.nome', 'nivelAcesso.nivelAcesso.descricao', 'dataCriacao', 'dataConclusao', 'temporalidade.dataFimTemporalidade', 'temporalidade.tipoDestinacao.descricao'], |
| 20 | 20 | filters : [{type : 'string', field : 'nup' }, | ... | ... |