Commit fe62be018e8a71521a2bb4ddd64b429e2cd996be
1 parent
a5de072e
Exists in
master
[Redmine Atendimento #4206]Alteração geração de codigo estudo tecnico
Showing
10 changed files
with
113 additions
and
61 deletions
Show diff stats
cit-contratos-api/src/main/java/br/com/centralit/api/dao/EstudoTecnicoDao.java
... | ... | @@ -53,4 +53,6 @@ public interface EstudoTecnicoDao extends CitGenericDAO{ |
53 | 53 | */ |
54 | 54 | public Collection<EstudoTecnico> findAutoCompleteEstudoTecnicoPorCodigoAndOrganizacao(String codigo, Long idOrganizacao); |
55 | 55 | |
56 | + EstudoTecnico buscarUltimoRegistroPorDataEmissao(int ano, Long idOrganizacao); | |
57 | + | |
56 | 58 | } | ... | ... |
cit-contratos-api/src/main/java/br/com/centralit/api/dao/impl/EstudoTecnicoDaoHibernate.java
1 | 1 | package br.com.centralit.api.dao.impl; |
2 | 2 | |
3 | +import java.util.Calendar; | |
3 | 4 | import java.util.Collection; |
4 | 5 | |
5 | 6 | import org.springframework.stereotype.Repository; |
... | ... | @@ -10,6 +11,7 @@ import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
10 | 11 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
11 | 12 | |
12 | 13 | import com.googlecode.genericdao.search.Filter; |
14 | +import com.googlecode.genericdao.search.Search; | |
13 | 15 | import com.googlecode.genericdao.search.Sort; |
14 | 16 | |
15 | 17 | |
... | ... | @@ -64,11 +66,11 @@ public class EstudoTecnicoDaoHibernate extends CitGenericDAOImpl implements Estu |
64 | 66 | |
65 | 67 | SearchSeven search = new SearchSeven(this.persistentClass); |
66 | 68 | |
67 | - search.addFilterILike("codigo", "%" + codigo + "%"); | |
69 | + search.addFilterILike("registroSequencial.sequencialAno", "%" + codigo + "%"); | |
68 | 70 | |
69 | 71 | search.addFilterEmpty("dataInativo"); |
70 | 72 | |
71 | - search.addSort(Sort.asc("codigo")); | |
73 | + search.addSort(Sort.asc("registroSequencial.sequencialAno")); | |
72 | 74 | |
73 | 75 | search.setMaxResults(10); |
74 | 76 | |
... | ... | @@ -89,9 +91,9 @@ public class EstudoTecnicoDaoHibernate extends CitGenericDAOImpl implements Estu |
89 | 91 | |
90 | 92 | SearchSeven searchSeven = new SearchSeven(this.persistentClass); |
91 | 93 | |
92 | - searchSeven.addSort(Sort.asc("codigo")); | |
94 | + searchSeven.addSort(Sort.asc("registroSequencial.sequencialAno")); | |
93 | 95 | |
94 | - searchSeven.addFilter(Filter.ilike("codigo", "%" + codigo + "%")); | |
96 | + searchSeven.addFilter(Filter.ilike("registroSequencial.sequencialAno", "%" + codigo + "%")); | |
95 | 97 | |
96 | 98 | searchSeven.addFilterEqual("organizacao.id", idOrganizacao); |
97 | 99 | |
... | ... | @@ -101,4 +103,33 @@ public class EstudoTecnicoDaoHibernate extends CitGenericDAOImpl implements Estu |
101 | 103 | |
102 | 104 | } |
103 | 105 | |
106 | + @Override | |
107 | + public EstudoTecnico buscarUltimoRegistroPorDataEmissao(int ano, Long idOrganizacao) { | |
108 | + int anoInformado = ano; | |
109 | + | |
110 | + Calendar dataInicial = Calendar.getInstance(); | |
111 | + dataInicial.set(anoInformado, Calendar.JANUARY, 1); | |
112 | + dataInicial.set(Calendar.HOUR_OF_DAY,00); | |
113 | + dataInicial.set(Calendar.MINUTE,00); | |
114 | + dataInicial.set(Calendar.SECOND,00); | |
115 | + dataInicial.set(Calendar.MILLISECOND,0); | |
116 | + | |
117 | + Calendar dataFinal = Calendar.getInstance(); | |
118 | + dataFinal.set(anoInformado, Calendar.DECEMBER, 31); | |
119 | + dataFinal.set(Calendar.HOUR_OF_DAY,23); | |
120 | + dataFinal.set(Calendar.MINUTE,59); | |
121 | + dataFinal.set(Calendar.SECOND,59); | |
122 | + dataFinal.set(Calendar.MILLISECOND,999); | |
123 | + | |
124 | + Search search = new Search(); | |
125 | + search.addFilterNotNull("registroSequencial.numeroSequencial"); | |
126 | + search.addFilterEqual("organizacao.id", idOrganizacao); | |
127 | + search.addFilterGreaterOrEqual("dataCriacao", dataInicial); | |
128 | + search.addFilterLessOrEqual("dataCriacao", dataFinal); | |
129 | + search.addSortDesc("registroSequencial.numeroSequencial"); | |
130 | + search.setMaxResults(1); | |
131 | + | |
132 | + return searchUnique(search); | |
133 | + } | |
134 | + | |
104 | 135 | } | ... | ... |
cit-contratos-api/src/main/java/br/com/centralit/api/model/EstudoTecnico.java
... | ... | @@ -5,6 +5,7 @@ import java.util.Collection; |
5 | 5 | |
6 | 6 | import javax.persistence.CascadeType; |
7 | 7 | import javax.persistence.Column; |
8 | +import javax.persistence.Embedded; | |
8 | 9 | import javax.persistence.Entity; |
9 | 10 | import javax.persistence.FetchType; |
10 | 11 | import javax.persistence.GeneratedValue; |
... | ... | @@ -59,10 +60,9 @@ public class EstudoTecnico extends PersistentObjectAuditOrganizacao { |
59 | 60 | @JsonView({ Views.GenericView.class }) |
60 | 61 | private Long id; |
61 | 62 | |
62 | - /** Atributo codigo. */ | |
63 | - @Column(length = 30, nullable=false) | |
64 | - @JsonView({ ViewsContrato.EstudoTecnicoEditView.class, ViewsContrato.TermoReferenciaListView.class, ViewsContrato.EstudoTecnicoAutoCompleteView.class, ViewsContrato.ContratoEditView.class }) | |
65 | - private String codigo; | |
63 | + @Embedded | |
64 | + @JsonView({ ViewsContrato.EstudoTecnicoEditView.class, ViewsContrato.TermoReferenciaEditView.class, Views.GenericView.class }) | |
65 | + private RegistroSequencial registroSequencial; | |
66 | 66 | |
67 | 67 | /** Atributo numeroPortaria. */ |
68 | 68 | @Column(length = 30, nullable=false) |
... | ... | @@ -167,6 +167,16 @@ public class EstudoTecnico extends PersistentObjectAuditOrganizacao { |
167 | 167 | @JsonView({ ViewsContrato.EstudoTecnicoEditView.class }) |
168 | 168 | private Collection<EstudoTecnicoDocumento> documentos; |
169 | 169 | |
170 | + public RegistroSequencial getRegistroSequencial() { | |
171 | + | |
172 | + return registroSequencial; | |
173 | + } | |
174 | + | |
175 | + public void setRegistroOcorrenciaSequencial(RegistroSequencial registroSequencial) { | |
176 | + | |
177 | + this.registroSequencial = registroSequencial; | |
178 | + } | |
179 | + | |
170 | 180 | /** |
171 | 181 | * Retorna o valor do atributo <code>id</code> |
172 | 182 | * |
... | ... | @@ -189,26 +199,6 @@ public class EstudoTecnico extends PersistentObjectAuditOrganizacao { |
189 | 199 | } |
190 | 200 | |
191 | 201 | /** |
192 | - * Retorna o valor do atributo <code>codigo</code> | |
193 | - * | |
194 | - * @return <code>String</code> | |
195 | - */ | |
196 | - public String getCodigo() { | |
197 | - | |
198 | - return codigo; | |
199 | - } | |
200 | - | |
201 | - /** | |
202 | - * Define o valor do atributo <code>codigo</code>. | |
203 | - * | |
204 | - * @param codigo | |
205 | - */ | |
206 | - public void setCodigo(String codigo) { | |
207 | - | |
208 | - this.codigo = codigo; | |
209 | - } | |
210 | - | |
211 | - /** | |
212 | 202 | * Retorna o valor do atributo <code>numeroPortaria</code> |
213 | 203 | * |
214 | 204 | * @return <code>String</code> | ... | ... |
cit-contratos-api/src/main/java/br/com/centralit/api/service/impl/ContratoEmpenhoServiceImpl.java
... | ... | @@ -11,6 +11,14 @@ import java.util.Map; |
11 | 11 | |
12 | 12 | import javax.servlet.http.HttpServletResponse; |
13 | 13 | |
14 | +import net.sf.jasperreports.engine.JRException; | |
15 | +import net.sf.jasperreports.engine.JasperCompileManager; | |
16 | +import net.sf.jasperreports.engine.JasperFillManager; | |
17 | +import net.sf.jasperreports.engine.JasperPrint; | |
18 | +import net.sf.jasperreports.engine.JasperReport; | |
19 | +import net.sf.jasperreports.engine.design.JasperDesign; | |
20 | +import net.sf.jasperreports.engine.xml.JRXmlLoader; | |
21 | + | |
14 | 22 | import org.springframework.beans.factory.annotation.Autowired; |
15 | 23 | import org.springframework.security.core.context.SecurityContextHolder; |
16 | 24 | import org.springframework.stereotype.Service; |
... | ... | @@ -38,13 +46,6 @@ import br.com.centralit.framework.util.UtilColecao; |
38 | 46 | import br.com.centralit.framework.util.UtilDataBase; |
39 | 47 | import br.com.centralit.framework.util.UtilDate; |
40 | 48 | import br.com.centralit.framework.util.UtilObjeto; |
41 | -import net.sf.jasperreports.engine.JRException; | |
42 | -import net.sf.jasperreports.engine.JasperCompileManager; | |
43 | -import net.sf.jasperreports.engine.JasperFillManager; | |
44 | -import net.sf.jasperreports.engine.JasperPrint; | |
45 | -import net.sf.jasperreports.engine.JasperReport; | |
46 | -import net.sf.jasperreports.engine.design.JasperDesign; | |
47 | -import net.sf.jasperreports.engine.xml.JRXmlLoader; | |
48 | 49 | |
49 | 50 | /** |
50 | 51 | * | ... | ... |
cit-contratos-api/src/main/java/br/com/centralit/api/service/impl/EstudoTecnicoServiceImpl.java
1 | 1 | package br.com.centralit.api.service.impl; |
2 | 2 | |
3 | 3 | import java.util.ArrayList; |
4 | +import java.util.Calendar; | |
4 | 5 | import java.util.Collection; |
5 | 6 | import java.util.HashMap; |
6 | 7 | import java.util.List; |
7 | 8 | import java.util.Map; |
8 | 9 | |
10 | +import org.apache.commons.lang3.StringUtils; | |
9 | 11 | import org.springframework.beans.factory.annotation.Autowired; |
10 | 12 | import org.springframework.beans.factory.annotation.Qualifier; |
11 | 13 | import org.springframework.security.core.context.SecurityContextHolder; |
... | ... | @@ -28,6 +30,7 @@ import br.com.centralit.api.model.EstudoTecnicoRequisitoNegocio; |
28 | 30 | import br.com.centralit.api.model.Fornecedor; |
29 | 31 | import br.com.centralit.api.model.OrgaoExterno; |
30 | 32 | import br.com.centralit.api.model.QuestionarioPergunta; |
33 | +import br.com.centralit.api.model.RegistroSequencial; | |
31 | 34 | import br.com.centralit.api.service.AnexoService; |
32 | 35 | import br.com.centralit.api.service.ColaboradorService; |
33 | 36 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; |
... | ... | @@ -148,7 +151,7 @@ public class EstudoTecnicoServiceImpl extends GenericServiceImpl<EstudoTecnico, |
148 | 151 | this.montarObjetoEstudoTecnico(estudoTecnico); |
149 | 152 | |
150 | 153 | // verifica se tem codigo, senao gera e salva entidade |
151 | - if (UtilObjeto.isReferencia(estudoTecnico.getCodigo())) { | |
154 | + if (UtilObjeto.isReferencia(estudoTecnico.getRegistroSequencial())) { | |
152 | 155 | |
153 | 156 | return super.save(estudoTecnico); |
154 | 157 | |
... | ... | @@ -183,7 +186,7 @@ public class EstudoTecnicoServiceImpl extends GenericServiceImpl<EstudoTecnico, |
183 | 186 | this.montarObjetoEstudoTecnico(estudoTecnico); |
184 | 187 | |
185 | 188 | // verifica se tem codigo, senao gera e salva entidade |
186 | - if (UtilObjeto.isReferencia(estudoTecnico.getCodigo())) { | |
189 | + if (UtilObjeto.isReferencia(estudoTecnico.getRegistroSequencial())) { | |
187 | 190 | |
188 | 191 | return super.save(estudoTecnico); |
189 | 192 | |
... | ... | @@ -397,17 +400,22 @@ public class EstudoTecnicoServiceImpl extends GenericServiceImpl<EstudoTecnico, |
397 | 400 | */ |
398 | 401 | private void configurarCodigo(EstudoTecnico entitySaved) { |
399 | 402 | |
400 | - EstudoTecnico ultimoRegistro = (EstudoTecnico) this.estudoTecnicoDao.buscarUltimoRegistroComOrdenadoParametrizada(CAMPO_BUSCA_PARAMETRIZADA_ULTIMO_REGISTRO); | |
403 | + Usuario usuarioLogado = (Usuario) usuarioService.find(( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); | |
404 | + Calendar date = Calendar.getInstance(); | |
405 | + EstudoTecnico ultimoRegistro = (EstudoTecnico) estudoTecnicoDao.buscarUltimoRegistroPorDataEmissao(date.get(Calendar.YEAR), usuarioLogado.getOrganizacao().getId()); | |
401 | 406 | |
402 | 407 | Long sequencial = null; |
403 | - | |
404 | - if (UtilObjeto.isReferencia(ultimoRegistro)) { | |
405 | - sequencial = ultimoRegistro.getCodigo() == null ? null : Long.parseLong(ultimoRegistro.getCodigo()); | |
408 | + if (ultimoRegistro != null) { | |
409 | + sequencial = ultimoRegistro.getRegistroSequencial().getNumeroSequencial() == null ? null : ultimoRegistro.getRegistroSequencial().getNumeroSequencial(); | |
406 | 410 | } |
407 | - | |
408 | - String codigo = this.configuracaoParametroSistemaService.gerarNumeroIdentificacaoSeguencial(sequencial); | |
409 | - | |
410 | - entitySaved.setCodigo(codigo); | |
411 | + if (sequencial != null){ | |
412 | + sequencial++; | |
413 | + } else { | |
414 | + sequencial = 1l; | |
415 | + } | |
416 | + String numeroAnoOcorrencia = StringUtils.leftPad(sequencial.toString() + date.get(Calendar.YEAR), 9, "0"); | |
417 | + RegistroSequencial registroSequencial = new RegistroSequencial(sequencial, numeroAnoOcorrencia); | |
418 | + entitySaved.setRegistroOcorrenciaSequencial(registroSequencial); | |
411 | 419 | } |
412 | 420 | |
413 | 421 | @Override | ... | ... |
cit-contratos-api/src/main/resources/script-bd/v1.0.0-alpha10/01-cit-contratos-1.0.0-ALFA-10-postgres.sql
1 | 1 | -- ERICK SATO INÍCIO 30/03/2016 |
2 | 2 | TRUNCATE INTERNACIONALIZACAO; |
3 | 3 | UPDATE DOMINIO SET descricao = 'Reforço' where CHAVE = 'tipoFinalidadeEmpenhoContrato' AND descricao = 'Redorço'; |
4 | --- ERICK SATO FIM 30/03/2016 | |
5 | 4 | \ No newline at end of file |
5 | +-- ERICK SATO FIM 30/03/2016 | |
6 | + | |
7 | +-- ERICK INIICIO 31/03/2016 | |
8 | + | |
9 | +--cnt_estudoTecnico | |
10 | +ALTER TABLE cnt_estudoTecnico ADD COLUMN numerosequencial bigint NULL; | |
11 | +ALTER TABLE cnt_estudoTecnico ADD COLUMN sequencialAno varchar(20) NULL; | |
12 | + | |
13 | +DO $$ | |
14 | +DECLARE | |
15 | + r RECORD; | |
16 | +BEGIN | |
17 | + FOR r IN | |
18 | + SELECT | |
19 | + lpad(CAST(concat(CAST(CAST(codigo AS integer) AS VARCHAR), CAST(date_part('Year', (SELECT CURRENT_TIMESTAMP)) AS VARCHAR)) AS VARCHAR),9,'0') AS SEQUENCIALANO | |
20 | + FROM cnt_estudoTecnico | |
21 | + LOOP | |
22 | + UPDATE cnt_estudoTecnico SET numerosequencial = CAST(codigo AS integer), sequencialAno = r.SEQUENCIALANO WHERE | |
23 | + lpad(CAST(concat(CAST(CAST(codigo AS integer) AS VARCHAR), CAST(date_part('Year', (SELECT CURRENT_TIMESTAMP)) AS VARCHAR)) AS VARCHAR),9,'0') = r.SEQUENCIALANO; | |
24 | + END LOOP; | |
25 | +END$$; | |
26 | + | |
27 | +ALTER TABLE cnt_estudoTecnico DROP COLUMN codigo; | |
28 | + | |
29 | +-- ERICK FIM 31/03/2016 | |
30 | + | ... | ... |
cit-contratos-api/src/test/java/br/com/centralit/api/service/impl/EstudoTecnicoServiceImplTest.java
1 | 1 | package br.com.centralit.api.service.impl; |
2 | 2 | |
3 | -import static org.hamcrest.MatcherAssert.assertThat; | |
4 | -import static org.hamcrest.Matchers.equalTo; | |
5 | 3 | import static org.junit.Assert.assertNotNull; |
6 | 4 | import static org.junit.Assert.assertTrue; |
7 | 5 | import static org.mockito.Matchers.any; |
... | ... | @@ -122,7 +120,7 @@ public class EstudoTecnicoServiceImplTest extends GenericServiceImplTest<EstudoT |
122 | 120 | |
123 | 121 | @Override |
124 | 122 | protected void inicializarMocksDasDependencias() { |
125 | - | |
123 | + | |
126 | 124 | } |
127 | 125 | |
128 | 126 | @Before |
... | ... | @@ -190,9 +188,7 @@ public class EstudoTecnicoServiceImplTest extends GenericServiceImplTest<EstudoT |
190 | 188 | |
191 | 189 | assertNotNull(estudoTecnicoSaved.getId()); |
192 | 190 | assertTrue(estudoTecnicoSaved.getId() > 0); |
193 | - assertNotNull(estudoTecnicoSaved.getCodigo()); | |
194 | - assertThat(estudoTecnicoSaved.getCodigo(), equalTo(CODIGO_INICIAL_ESTUDO_TECNICO_TESTE_SAVE_SEM_CODIGO)); | |
195 | - | |
191 | + assertNotNull(estudoTecnicoSaved.getRegistroSequencial()); | |
196 | 192 | LOG.info("==================== Finalizando testSavePrimeiroRegistroEstudoTecnicoSemCodigo ==================== "); |
197 | 193 | |
198 | 194 | } |
... | ... | @@ -204,7 +200,6 @@ public class EstudoTecnicoServiceImplTest extends GenericServiceImplTest<EstudoT |
204 | 200 | |
205 | 201 | EstudoTecnico estudoTecnico = Fixture.from(EstudoTecnico.class).gimme("valid"); |
206 | 202 | estudoTecnico.setId(1L); |
207 | - estudoTecnico.setCodigo("000001"); | |
208 | 203 | |
209 | 204 | Colaborador colaborador = Fixture.from(Colaborador.class).gimme("valid"); |
210 | 205 | |
... | ... | @@ -233,7 +228,6 @@ public class EstudoTecnicoServiceImplTest extends GenericServiceImplTest<EstudoT |
233 | 228 | |
234 | 229 | assertNotNull(estudoTecnicoSaved.getId()); |
235 | 230 | assertTrue(estudoTecnicoSaved.getId() > 0); |
236 | - assertNotNull(estudoTecnicoSaved.getCodigo()); | |
237 | 231 | |
238 | 232 | LOG.info("==================== Finalizando testMergeRegistroEstudoTecnicoComCodigo ==================== "); |
239 | 233 | ... | ... |
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/EstudoTecnicoListController.js
... | ... | @@ -13,9 +13,10 @@ citApp.controller('EstudoTecnicoListController', ['$scope', 'EstudoTecnicoReposi |
13 | 13 | |
14 | 14 | $scope.headers = [ |
15 | 15 | { |
16 | - value : 'codigo', | |
16 | + value : 'registroSequencial.sequencialAno', | |
17 | 17 | title : $translate.instant('LABEL.NUM_ESTUDO_TECNICO'), |
18 | - align : 'text-center' | |
18 | + align : 'text-center', | |
19 | + mask : [new RegExp(/(\d{3})(\d{1,4})$/), '$1/$2'] | |
19 | 20 | },{ |
20 | 21 | value : 'descricaoSolucao', |
21 | 22 | title : $translate.instant('CONTRATOS.LABEL.DESCRICAO_SOLUCAO'), |
... | ... | @@ -28,8 +29,8 @@ citApp.controller('EstudoTecnicoListController', ['$scope', 'EstudoTecnicoReposi |
28 | 29 | dir : 'asc', |
29 | 30 | sort : 'id', |
30 | 31 | limit : 10, |
31 | - fields: ['id', 'codigo', 'descricaoSolucao'], | |
32 | - filters : [{type: 'numeric-range', field: 'codigo'}, | |
32 | + fields: ['id', 'registroSequencial.sequencialAno', 'descricaoSolucao'], | |
33 | + filters : [{type: 'numeric-range', field: 'registroSequencial.sequencialAno'}, | |
33 | 34 | {type: 'string', field: 'descricaoSolucao'}] |
34 | 35 | }; |
35 | 36 | ... | ... |
cit-contratos-web/src/main/webapp/html/contrato/dialog_item_contrato.html
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | <fieldset> |
23 | 23 | <div class="row"> |
24 | 24 | <div class="col-sm-4"> |
25 | - <auto-complete ng-label="LABEL.ESTUDO_TECNICO" ng-id="itemContratoTemp.estudoTecnico" ng-item="item.codigo" | |
25 | + <auto-complete ng-label="LABEL.ESTUDO_TECNICO" ng-id="itemContratoTemp.estudoTecnico" ng-item="item.registroSequencial.sequencialAno" | |
26 | 26 | ng-model="itemContratoTemp.estudoTecnico" form="formDialogItemContrato" ng-obrigatorio="editItemContrato" |
27 | 27 | ng-disabled="!editItemContrato" ng-find="findAutoCompleteEstudoTecnicoPorCodigoAndOrganizacao(value)"/> |
28 | 28 | </div><!-- .col-sm-4 --> | ... | ... |
cit-contratos-web/src/main/webapp/html/estudoTecnico/estudoTecnicoPg1.html
... | ... | @@ -7,8 +7,8 @@ |
7 | 7 | |
8 | 8 | <div class='row'> |
9 | 9 | <div class="col-sm-3"> |
10 | - <label-input ng-type="text" ng-id="estudoTecnico.codigo" ng-label="CONTRATOS.LABEL.NUM_ESTUDO_TECNICO" ng-obrigatorio="false" ng-disabled="true" form="planejamentoContratacaoForm" | |
11 | - ng-model="estudoTecnico.codigo" ng-custom-maxlength="6" /> | |
10 | + <label-input ng-type="text" ng-id="estudoTecnico.registroSequencial.sequencialAno" ng-label="CONTRATOS.LABEL.NUM_ESTUDO_TECNICO" ng-obrigatorio="false" ng-disabled="true" form="planejamentoContratacaoForm" | |
11 | + ng-model="estudoTecnico.registroSequencial.sequencialAno" ng-custom-maxlength="6" ng-mask="999999/9999"/> | |
12 | 12 | </div> |
13 | 13 | |
14 | 14 | <div class="col-sm-3"> | ... | ... |