Commit 63142b11d7a5d9b5f217ab4152af760079280794
1 parent
101b0870
Exists in
master
#3216 - Classificar a Informação de Documentos e Processos
Showing
28 changed files
with
803 additions
and
885 deletions
Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/DocumentoGedDao.java
@@ -120,34 +120,43 @@ public interface DocumentoGedDao extends CitGenericDAO { | @@ -120,34 +120,43 @@ public interface DocumentoGedDao extends CitGenericDAO { | ||
120 | * @return Collection<Processo> | 120 | * @return Collection<Processo> |
121 | */ | 121 | */ |
122 | Collection<DocumentoGed> findPorPlanoClassificacao(Long idPlanoClassificacao); | 122 | Collection<DocumentoGed> findPorPlanoClassificacao(Long idPlanoClassificacao); |
123 | - | 123 | + |
124 | /** | 124 | /** |
125 | * | 125 | * |
126 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
127 | - * | ||
128 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
129 | - * | 126 | + * <p> |
127 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
128 | + * </p> | ||
129 | + * | ||
130 | + * <p> | ||
131 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
132 | + * </p> | ||
133 | + * | ||
130 | * Método responsável por | 134 | * Método responsável por |
131 | - * | 135 | + * |
132 | * @author andre.silva | 136 | * @author andre.silva |
133 | - * | 137 | + * |
134 | * @param idProcesso | 138 | * @param idProcesso |
135 | * @return | 139 | * @return |
136 | */ | 140 | */ |
137 | Collection<DocumentoGed> findByProcessoSigilo(Long idProcesso); | 141 | Collection<DocumentoGed> findByProcessoSigilo(Long idProcesso); |
138 | 142 | ||
139 | /** | 143 | /** |
144 | + * <p> | ||
145 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
146 | + * </p> | ||
140 | * | 147 | * |
141 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
142 | - * | ||
143 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
144 | - * | ||
145 | - * Método responsável por | ||
146 | - * | ||
147 | - * @author andre.silva | ||
148 | - * | ||
149 | - * @param documentoGed | ||
150 | - * @return | 148 | + * <p> |
149 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
150 | + * </p> | ||
151 | + * | ||
152 | + * Método responsável por verificar se o documento é sigiloso através do id | ||
153 | + * | ||
154 | + * @author rogerio.costa | ||
155 | + * | ||
156 | + * @param id | ||
157 | + * | ||
158 | + * @return Sigilo | ||
151 | */ | 159 | */ |
152 | - Boolean isDocumentoAbertoEmOutrasUnidades(DocumentoGed documentoGed); | 160 | + Boolean isSigiloso(Long id); |
161 | + | ||
153 | } | 162 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/ProcessoDao.java
@@ -155,5 +155,23 @@ public interface ProcessoDao extends CitGenericDAO { | @@ -155,5 +155,23 @@ public interface ProcessoDao extends CitGenericDAO { | ||
155 | * @return <RT> SearchResult<RT> | 155 | * @return <RT> SearchResult<RT> |
156 | */ | 156 | */ |
157 | <RT> SearchResult<RT> searchAndCountPorSigilo(ISearch search); | 157 | <RT> SearchResult<RT> searchAndCountPorSigilo(ISearch search); |
158 | - | 158 | + |
159 | + /** | ||
160 | + * <p> | ||
161 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
162 | + * </p> | ||
163 | + * | ||
164 | + * <p> | ||
165 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
166 | + * </p> | ||
167 | + * | ||
168 | + * Método responsável por verificar se o processo é sigiloso | ||
169 | + * | ||
170 | + * @author rogerio.costa | ||
171 | + * | ||
172 | + * @param id | ||
173 | + * @return | ||
174 | + */ | ||
175 | + boolean isSigiloso(Long id); | ||
176 | + | ||
159 | } | 177 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java
@@ -2,14 +2,14 @@ package br.com.centralit.api.dao; | @@ -2,14 +2,14 @@ package br.com.centralit.api.dao; | ||
2 | 2 | ||
3 | import java.util.Collection; | 3 | import java.util.Collection; |
4 | 4 | ||
5 | -import com.googlecode.genericdao.search.ISearch; | ||
6 | -import com.googlecode.genericdao.search.SearchResult; | ||
7 | - | ||
8 | import br.com.centralit.api.model.Processo; | 5 | import br.com.centralit.api.model.Processo; |
9 | import br.com.centralit.api.model.UnidadeProcesso; | 6 | import br.com.centralit.api.model.UnidadeProcesso; |
10 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; | 7 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; |
11 | import br.com.centralit.framework.model.Usuario; | 8 | import br.com.centralit.framework.model.Usuario; |
12 | 9 | ||
10 | +import com.googlecode.genericdao.search.ISearch; | ||
11 | +import com.googlecode.genericdao.search.SearchResult; | ||
12 | + | ||
13 | /** | 13 | /** |
14 | * <p> | 14 | * <p> |
15 | * <img src="http://centralit.com.br/images/logo_central.png"> | 15 | * <img src="http://centralit.com.br/images/logo_central.png"> |
@@ -118,9 +118,10 @@ public interface UnidadeProcessoDao extends CitGenericDAO { | @@ -118,9 +118,10 @@ public interface UnidadeProcessoDao extends CitGenericDAO { | ||
118 | * @return UnidadeProcesso | 118 | * @return UnidadeProcesso |
119 | */ | 119 | */ |
120 | UnidadeProcesso obterPorUnidadeEProcesso(Long idProcesso, Long idUnidade); | 120 | UnidadeProcesso obterPorUnidadeEProcesso(Long idProcesso, Long idUnidade); |
121 | - | 121 | + |
122 | /** | 122 | /** |
123 | * Método responsável por listar processos através da unidade do usuário | 123 | * Método responsável por listar processos através da unidade do usuário |
124 | + * | ||
124 | * @author rogerio.cassimiro | 125 | * @author rogerio.cassimiro |
125 | * @param search | 126 | * @param search |
126 | * @param usuario | 127 | * @param usuario |
@@ -128,5 +129,24 @@ public interface UnidadeProcessoDao extends CitGenericDAO { | @@ -128,5 +129,24 @@ public interface UnidadeProcessoDao extends CitGenericDAO { | ||
128 | * @return <RT> SearchResult<RT> | 129 | * @return <RT> SearchResult<RT> |
129 | */ | 130 | */ |
130 | <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus); | 131 | <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus); |
131 | - | 132 | + |
133 | + /** | ||
134 | + * <p> | ||
135 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
136 | + * </p> | ||
137 | + * | ||
138 | + * <p> | ||
139 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
140 | + * </p> | ||
141 | + * | ||
142 | + * Método responsável por verificar se o processo foi enviado para outra unidade | ||
143 | + * | ||
144 | + * @author rogerio.costa | ||
145 | + * | ||
146 | + * @param idProcesso | ||
147 | + * | ||
148 | + * @return Boolean | ||
149 | + */ | ||
150 | + Boolean isProcessoEnviado(Long idProcesso); | ||
151 | + | ||
132 | } | 152 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/DocumentoGedDaoHibernate.java
@@ -16,13 +16,50 @@ import br.com.centralit.api.model.SigiloPrivilegio; | @@ -16,13 +16,50 @@ import br.com.centralit.api.model.SigiloPrivilegio; | ||
16 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | 16 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
17 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; | 17 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
18 | import br.com.centralit.framework.model.Usuario; | 18 | import br.com.centralit.framework.model.Usuario; |
19 | +import br.com.centralit.framework.util.UtilObjeto; | ||
19 | 20 | ||
20 | import com.googlecode.genericdao.search.Filter; | 21 | import com.googlecode.genericdao.search.Filter; |
21 | import com.googlecode.genericdao.search.Sort; | 22 | import com.googlecode.genericdao.search.Sort; |
22 | 23 | ||
24 | +/** | ||
25 | + * <p> | ||
26 | + * <img src="http://centralit.com.br/images/logo_central.png"> | ||
27 | + * </p> | ||
28 | + * | ||
29 | + * <p> | ||
30 | + * <b>Company: </b> Central IT - Governança Corporativa - | ||
31 | + * </p> | ||
32 | + * | ||
33 | + * <p> | ||
34 | + * <b>Title: </b> | ||
35 | + * </p> | ||
36 | + * | ||
37 | + * <p> | ||
38 | + * <b>Description: </b> | ||
39 | + * </p> | ||
40 | + * | ||
41 | + * <p> | ||
42 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
43 | + * </p> | ||
44 | + * | ||
45 | + * <p> | ||
46 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
47 | + * </p> | ||
48 | + * | ||
49 | + * @since 23/04/2016 - 16:52:47 | ||
50 | + * | ||
51 | + * @version 1.0.0 | ||
52 | + * | ||
53 | + * @author rogerio.costa | ||
54 | + * | ||
55 | + */ | ||
23 | @Repository("documentoGedDao") | 56 | @Repository("documentoGedDao") |
57 | +@SuppressWarnings("unchecked") | ||
24 | public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements DocumentoGedDao { | 58 | public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements DocumentoGedDao { |
25 | 59 | ||
60 | + /** | ||
61 | + * Responsável pela criação de novas instâncias desta classe. | ||
62 | + */ | ||
26 | public DocumentoGedDaoHibernate() { | 63 | public DocumentoGedDaoHibernate() { |
27 | 64 | ||
28 | super(DocumentoGed.class); | 65 | super(DocumentoGed.class); |
@@ -69,6 +106,7 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum | @@ -69,6 +106,7 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum | ||
69 | searchSeven.addFilterOr(Filter.equal("id", id), Filter.equal("idRaiz", id)); | 106 | searchSeven.addFilterOr(Filter.equal("id", id), Filter.equal("idRaiz", id)); |
70 | 107 | ||
71 | searchSeven.addSort(Sort.asc("versaoDocumento")); | 108 | searchSeven.addSort(Sort.asc("versaoDocumento")); |
109 | + | ||
72 | searchSeven.addFilterNotEmpty("dataInativo"); | 110 | searchSeven.addFilterNotEmpty("dataInativo"); |
73 | 111 | ||
74 | return this.search(searchSeven); | 112 | return this.search(searchSeven); |
@@ -168,25 +206,38 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum | @@ -168,25 +206,38 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum | ||
168 | } | 206 | } |
169 | 207 | ||
170 | /** | 208 | /** |
209 | + * <p> | ||
210 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
211 | + * </p> | ||
212 | + * | ||
213 | + * <p> | ||
214 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
215 | + * </p> | ||
216 | + * | ||
217 | + * Método responsável por verificar se o documento é sigiloso através do id | ||
218 | + * | ||
219 | + * @author rogerio.costa | ||
171 | * | 220 | * |
221 | + * @param id | ||
222 | + * | ||
223 | + * @return Sigilo | ||
172 | */ | 224 | */ |
173 | - @Override | ||
174 | - public Boolean isDocumentoAbertoEmOutrasUnidades(DocumentoGed documentoGed) { | 225 | + public Boolean isSigiloso(Long id) { |
175 | 226 | ||
176 | - Session session = (Session) this.em().getDelegate(); | 227 | + Criteria criteria = this.newCriteria(); |
177 | 228 | ||
178 | - Criteria criteria = session.createCriteria(persistentClass); | 229 | + criteria.setProjection(Projections.id()); |
179 | 230 | ||
180 | - criteria.setProjection(Projections.rowCount()); | 231 | + criteria.add(Restrictions.eq("id", id)); |
232 | + | ||
233 | + criteria.add(Restrictions.isNotNull("sigilo")); | ||
181 | 234 | ||
182 | - criteria.add(Restrictions.eq("id", documentoGed.getId())); | ||
183 | - criteria.add(Restrictions.ne("unidade.id", documentoGed.getUnidade().getId())); | 235 | + criteria.setMaxResults(1); |
184 | 236 | ||
185 | - return (Long) criteria.uniqueResult() > 0; | 237 | + return UtilObjeto.isReferencia(criteria.uniqueResult()); |
186 | 238 | ||
187 | } | 239 | } |
188 | 240 | ||
189 | - @SuppressWarnings("unchecked") | ||
190 | @Override | 241 | @Override |
191 | public Collection<DocumentoGed> findByProcessoSigilo(Long idProcesso) { | 242 | public Collection<DocumentoGed> findByProcessoSigilo(Long idProcesso) { |
192 | 243 | ||
@@ -206,11 +257,16 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum | @@ -206,11 +257,16 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum | ||
206 | 257 | ||
207 | criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); | 258 | criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); |
208 | 259 | ||
209 | - Session session = (Session) this.em().getDelegate(); | ||
210 | - | ||
211 | - Criteria criteria = session.createCriteria(persistentClass); | 260 | + Criteria criteria = this.newCriteria(); |
212 | 261 | ||
213 | criteria.add(Restrictions.eq("processo.id", idProcesso)); | 262 | criteria.add(Restrictions.eq("processo.id", idProcesso)); |
263 | + | ||
264 | + criteria.add(Restrictions.isNull("dataInativo")); | ||
265 | + | ||
266 | + criteria.createAlias("status", "status"); | ||
267 | + | ||
268 | + criteria.add(Restrictions.eq("status.codigo", 0L)); | ||
269 | + | ||
214 | criteria.add(Restrictions.in("sigilo.id", criteriaPrivilegio.list())); | 270 | criteria.add(Restrictions.in("sigilo.id", criteriaPrivilegio.list())); |
215 | 271 | ||
216 | return criteria.list(); | 272 | return criteria.list(); |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java
@@ -3,10 +3,16 @@ package br.com.centralit.api.dao.impl; | @@ -3,10 +3,16 @@ package br.com.centralit.api.dao.impl; | ||
3 | import java.util.Calendar; | 3 | import java.util.Calendar; |
4 | import java.util.Collection; | 4 | import java.util.Collection; |
5 | 5 | ||
6 | +import javax.persistence.FetchType; | ||
7 | + | ||
6 | import org.hibernate.Criteria; | 8 | import org.hibernate.Criteria; |
7 | import org.hibernate.Session; | 9 | import org.hibernate.Session; |
10 | +import org.hibernate.criterion.DetachedCriteria; | ||
8 | import org.hibernate.criterion.Projections; | 11 | import org.hibernate.criterion.Projections; |
9 | import org.hibernate.criterion.Restrictions; | 12 | import org.hibernate.criterion.Restrictions; |
13 | +import org.hibernate.criterion.Subqueries; | ||
14 | +import org.hibernate.sql.JoinType; | ||
15 | +import org.hibernate.transform.ResultTransformer; | ||
10 | import org.springframework.security.core.context.SecurityContextHolder; | 16 | import org.springframework.security.core.context.SecurityContextHolder; |
11 | import org.springframework.stereotype.Repository; | 17 | import org.springframework.stereotype.Repository; |
12 | 18 | ||
@@ -16,6 +22,7 @@ import br.com.centralit.api.model.SigiloPrivilegio; | @@ -16,6 +22,7 @@ import br.com.centralit.api.model.SigiloPrivilegio; | ||
16 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | 22 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
17 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; | 23 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
18 | import br.com.centralit.framework.model.Usuario; | 24 | import br.com.centralit.framework.model.Usuario; |
25 | +import br.com.centralit.framework.util.UtilObjeto; | ||
19 | 26 | ||
20 | import com.googlecode.genericdao.search.Filter; | 27 | import com.googlecode.genericdao.search.Filter; |
21 | import com.googlecode.genericdao.search.ISearch; | 28 | import com.googlecode.genericdao.search.ISearch; |
@@ -191,25 +198,53 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD | @@ -191,25 +198,53 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD | ||
191 | 198 | ||
192 | Long idUsuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId(); | 199 | Long idUsuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId(); |
193 | 200 | ||
194 | - Criteria criteriaPrivilegio = this.newCriteria(SigiloPrivilegio.class); | 201 | + Criteria criteria = this.newCriteria(); |
202 | + | ||
203 | + DetachedCriteria detachedCriteriaPrivilegio = DetachedCriteria.forClass(SigiloPrivilegio.class); | ||
204 | + | ||
205 | + detachedCriteriaPrivilegio.setProjection(Projections.property("sigilo.id")); | ||
206 | + | ||
207 | + detachedCriteriaPrivilegio.createAlias("privilegio", "privilegio"); | ||
195 | 208 | ||
196 | - criteriaPrivilegio.setProjection(Projections.property("sigilo.id")); | 209 | + detachedCriteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio"); |
197 | 210 | ||
198 | - criteriaPrivilegio.createAlias("privilegio", "privilegio"); | 211 | + detachedCriteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo")); |
199 | 212 | ||
200 | - criteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio"); | 213 | + detachedCriteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario"); |
201 | 214 | ||
202 | - criteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo")); | 215 | + detachedCriteriaPrivilegio.add(Restrictions.isNull("grupoUsuario.dataInativo")); |
203 | 216 | ||
204 | - criteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario"); | 217 | + detachedCriteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); |
205 | 218 | ||
206 | - criteriaPrivilegio.add(Restrictions.isNull("grupoUsuario.dataInativo")); | 219 | + criteria.add(Subqueries.propertyIn("sigilo.id", detachedCriteriaPrivilegio)); |
207 | 220 | ||
208 | - criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); | 221 | + criteria.createAlias("documentos", "documentos", JoinType.LEFT_OUTER_JOIN); |
222 | + | ||
223 | + criteria.createAlias("documentos.status", "statusDocumento", JoinType.LEFT_OUTER_JOIN); | ||
224 | + | ||
225 | + criteria.add(Restrictions.or(Restrictions.eq("statusDocumento.codigo", 0L), Restrictions.isNull("validado"), Restrictions.eq("validado", false))); | ||
209 | 226 | ||
210 | - search.getFilters().add(Filter.in("sigilo.id", criteriaPrivilegio.list())); | 227 | + criteria.setProjection(Projections.distinct(Projections.property("id"))); |
228 | + | ||
229 | + search.getFilters().add(Filter.in("id", criteria.list())); | ||
211 | 230 | ||
212 | return super.searchAndCount(search); | 231 | return super.searchAndCount(search); |
213 | } | 232 | } |
214 | - | 233 | + |
234 | + @Override | ||
235 | + public boolean isSigiloso(Long id) { | ||
236 | + | ||
237 | + Criteria criteria = this.newCriteria(); | ||
238 | + | ||
239 | + criteria.setProjection(Projections.id()); | ||
240 | + | ||
241 | + criteria.add(Restrictions.eq("id", id)); | ||
242 | + | ||
243 | + criteria.add(Restrictions.isNotNull("sigilo")); | ||
244 | + | ||
245 | + criteria.setMaxResults(1); | ||
246 | + | ||
247 | + return UtilObjeto.isReferencia(criteria.uniqueResult()); | ||
248 | + } | ||
249 | + | ||
215 | } | 250 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java
@@ -17,7 +17,6 @@ import br.com.centralit.api.model.SigiloPrivilegio; | @@ -17,7 +17,6 @@ import br.com.centralit.api.model.SigiloPrivilegio; | ||
17 | import br.com.centralit.api.model.UnidadeProcesso; | 17 | import br.com.centralit.api.model.UnidadeProcesso; |
18 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | 18 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
19 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; | 19 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
20 | -import br.com.centralit.framework.model.GrupoPrivilegio; | ||
21 | import br.com.centralit.framework.model.Usuario; | 20 | import br.com.centralit.framework.model.Usuario; |
22 | import br.com.centralit.framework.util.UtilColecao; | 21 | import br.com.centralit.framework.util.UtilColecao; |
23 | import br.com.centralit.framework.util.UtilObjeto; | 22 | import br.com.centralit.framework.util.UtilObjeto; |
@@ -160,6 +159,35 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un | @@ -160,6 +159,35 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un | ||
160 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | 159 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> |
161 | * </p> | 160 | * </p> |
162 | * | 161 | * |
162 | + * Método responsável por verificar se o processo foi enviado para outra unidade | ||
163 | + * | ||
164 | + * @author rogerio.costa | ||
165 | + * | ||
166 | + * @param idProcesso | ||
167 | + * | ||
168 | + * @return Boolean | ||
169 | + */ | ||
170 | + public Boolean isProcessoEnviado(Long idProcesso) { | ||
171 | + | ||
172 | + Criteria criteria = this.newCriteria(); | ||
173 | + | ||
174 | + criteria.setProjection(Projections.id()); | ||
175 | + criteria.add(Restrictions.eq("processo.id", idProcesso)); | ||
176 | + criteria.add(Restrictions.isNull("dataInativo")); | ||
177 | + | ||
178 | + return criteria.list().size() > 1; | ||
179 | + | ||
180 | + } | ||
181 | + | ||
182 | + /** | ||
183 | + * <p> | ||
184 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
185 | + * </p> | ||
186 | + * | ||
187 | + * <p> | ||
188 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
189 | + * </p> | ||
190 | + * | ||
163 | * Método responsável por obter através da unidade e processo | 191 | * Método responsável por obter através da unidade e processo |
164 | * | 192 | * |
165 | * @author rogerio.costa | 193 | * @author rogerio.costa |
@@ -193,8 +221,8 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un | @@ -193,8 +221,8 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un | ||
193 | */ | 221 | */ |
194 | @Override | 222 | @Override |
195 | public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus) { | 223 | public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus) { |
196 | - | ||
197 | - //Filtro de permissões herdadas através de grupos | 224 | + |
225 | + // Filtro de permissões herdadas através de grupos | ||
198 | DetachedCriteria detachedCriteriaPrivilegio = findSigiloUsuarioContemPermissaoAtravesDosGrupos(usuario); | 226 | DetachedCriteria detachedCriteriaPrivilegio = findSigiloUsuarioContemPermissaoAtravesDosGrupos(usuario); |
199 | 227 | ||
200 | // Filtro da credencial do processo | 228 | // Filtro da credencial do processo |
@@ -253,7 +281,7 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un | @@ -253,7 +281,7 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un | ||
253 | detachedCredencialProcesso.add(Restrictions.or(Restrictions.eq("grupoUsuario.usuario.id", usuario.getId()), Restrictions.eq("usuario.id", usuario.getId()))); | 281 | detachedCredencialProcesso.add(Restrictions.or(Restrictions.eq("grupoUsuario.usuario.id", usuario.getId()), Restrictions.eq("usuario.id", usuario.getId()))); |
254 | 282 | ||
255 | detachedCredencialProcesso.add(Restrictions.isNull("dataInativo")); | 283 | detachedCredencialProcesso.add(Restrictions.isNull("dataInativo")); |
256 | - | 284 | + |
257 | return detachedCredencialProcesso; | 285 | return detachedCredencialProcesso; |
258 | } | 286 | } |
259 | 287 |
cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java
@@ -151,6 +151,11 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | @@ -151,6 +151,11 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | ||
151 | @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) | 151 | @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) |
152 | private Dominio status; | 152 | private Dominio status; |
153 | 153 | ||
154 | + /** Atributo estado. */ | ||
155 | + @ManyToOne(fetch = FetchType.LAZY) | ||
156 | + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) | ||
157 | + private Dominio estado; | ||
158 | + | ||
154 | /** Atributo tramitarDocumento. */ | 159 | /** Atributo tramitarDocumento. */ |
155 | @ManyToOne(fetch = FetchType.LAZY) | 160 | @ManyToOne(fetch = FetchType.LAZY) |
156 | @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) | 161 | @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) |
@@ -973,4 +978,24 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | @@ -973,4 +978,24 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | ||
973 | this.tipoSuporteDocumento = tipoSuporteDocumento; | 978 | this.tipoSuporteDocumento = tipoSuporteDocumento; |
974 | } | 979 | } |
975 | 980 | ||
981 | + /** | ||
982 | + * Retorna o valor do atributo <code>estado</code> | ||
983 | + * | ||
984 | + * @return <code>Dominio</code> | ||
985 | + */ | ||
986 | + public Dominio getEstado() { | ||
987 | + | ||
988 | + return estado; | ||
989 | + } | ||
990 | + | ||
991 | + /** | ||
992 | + * Define o valor do atributo <code>estado</code>. | ||
993 | + * | ||
994 | + * @param estado | ||
995 | + */ | ||
996 | + public void setEstado(Dominio estado) { | ||
997 | + | ||
998 | + this.estado = estado; | ||
999 | + } | ||
1000 | + | ||
976 | } | 1001 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
@@ -27,6 +27,7 @@ import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; | @@ -27,6 +27,7 @@ import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; | ||
27 | import br.com.centralit.framework.json.Views; | 27 | import br.com.centralit.framework.json.Views; |
28 | import br.com.centralit.framework.model.Dominio; | 28 | import br.com.centralit.framework.model.Dominio; |
29 | import br.com.centralit.framework.util.UtilColecao; | 29 | import br.com.centralit.framework.util.UtilColecao; |
30 | +import br.com.centralit.framework.util.UtilObjeto; | ||
30 | 31 | ||
31 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | 32 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
32 | import com.fasterxml.jackson.annotation.JsonView; | 33 | import com.fasterxml.jackson.annotation.JsonView; |
@@ -70,9 +71,9 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | @@ -70,9 +71,9 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
70 | public class Processo extends PersistentObjectUnidade { | 71 | public class Processo extends PersistentObjectUnidade { |
71 | 72 | ||
72 | public static final String GRID_PROCESSO_NA_UNIDADE = "GRID_PROCESSO_NA_UNIDADE"; | 73 | public static final String GRID_PROCESSO_NA_UNIDADE = "GRID_PROCESSO_NA_UNIDADE"; |
73 | - | 74 | + |
74 | public static final String GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO = "GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO"; | 75 | public static final String GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO = "GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO"; |
75 | - | 76 | + |
76 | /** Atributo serialVersionUID. */ | 77 | /** Atributo serialVersionUID. */ |
77 | private static final long serialVersionUID = -6167513900417461697L; | 78 | private static final long serialVersionUID = -6167513900417461697L; |
78 | 79 | ||
@@ -90,7 +91,7 @@ public class Processo extends PersistentObjectUnidade { | @@ -90,7 +91,7 @@ public class Processo extends PersistentObjectUnidade { | ||
90 | @Temporal(TemporalType.TIMESTAMP) | 91 | @Temporal(TemporalType.TIMESTAMP) |
91 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 92 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
92 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 93 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
93 | - @JsonView({Views.UnidadeProcessoListView.class}) | 94 | + @JsonView({ Views.UnidadeProcessoListView.class }) |
94 | private Calendar dataReferencia; | 95 | private Calendar dataReferencia; |
95 | 96 | ||
96 | /** Atributo dataConclusao. */ | 97 | /** Atributo dataConclusao. */ |
@@ -110,15 +111,33 @@ public class Processo extends PersistentObjectUnidade { | @@ -110,15 +111,33 @@ public class Processo extends PersistentObjectUnidade { | ||
110 | @Transient | 111 | @Transient |
111 | private Long idTask; | 112 | private Long idTask; |
112 | 113 | ||
113 | - /** Atributo nup. */ | ||
114 | - @JsonView({ Views.ProcessoEdit.class}) | ||
115 | - @ManyToOne(fetch = FetchType.LAZY) | ||
116 | - private Dominio tipoProtocolo; | ||
117 | - | ||
118 | /** Atributo observacaoGeral. */ | 114 | /** Atributo observacaoGeral. */ |
119 | @JsonView({ Views.ProcessoEdit.class }) | 115 | @JsonView({ Views.ProcessoEdit.class }) |
120 | private String observacaoGeral; | 116 | private String observacaoGeral; |
121 | 117 | ||
118 | + @JsonView({ Views.ProcessoEdit.class }) | ||
119 | + private String tipoAssunto; | ||
120 | + | ||
121 | + /** Atributo idProcessInstance. */ | ||
122 | + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) | ||
123 | + private Long idProcessInstance; | ||
124 | + | ||
125 | + /** Atributo aprovado. */ | ||
126 | + @JsonView({ ViewsEcm.ProcessoList.class }) | ||
127 | + private Boolean validado; | ||
128 | + | ||
129 | + /** Atributo prazoSigilo. */ | ||
130 | + @Temporal(TemporalType.TIMESTAMP) | ||
131 | + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | ||
132 | + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | ||
133 | + @JsonView({ ViewsEcm.ProcessoList.class }) | ||
134 | + private Calendar prazoSigilo; | ||
135 | + | ||
136 | + /** Atributo nup. */ | ||
137 | + @JsonView({ Views.ProcessoEdit.class }) | ||
138 | + @ManyToOne(fetch = FetchType.LAZY) | ||
139 | + private Dominio tipoProtocolo; | ||
140 | + | ||
122 | /** Atributo status. */ | 141 | /** Atributo status. */ |
123 | @ManyToOne(fetch = FetchType.LAZY) | 142 | @ManyToOne(fetch = FetchType.LAZY) |
124 | @JsonView({ Views.ProcessoEdit.class, Views.UnidadeProcessoListView.class }) | 143 | @JsonView({ Views.ProcessoEdit.class, Views.UnidadeProcessoListView.class }) |
@@ -139,16 +158,9 @@ public class Processo extends PersistentObjectUnidade { | @@ -139,16 +158,9 @@ public class Processo extends PersistentObjectUnidade { | ||
139 | @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) | 158 | @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) |
140 | private PlanoClassificacao assunto; | 159 | private PlanoClassificacao assunto; |
141 | 160 | ||
142 | - @JsonView({ Views.ProcessoEdit.class }) | ||
143 | - private String tipoAssunto; | ||
144 | - | ||
145 | - /** Atributo idProcessInstance. */ | ||
146 | - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) | ||
147 | - private Long idProcessInstance; | ||
148 | - | ||
149 | /** Atributo nivelAcesso. */ | 161 | /** Atributo nivelAcesso. */ |
150 | @ManyToOne(fetch = FetchType.LAZY) | 162 | @ManyToOne(fetch = FetchType.LAZY) |
151 | - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) | 163 | + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) |
152 | private NivelAcessoTipoProcesso nivelAcesso; | 164 | private NivelAcessoTipoProcesso nivelAcesso; |
153 | 165 | ||
154 | @ManyToOne(fetch = FetchType.LAZY) | 166 | @ManyToOne(fetch = FetchType.LAZY) |
@@ -209,17 +221,6 @@ public class Processo extends PersistentObjectUnidade { | @@ -209,17 +221,6 @@ public class Processo extends PersistentObjectUnidade { | ||
209 | @JoinTable(name = "processo_anexado", joinColumns = { @JoinColumn(name = "processo_id") }, inverseJoinColumns = { @JoinColumn(name = "processo_anexado_id") }) | 221 | @JoinTable(name = "processo_anexado", joinColumns = { @JoinColumn(name = "processo_id") }, inverseJoinColumns = { @JoinColumn(name = "processo_anexado_id") }) |
210 | private Collection<AnexoProcesso> anexados; | 222 | private Collection<AnexoProcesso> anexados; |
211 | 223 | ||
212 | - /** Atributo prazoSigilo. */ | ||
213 | - @Temporal(TemporalType.TIMESTAMP) | ||
214 | - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | ||
215 | - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | ||
216 | - @JsonView({ ViewsEcm.ProcessoList.class }) | ||
217 | - private Calendar prazoSigilo; | ||
218 | - | ||
219 | - /** Atributo aprovado. */ | ||
220 | - @JsonView({ ViewsEcm.ProcessoList.class }) | ||
221 | - private Boolean aprovado; | ||
222 | - | ||
223 | /** Atributo credenciais. */ | 224 | /** Atributo credenciais. */ |
224 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL) | 225 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL) |
225 | private Collection<CredencialProcesso> credenciais; | 226 | private Collection<CredencialProcesso> credenciais; |
@@ -814,23 +815,29 @@ public class Processo extends PersistentObjectUnidade { | @@ -814,23 +815,29 @@ public class Processo extends PersistentObjectUnidade { | ||
814 | } | 815 | } |
815 | 816 | ||
816 | /** | 817 | /** |
817 | - * Retorna o valor do atributo <code>aprovado</code> | 818 | + * Retorna o valor do atributo <code>validado</code> |
818 | * | 819 | * |
819 | * @return <code>Boolean</code> | 820 | * @return <code>Boolean</code> |
820 | */ | 821 | */ |
821 | - public Boolean getAprovado() { | 822 | + public Boolean getValidado() { |
823 | + | ||
824 | + if (!UtilObjeto.isReferencia(this.validado)) { | ||
822 | 825 | ||
823 | - return aprovado; | 826 | + this.validado = Boolean.FALSE; |
827 | + | ||
828 | + } | ||
829 | + | ||
830 | + return validado; | ||
824 | } | 831 | } |
825 | 832 | ||
826 | /** | 833 | /** |
827 | - * Define o valor do atributo <code>aprovado</code>. | 834 | + * Define o valor do atributo <code>validado</code>. |
828 | * | 835 | * |
829 | - * @param aprovado | 836 | + * @param validado |
830 | */ | 837 | */ |
831 | - public void setAprovado(Boolean aprovado) { | 838 | + public void setValidado(Boolean validado) { |
832 | 839 | ||
833 | - this.aprovado = aprovado; | 840 | + this.validado = validado; |
834 | } | 841 | } |
835 | 842 | ||
836 | /** | 843 | /** |
@@ -854,17 +861,21 @@ public class Processo extends PersistentObjectUnidade { | @@ -854,17 +861,21 @@ public class Processo extends PersistentObjectUnidade { | ||
854 | } | 861 | } |
855 | 862 | ||
856 | /** | 863 | /** |
857 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
858 | - * | ||
859 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
860 | - * | 864 | + * <p> |
865 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
866 | + * </p> | ||
867 | + * | ||
868 | + * <p> | ||
869 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
870 | + * </p> | ||
871 | + * | ||
861 | * Verifica se o processo foi tramitado. Levando em consideração a unidadeProcesso criada apartir da criação do processo. | 872 | * Verifica se o processo foi tramitado. Levando em consideração a unidadeProcesso criada apartir da criação do processo. |
862 | - * | 873 | + * |
863 | * @author maycon.silva | 874 | * @author maycon.silva |
864 | - * | 875 | + * |
865 | * @return boolean | 876 | * @return boolean |
866 | */ | 877 | */ |
867 | - /*@JsonView({ Views.ProcessoEdit.class })*/ | 878 | + /* @JsonView({ Views.ProcessoEdit.class }) */ |
868 | public boolean isTramitado() { | 879 | public boolean isTramitado() { |
869 | 880 | ||
870 | return !UtilColecao.isVazio(this.getUnidadesProcesso()) && this.getUnidadesProcesso().size() > 1; | 881 | return !UtilColecao.isVazio(this.getUnidadesProcesso()) && this.getUnidadesProcesso().size() > 1; |
cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java
@@ -4,8 +4,10 @@ import java.util.Collection; | @@ -4,8 +4,10 @@ import java.util.Collection; | ||
4 | 4 | ||
5 | import br.com.centralit.api.model.CredencialProcesso; | 5 | import br.com.centralit.api.model.CredencialProcesso; |
6 | import br.com.centralit.api.model.Processo; | 6 | import br.com.centralit.api.model.Processo; |
7 | +import br.com.centralit.api.model.Sigilo; | ||
7 | import br.com.centralit.api.viewHelper.GrupoUsuarioVH; | 8 | import br.com.centralit.api.viewHelper.GrupoUsuarioVH; |
8 | import br.com.centralit.api.viewHelper.HerancaSistemaVH; | 9 | import br.com.centralit.api.viewHelper.HerancaSistemaVH; |
10 | +import br.com.centralit.framework.model.Grupo; | ||
9 | import br.com.centralit.framework.service.arquitetura.GenericService; | 11 | import br.com.centralit.framework.service.arquitetura.GenericService; |
10 | 12 | ||
11 | /** | 13 | /** |
@@ -200,4 +202,23 @@ public interface CredencialProcessoService extends GenericService<CredencialProc | @@ -200,4 +202,23 @@ public interface CredencialProcessoService extends GenericService<CredencialProc | ||
200 | */ | 202 | */ |
201 | boolean contemPermissaoProcesso(Long idProcesso); | 203 | boolean contemPermissaoProcesso(Long idProcesso); |
202 | 204 | ||
205 | + /** | ||
206 | + * <p> | ||
207 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
208 | + * </p> | ||
209 | + * | ||
210 | + * <p> | ||
211 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
212 | + * </p> | ||
213 | + * | ||
214 | + * Método responsável por obter grupos através do sigilo | ||
215 | + * | ||
216 | + * @author rogerio.costa | ||
217 | + * | ||
218 | + * @param sigilo | ||
219 | + * | ||
220 | + * @return Collection<Grupo> | ||
221 | + */ | ||
222 | + Collection<Grupo> findGrupoPorSigilo(Sigilo sigilo); | ||
223 | + | ||
203 | } | 224 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/DocumentoGedService.java
@@ -3,9 +3,7 @@ package br.com.centralit.api.service; | @@ -3,9 +3,7 @@ package br.com.centralit.api.service; | ||
3 | import java.util.Collection; | 3 | import java.util.Collection; |
4 | 4 | ||
5 | import br.com.centralit.api.model.DocumentoGed; | 5 | import br.com.centralit.api.model.DocumentoGed; |
6 | -import br.com.centralit.framework.model.Dominio; | ||
7 | import br.com.centralit.api.model.Processo; | 6 | import br.com.centralit.api.model.Processo; |
8 | -import br.com.centralit.api.viewHelper.AnexarProcessoVH; | ||
9 | import br.com.centralit.framework.model.Dominio; | 7 | import br.com.centralit.framework.model.Dominio; |
10 | import br.com.centralit.framework.service.arquitetura.GenericService; | 8 | import br.com.centralit.framework.service.arquitetura.GenericService; |
11 | 9 | ||
@@ -40,7 +38,7 @@ public interface DocumentoGedService extends GenericService<DocumentoGed, Long> | @@ -40,7 +38,7 @@ public interface DocumentoGedService extends GenericService<DocumentoGed, Long> | ||
40 | void saveIconeDocumento(DocumentoGed documentoGed, Dominio tipoAnexo); | 38 | void saveIconeDocumento(DocumentoGed documentoGed, Dominio tipoAnexo); |
41 | 39 | ||
42 | void anexarDocumento(Processo processoDestinoAnexo, Processo processoOrigem); | 40 | void anexarDocumento(Processo processoDestinoAnexo, Processo processoOrigem); |
43 | - | 41 | + |
44 | Collection<DocumentoGed> findByProcessoSigilo(Long idProcesso); | 42 | Collection<DocumentoGed> findByProcessoSigilo(Long idProcesso); |
45 | 43 | ||
46 | /** | 44 | /** |
@@ -61,19 +59,23 @@ public interface DocumentoGedService extends GenericService<DocumentoGed, Long> | @@ -61,19 +59,23 @@ public interface DocumentoGedService extends GenericService<DocumentoGed, Long> | ||
61 | * @return Collection<Processo> | 59 | * @return Collection<Processo> |
62 | */ | 60 | */ |
63 | Collection<DocumentoGed> findPorPlanoClassificacao(Long idPlanoClassificacao); | 61 | Collection<DocumentoGed> findPorPlanoClassificacao(Long idPlanoClassificacao); |
64 | - | 62 | + |
65 | /** | 63 | /** |
66 | * | 64 | * |
67 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
68 | - * | ||
69 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
70 | - * | 65 | + * <p> |
66 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
67 | + * </p> | ||
68 | + * | ||
69 | + * <p> | ||
70 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
71 | + * </p> | ||
72 | + * | ||
71 | * Método responsável por | 73 | * Método responsável por |
72 | - * | 74 | + * |
73 | * @author andre.silva | 75 | * @author andre.silva |
74 | - * | 76 | + * |
75 | * @param listaDocumentos | 77 | * @param listaDocumentos |
76 | */ | 78 | */ |
77 | - void atualizarSigiloDocumentos(Collection<DocumentoGed> listaDocumentos); | 79 | + Collection<DocumentoGed> atualizarSigiloDocumentos(Collection<DocumentoGed> listaDocumentos); |
78 | 80 | ||
79 | } | 81 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java
@@ -174,10 +174,30 @@ public interface UnidadeProcessoService extends GenericService<UnidadeProcesso, | @@ -174,10 +174,30 @@ public interface UnidadeProcessoService extends GenericService<UnidadeProcesso, | ||
174 | 174 | ||
175 | /** | 175 | /** |
176 | * Método responsável por listar processos através da unidade do usuário | 176 | * Método responsável por listar processos através da unidade do usuário |
177 | + * | ||
177 | * @author rogerio.cassimiro | 178 | * @author rogerio.cassimiro |
178 | * @param search | 179 | * @param search |
179 | * @return <RT> SearchResult<RT> | 180 | * @return <RT> SearchResult<RT> |
180 | */ | 181 | */ |
181 | <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search); | 182 | <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search); |
182 | - | 183 | + |
184 | + /** | ||
185 | + * <p> | ||
186 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
187 | + * </p> | ||
188 | + * | ||
189 | + * <p> | ||
190 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
191 | + * </p> | ||
192 | + * | ||
193 | + * Método responsável por verificar se o processo foi enviado para outra unidade | ||
194 | + * | ||
195 | + * @author rogerio.costa | ||
196 | + * | ||
197 | + * @param idProcesso | ||
198 | + * | ||
199 | + * @return Boolean | ||
200 | + */ | ||
201 | + Boolean isProcessoEnviado(Long idProcesso); | ||
202 | + | ||
183 | } | 203 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java
@@ -543,7 +543,7 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl<Credencial | @@ -543,7 +543,7 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl<Credencial | ||
543 | * | 543 | * |
544 | * @return Collection<Grupo> | 544 | * @return Collection<Grupo> |
545 | */ | 545 | */ |
546 | - private Collection<Grupo> findGrupoPorSigilo(Sigilo sigilo) { | 546 | + public Collection<Grupo> findGrupoPorSigilo(Sigilo sigilo) { |
547 | 547 | ||
548 | Collection<Long> idPrivilegios = this.getPrivilegios(sigilo); | 548 | Collection<Long> idPrivilegios = this.getPrivilegios(sigilo); |
549 | 549 |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java
@@ -34,6 +34,7 @@ import br.com.centralit.api.service.ProcessoService; | @@ -34,6 +34,7 @@ import br.com.centralit.api.service.ProcessoService; | ||
34 | import br.com.centralit.api.service.SigiloService; | 34 | import br.com.centralit.api.service.SigiloService; |
35 | import br.com.centralit.api.service.SolrService; | 35 | import br.com.centralit.api.service.SolrService; |
36 | import br.com.centralit.api.service.TipoDocumentoService; | 36 | import br.com.centralit.api.service.TipoDocumentoService; |
37 | +import br.com.centralit.api.service.UnidadeProcessoService; | ||
37 | import br.com.centralit.framework.exception.BusinessException; | 38 | import br.com.centralit.framework.exception.BusinessException; |
38 | import br.com.centralit.framework.exception.CodigoErro; | 39 | import br.com.centralit.framework.exception.CodigoErro; |
39 | import br.com.centralit.framework.model.Dominio; | 40 | import br.com.centralit.framework.model.Dominio; |
@@ -82,7 +83,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | @@ -82,7 +83,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | ||
82 | 83 | ||
83 | private static final String VALIDAR_NIVEL_ACESSO = "ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO"; | 84 | private static final String VALIDAR_NIVEL_ACESSO = "ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO"; |
84 | 85 | ||
85 | - private static final String VALIDAR_OUTRAS_UNIDADES = "ECM.VALIDACAO.VALIDAR_OUTRAS_UNIDADES"; | 86 | + private static final String VALIDAR_OUTRAS_UNIDADES = "ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES"; |
86 | 87 | ||
87 | /** Atributo documentoGedDao. */ | 88 | /** Atributo documentoGedDao. */ |
88 | private DocumentoGedDao documentoGedDao; | 89 | private DocumentoGedDao documentoGedDao; |
@@ -119,6 +120,10 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | @@ -119,6 +120,10 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | ||
119 | @Autowired | 120 | @Autowired |
120 | private SigiloService sigiloService; | 121 | private SigiloService sigiloService; |
121 | 122 | ||
123 | + /** Atributo unidadeProcessoService. */ | ||
124 | + @Autowired | ||
125 | + private UnidadeProcessoService unidadeProcessoService; | ||
126 | + | ||
122 | /** Atributo solrService. */ | 127 | /** Atributo solrService. */ |
123 | @Autowired | 128 | @Autowired |
124 | private SolrService solrService; | 129 | private SolrService solrService; |
@@ -269,6 +274,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | @@ -269,6 +274,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | ||
269 | if (UtilObjeto.isReferencia(entity.getSigilo()) && UtilObjeto.isReferencia(entity.getSigilo().getId())) { | 274 | if (UtilObjeto.isReferencia(entity.getSigilo()) && UtilObjeto.isReferencia(entity.getSigilo().getId())) { |
270 | 275 | ||
271 | entity.setSigilo(this.sigiloService.getReference(entity.getSigilo().getId())); | 276 | entity.setSigilo(this.sigiloService.getReference(entity.getSigilo().getId())); |
277 | + entity.setStatus(this.dominioService.findByChaveAndCodigo("statusDocumentoGed", 0L)); | ||
272 | this.atribuirPrazoPadraoDocumento(entity); | 278 | this.atribuirPrazoPadraoDocumento(entity); |
273 | } else { | 279 | } else { |
274 | 280 | ||
@@ -380,11 +386,12 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | @@ -380,11 +386,12 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | ||
380 | */ | 386 | */ |
381 | private void validarAbertosEmOutrasUnidades(DocumentoGed entity) { | 387 | private void validarAbertosEmOutrasUnidades(DocumentoGed entity) { |
382 | 388 | ||
383 | - if (UtilObjeto.isReferencia(entity.getNivelAcesso().getNivelAcesso())) { | ||
384 | - if (entity.getNivelAcesso().getNivelAcesso().getCodigo() == 0L) { | ||
385 | - if (this.documentoGedDao.isDocumentoAbertoEmOutrasUnidades(entity)) { | ||
386 | - throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_OUTRAS_UNIDADES, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
387 | - } | 389 | + // verifica se o documento está passando a ser sigiloso |
390 | + if (UtilObjeto.isReferencia(entity.getSigilo()) && !this.documentoGedDao.isSigiloso(entity.getId())) { | ||
391 | + | ||
392 | + if (this.unidadeProcessoService.isProcessoEnviado(entity.getProcesso().getId())) { | ||
393 | + | ||
394 | + throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_OUTRAS_UNIDADES, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
388 | } | 395 | } |
389 | } | 396 | } |
390 | } | 397 | } |
@@ -802,25 +809,25 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | @@ -802,25 +809,25 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl<DocumentoGed, Lo | ||
802 | * @param listaDocumentos | 809 | * @param listaDocumentos |
803 | */ | 810 | */ |
804 | @Override | 811 | @Override |
805 | - public void atualizarSigiloDocumentos(Collection<DocumentoGed> listaDocumentos) { | 812 | + public Collection<DocumentoGed> atualizarSigiloDocumentos(Collection<DocumentoGed> listaDocumentos) { |
813 | + | ||
814 | + Collection<DocumentoGed> documentosAlterados = new LinkedList<DocumentoGed>(); | ||
806 | 815 | ||
807 | if (!UtilColecao.isVazio(listaDocumentos)) { | 816 | if (!UtilColecao.isVazio(listaDocumentos)) { |
808 | for (DocumentoGed documento : listaDocumentos) { | 817 | for (DocumentoGed documento : listaDocumentos) { |
809 | DocumentoGed entity = (DocumentoGed) this.documentoGedDao.getReference(documento.getId()); | 818 | DocumentoGed entity = (DocumentoGed) this.documentoGedDao.getReference(documento.getId()); |
810 | - if (documento.getSigilo() == null) { | ||
811 | - entity.setAprovado(Boolean.TRUE); | ||
812 | - } else { | ||
813 | - entity.setSigiloOriginal(documento.getSigilo()); | ||
814 | - entity.setNivelAcessoOriginal(documento.getNivelAcesso()); | ||
815 | - entity.setSigilo(documento.getSigilo()); | ||
816 | - entity.setNivelAcesso(documento.getNivelAcesso()); | ||
817 | - } | ||
818 | - | ||
819 | - super.merge(entity); | 819 | + entity.setSigiloOriginal(documento.getSigilo()); |
820 | + entity.setNivelAcessoOriginal(documento.getNivelAcesso()); | ||
821 | + entity.setSigilo(documento.getSigilo()); | ||
822 | + entity.setNivelAcesso(documento.getNivelAcesso()); | ||
823 | + entity.setStatus(this.dominioService.findByChaveAndCodigo("statusDocumentoGed", 1L)); | ||
824 | + documentosAlterados.add(entity); | ||
820 | } | 825 | } |
821 | 826 | ||
822 | } | 827 | } |
823 | 828 | ||
829 | + return documentosAlterados; | ||
830 | + | ||
824 | } | 831 | } |
825 | 832 | ||
826 | /** | 833 | /** |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/InicializarEcmServiceImpl.java
@@ -246,7 +246,7 @@ public class InicializarEcmServiceImpl extends UtilStartup { | @@ -246,7 +246,7 @@ public class InicializarEcmServiceImpl extends UtilStartup { | ||
246 | pgProcessoDocumentoSigiloso = this.paginaService.saveIfNotExist(pgProcessoDocumentoSigiloso); | 246 | pgProcessoDocumentoSigiloso = this.paginaService.saveIfNotExist(pgProcessoDocumentoSigiloso); |
247 | 247 | ||
248 | Menu menuProcessoDocumentoSigiloso = new Menu("Processos e Documentos Sigilosos", pgProcessoDocumentoSigiloso, menuProcesso, 2, 5, null, null, null, null, modulo, "CLASSIFICAR_PROCESSO_DOCUMENTO"); | 248 | Menu menuProcessoDocumentoSigiloso = new Menu("Processos e Documentos Sigilosos", pgProcessoDocumentoSigiloso, menuProcesso, 2, 5, null, null, null, null, modulo, "CLASSIFICAR_PROCESSO_DOCUMENTO"); |
249 | - menuProcessoDocumentoSigiloso.setIncludes(this.gerarArquivosMenu(menuProcessoDocumentoSigiloso, this.CIT_ECM_WEB_ANGULAR, "ClassificarDocumentoProcesso", true, true, true)); | 249 | + menuProcessoDocumentoSigiloso.setIncludes(this.gerarArquivosMenu(menuProcessoDocumentoSigiloso, this.CIT_ECM_WEB_ANGULAR, "ClassificarDocumentoProcesso", true, true, false)); |
250 | this.menuService.mergeIfNotExist(menuProcessoDocumentoSigiloso); | 250 | this.menuService.mergeIfNotExist(menuProcessoDocumentoSigiloso); |
251 | 251 | ||
252 | Pagina pgGerenciarProcessoListUnidade = new Pagina("Processos Abertos na Unidade", "/cit-ecm-web/html/gerenciarProcesso/gerenciarProcessoListUnidade.html"); | 252 | Pagina pgGerenciarProcessoListUnidade = new Pagina("Processos Abertos na Unidade", "/cit-ecm-web/html/gerenciarProcesso/gerenciarProcessoListUnidade.html"); |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
@@ -34,6 +34,7 @@ import br.com.centralit.api.service.DocumentoGedService; | @@ -34,6 +34,7 @@ import br.com.centralit.api.service.DocumentoGedService; | ||
34 | import br.com.centralit.api.service.DominioService; | 34 | import br.com.centralit.api.service.DominioService; |
35 | import br.com.centralit.api.service.GrupoService; | 35 | import br.com.centralit.api.service.GrupoService; |
36 | import br.com.centralit.api.service.HistoricoAtribuicaoProcessoService; | 36 | import br.com.centralit.api.service.HistoricoAtribuicaoProcessoService; |
37 | +import br.com.centralit.api.service.NotificacaoService; | ||
37 | import br.com.centralit.api.service.PlanoClassificacaoService; | 38 | import br.com.centralit.api.service.PlanoClassificacaoService; |
38 | import br.com.centralit.api.service.ProcessoService; | 39 | import br.com.centralit.api.service.ProcessoService; |
39 | import br.com.centralit.api.service.SigiloService; | 40 | import br.com.centralit.api.service.SigiloService; |
@@ -46,9 +47,13 @@ import br.com.centralit.framework.esi.environment.EnvironmentOutput; | @@ -46,9 +47,13 @@ import br.com.centralit.framework.esi.environment.EnvironmentOutput; | ||
46 | import br.com.centralit.framework.esi.environment.EnvironmentVariable; | 47 | import br.com.centralit.framework.esi.environment.EnvironmentVariable; |
47 | import br.com.centralit.framework.exception.BusinessException; | 48 | import br.com.centralit.framework.exception.BusinessException; |
48 | import br.com.centralit.framework.exception.CodigoErro; | 49 | import br.com.centralit.framework.exception.CodigoErro; |
50 | +import br.com.centralit.framework.model.Dominio; | ||
49 | import br.com.centralit.framework.model.Grupo; | 51 | import br.com.centralit.framework.model.Grupo; |
52 | +import br.com.centralit.framework.model.Notificacao; | ||
53 | +import br.com.centralit.framework.model.NotificacaoGrupo; | ||
50 | import br.com.centralit.framework.model.Unidade; | 54 | import br.com.centralit.framework.model.Unidade; |
51 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | 55 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; |
56 | +import br.com.centralit.framework.util.Util; | ||
52 | import br.com.centralit.framework.util.UtilColecao; | 57 | import br.com.centralit.framework.util.UtilColecao; |
53 | import br.com.centralit.framework.util.UtilDate; | 58 | import br.com.centralit.framework.util.UtilDate; |
54 | import br.com.centralit.framework.util.UtilObjeto; | 59 | import br.com.centralit.framework.util.UtilObjeto; |
@@ -91,7 +96,8 @@ import com.googlecode.genericdao.search.SearchResult; | @@ -91,7 +96,8 @@ import com.googlecode.genericdao.search.SearchResult; | ||
91 | @Service("processoService") | 96 | @Service("processoService") |
92 | public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> implements ProcessoService { | 97 | public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> implements ProcessoService { |
93 | 98 | ||
94 | - private static final String VALIDAR_PROCESSOS_OUTRAS_UNIDADES = "ECM.VALIDACAO.VALIDAR_PROCESSOS_OUTRAS_UNIDADES"; | 99 | + /** Cosntante VALIDAR_OUTRAS_UNIDADES. */ |
100 | + private static final String VALIDAR_OUTRAS_UNIDADES = "ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES"; | ||
95 | 101 | ||
96 | private final ProcessoDao processoDao; | 102 | private final ProcessoDao processoDao; |
97 | 103 | ||
@@ -141,6 +147,10 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -141,6 +147,10 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
141 | @Autowired | 147 | @Autowired |
142 | private HttpServletRequest request; | 148 | private HttpServletRequest request; |
143 | 149 | ||
150 | + /** Atributo notificacaoService. */ | ||
151 | + @Autowired | ||
152 | + private NotificacaoService notificacaoService; | ||
153 | + | ||
144 | @Autowired | 154 | @Autowired |
145 | public ProcessoServiceImpl( final ProcessoDao processoDao, @Qualifier("processoValidator") final Validator validator ) { | 155 | public ProcessoServiceImpl( final ProcessoDao processoDao, @Qualifier("processoValidator") final Validator validator ) { |
146 | 156 | ||
@@ -153,7 +163,6 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -153,7 +163,6 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
153 | public Processo save(Processo entity) { | 163 | public Processo save(Processo entity) { |
154 | 164 | ||
155 | this.validarEntidade(entity, this.validator); | 165 | this.validarEntidade(entity, this.validator); |
156 | - | ||
157 | this.validarUnidade(); | 166 | this.validarUnidade(); |
158 | 167 | ||
159 | this.montarEntidade(entity); | 168 | this.montarEntidade(entity); |
@@ -170,22 +179,76 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -170,22 +179,76 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
170 | 179 | ||
171 | this.saveSolr(processo); | 180 | this.saveSolr(processo); |
172 | 181 | ||
173 | - if (entity.getSigilo() == null) { | 182 | + // Verifica se o processo é sigiloso, verdadeiro sejá estarta o businessProcess, falso envia uma notificação para os grupos responsáeis. |
183 | + if (!UtilObjeto.isReferencia(processo.getSigilo())) { | ||
184 | + | ||
174 | this.startBusinessProcess(processo); | 185 | this.startBusinessProcess(processo); |
186 | + } else { | ||
187 | + | ||
188 | + this.enviarNotificacaoProcessoSigiloso(processo); | ||
175 | } | 189 | } |
176 | 190 | ||
177 | return processo; | 191 | return processo; |
178 | } | 192 | } |
179 | 193 | ||
180 | /** | 194 | /** |
181 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
182 | - * | ||
183 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
184 | - * | 195 | + * <p> |
196 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
197 | + * </p> | ||
198 | + * | ||
199 | + * <p> | ||
200 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
201 | + * </p> | ||
202 | + * | ||
203 | + * Método responsável por enviar notificação para os responsável sobre a criação do processo sigiloso | ||
204 | + * | ||
205 | + * @author rogerio.costa | ||
206 | + * | ||
207 | + * @param processo | ||
208 | + */ | ||
209 | + private void enviarNotificacaoProcessoSigiloso(Processo processo) { | ||
210 | + | ||
211 | + StringBuilder sb = new StringBuilder(); | ||
212 | + | ||
213 | + sb.append("O processo ").append(processo.getNup()).append(" foi criado como ").append(processo.getSigilo().getTipoSigilo().getDescricao()); | ||
214 | + | ||
215 | + Dominio tipoNotificacao = this.dominioService.findByChaveAndCodigo("tipoNotificacao", 4L); | ||
216 | + | ||
217 | + Dominio tipoPrioridade = this.dominioService.findByChaveAndCodigo("tipoPrioridade", 2L); | ||
218 | + | ||
219 | + Notificacao notificacao = new Notificacao("Processo sigiloso", sb.toString(), tipoNotificacao, tipoPrioridade, null, null, null); | ||
220 | + | ||
221 | + Collection<Grupo> grupos = this.credencialProcessoService.findGrupoPorSigilo(processo.getSigilo()); | ||
222 | + | ||
223 | + if (!UtilColecao.isVazio(grupos)) { | ||
224 | + | ||
225 | + notificacao.setNotificacaoGrupos(new LinkedList<NotificacaoGrupo>()); | ||
226 | + | ||
227 | + for (Grupo grupo : grupos) { | ||
228 | + | ||
229 | + NotificacaoGrupo notificacaoGrupo = new NotificacaoGrupo(grupo, notificacao); | ||
230 | + | ||
231 | + notificacao.getNotificacaoGrupos().add(notificacaoGrupo); | ||
232 | + } | ||
233 | + | ||
234 | + } | ||
235 | + | ||
236 | + this.notificacaoService.save(notificacao); | ||
237 | + } | ||
238 | + | ||
239 | + /** | ||
240 | + * <p> | ||
241 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
242 | + * </p> | ||
243 | + * | ||
244 | + * <p> | ||
245 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
246 | + * </p> | ||
247 | + * | ||
185 | * Método responsável por validar a unidade vigente | 248 | * Método responsável por validar a unidade vigente |
186 | - * | 249 | + * |
187 | * @author rogerio.costa | 250 | * @author rogerio.costa |
188 | - * | 251 | + * |
189 | */ | 252 | */ |
190 | private void validarUnidade() { | 253 | private void validarUnidade() { |
191 | 254 | ||
@@ -195,14 +258,18 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -195,14 +258,18 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
195 | } | 258 | } |
196 | 259 | ||
197 | /** | 260 | /** |
198 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
199 | - * | ||
200 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
201 | - * | 261 | + * <p> |
262 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
263 | + * </p> | ||
264 | + * | ||
265 | + * <p> | ||
266 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
267 | + * </p> | ||
268 | + * | ||
202 | * Método responsável por | 269 | * Método responsável por |
203 | - * | 270 | + * |
204 | * @author rogerio.costa | 271 | * @author rogerio.costa |
205 | - * | 272 | + * |
206 | * @param processo | 273 | * @param processo |
207 | */ | 274 | */ |
208 | private void saveSolr(Processo processo) { | 275 | private void saveSolr(Processo processo) { |
@@ -242,25 +309,28 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -242,25 +309,28 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
242 | 309 | ||
243 | Processo processo = (Processo) this.processoDao.getReference(entity.getId()); | 310 | Processo processo = (Processo) this.processoDao.getReference(entity.getId()); |
244 | 311 | ||
245 | - this.validarEntidade(entity, this.validator); | 312 | + if (entity.getStatus().getCodigo() == 3L) { |
246 | 313 | ||
247 | - this.montarEntidade(processo); | 314 | + this.validarEntidade(entity, this.validator); |
248 | 315 | ||
249 | - processo.setSigiloOriginal(processo.getSigilo()); | ||
250 | - processo.setNivelAcessoOriginal(processo.getNivelAcesso()); | 316 | + this.montarEntidade(processo); |
251 | 317 | ||
252 | - processo.setSigilo(entity.getSigilo()); | ||
253 | - processo.setNivelAcesso(entity.getNivelAcesso()); | ||
254 | - processo.setAprovado(entity.getAprovado()); | 318 | + processo.setSigiloOriginal(processo.getSigilo()); |
319 | + processo.setNivelAcessoOriginal(processo.getNivelAcesso()); | ||
320 | + processo.setSigilo(entity.getSigilo()); | ||
321 | + processo.setNivelAcesso(entity.getNivelAcesso()); | ||
322 | + processo.setValidado(entity.getValidado()); | ||
323 | + processo.setStatus(this.dominioService.findByChaveAndCodigo("statusProcesso", 4L)); | ||
255 | 324 | ||
256 | - processo = super.merge(processo); | 325 | + if (UtilObjeto.isReferencia(processo.getValidado()) && processo.getValidado()) { |
257 | 326 | ||
258 | - this.documentoGedService.atualizarSigiloDocumentos(entity.getDocumentos()); | ||
259 | - | ||
260 | - if (UtilObjeto.isReferencia(processo.getAprovado()) && processo.getAprovado()) { | 327 | + this.startBusinessProcess(processo); |
328 | + } | ||
261 | 329 | ||
262 | - this.startBusinessProcess(processo); | ||
263 | } | 330 | } |
331 | + | ||
332 | + processo.setDocumentos(this.documentoGedService.atualizarSigiloDocumentos(entity.getDocumentos())); | ||
333 | + | ||
264 | return processo; | 334 | return processo; |
265 | } | 335 | } |
266 | 336 | ||
@@ -271,11 +341,9 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -271,11 +341,9 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
271 | 341 | ||
272 | this.montarEntidade(processo); | 342 | this.montarEntidade(processo); |
273 | 343 | ||
274 | - try { | ||
275 | -// this.solrService.addProcesso(processo); | ||
276 | - } catch (Exception e) { | ||
277 | - e.printStackTrace(); | ||
278 | - } | 344 | + // this.saveSolr(processo); |
345 | + | ||
346 | + this.validarAbertosEmOutrasUnidades(processo); | ||
279 | 347 | ||
280 | return super.merge(processo); | 348 | return super.merge(processo); |
281 | } | 349 | } |
@@ -426,9 +494,18 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -426,9 +494,18 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
426 | } | 494 | } |
427 | } | 495 | } |
428 | 496 | ||
497 | + if (UtilObjeto.isReferencia(processo.getTipoProtocolo())) { | ||
498 | + | ||
499 | + processo.setTipoProtocolo(this.dominioService.findByChaveAndCodigo("tipoProtocoloNup", processo.getTipoProtocolo().getCodigo())); | ||
500 | + | ||
501 | + } | ||
502 | + | ||
429 | // Verifica se o sigilo foi selecionado | 503 | // Verifica se o sigilo foi selecionado |
430 | if (UtilObjeto.isReferencia(processo.getSigilo()) && UtilObjeto.isReferencia(processo.getSigilo().getId())) { | 504 | if (UtilObjeto.isReferencia(processo.getSigilo()) && UtilObjeto.isReferencia(processo.getSigilo().getId())) { |
431 | processo.setSigilo(this.sigiloService.getReference(processo.getSigilo().getId())); | 505 | processo.setSigilo(this.sigiloService.getReference(processo.getSigilo().getId())); |
506 | + // Processo sigiloso inicia com o status Aguardando validação. | ||
507 | + processo.setStatus(this.dominioService.findByChaveAndCodigo("statusProcesso", 3L)); | ||
508 | + | ||
432 | this.atribuirPrazoPadraoProcesso(processo); | 509 | this.atribuirPrazoPadraoProcesso(processo); |
433 | } else { | 510 | } else { |
434 | processo.setSigilo(null); | 511 | processo.setSigilo(null); |
@@ -978,15 +1055,14 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -978,15 +1055,14 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
978 | * @param entity | 1055 | * @param entity |
979 | * História de usuário #3216_CA007 | 1056 | * História de usuário #3216_CA007 |
980 | */ | 1057 | */ |
981 | - @SuppressWarnings("unused") | ||
982 | private void validarAbertosEmOutrasUnidades(Processo entity) { | 1058 | private void validarAbertosEmOutrasUnidades(Processo entity) { |
983 | 1059 | ||
984 | - if (UtilObjeto.isReferencia(entity.getNivelAcesso().getNivelAcesso())) { | ||
985 | - if (entity.getNivelAcesso().getNivelAcesso().getCodigo() == 0L) { | ||
986 | - Collection<UnidadeProcesso> listaUnidades = this.unidadeProcessoService.findProcesso(entity); | ||
987 | - if (listaUnidades != null && listaUnidades.size() > 0) { | ||
988 | - throw new BusinessException(ProcessoServiceImpl.VALIDAR_PROCESSOS_OUTRAS_UNIDADES, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
989 | - } | 1060 | + // verifica se o documento está passando a ser sigiloso |
1061 | + if (UtilObjeto.isReferencia(entity.getSigilo()) && !this.processoDao.isSigiloso(entity.getId())) { | ||
1062 | + | ||
1063 | + if (this.unidadeProcessoService.isProcessoEnviado(entity.getId())) { | ||
1064 | + | ||
1065 | + throw new BusinessException(VALIDAR_OUTRAS_UNIDADES, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
990 | } | 1066 | } |
991 | } | 1067 | } |
992 | } | 1068 | } |
@@ -1107,5 +1183,5 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | @@ -1107,5 +1183,5 @@ public class ProcessoServiceImpl extends GenericServiceImpl<Processo, Long> impl | ||
1107 | 1183 | ||
1108 | return this.processoDao.getProcessoByProtocolo(nup); | 1184 | return this.processoDao.getProcessoByProtocolo(nup); |
1109 | } | 1185 | } |
1110 | - | 1186 | + |
1111 | } | 1187 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java
@@ -105,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl<UnidadeProces | @@ -105,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl<UnidadeProces | ||
105 | /** Atributo historicoAtribuicaoProcessoService. */ | 105 | /** Atributo historicoAtribuicaoProcessoService. */ |
106 | @Autowired | 106 | @Autowired |
107 | private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService; | 107 | private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService; |
108 | - | 108 | + |
109 | /** | 109 | /** |
110 | * Responsável pela criação de novas instâncias desta classe. | 110 | * Responsável pela criação de novas instâncias desta classe. |
111 | * | 111 | * |
@@ -325,18 +325,43 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl<UnidadeProces | @@ -325,18 +325,43 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl<UnidadeProces | ||
325 | 325 | ||
326 | return this.unidadeProcessoDao.obterPorUnidadeEProcesso(idProcesso, idUnidade); | 326 | return this.unidadeProcessoDao.obterPorUnidadeEProcesso(idProcesso, idUnidade); |
327 | } | 327 | } |
328 | - | 328 | + |
329 | /** | 329 | /** |
330 | * Método responsável por listar processos através da unidade do usuário | 330 | * Método responsável por listar processos através da unidade do usuário |
331 | + * | ||
331 | * @author rogerio.cassimiro | 332 | * @author rogerio.cassimiro |
332 | * @param search | 333 | * @param search |
333 | * @return <RT> SearchResult<RT> | 334 | * @return <RT> SearchResult<RT> |
334 | */ | 335 | */ |
335 | @Override | 336 | @Override |
336 | public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search) { | 337 | public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search) { |
338 | + | ||
337 | Dominio dominioStatusProcesso = dominioService.findByChaveAndCodigo(Dominio.TIPO_STATUS_PROCESSO_ECM, Dominio.TIPO_STATUS_PROCESSO_ECM_CONCLUIDO); | 339 | Dominio dominioStatusProcesso = dominioService.findByChaveAndCodigo(Dominio.TIPO_STATUS_PROCESSO_ECM, Dominio.TIPO_STATUS_PROCESSO_ECM_CONCLUIDO); |
338 | Usuario usuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ); | 340 | Usuario usuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ); |
339 | return this.unidadeProcessoDao.searchAndCountPorUnidade(search, usuario, dominioStatusProcesso.getId()); | 341 | return this.unidadeProcessoDao.searchAndCountPorUnidade(search, usuario, dominioStatusProcesso.getId()); |
340 | } | 342 | } |
341 | - | ||
342 | -} | ||
343 | \ No newline at end of file | 343 | \ No newline at end of file |
344 | + | ||
345 | + /** | ||
346 | + * <p> | ||
347 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
348 | + * </p> | ||
349 | + * | ||
350 | + * <p> | ||
351 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
352 | + * </p> | ||
353 | + * | ||
354 | + * Método responsável por verificar se o processo foi enviado para outra unidade | ||
355 | + * | ||
356 | + * @author rogerio.costa | ||
357 | + * | ||
358 | + * @param idProcesso | ||
359 | + * | ||
360 | + * @return Boolean | ||
361 | + */ | ||
362 | + public Boolean isProcessoEnviado(Long idProcesso) { | ||
363 | + | ||
364 | + return this.unidadeProcessoDao.isProcessoEnviado(idProcesso); | ||
365 | + | ||
366 | + } | ||
367 | + | ||
368 | +} |
cit-ecm-web/src/main/java/br/com/centralit/controller/DocumentoGedController.java
@@ -16,12 +16,50 @@ import br.com.centralit.framework.controller.GenericController; | @@ -16,12 +16,50 @@ import br.com.centralit.framework.controller.GenericController; | ||
16 | import br.com.centralit.framework.json.ResponseBodyWrapper; | 16 | import br.com.centralit.framework.json.ResponseBodyWrapper; |
17 | import br.com.centralit.framework.view.ResultResponseVH; | 17 | import br.com.centralit.framework.view.ResultResponseVH; |
18 | 18 | ||
19 | +/** | ||
20 | + * <p> | ||
21 | + * <img src="http://centralit.com.br/images/logo_central.png"> | ||
22 | + * </p> | ||
23 | + * | ||
24 | + * <p> | ||
25 | + * <b>Company: </b> Central IT - Governança Corporativa - | ||
26 | + * </p> | ||
27 | + * | ||
28 | + * <p> | ||
29 | + * <b>Title: </b> | ||
30 | + * </p> | ||
31 | + * | ||
32 | + * <p> | ||
33 | + * <b>Description: </b> | ||
34 | + * </p> | ||
35 | + * | ||
36 | + * <p> | ||
37 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
38 | + * </p> | ||
39 | + * | ||
40 | + * <p> | ||
41 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
42 | + * </p> | ||
43 | + * | ||
44 | + * @since 25/04/2016 - 09:18:05 | ||
45 | + * | ||
46 | + * @version 1.0.0 | ||
47 | + * | ||
48 | + * @author rogerio.costa | ||
49 | + * | ||
50 | + */ | ||
19 | @Controller | 51 | @Controller |
20 | @RequestMapping("/rest/documentoGed") | 52 | @RequestMapping("/rest/documentoGed") |
21 | public class DocumentoGedController extends GenericController<DocumentoGed> { | 53 | public class DocumentoGedController extends GenericController<DocumentoGed> { |
22 | 54 | ||
55 | + /** Atributo documentoGedService. */ | ||
23 | private DocumentoGedService documentoGedService; | 56 | private DocumentoGedService documentoGedService; |
24 | 57 | ||
58 | + /** | ||
59 | + * Responsável pela criação de novas instâncias desta classe. | ||
60 | + * | ||
61 | + * @param documentoGedService | ||
62 | + */ | ||
25 | @Autowired | 63 | @Autowired |
26 | public DocumentoGedController( DocumentoGedService documentoGedService ) { | 64 | public DocumentoGedController( DocumentoGedService documentoGedService ) { |
27 | 65 |
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
@@ -167,9 +167,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -167,9 +167,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
167 | 167 | ||
168 | List<Dominio> list = new ArrayList<Dominio>(); | 168 | List<Dominio> list = new ArrayList<Dominio>(); |
169 | 169 | ||
170 | - list.add(new Dominio("statusDocumentoGed", "Minuta", "MINUTA", 1L)); | ||
171 | - list.add(new Dominio("statusDocumentoGed", "Original", "ORIGINAL", 2L)); | ||
172 | - list.add(new Dominio("statusDocumentoGed", "Cópia", "COPIA", 3L)); | 170 | + list.add(new Dominio("estadoDocumentoGed", "Minuta", "MINUTA", 1L)); |
171 | + list.add(new Dominio("estadoDocumentoGed", "Original", "ORIGINAL", 2L)); | ||
172 | + list.add(new Dominio("estadoDocumentoGed", "Cópia", "COPIA", 3L)); | ||
173 | 173 | ||
174 | list.add(new Dominio("tipoDestinacao", "Guardar Permanente", "GUARDAR_PERMANENTE", 1L)); | 174 | list.add(new Dominio("tipoDestinacao", "Guardar Permanente", "GUARDAR_PERMANENTE", 1L)); |
175 | list.add(new Dominio("tipoDestinacao", "Eliminação", "ELIMINAR", 2L)); | 175 | list.add(new Dominio("tipoDestinacao", "Eliminação", "ELIMINAR", 2L)); |
@@ -203,6 +203,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -203,6 +203,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
203 | 203 | ||
204 | list.add(new Dominio("statusProcesso", "Concluído", "CONCLUIDO", 1L)); | 204 | list.add(new Dominio("statusProcesso", "Concluído", "CONCLUIDO", 1L)); |
205 | list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L)); | 205 | list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L)); |
206 | + list.add(new Dominio("statusProcesso", "Aguardando Validação", "AGUARDANDO_VALIDACAO", 3L)); | ||
207 | + list.add(new Dominio("statusProcesso", "Validado", "VALIDADO", 4L)); | ||
208 | + | ||
209 | + list.add(new Dominio("statusDocumentoGed", "Aguardando Validação", "AGUARDANDO_VALIDACAO", 0L)); | ||
210 | + list.add(new Dominio("statusDocumentoGed", "Validado", "VALIDADO", 1L)); | ||
206 | 211 | ||
207 | list.add(new Dominio("filtroPesquisa", "Ambos", "AMBOS", 0L)); | 212 | list.add(new Dominio("filtroPesquisa", "Ambos", "AMBOS", 0L)); |
208 | list.add(new Dominio("filtroPesquisa", "Processo", "PROCESSO", 1L)); | 213 | list.add(new Dominio("filtroPesquisa", "Processo", "PROCESSO", 1L)); |
@@ -439,7 +444,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -439,7 +444,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
439 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.UNIDADE_GESTORA ", "Unidade gestora", dominio, modulo)); | 444 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.UNIDADE_GESTORA ", "Unidade gestora", dominio, modulo)); |
440 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_CRIACAO ", "Data criação", dominio, modulo)); | 445 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_CRIACAO ", "Data criação", dominio, modulo)); |
441 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.PLACEHOLDER_PESQUISA ", "Digite o Nup, tipo de processo, tipo de documento, conteúdo do documento, autor, assunto, destinatário...", dominio, modulo)); | 446 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.PLACEHOLDER_PESQUISA ", "Digite o Nup, tipo de processo, tipo de documento, conteúdo do documento, autor, assunto, destinatário...", dominio, modulo)); |
442 | - internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATE ", "Até", dominio, modulo)); | 447 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATE", "Até", dominio, modulo)); |
448 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VALIDADO", "Validado", dominio, modulo)); | ||
449 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ESTADO", "Estado", dominio, modulo)); | ||
450 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VALIDAR", "Validar", dominio, modulo)); | ||
451 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NAO_CONTEM_DOCUMENTOS", "Não contém documentos", dominio, modulo)); | ||
443 | 452 | ||
444 | } | 453 | } |
445 | 454 | ||
@@ -473,6 +482,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -473,6 +482,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
473 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.REMOCAO_COM_VINCULO", "Não é possível excluir pois o mesmo encontra-se em uso por outro cadastro no sistema!", dominio, modulo)); | 482 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.REMOCAO_COM_VINCULO", "Não é possível excluir pois o mesmo encontra-se em uso por outro cadastro no sistema!", dominio, modulo)); |
474 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.PERMISSAO_OPERACAO", "Você não tem permissão para executar a operação.", dominio, modulo)); | 483 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.PERMISSAO_OPERACAO", "Você não tem permissão para executar a operação.", dominio, modulo)); |
475 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE", "O grupo selecionado como padrão está sendo usado como grupo padrão da unidade ", dominio, modulo)); | 484 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE", "O grupo selecionado como padrão está sendo usado como grupo padrão da unidade ", dominio, modulo)); |
485 | + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES", "Não é possível alterar o nível de acesso para sigiloso, pois o processo foi enviado para outra unidade.", dominio, modulo)); | ||
486 | + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO", "Não é possível incluir documento com o nível de acesso menor que o do processo.", dominio, modulo)); | ||
476 | 487 | ||
477 | } | 488 | } |
478 | 489 | ||
@@ -550,5 +561,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -550,5 +561,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
550 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_SOBRESTADA_SUCESSO", "Tarefa sobrestada com sucesso!", dominio, modulo)); | 561 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_SOBRESTADA_SUCESSO", "Tarefa sobrestada com sucesso!", dominio, modulo)); |
551 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_REATIVACAO_TAREFA", "Confirma reativação da tarefa?", dominio, modulo)); | 562 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_REATIVACAO_TAREFA", "Confirma reativação da tarefa?", dominio, modulo)); |
552 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo)); | 563 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo)); |
564 | + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.VALIDADO", "Validado com sucesso!", dominio, modulo)); | ||
565 | + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.SELECIONE_UM_ITEM_PARA_VALIDACAO", "Selecione um item para validar.", dominio, modulo)); | ||
553 | } | 566 | } |
554 | } | 567 | } |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'ProcessoRepository', '$translate', '$timeout', 'DominioRepository', '$compile', '$injector', 'DocumentoGedRepository', 'appService', 'NivelAcessoTipoProcessoRepository', 'HipoteseLegalRepository', 'NivelAcessoTipoDocumentoRepository', 'HistoricoAlteracaoProcessoRepository', 'SigiloRepository', function ClassificarDocumentoProcessoController($scope, ProcessoRepository, $translate, $timeout, DominioRepository, $compile, $injector, DocumentoGedRepository, appService, NivelAcessoTipoProcessoRepository, HipoteseLegalRepository, NivelAcessoTipoDocumentoRepository, HistoricoAlteracaoProcessoRepository, SigiloRepository) { | 3 | citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'ProcessoRepository', '$translate', '$timeout', 'DominioRepository', '$compile', '$injector', 'DocumentoGedRepository', 'appService', 'NivelAcessoTipoProcessoRepository', 'HipoteseLegalRepository', 'NivelAcessoTipoDocumentoRepository', 'HistoricoAlteracaoProcessoRepository', 'SigiloRepository', function ClassificarDocumentoProcessoController($scope, ProcessoRepository, $translate, $timeout, DominioRepository, $compile, $injector, DocumentoGedRepository, appService, NivelAcessoTipoProcessoRepository, HipoteseLegalRepository, NivelAcessoTipoDocumentoRepository, HistoricoAlteracaoProcessoRepository, SigiloRepository) { |
4 | - $scope.$showAdvancedFilters = false; | ||
5 | 4 | ||
6 | - $scope.totalPages = 10; | ||
7 | - $scope.totalItens = 0; | ||
8 | - $scope.limit = 10; | ||
9 | - $scope.processos = []; | ||
10 | - $scope.businessProcess = null; | ||
11 | - $scope.indexProcessoNegocio = null; | ||
12 | - | ||
13 | - $scope.idPainelItem = 0; | ||
14 | - | ||
15 | - $scope.tabAtual = 0; | ||
16 | - | ||
17 | - $scope.aprovado = null; | ||
18 | - | ||
19 | - $scope.tabs = [ {active: true} | ||
20 | - ,{active: false} | ||
21 | - ]; | ||
22 | - | ||
23 | - $scope.showTaskTab = true; | ||
24 | - $scope.init = function(showTaskTab) { | ||
25 | - $scope.showTaskTab = showTaskTab; | ||
26 | - }; | ||
27 | - | ||
28 | - $scope.setCurrentTab = function(tab) { | ||
29 | - $scope.tabAtual = tab; | ||
30 | - for (var i = 0; i < $scope.tabs.length; i++) { | ||
31 | - $scope.tabs[i].active = i == tab; | ||
32 | - } | ||
33 | - }; | ||
34 | - | ||
35 | - $scope.resetForm = function() { | ||
36 | - angular.element("#editProcessoEcm").scope().resetForm(); | ||
37 | - }; | ||
38 | - | ||
39 | - $scope.headers = [{title : $translate.instant('ECM.LABEL.PROTOCOLO'), value : 'nup' }, | ||
40 | - {title : $translate.instant('ECM.LABEL.NIVEL_FINAL'), value : 'nivelAcesso.nivelAcesso.descricao'} , | ||
41 | - {title : $translate.instant('ECM.LABEL.PROPOSTA'), value : 'sigilo.tipoSigilo.descricao'}, | ||
42 | - {title : $translate.instant('ECM.LABEL.PRAZO_SIGILO'), value : 'prazoSigilo', filter : 'dateBR' }]; | ||
43 | - | ||
44 | - $scope.filterCriteria = { | ||
45 | - start : 1, | ||
46 | - dir : 'asc', | ||
47 | - sort : 'id', | ||
48 | - limit : 10, | ||
49 | - fields: ['id', 'nup', 'nivelAcesso.nivelAcesso.descricao', 'sigilo.tipoSigilo.descricao', 'nivelAcesso.nivelAcesso.descricao', 'prazoSigilo'], | ||
50 | - filters : [{type : 'string', field : 'nup' }, | ||
51 | - {type : 'string', field : 'nivelAcesso.nivelAcesso.descricao' } , | ||
52 | - {type : 'string', field : 'sigilo.tipoSigilo.descricao', comparison : 'nn'}, | ||
53 | - {type : 'date', field : 'prazoSigilo' }] | ||
54 | - }; | ||
55 | - | ||
56 | - // Will be called when filtering the grid, will reset the page number to one | ||
57 | - $scope.filterResult = function() { | ||
58 | - | ||
59 | - //Timeout adicionado para que os filtros de pesquisa funcionem | ||
60 | - $timeout(function(){ | ||
61 | - $scope.filterCriteria.start = 1; | ||
62 | - $scope.fetchResult().then(function() { | ||
63 | - // The request fires correctly but sometimes the ui doesn't update, | ||
64 | - // that's a fix | ||
65 | - $scope.filterCriteria.start = 1; | ||
66 | - }); | ||
67 | - | ||
68 | - }); | ||
69 | - }; | ||
70 | - | ||
71 | - // call back function that we passed to our custom directive sortBy, will be | ||
72 | - // called when clicking on any field to sort | ||
73 | - $scope.onSort = function(sortedBy, sortDir) { | ||
74 | - $scope.filterCriteria.dir = sortDir; | ||
75 | - $scope.filterCriteria.sort = sortedBy; | ||
76 | - $scope.filterCriteria.start = 1; | ||
77 | - $scope.fetchResult().then(function() { | ||
78 | - // The request fires correctly but sometimes the ui doesn't update, | ||
79 | - // that's a fix | ||
80 | - $scope.filterCriteria.start = 1; | ||
81 | - }); | ||
82 | - }; | ||
83 | - | ||
84 | - | ||
85 | - // RECUPERA LISTA DE TAREFAS E SETA RESULTADO NA GRID | ||
86 | - $scope.fetchResult = function(page) { | ||
87 | - | ||
88 | - $scope.setCurrentTab(0); | ||
89 | - $scope.setLoading(true); | ||
90 | - | ||
91 | - return ProcessoRepository.getListPage($scope.filterCriteria).then(function(result) { | ||
92 | - $scope.processos = result.originalElement.objects; | ||
93 | - $scope.totalPages = result.originalElement.totalPages; | ||
94 | - $scope.totalItens = result.originalElement.totalItens; | ||
95 | - $scope.setLoading(false); | ||
96 | - }, function() { | ||
97 | - $scope.totalPages = 0; | ||
98 | - $scope.totalItens = 0; | ||
99 | - $scope.setLoading(false); | ||
100 | - }); | ||
101 | - }; | 5 | + //Iniciar classificação |
6 | + $scope.iniciar = function(processo){ | ||
7 | + | ||
8 | + $scope.setLoading(true); | ||
9 | + | ||
10 | + $scope.processoValidacao = processo; | ||
11 | + | ||
12 | + $scope.validado = $scope.processoValidacao.validado; | ||
13 | + | ||
14 | + $scope.contemDocumentoParaValidar = $.grep($scope.processoValidacao.documentos, function(e){ return e.status.codigo == 0; })[0] != null; | ||
15 | + | ||
16 | + $scope.findPorIdTipoProcesso(processo.tipoProcesso.id); | ||
17 | + | ||
18 | + if($scope.processoValidacao.documentos){ | ||
19 | + | ||
20 | + angular.forEach($scope.processoValidacao.documentos, function (item) { | ||
21 | + | ||
22 | + $scope.findNivelAcessoTipoDocumento(item); | ||
23 | + | ||
24 | + }); | ||
25 | + }; | ||
26 | + | ||
27 | + $scope.setLoading(false); | ||
28 | + | ||
29 | + }; | ||
102 | 30 | ||
103 | $scope.removerAtributos = function(){ | 31 | $scope.removerAtributos = function(){ |
104 | - angular.forEach($scope.processo.documentos, function (item) { | 32 | + angular.forEach($scope.processoValidacao.documentos, function (item) { |
105 | delete item.autorUserName; | 33 | delete item.autorUserName; |
106 | delete item.unidadeNome; | 34 | delete item.unidadeNome; |
107 | delete item.documentoVersao; | 35 | delete item.documentoVersao; |
108 | delete item.originalElement; | 36 | delete item.originalElement; |
37 | + delete item.nivelAcessoList; | ||
109 | 38 | ||
110 | if(item.nivelAcesso != undefined && item.nivelAcesso.sigilos != null){ | 39 | if(item.nivelAcesso != undefined && item.nivelAcesso.sigilos != null){ |
111 | angular.forEach(item.nivelAcesso.sigilos, function (item) { | 40 | angular.forEach(item.nivelAcesso.sigilos, function (item) { |
@@ -132,22 +61,19 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo | @@ -132,22 +61,19 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo | ||
132 | if($scope.classificarDocumentoProcessoForm.$valid){ | 61 | if($scope.classificarDocumentoProcessoForm.$valid){ |
133 | 62 | ||
134 | $scope.setLoadingSalva(true); | 63 | $scope.setLoadingSalva(true); |
135 | - | ||
136 | $scope.removerAtributos(); | 64 | $scope.removerAtributos(); |
137 | - | ||
138 | - $scope.processo.aprovado = $scope.aprovado; | ||
139 | - ProcessoRepository.atualizarSigiloProcesso($scope.processo).then(function(result) { | ||
140 | - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); | 65 | + $scope.processoValidacao.validado = $scope.validado; |
66 | + ProcessoRepository.atualizarSigiloProcesso($scope.processoValidacao).then(function(result) { | ||
141 | $scope.historicoAlteracao(result.originalElement); | 67 | $scope.historicoAlteracao(result.originalElement); |
142 | - ProcessoRepository.get($scope.processo.id).then(function(result){ | ||
143 | - $scope.processo = result.originalElement; | ||
144 | - $scope.aprovado = result.originalElement.aprovado; | ||
145 | - $scope.carregarListaDocumentos($scope.processo.id); | ||
146 | - }); | ||
147 | $scope.classificarDocumentoProcessoForm.$submitted = false; | 68 | $scope.classificarDocumentoProcessoForm.$submitted = false; |
148 | $scope.atualizaProcesso(); | 69 | $scope.atualizaProcesso(); |
70 | + $scope.showAlert("success", $translate.instant('ECM.MSG.VALIDADO')); | ||
71 | + $scope.setLoading(false); | ||
72 | + | ||
73 | + $timeout(function(){ | ||
74 | + $scope.$parent.$parent.closeWidget(); | ||
75 | + }); | ||
149 | }); | 76 | }); |
150 | - $scope.setLoading(false); | ||
151 | }else{ | 77 | }else{ |
152 | //Mensagem de erro de campos obrigatorios não preenchidos | 78 | //Mensagem de erro de campos obrigatorios não preenchidos |
153 | $scope.showAlert('error', $translate.instant('MSG.MN001'), " ", false); | 79 | $scope.showAlert('error', $translate.instant('MSG.MN001'), " ", false); |
@@ -173,70 +99,44 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo | @@ -173,70 +99,44 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo | ||
173 | $scope.closeWidget = function() { | 99 | $scope.closeWidget = function() { |
174 | angular.element("#searchGerenciarProcesso").scope().closeWidget(); | 100 | angular.element("#searchGerenciarProcesso").scope().closeWidget(); |
175 | }; | 101 | }; |
176 | - | ||
177 | - $scope.initializeNivelAcessoDocumento = function(){ | ||
178 | - $scope.nivelAcessoTipoDocumentoList = []; | ||
179 | - NivelAcessoTipoDocumentoRepository.findAll().then(function(result) { | ||
180 | - $scope.nivelAcessoTipoDocumentoList = result; | ||
181 | - }); | ||
182 | - }; | ||
183 | - | ||
184 | - | ||
185 | - $scope.initializeSigiloDocumento = function(){ | ||
186 | - $scope.sigiloDocumentoList = [ ]; | ||
187 | - SigiloRepository.getList().then(function(result) { | ||
188 | - $scope.sigilos = result; | ||
189 | - }); | ||
190 | - }; | ||
191 | 102 | ||
192 | - $scope.iniciar = function(processo){ | 103 | + //Listar nivelAcessoTipoDocumento |
104 | + $scope.findNivelAcessoTipoDocumento = function(documento){ | ||
193 | 105 | ||
194 | - ProcessoRepository.get(processo.id).then(function(result) { | ||
195 | - $scope.processo = result.originalElement; | ||
196 | - $scope.aprovado = result.originalElement.aprovado; | ||
197 | - $scope.carregarListaDocumentos(processo.id); | ||
198 | - }); | ||
199 | - | ||
200 | - $scope.findNivelPorIdProcesso(processo.tipoProcesso.id); | ||
201 | - | 106 | + documento.nivelAcessoList = []; |
107 | + | ||
108 | + return NivelAcessoTipoDocumentoRepository.findPorIdTipoDocumento(documento.tipoDocumento.id).then(function(result) { | ||
109 | + | ||
110 | + angular.forEach(result, function (nivelAcesso) { | ||
111 | + //seta o originalElement do result | ||
112 | + documento.nivelAcessoList.push(nivelAcesso.originalElement); | ||
113 | + //substitui o nivelAcesso do documento | ||
114 | + if(documento.nivelAcesso.id === nivelAcesso.originalElement.id){ | ||
115 | + | ||
116 | + documento.nivelAcesso = nivelAcesso.originalElement; | ||
117 | + | ||
118 | + } | ||
119 | + | ||
120 | + }); | ||
121 | + }); | ||
202 | }; | 122 | }; |
203 | 123 | ||
204 | - $scope.carregarListaDocumentos = function(idProcesso){ | ||
205 | - $scope.processo.documentos = []; | ||
206 | - DocumentoGedRepository.findByProcessoSigilo(idProcesso).then(function(result) { | ||
207 | - angular.forEach(result, function(item) { | ||
208 | - | ||
209 | - var documento = item.originalElement; | ||
210 | - $scope.processo.documentos.push(documento); | ||
211 | - | ||
212 | - }); | ||
213 | - }); | ||
214 | - } ; | ||
215 | - | ||
216 | - | ||
217 | - $scope.findNivelPorIdProcesso = function(idTipoProcesso){ | 124 | + $scope.limparSigilo = function(documento){ |
125 | + | ||
126 | + $timeout(function(){ | ||
127 | + if(documento.nivelAcesso.nivelAcesso.codigo != 0){ | ||
128 | + | ||
129 | + documento.sigilo = null; | ||
130 | + | ||
131 | + } | ||
132 | + }); | ||
133 | + }; | ||
134 | + | ||
135 | + $scope.findPorIdTipoProcesso = function(idTipoProcesso){ | ||
218 | 136 | ||
219 | NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(idTipoProcesso).then(function(result) { | 137 | NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(idTipoProcesso).then(function(result) { |
220 | $scope.nivelAcessoList = result; | 138 | $scope.nivelAcessoList = result; |
221 | }); | 139 | }); |
222 | }; | 140 | }; |
223 | 141 | ||
224 | - | ||
225 | - // Consulta entidade e mostra no formulario | ||
226 | - $scope.getProcesso = function(processo){ | ||
227 | - $scope.setLoadingGet(true); | ||
228 | - | ||
229 | - ProcessoRepository.get(processo.id).then(function(result) { | ||
230 | - $scope.processo = result.originalElement; | ||
231 | - $scope.aprovado = result.originalElement.aprovado; | ||
232 | - $scope.setLoading(false); | ||
233 | - $scope.constroiRelacionamentoTipoProcesso($scope.processo.tipoProcesso); | ||
234 | - | ||
235 | - }); | ||
236 | - }; | ||
237 | - | ||
238 | - | ||
239 | - $scope.initializeNivelAcessoDocumento(); | ||
240 | - $scope.initializeSigiloDocumento(); | ||
241 | - $scope.fetchResult(); | ||
242 | }]); | 142 | }]); |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoListController.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | citApp.controller('ClassificarDocumentoProcessoListController', ['$scope', 'ProcessoRepository', '$translate', '$timeout', 'DominioRepository', '$compile', '$injector', 'DocumentoGedRepository', 'appService', function ClassificarDocumentoProcessoListController($scope, ProcessoRepository, $translate, $timeout, DominioRepository, $compile, $injector, DocumentoGedRepository, appService) { | 3 | citApp.controller('ClassificarDocumentoProcessoListController', ['$scope', 'ProcessoRepository', '$translate', '$timeout', 'DominioRepository', '$compile', '$injector', 'DocumentoGedRepository', 'appService', function ClassificarDocumentoProcessoListController($scope, ProcessoRepository, $translate, $timeout, DominioRepository, $compile, $injector, DocumentoGedRepository, appService) { |
4 | - $scope.$showAdvancedFilters = false; | ||
5 | 4 | ||
6 | - $scope.totalPages = 10; | ||
7 | - $scope.totalItens = 0; | ||
8 | - $scope.limit = 10; | ||
9 | - $scope.processos = []; | ||
10 | - $scope.businessProcess = null; | ||
11 | - $scope.indexProcessoNegocio = null; | ||
12 | - | ||
13 | - $scope.idPainelItem = 0; | ||
14 | - | ||
15 | - $scope.tabAtual = 0; | ||
16 | - | ||
17 | - $scope.tabs = [ {active: true} | ||
18 | - ,{active: false} | ||
19 | - ]; | ||
20 | - | ||
21 | - $scope.showTaskTab = true; | ||
22 | - $scope.init = function(showTaskTab) { | ||
23 | - $scope.showTaskTab = showTaskTab; | ||
24 | - }; | ||
25 | - | ||
26 | - $scope.setCurrentTab = function(tab) { | ||
27 | - $scope.tabAtual = tab; | ||
28 | - for (var i = 0; i < $scope.tabs.length; i++) { | ||
29 | - $scope.tabs[i].active = i == tab; | ||
30 | - } | ||
31 | - }; | ||
32 | - | ||
33 | - $scope.resetForm = function() { | ||
34 | - angular.element("#editProcessoEcm").scope().resetForm(); | ||
35 | - }; | ||
36 | - | ||
37 | - $scope.headers = [{title : $translate.instant('LABEL.PROTOCOLO'), value : 'nup' }, | ||
38 | - {title : $translate.instant('LABEL.PROPOSTA'), value : 'sigiloOriginal.tipoSigilo.descricao'}, | ||
39 | - {title : $translate.instant('LABEL.NIVEL_FINAL'), value : 'sigilo.tipoSigilo.descricao'} , | ||
40 | - {title : $translate.instant('LABEL.PRAZO_SIGILO'), value : 'prazoSigilo', filter : 'dateBR' }]; | 5 | + |
6 | + $scope.headers = [{title : $translate.instant('ECM.LABEL.PROTOCOLO'), value : 'nup' }, | ||
7 | + {title : $translate.instant('ECM.LABEL.PROPOSTA'), value : 'sigiloOriginal.tipoSigilo.descricao'}, | ||
8 | + {title : $translate.instant('ECM.LABEL.NIVEL_FINAL'), value : 'sigilo.tipoSigilo.descricao'} , | ||
9 | + {title : $translate.instant('ECM.LABEL.PRAZO_SIGILO'), value : 'prazoSigilo', filter : 'dateBR' }]; | ||
41 | 10 | ||
42 | $scope.filterCriteria = { | 11 | $scope.filterCriteria = { |
43 | start : 1, | 12 | start : 1, |
@@ -52,115 +21,68 @@ citApp.controller('ClassificarDocumentoProcessoListController', ['$scope', 'Proc | @@ -52,115 +21,68 @@ citApp.controller('ClassificarDocumentoProcessoListController', ['$scope', 'Proc | ||
52 | {type : 'date', field : 'prazoSigilo' }] | 21 | {type : 'date', field : 'prazoSigilo' }] |
53 | }; | 22 | }; |
54 | 23 | ||
55 | - // Will be called when filtering the grid, will reset the page number to one | ||
56 | - $scope.filterResult = function() { | ||
57 | - | ||
58 | - //Timeout adicionado para que os filtros de pesquisa funcionem | ||
59 | - $timeout(function(){ | ||
60 | - $scope.filterCriteria.start = 1; | ||
61 | - $scope.fetchResult().then(function() { | ||
62 | - // The request fires correctly but sometimes the ui doesn't update, | ||
63 | - // that's a fix | ||
64 | - $scope.filterCriteria.start = 1; | ||
65 | - }); | ||
66 | - | ||
67 | - }); | ||
68 | - }; | ||
69 | - | ||
70 | - // call back function that we passed to our custom directive sortBy, will be | ||
71 | - // called when clicking on any field to sort | ||
72 | - $scope.onSort = function(sortedBy, sortDir) { | ||
73 | - $scope.filterCriteria.dir = sortDir; | ||
74 | - $scope.filterCriteria.sort = sortedBy; | ||
75 | - $scope.filterCriteria.start = 1; | ||
76 | - $scope.fetchResult().then(function() { | ||
77 | - // The request fires correctly but sometimes the ui doesn't update, | ||
78 | - // that's a fix | ||
79 | - $scope.filterCriteria.start = 1; | ||
80 | - }); | ||
81 | - }; | ||
82 | - | ||
83 | - | ||
84 | - // RECUPERA LISTA DE TAREFAS E SETA RESULTADO NA GRID | ||
85 | - $scope.fetchResult = function(page) { | ||
86 | - | ||
87 | - $scope.setCurrentTab(0); | ||
88 | - $scope.setLoading(true); | ||
89 | - | ||
90 | - return ProcessoRepository.getListPage($scope.filterCriteria).then(function(result) { | ||
91 | - $scope.processos = result.originalElement.objects; | ||
92 | - $scope.totalPages = result.originalElement.totalPages; | ||
93 | - $scope.totalItens = result.originalElement.totalItens; | ||
94 | - $scope.setLoading(false); | ||
95 | - }, function() { | ||
96 | - $scope.totalPages = 0; | ||
97 | - $scope.totalItens = 0; | ||
98 | - $scope.setLoading(false); | ||
99 | - }); | 24 | + $scope.atualizarGrid = function() { |
25 | + $scope.filterResult(); | ||
100 | }; | 26 | }; |
101 | - | 27 | + |
102 | 28 | ||
103 | // ABRI Processo SELECIONADA | 29 | // ABRI Processo SELECIONADA |
104 | - $scope.abrirVisualizar = function(processo){ | ||
105 | - | ||
106 | - var pagina = '/cit-ecm-web/html/gerenciarProcesso/gerenciarProcesso.html'; | 30 | + $scope.abreValidar = function(){ |
107 | 31 | ||
108 | - ProcessoRepository.get(processo.id).then(function(result){ | ||
109 | - processo = result.originalElement; | ||
110 | - DocumentoGedRepository.findByProcessoSigilo(processo.id).then(function(result) { | ||
111 | - processo.documentos = result; | ||
112 | - }); | ||
113 | - }); | ||
114 | - | ||
115 | - if (appService.existsWorkspace(pagina)) { | ||
116 | - $scope.$openModalConfirm({message:$translate.instant('ECM.MSG.EXISTE_PROCESSO_ABERTO'), callback: function(){ | ||
117 | - $scope.$modalConfirmInstance.dismiss('cancel'); | ||
118 | - $scope.setLoading(true); | 32 | + if($scope.modelSelecionado && $scope.modelSelecionado.id){ |
33 | + | ||
34 | + var pagina = '/cit-ecm-web/html/gerenciarProcesso/gerenciarProcesso.html'; | ||
35 | + | ||
36 | + if (appService.existsWorkspace(pagina)) { | ||
37 | + $scope.$openModalConfirm({message:$translate.instant('ECM.MSG.EXISTE_PROCESSO_ABERTO'), callback: function(){ | ||
38 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
39 | + $scope.setLoading(true); | ||
40 | + $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.PROCESSO'), pagina, 'mod-orange'); | ||
41 | + $timeout(function() { | ||
42 | + angular.element('#searchGerenciarProcesso').scope().getProcesso($scope.modelSelecionado); | ||
43 | + | ||
44 | + }, 100); | ||
45 | + $scope.setLoading(false); | ||
46 | + }}); | ||
47 | + }else{ | ||
119 | $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.PROCESSO'), pagina, 'mod-orange'); | 48 | $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.PROCESSO'), pagina, 'mod-orange'); |
120 | $timeout(function() { | 49 | $timeout(function() { |
121 | - angular.element('#searchGerenciarProcesso').scope().getProcesso(processo); | 50 | + angular.element('#searchGerenciarProcesso').scope().getProcesso($scope.modelSelecionado); |
122 | 51 | ||
123 | }, 100); | 52 | }, 100); |
124 | - $scope.setLoading(false); | ||
125 | - }}); | ||
126 | - }else{ | ||
127 | - $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.PROCESSO'), pagina, 'mod-orange'); | ||
128 | - $timeout(function() { | ||
129 | - angular.element('#searchGerenciarProcesso').scope().getProcesso(processo); | ||
130 | - | ||
131 | - }, 100); | ||
132 | - } | 53 | + } |
54 | + }else{ | ||
55 | + $scope.showAlert('warning', $translate.instant('ECM.MSG.SELECIONE_UM_ITEM_PARA_VALIDACAO')); | ||
56 | + } | ||
133 | 57 | ||
134 | }; | 58 | }; |
135 | 59 | ||
136 | //adiciona a lista de documentos ao processo | 60 | //adiciona a lista de documentos ao processo |
137 | - $scope.retrieveAditionalHtml = function(processo) { | ||
138 | - processo.$show = !processo.$show; | ||
139 | - if (!processo.$show) | ||
140 | - return; | 61 | + $scope.findDocumentos = function() { |
141 | 62 | ||
142 | - if(!processo.documentos){ | ||
143 | - DocumentoGedRepository.findByProcessoSigilo(processo.id).then(function(result) { | ||
144 | - processo.documentos = result; | ||
145 | - $scope.showAditionalHtml(processo); | ||
146 | - }); | ||
147 | - }else{ | ||
148 | - $scope.showAditionalHtml(processo); | 63 | + _getProcesso(); |
64 | + | ||
65 | + if($scope.modelSelecionado.id){ | ||
66 | + | ||
67 | + DocumentoGedRepository.findByProcessoSigilo($scope.modelSelecionado.id).then(function(result) { | ||
68 | + $scope.modelSelecionado.documentos = result; | ||
69 | + }); | ||
149 | } | 70 | } |
150 | 71 | ||
72 | + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido; | ||
73 | + | ||
74 | + | ||
151 | }; | 75 | }; |
76 | + | ||
77 | + function _getProcesso(){ | ||
78 | + $scope.modelSelecionado = {}; | ||
79 | + for(var count = 0; count < $scope.processos.length; count++){ | ||
80 | + if($scope.processos[count].$show) { | ||
81 | + $scope.modelSelecionado = $scope.processos[count]; | ||
82 | + break; | ||
83 | + }; | ||
84 | + }; | ||
152 | 85 | ||
153 | - //abre a div com os documentos | ||
154 | - $scope.showAditionalHtml = function(processo) { | ||
155 | - var id = "divHtmlAdicional_" + $scope.idPainelItem + "_" + processo.id; | ||
156 | - | ||
157 | - var el = document.getElementById(id); | ||
158 | - if (!el || el.innerHTML != '') | ||
159 | - return; | ||
160 | - | ||
161 | - var element = angular.element("#"+id); | ||
162 | - el.focus(); | ||
163 | }; | 86 | }; |
164 | - | ||
165 | - $scope.fetchResult(); | 87 | + |
166 | }]); | 88 | }]); |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/DocumentoGedController.js
@@ -190,7 +190,7 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | @@ -190,7 +190,7 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | ||
190 | processo : $scope.documentoGed.processo, | 190 | processo : $scope.documentoGed.processo, |
191 | autor : $scope.usuarioLogado, | 191 | autor : $scope.usuarioLogado, |
192 | acaoAlteracao : "INCLUSAO_DOCUMENTO", | 192 | acaoAlteracao : "INCLUSAO_DOCUMENTO", |
193 | - idTask : $scope.task.id, | 193 | + idTask : $scope.task ? $scope.task.id : null, |
194 | mapaAtributos : {"tipo_documento" : $scope.documentoGed.tipoDocumento.nome, "numero_documento" : $scope.documentoGed.numero} | 194 | mapaAtributos : {"tipo_documento" : $scope.documentoGed.tipoDocumento.nome, "numero_documento" : $scope.documentoGed.numero} |
195 | }; | 195 | }; |
196 | HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ | 196 | HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ |
@@ -203,7 +203,7 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | @@ -203,7 +203,7 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | ||
203 | processo : $scope.documentoGed.processo, | 203 | processo : $scope.documentoGed.processo, |
204 | autor : $scope.usuarioLogado, | 204 | autor : $scope.usuarioLogado, |
205 | acaoAlteracao : "CRIACAO_NOVA_VERSAO_DOCUMENTO", | 205 | acaoAlteracao : "CRIACAO_NOVA_VERSAO_DOCUMENTO", |
206 | - idTask : $scope.task.id, | 206 | + idTask : $scope.task ? $scope.task.id : null, |
207 | mapaAtributos : {"tipo_documento" : $scope.documentoGed.tipoDocumento.nome, "numero_documento" : $scope.documentoGed.numero, "numero_versao" : $scope.documentoGed.versaoDocumento.toFixed(1)} | 207 | mapaAtributos : {"tipo_documento" : $scope.documentoGed.tipoDocumento.nome, "numero_documento" : $scope.documentoGed.numero, "numero_versao" : $scope.documentoGed.versaoDocumento.toFixed(1)} |
208 | }; | 208 | }; |
209 | HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ | 209 | HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ |
@@ -241,17 +241,17 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | @@ -241,17 +241,17 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | ||
241 | $scope.mantido = false; | 241 | $scope.mantido = false; |
242 | $scope.documentoGed.localizacao = null; | 242 | $scope.documentoGed.localizacao = null; |
243 | $scope.documentoGed.numero = null; | 243 | $scope.documentoGed.numero = null; |
244 | - DominioRepository.findAllDominio('statusDocumentoGed').then(function(result) { | ||
245 | - $scope.statusList = result; | 244 | + DominioRepository.findAllDominio('estadoDocumentoGed').then(function(result) { |
245 | + $scope.estadoList = result; | ||
246 | }); | 246 | }); |
247 | 247 | ||
248 | }else{ | 248 | }else{ |
249 | 249 | ||
250 | $scope.documentoGed.conteudo = {}; | 250 | $scope.documentoGed.conteudo = {}; |
251 | 251 | ||
252 | - if($.grep($scope.statusList, function(e){ return e.codigo === 3; })[0]){ | 252 | + if($.grep($scope.estadoList, function(e){ return e.codigo === 3; })[0]){ |
253 | 253 | ||
254 | - $scope.statusList.splice($.grep($scope.statusList, function(e){ return e.codigo === 3; })[0].$index, 1); | 254 | + $scope.estadoList.splice($.grep($scope.estadoList, function(e){ return e.codigo === 3; })[0].$index, 1); |
255 | } | 255 | } |
256 | } | 256 | } |
257 | 257 | ||
@@ -323,8 +323,8 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | @@ -323,8 +323,8 @@ citApp.controller('DocumentoGedController', ['$scope', 'DocumentoGedRepository', | ||
323 | }); | 323 | }); |
324 | }; | 324 | }; |
325 | 325 | ||
326 | - DominioRepository.findAllDominio('statusDocumentoGed').then(function(result) { | ||
327 | - $scope.statusList = result; | 326 | + DominioRepository.findAllDominio('estadoDocumentoGed').then(function(result) { |
327 | + $scope.estadoList = result; | ||
328 | }); | 328 | }); |
329 | 329 | ||
330 | //SET HIPOTESE LEGAL #INICIO | 330 | //SET HIPOTESE LEGAL #INICIO |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js
@@ -13,7 +13,6 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | @@ -13,7 +13,6 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | ||
13 | 13 | ||
14 | //INICIALIZA VARIAVEIS PARA HABILITAR E FECHAR DIVS DE AÇÕES DO PROCESSO | 14 | //INICIALIZA VARIAVEIS PARA HABILITAR E FECHAR DIVS DE AÇÕES DO PROCESSO |
15 | 15 | ||
16 | - $scope.isHistoricoProcesso = true; | ||
17 | $scope.fecharPagina = function() { | 16 | $scope.fecharPagina = function() { |
18 | $scope.isProcessoRelacionado = false; | 17 | $scope.isProcessoRelacionado = false; |
19 | $scope.isDocumentoEdit = false; | 18 | $scope.isDocumentoEdit = false; |
@@ -339,9 +338,21 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | @@ -339,9 +338,21 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | ||
339 | $scope.classificarDocumentoProceso = function () { | 338 | $scope.classificarDocumentoProceso = function () { |
340 | $scope.fecharPagina(); | 339 | $scope.fecharPagina(); |
341 | $scope.isClassificarProcessoDocumento = true; | 340 | $scope.isClassificarProcessoDocumento = true; |
341 | + var processo = {}; | ||
342 | + angular.copy($scope.processo, processo); | ||
343 | + if($scope.processo.documentos){ | ||
344 | + processo.documentos = []; | ||
345 | + angular.forEach($scope.processo.documentos, function(item) { | ||
346 | + if(item.status.codigo == 0){ | ||
347 | + var documento = item; | ||
348 | + processo.documentos.push(documento); | ||
349 | + } | ||
350 | + }); | ||
351 | + | ||
352 | + } | ||
342 | $timeout( function () { | 353 | $timeout( function () { |
343 | - angular.element( "#classificarDocumento" ).scope().getProcesso( $scope.processo ); | ||
344 | - } ); | 354 | + angular.element( "#classificarDocumento" ).scope().iniciar(processo); |
355 | + }); | ||
345 | }; | 356 | }; |
346 | 357 | ||
347 | // REMOVER DOCUMENTO | 358 | // REMOVER DOCUMENTO |
@@ -634,26 +645,34 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | @@ -634,26 +645,34 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | ||
634 | if ( $scope.task != null ) { | 645 | if ( $scope.task != null ) { |
635 | $scope.initialize(); | 646 | $scope.initialize(); |
636 | } | 647 | } |
648 | + | ||
649 | + $scope.getProcesso = function (processo) { | ||
637 | 650 | ||
638 | - $scope.getProcesso = function ( processo ) { | ||
639 | - | ||
640 | - $scope.setLoadingGet( true ); | 651 | + $scope.setLoadingGet(true); |
641 | 652 | ||
642 | ProcessoRepository.getProcessoGerenciamento(processo.id).then(function(result) { | 653 | ProcessoRepository.getProcessoGerenciamento(processo.id).then(function(result) { |
643 | - $scope.processo = result.originalElement; | ||
644 | - | ||
645 | - | 654 | + //Processo do scopo do gerenciamento |
655 | + $scope.processo = result.originalElement; | ||
656 | + //Processo que sera avaliado | ||
657 | + var processo = result.originalElement; | ||
658 | + processo.documentos = []; | ||
646 | DocumentoGedRepository.findByProcessoSigilo(processo.id).then(function(result) { | 659 | DocumentoGedRepository.findByProcessoSigilo(processo.id).then(function(result) { |
647 | - $scope.processo.documentos = result; | 660 | + |
661 | + angular.forEach(result, function(item) { | ||
662 | + | ||
663 | + var documento = item.originalElement; | ||
664 | + | ||
665 | + processo.documentos.push(documento); | ||
666 | + }); | ||
667 | + | ||
668 | + $timeout( function () { | ||
669 | + angular.element( "#classificarDocumento" ).scope().iniciar(processo); | ||
670 | + } ); | ||
648 | }); | 671 | }); |
649 | 672 | ||
650 | $scope.setLoading(false); | 673 | $scope.setLoading(false); |
651 | }); | 674 | }); |
652 | 675 | ||
653 | - $timeout( function () { | ||
654 | - angular.element( "#classificarDocumento" ).scope().iniciar(processo); | ||
655 | - } ); | ||
656 | - | ||
657 | 676 | ||
658 | $scope.isHistoricoProcesso = false; | 677 | $scope.isHistoricoProcesso = false; |
659 | $scope.isClassificarProcessoDocumento = true; | 678 | $scope.isClassificarProcessoDocumento = true; |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js
@@ -123,7 +123,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | @@ -123,7 +123,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | ||
123 | $scope.handleSetPage = function() { | 123 | $scope.handleSetPage = function() { |
124 | 124 | ||
125 | $scope.timeout = $timeout(function () { | 125 | $scope.timeout = $timeout(function () { |
126 | - var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); | 126 | + var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); |
127 | query.setOption("rows", "10"); | 127 | query.setOption("rows", "10"); |
128 | query.setOption("facet", "true"); | 128 | query.setOption("facet", "true"); |
129 | query.setOption("facet.limit", $scope.maxHints); | 129 | query.setOption("facet.limit", $scope.maxHints); |
@@ -330,7 +330,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | @@ -330,7 +330,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | ||
330 | if ($scope.userQuery && $scope.userQuery.length >= $scope.minSearchLength) { | 330 | if ($scope.userQuery && $scope.userQuery.length >= $scope.minSearchLength) { |
331 | if ($scope.timeout) $timeout.cancel($scope.timeout); | 331 | if ($scope.timeout) $timeout.cancel($scope.timeout); |
332 | $scope.timeout = $timeout(function () { | 332 | $scope.timeout = $timeout(function () { |
333 | - var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); | 333 | + var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); |
334 | query.setOption("rows", "10"); | 334 | query.setOption("rows", "10"); |
335 | query.setOption("facet", "true"); | 335 | query.setOption("facet", "true"); |
336 | query.setOption("facet.limit", $scope.maxHints); | 336 | query.setOption("facet.limit", $scope.maxHints); |
@@ -409,7 +409,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | @@ -409,7 +409,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | ||
409 | $scope.userQuery = "*:*"; | 409 | $scope.userQuery = "*:*"; |
410 | } | 410 | } |
411 | $scope.timeout = $timeout(function () { | 411 | $scope.timeout = $timeout(function () { |
412 | - var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); | 412 | + var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); |
413 | query.setOption("rows", "10"); | 413 | query.setOption("rows", "10"); |
414 | query.setOption("facet", "true"); | 414 | query.setOption("facet", "true"); |
415 | query.setOption("facet.limit", $scope.maxHints); | 415 | query.setOption("facet.limit", $scope.maxHints); |
@@ -440,7 +440,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | @@ -440,7 +440,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route | ||
440 | valueFilter = "*:*"; | 440 | valueFilter = "*:*"; |
441 | } | 441 | } |
442 | $scope.timeout = $timeout(function () { | 442 | $scope.timeout = $timeout(function () { |
443 | - var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); | 443 | + var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); |
444 | query.setOption("rows", "10"); | 444 | query.setOption("rows", "10"); |
445 | query.setOption("facet", "true"); | 445 | query.setOption("facet", "true"); |
446 | query.setOption("facet.limit", $scope.maxHints); | 446 | query.setOption("facet.limit", $scope.maxHints); |
cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html
1 | 1 | ||
2 | - | ||
3 | <div id="classificarDocumento" ng-controller="ClassificarDocumentoProcessoController as classificarDocumentoProcessoController"> | 2 | <div id="classificarDocumento" ng-controller="ClassificarDocumentoProcessoController as classificarDocumentoProcessoController"> |
4 | <form name="classificarDocumentoProcessoForm" novalidate autocomplete="off"> | 3 | <form name="classificarDocumentoProcessoForm" novalidate autocomplete="off"> |
5 | 4 | ||
@@ -19,87 +18,77 @@ | @@ -19,87 +18,77 @@ | ||
19 | <!-- Informações do processo --> | 18 | <!-- Informações do processo --> |
20 | <fieldset> | 19 | <fieldset> |
21 | <legend> | 20 | <legend> |
22 | - <h5> | ||
23 | - <translate>ECM.LABEL.INFORMACAODOPROCESSO</translate> | ||
24 | - </h5> | 21 | + <translate>ECM.LABEL.INFORMACAODOPROCESSO</translate> |
25 | </legend> | 22 | </legend> |
26 | 23 | ||
27 | <!-- <div class="profile-user-info"> --> | 24 | <!-- <div class="profile-user-info"> --> |
28 | - <div class="row"> | ||
29 | - <div class="col-md-12"> | ||
30 | - <span class="text-bold"><translate>ECM.LABEL.PROTOCOLO</translate></span> | ||
31 | - <span>{{processo.nup}}</span> | ||
32 | - </div> | 25 | + <div class="row"> |
26 | + <div class="col-md-12"> | ||
27 | + <span class="text-bold"><translate>ECM.LABEL.PROTOCOLO</translate></span> <span>{{processoValidacao.nup}}</span> | ||
33 | </div> | 28 | </div> |
29 | + </div> | ||
34 | 30 | ||
35 | - <div class="row"> | ||
36 | - <div class="col-md-6"> | ||
37 | - <span class="text-bold"><translate>ECM.LABEL.NIVEL_ACESSO_ORIGINAL</translate></span> | ||
38 | - <span>{{processo.nivelAcessoOriginal.nivelAcesso.descricao}}</span> | ||
39 | - </div> | ||
40 | - | ||
41 | - <div class="col-md-6"> | ||
42 | - <span class="text-bold" ><translate>ECM.LABEL.NIVEL_SIGILO_ORIGINAL</translate></span> | ||
43 | - <span>{{processo.sigiloOriginal.tipoSigilo.descricao}}</span> | ||
44 | - </div> | ||
45 | - | 31 | + <div class="row"> |
32 | + <div class="col-md-6"> | ||
33 | + <span class="text-bold"><translate>ECM.LABEL.NIVEL_ACESSO_ORIGINAL</translate></span> <span>{{processoValidacao.nivelAcessoOriginal.nivelAcesso.descricao}}</span> | ||
34 | + </div> | ||
35 | + | ||
36 | + <div class="col-md-6"> | ||
37 | + <span class="text-bold"><translate>ECM.LABEL.NIVEL_SIGILO_ORIGINAL</translate></span> <span>{{processoValidacao.sigiloOriginal.tipoSigilo.descricao}}</span> | ||
46 | </div> | 38 | </div> |
47 | 39 | ||
40 | + </div> | ||
41 | + | ||
48 | <!-- </div> --> | 42 | <!-- </div> --> |
49 | 43 | ||
50 | <br></br> | 44 | <br></br> |
51 | - | ||
52 | - <div ng-show='processo.aprovado'> | 45 | + |
46 | + <div ng-show='processoValidacao.validado'> | ||
53 | <div class="row"> | 47 | <div class="row"> |
54 | <div class="col-md-6"> | 48 | <div class="col-md-6"> |
55 | - <span class="text-bold"><translate>ECM.LABEL.NIVEL_ACESSO</translate></span> | ||
56 | - <span>{{processo.nivelAcesso.nivelAcesso.descricao}}</span> | 49 | + <span class="text-bold"><translate>ECM.LABEL.NIVEL_ACESSO</translate></span> <span>{{processoValidacao.nivelAcesso.nivelAcesso.descricao}}</span> |
57 | </div> | 50 | </div> |
58 | - | 51 | + |
59 | <div class="col-md-6"> | 52 | <div class="col-md-6"> |
60 | - <span class="text-bold" ><translate>ECM.LABEL.NIVEL_SIGILO</translate></span> | ||
61 | - <span>{{processo.sigilo.tipoSigilo.descricao}}</span> | 53 | + <span class="text-bold"><translate>ECM.LABEL.NIVEL_SIGILO</translate></span> <span>{{processoValidacao.sigilo.tipoSigilo.descricao}}</span> |
62 | </div> | 54 | </div> |
63 | - | 55 | + |
64 | </div> | 56 | </div> |
65 | </div> | 57 | </div> |
66 | 58 | ||
67 | - <div class="row" ng-show='!processo.aprovado'> | 59 | + <div class="row" ng-show='!processoValidacao.validado'> |
68 | <div class="col-md-4"> | 60 | <div class="col-md-4"> |
69 | - <label-select ng-id="processo.nivelAcesso" ng-label="ECM.LABEL.NIVEL_ACESSO" ng-model="processo.nivelAcesso" | 61 | + <label-select ng-id="processoValidacao.nivelAcesso" ng-label="ECM.LABEL.NIVEL_ACESSO" ng-disabled="aprovado" ng-model="processoValidacao.nivelAcesso" |
70 | form="classificarDocumentoclassificarDocumentoProcessoForm" ng-obrigatorio="true" | 62 | form="classificarDocumentoclassificarDocumentoProcessoForm" ng-obrigatorio="true" |
71 | ng-custom-options="nivelAcessoTipoProcesso.originalElement as nivelAcessoTipoProcesso.nivelAcesso.descricao for nivelAcessoTipoProcesso" track-by="track by nivelAcessoTipoProcesso.id" | 63 | ng-custom-options="nivelAcessoTipoProcesso.originalElement as nivelAcessoTipoProcesso.nivelAcesso.descricao for nivelAcessoTipoProcesso" track-by="track by nivelAcessoTipoProcesso.id" |
72 | ng-list="nivelAcessoList" /> | 64 | ng-list="nivelAcessoList" /> |
73 | </div> | 65 | </div> |
74 | 66 | ||
75 | - <div class="col-md-4" ng-show="processo.nivelAcesso.nivelAcesso.codigo == 0"> | 67 | + <div class="col-md-4" ng-show="processoValidacao.nivelAcesso.nivelAcesso.codigo == 0"> |
76 | <div class="form-group"> | 68 | <div class="form-group"> |
77 | <label class="control-label block" | 69 | <label class="control-label block" |
78 | - ng-class="{'has-error': classificarDocumentoProcessoForm['processo.sigilo.id'].$error.required && (!classificarDocumentoProcessoForm['processo.sigilo.id'].$pristine || classificarDocumentoProcessoForm.$submitted)}"> | 70 | + ng-class="{'has-error': classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$error.required && (!classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$pristine || classificarDocumentoProcessoForm.$submitted)}"> |
79 | <translate>ECM.LABEL.SIGILO</translate> <span class="red">*</span> <i | 71 | <translate>ECM.LABEL.SIGILO</translate> <span class="red">*</span> <i |
80 | - ng-show="classificarDocumentoProcessoForm['processo.sigilo.id'].$error.required && (!classificarDocumentoProcessoForm['processo.sigilo.id'].$pristine || classificarDocumentoProcessoForm.$submitted)" | 72 | + ng-show="classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$error.required && (!classificarDocumentoProcessoForm['processoValidacao.sigilo.id'].$pristine || classificarDocumentoProcessoForm.$submitted)" |
81 | class='fa fa-warning red' tooltip="{{$translate.instant('LABEL.SIGILO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" tooltip-placement='top'></i> | 73 | class='fa fa-warning red' tooltip="{{$translate.instant('LABEL.SIGILO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" tooltip-placement='top'></i> |
82 | </label> | 74 | </label> |
83 | - | ||
84 | - <label-select ng-id="processo.sigilo" ng-model="processo.sigilo" form="classificarDocumentoProcessoForm" | ||
85 | - ng-custom-options="sigilo.originalElement as sigilo.tipoSigilo.descricao for sigilo" | ||
86 | - track-by="track by sigilo.id" ng-list="sigilos" /> | ||
87 | - </div> | 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" /> | ||
78 | + </div> | ||
88 | </div> | 79 | </div> |
89 | - | 80 | + |
90 | <div class="col-md-4"> | 81 | <div class="col-md-4"> |
91 | - <label-input-checkbox ng-model="aprovado" ng-label="ECM.LABEL.APROVAR"></label-input-checkbox> | 82 | + <label-input-checkbox ng-model="validado" ng-label="ECM.LABEL.VALIDADO"></label-input-checkbox> |
92 | </div> | 83 | </div> |
93 | </div> | 84 | </div> |
94 | - | 85 | + |
95 | </fieldset> | 86 | </fieldset> |
96 | <!-- fim informações do processo --> | 87 | <!-- fim informações do processo --> |
97 | 88 | ||
98 | <fieldset> | 89 | <fieldset> |
99 | <legend> | 90 | <legend> |
100 | - <h5> | ||
101 | - <translate>ECM.LABEL.DOCUMENTOS</translate> | ||
102 | - </h5> | 91 | + <translate>ECM.LABEL.DOCUMENTOS</translate> |
103 | </legend> | 92 | </legend> |
104 | 93 | ||
105 | <div class="row"> | 94 | <div class="row"> |
@@ -111,35 +100,34 @@ | @@ -111,35 +100,34 @@ | ||
111 | <table class="table table-striped table-bordered table-hover"> | 100 | <table class="table table-striped table-bordered table-hover"> |
112 | <thead> | 101 | <thead> |
113 | <tr> | 102 | <tr> |
114 | - <th style="width: 20%;" class="text-center"><translate>ECM.LABEL.PROTOCOLO</translate></th> | ||
115 | <th style="width: 15%;" class="text-center"><translate>ECM.LABEL.NUM_DOCUMENTO</translate></th> | 103 | <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> | ||
116 | <th class="text-center"><translate>ECM.LABEL.NIVEL_PROPOSTO</translate></th> | 105 | <th class="text-center"><translate>ECM.LABEL.NIVEL_PROPOSTO</translate></th> |
117 | <th class="text-center"><translate>ECM.LABEL.NIVEL_REVISADO</translate></th> | 106 | <th class="text-center"><translate>ECM.LABEL.NIVEL_REVISADO</translate></th> |
118 | 107 | ||
119 | </tr> | 108 | </tr> |
120 | </thead> | 109 | </thead> |
121 | <tbody> | 110 | <tbody> |
122 | - <tr ng-repeat="documento in processo.documentos"> | ||
123 | - <td class="text-center">{{processo.nup}}</td> | ||
124 | - <td class="text-center">{{processo.id}}</td> | ||
125 | - <td class="text-center" ng-show="documento.aprovado">{{documento.nivelAcesso.nivelAcesso.descricao}}</td> | ||
126 | - <td ng-show="!documento.aprovado"> | 111 | + <tr ng-repeat="documentoValidacao in processoValidacao.documentos"> |
112 | + <td class="text-center">{{documentoValidacao.numero}}</td> | ||
113 | + <td class="text-center">{{documentoValidacao.tipoDocumento.nome}}</td> | ||
114 | + <td> | ||
127 | <div class="row"> | 115 | <div class="row"> |
128 | <div class="col-md-6"> | 116 | <div class="col-md-6"> |
129 | - <label-select ng-id="documento.nivelAcesso" ng-model="documento.nivelAcesso" form="classificarDocumentoProcessoForm" | ||
130 | - ng-custom-options="nivelAcessoTipoDocumento.originalElement as nivelAcessoTipoDocumento.nivelAcesso.descricao for nivelAcessoTipoDocumento" | ||
131 | - track-by="track by nivelAcessoTipoDocumento.id" ng-list="nivelAcessoTipoDocumentoList" /> | 117 | + <label-select ng-id="documentoValidacao.nivelAcesso" ng-model="documentoValidacao.nivelAcesso" form="classificarDocumentoProcessoForm" |
118 | + 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)"/> | ||
132 | </div> | 120 | </div> |
133 | - <div class="col-md-6"> | ||
134 | - <label-select ng-id="documento.sigilo" ng-model="documento.sigilo" form="classificarDocumentoProcessoForm" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 0" | ||
135 | - ng-custom-options="sigilo.originalElement as sigilo.tipoSigilo.descricao for sigilo" | ||
136 | - track-by="track by sigilo.id" ng-list="sigilos" /> | 121 | + <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" /> | ||
124 | + | ||
137 | </div> | 125 | </div> |
138 | - | 126 | + </div> |
139 | </td> | 127 | </td> |
140 | - <td class="text-center">{{documento.sigilo.tipoSigilo.descricao}}</td> | 128 | + <td class="text-center"><span ng-if="documentoValidacao.nivelAcesso.nivelAcesso.codigo == 0">{{documentoValidacao.sigilo.tipoSigilo.descricao}}</span> <span ng-if="documentoValidacao.nivelAcesso.nivelAcesso.codigo != 0"> {{documentoValidacao.nivelAcesso.nivelAcesso.descricao}}</span></td> |
141 | </tr> | 129 | </tr> |
142 | - <tr ng-hide="processo.documentos.length > 0"> | 130 | + <tr ng-hide="processoValidacao.documentos.length > 0"> |
143 | <td colspan="5" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td> | 131 | <td colspan="5" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td> |
144 | </tr> | 132 | </tr> |
145 | </tbody> | 133 | </tbody> |
@@ -154,7 +142,8 @@ | @@ -154,7 +142,8 @@ | ||
154 | 142 | ||
155 | <div class="row"> | 143 | <div class="row"> |
156 | <div class="col-md-12"> | 144 | <div class="col-md-12"> |
157 | - <button class="btn btn-sm btn-primary" ng-click="saveOrUpdate()" type="button"> | 145 | + <button class="btn btn-sm btn-primary" ng-click="saveOrUpdate()" ng-if="processoValidacao.validado == false || contemDocumentoParaValidar" ng-disabled="!validado && !contemDocumentoParaValidar" |
146 | + type="button"> | ||
158 | <translate>LABEL.SALVAR</translate> | 147 | <translate>LABEL.SALVAR</translate> |
159 | </button> | 148 | </button> |
160 | 149 |
cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumentoList.html
1 | - | ||
2 | -<style type="text/css"> | ||
3 | -/* | ||
4 | - * Os códigos abaixo devem ser colocados nos devidos lugares e/ou utilizados dos css corretos do template, utilizem assim por não conhecer onde estão os css da arquitetura. | ||
5 | - */ | ||
6 | -.itemdiv { | ||
7 | - min-height: 66px; | ||
8 | - border: 1px solid #ccc; | ||
9 | - padding: 10px; | ||
10 | - position: relative; | ||
11 | - border-radius: 5px; | ||
12 | - margin-bottom: 5px; | ||
13 | -} | ||
14 | - | ||
15 | -.itemdiv>.user { | ||
16 | - display: inline-block; | ||
17 | - width: 42px; | ||
18 | - position: absolute; | ||
19 | - left: 10px; | ||
20 | -} | ||
21 | - | ||
22 | -.itemdiv .itemdiv-informacoes .label { | ||
23 | - margin-left: 2px; | ||
24 | -} | ||
25 | - | ||
26 | -.itemdiv>.body { | ||
27 | - width: auto; | ||
28 | - margin-left: 40px; | ||
29 | - margin-right: 12px; | ||
30 | - position: relative; | ||
31 | -} | ||
32 | - | ||
33 | -.itemdiv>.body>.name { | ||
34 | - display: block; | ||
35 | - color: #999; | ||
36 | -} | ||
37 | - | ||
38 | -.itemdiv>.body>.time { | ||
39 | - display: block; | ||
40 | - font-size: 11px; | ||
41 | - font-weight: 700; | ||
42 | - color: #666; | ||
43 | - position: absolute; | ||
44 | - right: 0; | ||
45 | - top: 0; | ||
46 | -} | ||
47 | - | ||
48 | -.itemdiv>.body>.text { | ||
49 | - display: block; | ||
50 | - position: relative; | ||
51 | - margin-top: 2px; | ||
52 | - font-size: 13px; | ||
53 | -} | ||
54 | - | ||
55 | -.itemdiv.commentdiv .tools { | ||
56 | - right: 15px; | ||
57 | -} | ||
58 | - | ||
59 | -.itemdiv .tools { | ||
60 | - position: absolute; | ||
61 | - top: 32px; | ||
62 | -} | ||
63 | - | ||
64 | -.itemdiv .tools a:hover { | ||
65 | - text-decoration: none; | ||
66 | -} | ||
67 | - | ||
68 | -.profile-user-info { | ||
69 | - display: table; | ||
70 | - width: 98%; | ||
71 | - width: calc(100% - 24px); | ||
72 | - margin: 0 auto; | ||
73 | -} | ||
74 | - | ||
75 | -.profile-info-row { | ||
76 | - display: table-row; | ||
77 | -} | ||
78 | - | ||
79 | -.profile-info-row:first-child .profile-info-name,.profile-info-row:first-child .profile-info-value | ||
80 | - { | ||
81 | - border-top: none; | ||
82 | -} | ||
83 | - | ||
84 | -.profile-info-name { | ||
85 | - text-align: right; | ||
86 | - padding: 6px 10px 6px 4px; | ||
87 | - font-weight: 400; | ||
88 | - color: #667E99; | ||
89 | - background-color: transparent; | ||
90 | - border-top: 1px dotted #D5E4F1; | ||
91 | - display: table-cell; | ||
92 | - width: 110px; | ||
93 | - vertical-align: middle; | ||
94 | -} | ||
95 | - | ||
96 | -.profile-info-row:first-child .profile-info-name,.profile-info-row:first-child .profile-info-value | ||
97 | - { | ||
98 | - border-top: none; | ||
99 | -} | ||
100 | - | ||
101 | -.profile-info-value { | ||
102 | - display: table-cell; | ||
103 | - padding: 6px 4px 6px 6px; | ||
104 | - border-top: 1px dotted #D5E4F1; | ||
105 | -} | ||
106 | - | ||
107 | -.ellipsis { | ||
108 | - white-space: nowrap; | ||
109 | - overflow: hidden; | ||
110 | - text-overflow: ellipsis; | ||
111 | - max-width: 65%; | ||
112 | -} | ||
113 | - | ||
114 | -.btn-group .btn { | ||
115 | - padding-top: 0; | ||
116 | - padding-bottom: 0; | ||
117 | -} | ||
118 | - | ||
119 | -#widget-historico .widget-main { | ||
120 | - padding: 0 16px 16px 0; | ||
121 | -} | ||
122 | - | ||
123 | -#painelProcesso .situacaoProcesso { | ||
124 | - background-color: red; | ||
125 | -} | ||
126 | - | ||
127 | -.documentos .widget-header .btn-group { | ||
128 | - margin: 6px 6px 0 0; | ||
129 | -} | ||
130 | - | ||
131 | -.labelOverflowLimit { | ||
132 | - text-overflow: ellipsis; | ||
133 | - overflow: hidden; | ||
134 | - white-space: nowrap; | ||
135 | - font-weight: bold; | ||
136 | -} | ||
137 | - | ||
138 | -#searchGerenciarProcesso { | ||
139 | - margin-top: 10px; | ||
140 | -} | ||
141 | -</style> | ||
142 | - | ||
143 | -<meta charset="UTF-8"> | 1 | +<link rel="stylesheet" href="/cit-ecm-web/assets/css/gerenciarProcesso.css" /> |
144 | <div id="idClassificarDocumentoProcesso" class="page-content" ng-controller="ClassificarDocumentoProcessoListController"> | 2 | <div id="idClassificarDocumentoProcesso" class="page-content" ng-controller="ClassificarDocumentoProcessoListController"> |
145 | <div class="bar-buttons-action fixed"> | 3 | <div class="bar-buttons-action fixed"> |
146 | <div class="row"> | 4 | <div class="row"> |
147 | <div class="col-sm-9 text-left"> | 5 | <div class="col-sm-9 text-left"> |
148 | - <button class="btn btn-clear" title="{{$translate.instant('LABEL.ATUALIZAR')}}" alt="{{$translate.instant('LABEL.ATUALIZAR')}}" ng-click="fetchResult()"> | 6 | + <button class="btn btn-clear" title="{{$translate.instant('LABEL.ATUALIZAR')}}" alt="{{$translate.instant('LABEL.ATUALIZAR')}}" ng-click="atualizarGrid();"> |
149 | <i class="fa fa-refresh purple"></i> | 7 | <i class="fa fa-refresh purple"></i> |
150 | <translate>LABEL.ATUALIZAR</translate> | 8 | <translate>LABEL.ATUALIZAR</translate> |
151 | </button> | 9 | </button> |
152 | - </div> | ||
153 | 10 | ||
11 | + <button class="btn btn-clear" title="{{$translate.instant('LABEL.VALIDAR')}}" alt="{{$translate.instant('LABEL.VALIDAR')}}" ng-click="abreValidar();"> | ||
12 | + <i class="fa fa-check"></i> | ||
13 | + <translate>ECM.LABEL.VALIDAR</translate> | ||
14 | + </button> | ||
15 | + </div> | ||
154 | <div class="col-sm-3 text-right"> | 16 | <div class="col-sm-3 text-right"> |
155 | <favorito /> | 17 | <favorito /> |
156 | - | ||
157 | <help-button workspace="workspace" /> | 18 | <help-button workspace="workspace" /> |
158 | </div> | 19 | </div> |
159 | - <!-- .col --> | ||
160 | </div> | 20 | </div> |
161 | - <!-- .row --> | ||
162 | </div> | 21 | </div> |
163 | - <!-- .bar-buttons-action --> | ||
164 | 22 | ||
165 | <breadcrumb ng-workspace="workspace"></breadcrumb> | 23 | <breadcrumb ng-workspace="workspace"></breadcrumb> |
166 | - <div class="row"> | ||
167 | - <div class="col-sm-12"> | ||
168 | - <div class="table-container"> | ||
169 | - <div class="table-header clearfix"> | ||
170 | - <div class="table-header-right"> | ||
171 | - <button class="btn btn-primary btn-inline btn-white table-header-item" ng-click="$showAdvancedFilters = !$showAdvancedFilters"> | ||
172 | - <i class="fa fa-filter"></i> | ||
173 | - <translate>LABEL.FILTROS_AVANCADOS</translate> | ||
174 | - </button> | ||
175 | - </div> | ||
176 | - <!-- .table-header-right --> | ||
177 | 24 | ||
178 | - <div class="table-header-left"> | ||
179 | - <div class="form-group"> | ||
180 | - <div class="input-group"> | ||
181 | - <input type="text" class="form-control" placeholder="Digite uma palavra chave" on-enter-blur on-blur-change="filterResult(true)" ng-model="filterCriteria.keywordValue" /> <span | ||
182 | - class="input-group-addon"> <i class="fa fa-search fa-lg"></i> | ||
183 | - </span> | ||
184 | - </div> | ||
185 | - </div> | ||
186 | - <!-- .form-group --> | ||
187 | - </div> | ||
188 | - <!-- .table-header-left --> | ||
189 | - </div> | ||
190 | - <!-- .table-header --> | ||
191 | - | ||
192 | - <table class="table table-striped table-bordered table-hover"> | ||
193 | - | ||
194 | - | ||
195 | - <thead> | ||
196 | - <tr> | ||
197 | - <th style="width: 5%;"><small><translate>ECM.LABEL.PROTOCOLO</translate></small></th> | ||
198 | - <th style="align: center; width: 5%;"><small><translate>ECM.LABEL.PROPOSTA</translate></small></th> | ||
199 | - <th style="width: 15%;"><small><translate>ECM.LABEL.NIVEL_FINAL</translate></small></th> | ||
200 | - <th style="align: center; width: 5%;"><small><translate>ECM.LABEL.PRAZO_SIGILO</translate></small></th> | ||
201 | - </tr> | ||
202 | - </thead> | ||
203 | - | ||
204 | - | ||
205 | - <tfoot ng-show="totalItens > 0"> | ||
206 | - <tr> | ||
207 | - <td colspan="9"> | ||
208 | - <div class="row"> | ||
209 | - <div class='col-sm-4 table-showing'> | ||
210 | - <translate>LABEL.MOSTRANDO</translate> | ||
211 | - {{filterCriteria.start}} | ||
212 | - <translate>LABEL.ATE</translate> | ||
213 | - {{filterCriteria.limit > totalItens ? totalItens : filterCriteria.limit}} | ||
214 | - <translate>LABEL.DE</translate> | ||
215 | - ({{totalItens}}) | ||
216 | - <translate>ESI.TAREFAS</translate> | ||
217 | - . | ||
218 | - </div> | ||
219 | - <div class="col-sm-8 text-right"> | ||
220 | - <pagination rotate="true" total-items="totalItens" num-pages="totalPages" ng-model="filterCriteria.start" items-per-page="filterCriteria.limit" class="pagination-sm" boundary-links="true" | ||
221 | - ng-change="fetchResult()"></pagination> | ||
222 | - </div> | ||
223 | - <!-- .col --> | ||
224 | - </div> <!-- .row --> | ||
225 | - </td> | ||
226 | - </tr> | ||
227 | - </tfoot> | ||
228 | - | ||
229 | - | ||
230 | - <tbody> | ||
231 | - <tr ng-show="$showAdvancedFilters"> | ||
232 | - <td style="width: 5%;"> | ||
233 | - <div class="row"> | ||
234 | - <div class="col-sm-12"> | ||
235 | - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[0].value" type="text" integer /> | ||
236 | - </div> | ||
237 | - <!-- .col --> | ||
238 | - </div> <!-- .row --> | ||
239 | - </td> | ||
240 | - <td> | ||
241 | - <div class="row"> | ||
242 | - <div class="col-sm-12"> | ||
243 | - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[1].value" type="text" /> | ||
244 | - </div> | ||
245 | - <!-- .col --> | ||
246 | - </div> <!-- .row --> | ||
247 | - </td> | ||
248 | - <td style="width: 5%;"> | ||
249 | - <div class="row"> | ||
250 | - <div class="col-sm-12"> | ||
251 | - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[2].value" type="text" /> | ||
252 | - </div> | ||
253 | - <!-- .col --> | ||
254 | - </div> <!-- .row --> | ||
255 | - </td> | ||
256 | - <td> | ||
257 | - <div class="row"> | ||
258 | - <div class="col-sm-12"> | ||
259 | - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[3].value" type="date" /> | ||
260 | - </div> | ||
261 | - <!-- .col --> | ||
262 | - </div> <!-- .row --> | ||
263 | - </td> | ||
264 | - | ||
265 | - </tr> | ||
266 | - | ||
267 | - | ||
268 | - <tr ng-repeat-start="processo in processos"> | ||
269 | - | ||
270 | - <td style="width: 25%;"> | ||
271 | - <a href="#void" ng-click="abrirVisualizar(processo)"> | ||
272 | - <span class="small green">{{processo.nup}} | ||
273 | - <a href="javascript:;" class="blue" ng-click="retrieveAditionalHtml(processo)"> | ||
274 | - <i class="fa fa-lg" ng-class="{'fa-caret-right': !processo.$show, 'fa-caret-down': processo.$show}"></i> | ||
275 | - </a> | ||
276 | - </span> | ||
277 | - </a> | ||
278 | - </td> | ||
279 | - | ||
280 | - | ||
281 | - <td style="width: 25%;"><span class="small green">{{processo['sigiloOriginal.tipoSigilo.descricao']}}</span></td> | ||
282 | - | ||
283 | - <td style="width: 25%;"><span class="small green">{{processo['sigilo.tipoSigilo.descricao']}}</span></td> | ||
284 | - | ||
285 | - <td style="width: 25%;"><span class="small green">{{processo.prazoSigilo | date:'dd-MM-yyyy'}}</span></td> | ||
286 | - | ||
287 | - </tr> | ||
288 | - | ||
289 | - <tr ng-show="processo.$show" ng-repeat-end> | ||
290 | - <td> </td> | ||
291 | - | ||
292 | - <td colspan="8"> | ||
293 | - | ||
294 | - <div class="media media-card" id="divHtmlAdicional_{{idPainelItem}}_{{processo.id}}"> | ||
295 | - <small ng-show="!processo.documentos"><font color="red"><b><translate>MSG.AGUARDE</translate></b></font></small> | ||
296 | - <!-- <a href="#void" ng-click="abrirVisualizar(processo)">{{processo.nup}}</a> --> | ||
297 | - <div class="widget-main clearfix" > | ||
298 | - <div class="itemdiv commentdiv" ng-repeat="documento in processo.documentos | orderBy:'-dataCriacao'" > | ||
299 | - | ||
300 | - <div class="user"> | ||
301 | - <i class="{{documento.icon}}" title="{{documento.anexo.dominioTipoAnexo.descricao}}"></i> | ||
302 | - </div> | ||
303 | - | ||
304 | - <div class="body"> | ||
305 | - <div class="text ellipsis"> | ||
306 | - <span class="black">{{documento.tipoDocumento.nome}} - {{documento.numero}}</span> | ||
307 | - </div> | ||
308 | - | ||
309 | - <div class="time hidden-md"> | ||
310 | - <i class="ace-icon fa fa-clock-o"></i> <span class="blue">{{documento.dataCriacao | date: 'dd/MM/yyyy HH:mm:ss'}}</span> | ||
311 | - </div> | ||
312 | - | ||
313 | - <div class="text ellipsis" tooltip="{{documento.assuntoComplementar}}">{{documento.assuntoComplementar}}</div> | ||
314 | - | ||
315 | - <div class="itemdiv-informacoes"> | ||
316 | - <span class="label label-gray" ng-show="documento.sigilo.tipoSigilo.codigo == 0 ">{{documento.sigilo.tipoSigilo.descricao}}</span> <span class="label label-danger" | ||
317 | - ng-show="documento.sigilo.tipoSigilo.codigo == 1 ">{{documento.sigilo.tipoSigilo.descricao}}</span> <span class="label label-black" ng-show="documento.sigilo.tipoSigilo.codigo == 2 ">{{documento.sigilo.tipoSigilo.descricao}}</span> | ||
318 | - <span class="label label-warning" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 1">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-success" | ||
319 | - ng-show="documento.nivelAcesso.nivelAcesso.codigo == 2">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-info" ng-show="documento.origem">Anexado</span> <span | ||
320 | - class="label label-info" ng-show="false">Assinado</span> <span class="label label-success" ng-show="false">Habilitado</span> <span class="label label-warning" ng-show="false">Ciência</span> | ||
321 | - <span class="label label-danger" ng-show="documento.cancelado">Cancelado</span> | ||
322 | - </div> | ||
323 | - </div> | ||
324 | - </div> | ||
325 | - </div> | ||
326 | - </div> | ||
327 | - </td> | ||
328 | - </tr> | ||
329 | - | ||
330 | - <tr ng-show="totalItens <= 0"> | ||
331 | - <td colspan="9"><strong><translate>MSG.NENHUM_REGISTRO_ENCONTRADO</translate></strong></td> | ||
332 | - </tr> | ||
333 | - | ||
334 | - </tbody> | ||
335 | - | ||
336 | - </table> | ||
337 | - | ||
338 | - </div> | ||
339 | - </div> | ||
340 | - </div> | ||
341 | - </tabset> | ||
342 | -</div> | ||
343 | -<!-- .table-container --> | ||
344 | -</div> | ||
345 | -<!-- .page-content --> | 25 | + <list-view ng-lista="processos" ng-repository="ProcessoRepository" ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="modelSelecionado" transclude="classificarDocumentos.html" |
26 | + ng-custom-transclude="findDocumentos()" ng-model-parent="modelSelecionado"> | ||
27 | + <div ng-include src="'/cit-ecm-web/html/classificarProcessoDocumento/classificarDocumentos.html'"></div> | ||
28 | + </list-view> | ||
29 | +</div> | ||
346 | \ No newline at end of file | 30 | \ No newline at end of file |
cit-ecm-web/src/main/webapp/html/documentoGed/metadadosDocumentoEdit.html
@@ -63,8 +63,8 @@ | @@ -63,8 +63,8 @@ | ||
63 | <div class="row"> | 63 | <div class="row"> |
64 | 64 | ||
65 | <div class="col-md-4"> | 65 | <div class="col-md-4"> |
66 | - <label-select ng-id="documentoGed.status" ng-model="documentoGed.status" ng-label="ECM.LABEL.STATUS" ng-obrigatorio='true' form="documentoGedForm" ng-list="statusList" | ||
67 | - ng-custom-options="dominioStatus.originalElement as dominioStatus.descricao for dominioStatus" track-by="track by dominioStatus.id" ng-disabled='!edit'> </label-select> | 66 | + <label-select ng-id="documentoGed.estado" ng-model="documentoGed.estado" ng-label="ECM.LABEL.ESTADO" ng-obrigatorio='true' form="documentoGedForm" ng-list="estadoList" |
67 | + ng-custom-options="dominioEstado.originalElement as dominioEstado.descricao for dominioEstado" track-by="track by dominioEstado.id" ng-disabled='!edit'> </label-select> | ||
68 | </div> | 68 | </div> |
69 | 69 | ||
70 | <div class="col-md-8"> | 70 | <div class="col-md-8"> |
@@ -128,8 +128,8 @@ | @@ -128,8 +128,8 @@ | ||
128 | 128 | ||
129 | <div class="row"> | 129 | <div class="row"> |
130 | <div class="col-sm-6" ng-show='documentoGed.nivelAcesso.nivelAcesso.codigo == 1 || documentoGed.sigilo.id'> | 130 | <div class="col-sm-6" ng-show='documentoGed.nivelAcesso.nivelAcesso.codigo == 1 || documentoGed.sigilo.id'> |
131 | - <label-select ng-id="documentoGed.hipoteseLegal" ng-model="documentoGed.hipoteseLegal" ng-label="ECM.LABEL.HIPOTESELEGAL" ng-obrigatorio='false' form="documentoGedForm" ng-list="hipoteses" | ||
132 | - ng-custom-options="hipoteseLegal.originalElement as hipoteseLegal.nome for hipoteseLegal" ng-obrigatorio='true' track-by="track by hipoteseLegal.id" ng-disabled='!edit'> </label-select> | 131 | + <label-select ng-id="documentoGed.hipoteseLegal" ng-model="documentoGed.hipoteseLegal" ng-label="ECM.LABEL.HIPOTESELEGAL" ng-obrigatorio='documentoGed.nivelAcesso.nivelAcesso.codigo == 1 || documentoGed.sigilo.id' form="documentoGedForm" ng-list="hipoteses" |
132 | + ng-custom-options="hipoteseLegal.originalElement as hipoteseLegal.nome for hipoteseLegal" track-by="track by hipoteseLegal.id" ng-disabled='!edit'> </label-select> | ||
133 | </div> | 133 | </div> |
134 | </div> | 134 | </div> |
135 | 135 |
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeDocumentosProcesso.html
@@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
34 | </button> | 34 | </button> |
35 | 35 | ||
36 | <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu"> | 36 | <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu"> |
37 | - <li ng-if='!documento.cancelado'><a href="#void" ng-click="editDocument(documento, true);"><translate>LABEL.EDITAR</translate></a></li> | 37 | + <li ng-if='!documento.cancelado && documento.status.codigo != 0'><a href="#void" ng-click="editDocument(documento, true);"><translate>LABEL.EDITAR</translate></a></li> |
38 | <li ng-if='!processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click="removeDocumento(documento, $index);"><translate>LABEL.REMOVER</translate></a></li> | 38 | <li ng-if='!processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click="removeDocumento(documento, $index);"><translate>LABEL.REMOVER</translate></a></li> |
39 | <li ng-if='processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click='cancelarDocumento(documento)'> <translate>ECM.LABEL.CANCELARDOCUMENTO</translate></a></li> | 39 | <li ng-if='processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click='cancelarDocumento(documento)'> <translate>ECM.LABEL.CANCELARDOCUMENTO</translate></a></li> |
40 | <li ng-if='!documento.cancelado'><a href="#void" ng-click="visualizarVersoes(documento);"> <translate>ECM.LABEL.VERSOESDODOCUMENTO</translate></a></li> | 40 | <li ng-if='!documento.cancelado'><a href="#void" ng-click="visualizarVersoes(documento);"> <translate>ECM.LABEL.VERSOESDODOCUMENTO</translate></a></li> |
cit-ecm-web/src/main/webapp/html/processo/processoEdit.html
@@ -125,7 +125,7 @@ | @@ -125,7 +125,7 @@ | ||
125 | 125 | ||
126 | <div class="row"> | 126 | <div class="row"> |
127 | <div class="col-sm-6" ng-show='processo.nivelAcesso.nivelAcesso.codigo == 1 || processo.sigilo.id'> | 127 | <div class="col-sm-6" ng-show='processo.nivelAcesso.nivelAcesso.codigo == 1 || processo.sigilo.id'> |
128 | - <label-select ng-id="processo.hipoteseLegal" ng-model="processo.hipoteseLegal" ng-label="ECM.LABEL.HIPOTESELEGAL" ng-obrigatorio='false' form="processoForm" ng-list="hipoteses" | 128 | + <label-select ng-id="processo.hipoteseLegal" ng-model="processo.hipoteseLegal" ng-label="ECM.LABEL.HIPOTESELEGAL" ng-obrigatorio='processo.nivelAcesso.nivelAcesso.codigo == 1 || processo.sigilo.id' form="processoForm" ng-list="hipoteses" |
129 | ng-custom-options="hipoteseLegal.originalElement as hipoteseLegal.nome for hipoteseLegal" ng-obrigatorio='true' track-by="track by hipoteseLegal.id" ng-disabled='!edit'> </label-select> | 129 | ng-custom-options="hipoteseLegal.originalElement as hipoteseLegal.nome for hipoteseLegal" ng-obrigatorio='true' track-by="track by hipoteseLegal.id" ng-disabled='!edit'> </label-select> |
130 | </div> | 130 | </div> |
131 | </div> | 131 | </div> |