Commit 4ee502daa80f86f7224a1265bfd25356fee01e92
1 parent
9ebced99
Exists in
master
Correção para cadastro e ativação manual do primeiro parametro de cálculo
git-svn-id: https://svn.bento.ifrs.edu.br/default/ASES/e-selo@10329 c2178572-b5ca-4887-91d2-9e3a90c7d55b
Showing
1 changed file
with
610 additions
and
612 deletions
Show diff stats
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java
1 | -package br.com.eselo.controller; | |
2 | - | |
3 | -import java.io.File; | |
4 | -import java.io.FileNotFoundException; | |
5 | -import java.io.FileOutputStream; | |
6 | -import java.io.IOException; | |
7 | -import java.util.ArrayList; | |
8 | -import java.util.Date; | |
9 | -import java.util.HashMap; | |
10 | -import java.util.List; | |
11 | -import java.util.Map; | |
12 | - | |
13 | -import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |
14 | -import org.apache.poi.ss.usermodel.Cell; | |
15 | -import org.apache.poi.ss.usermodel.CellStyle; | |
16 | -import org.apache.poi.ss.usermodel.CreationHelper; | |
17 | -import org.apache.poi.ss.usermodel.Font; | |
18 | -import org.apache.poi.ss.usermodel.IndexedColors; | |
19 | -import org.apache.poi.ss.usermodel.Row; | |
20 | -import org.apache.poi.ss.usermodel.Sheet; | |
21 | -import org.apache.poi.ss.usermodel.Workbook; | |
22 | -import org.apache.poi.ss.util.CellRangeAddress; | |
23 | - | |
24 | -import br.com.caelum.vraptor.Get; | |
25 | -import br.com.caelum.vraptor.Path; | |
26 | -import br.com.caelum.vraptor.Post; | |
27 | -import br.com.caelum.vraptor.Put; | |
28 | -import br.com.caelum.vraptor.Resource; | |
29 | -import br.com.caelum.vraptor.Result; | |
30 | -import br.com.caelum.vraptor.Validator; | |
31 | -import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder; | |
32 | -import br.com.caelum.vraptor.validator.ValidationMessage; | |
33 | -import br.com.eselo.annotations.Restrito; | |
34 | -import br.com.eselo.component.CopiadorParametroCalculo; | |
35 | -import br.com.eselo.component.Messages; | |
36 | -import br.com.eselo.component.UsuarioWeb; | |
37 | -import br.com.eselo.dao.AvaliacaoDAO; | |
38 | -import br.com.eselo.dao.ParametroCalculoDAO; | |
39 | -import br.com.eselo.dao.RecomendacaoDAO; | |
40 | -import br.com.eselo.dao.UsuarioDAO; | |
41 | -import br.com.eselo.integracao.CriterioAvaliado; | |
42 | -import br.com.eselo.model.Criterio; | |
43 | -import br.com.eselo.model.Faixa; | |
44 | -import br.com.eselo.model.ParametroCalculo; | |
45 | -import br.com.eselo.model.Recomendacao; | |
46 | -import br.com.eselo.model.Usuario; | |
47 | - | |
48 | -@Resource | |
49 | -public class ParametroCalculoController { | |
50 | - | |
51 | - private final ParametroCalculoDAO dao; | |
52 | - private final Result result; | |
53 | - private final Validator validator; | |
54 | - private final UsuarioWeb usuarioWeb; | |
55 | - | |
56 | - protected static final int MODO_ADD = 1; | |
57 | - protected static final int MODO_EDIT = 2; | |
58 | - protected static final int MODO_DELETE = 3; | |
59 | - protected static final int MODO_IMPORT = 4; | |
60 | - | |
61 | - public ParametroCalculoController(ParametroCalculoDAO _dao, | |
62 | - RecomendacaoDAO _daoRecomendacao, Result _result, | |
63 | - Validator _validator, UsuarioWeb _usuarioWeb) { | |
64 | - dao = _dao; | |
65 | - result = _result; | |
66 | - validator = _validator; | |
67 | - usuarioWeb = _usuarioWeb; | |
68 | - } | |
69 | - | |
70 | - @Get("/parametrosCalculo/novo") | |
71 | - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
72 | - public void novo() { | |
73 | - ParametroCalculo parametroCalculo = new ParametroCalculo(); | |
74 | - parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId())); | |
75 | - parametroCalculo.setTsInicio(new java.util.Date()); | |
76 | - inserirParametroCalculo(parametroCalculo); | |
77 | - | |
78 | - result.redirectTo(ParametroCalculoController.class) | |
79 | - .form(dao.getMaxId()); | |
80 | - } | |
81 | - | |
82 | - @Get("/parametrosCalculo/importar/") | |
83 | - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
84 | - public void importar(long idParametroCalculo) { | |
85 | - | |
86 | - String acao = VRaptorRequestHolder.currentRequest().getRequest().getParameter("acao"); | |
87 | - | |
88 | - String mensagem=""; | |
89 | - | |
90 | - if(acao.equals("Importar")){ | |
91 | - ParametroCalculo pc = dao.load(idParametroCalculo); | |
92 | - this.criarNovoParametroCalculo(pc, MODO_IMPORT); | |
93 | - mensagem = Messages.getString("parametro_calculo.criado") | |
94 | - + pc.getDescricao() + "."; | |
95 | - | |
96 | - result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId()); | |
97 | - | |
98 | - }else if(acao.equals("Não Importar")){ | |
99 | - criarNovoParametroCalculo(new ParametroCalculo(), MODO_ADD); | |
100 | - mensagem = Messages.getString("parametro_calculo.criado.limpo"); | |
101 | - | |
102 | - result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId()); | |
103 | - | |
104 | - }else if(acao.equals("Cancelar")){ | |
105 | - mensagem = Messages.getString("validacao.acao_cancelada"); | |
106 | - result.redirectTo(ParametroCalculoController.class).lista(); | |
107 | - } | |
108 | - | |
109 | - result.include("mensagem", mensagem); | |
110 | - } | |
111 | - | |
112 | - @Post("/parametrosCalculo") | |
113 | - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
114 | - public void adicionar(ParametroCalculo parametroCalculo) { | |
115 | - | |
116 | - inserirParametroCalculo(parametroCalculo); | |
117 | - | |
118 | - result.include("mensagem", "Parâmetro de Cálculo salvo com sucesso."); | |
119 | - result.redirectTo(ParametroCalculoController.class).index(1); | |
120 | - } | |
121 | - | |
122 | - protected void inserirParametroCalculo(ParametroCalculo parametroCalculo) { | |
123 | - if (parametroCalculo.getDescricao() == null) { | |
124 | - validator.add(new ValidationMessage(Messages | |
125 | - .getString("parametro_calculo.validacao.descricao"), | |
126 | - "parametroCalculo.descricao")); | |
127 | - } | |
128 | - | |
129 | - dao.save(parametroCalculo); | |
130 | - } | |
131 | - | |
132 | - @Put("/parametrosCalculo") | |
133 | - @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR") | |
134 | - public void atualizar(ParametroCalculo parametroCalculo) { | |
135 | - | |
136 | - @SuppressWarnings("unused") | |
137 | - List<Usuario> usuarios = dao.getAllUsuarios(); | |
138 | - ParametroCalculo parametroCalculoCadastrado = dao.load(parametroCalculo.getId()); | |
139 | - | |
140 | - parametroCalculo.setTsInicio(parametroCalculoCadastrado.getTsInicio()); | |
141 | - parametroCalculoCadastrado.setUsuario(new UsuarioDAO(dao.getSession()).load(usuarioWeb.getId())); | |
142 | - parametroCalculo.setUsuario(parametroCalculoCadastrado.getUsuario()); | |
143 | - parametroCalculoCadastrado.setDescricao(parametroCalculo.getDescricao()); | |
144 | - | |
145 | - result.include("mensagem", "Parâmetro de Cálculo atualizado com sucesso."); | |
146 | - result.redirectTo(ParametroCalculoController.class).form(parametroCalculo.getId()); | |
147 | - } | |
148 | - | |
149 | - @Path("/parametrosCalculo/ativar/{id}") | |
150 | - @Restrito(descricao = "PARAMETRO_CALCULO_ATIVAR") | |
151 | - public void ativar(Long id) { | |
152 | - | |
153 | - ParametroCalculo pc = dao.load(id); | |
154 | - | |
155 | - if(validarParametroCalculoAtivacao(pc)){ | |
156 | - ativarParametroCalculo(id); | |
157 | - result.redirectTo(ParametroCalculoController.class).lista(); | |
158 | - }else{ | |
159 | - result.redirectTo(ParametroCalculoController.class).errosAtivacao(id); | |
160 | - } | |
161 | - } | |
162 | - | |
163 | - @Path("/parametrosCalculo/delete/{id}") | |
164 | - @Restrito(descricao = "PARAMETRO_CALCULO_EXCLUIR") | |
165 | - public void excluir(Long id) { | |
166 | - if (dao.listAll().size() > 1) { | |
167 | - ParametroCalculo pc = dao.load(id); | |
168 | - | |
169 | - if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ | |
170 | - if ((pc.getTsFim() == null)) { | |
171 | - | |
172 | - if(pc.getTsInicio()!=null){ | |
173 | - pc = dao.getLastParametrosCalculoAtivavel(pc); | |
174 | - pc.setTsFim(null); | |
175 | - dao.remove(id); | |
176 | - dao.update(pc); | |
177 | - }else{ | |
178 | - dao.remove(id); | |
179 | - } | |
180 | - | |
181 | - result.include("mensagem", | |
182 | - Messages.getString("parametro_calculo.validacao.excluido")); | |
183 | - } else { | |
184 | - result.include("mensagem", | |
185 | - Messages.getString("parametro_calculo.validacao.nao_pode_excluir")); | |
186 | - } | |
187 | - }else{ | |
188 | - | |
189 | - result.include("mensagem", | |
190 | - Messages.getString("parametro_calculo.validacao.nao_pode_excluir.em_uso")); | |
191 | - } | |
192 | - | |
193 | - } else { | |
194 | - result.include("mensagem", | |
195 | - Messages.getString("parametro_calculo.validacao.nao_pode_excluir.unico")); | |
196 | - } | |
197 | - | |
198 | - result.redirectTo(ParametroCalculoController.class).lista(); | |
199 | - } | |
200 | - | |
201 | - @Get("/parametrosCalculo") | |
202 | - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
203 | - public List<ParametroCalculo> lista() { | |
204 | - return this.index(1); | |
205 | - } | |
206 | - | |
207 | - @Get("/parametrosCalculo/{pagina}") | |
208 | - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
209 | - public List<ParametroCalculo> index(int pagina) { | |
210 | - ParametroCalculo ultimoParametro = dao.load(dao.getMaxId()); | |
211 | - | |
212 | - // Paginação | |
213 | - // quantidade de registros por pagina | |
214 | - int exibi = 7; | |
215 | - // Informa a quantidade de registros | |
216 | - int registros = dao.numLinhas(); | |
217 | - // Quantidade de paginas na paginação | |
218 | - int totalPag = registros / exibi; | |
219 | - // se houver resto na divisao acima acrescenta uma pagina na paginação | |
220 | - if ((registros - (totalPag * exibi)) > 0) | |
221 | - totalPag++; | |
222 | - | |
223 | - // Calculo do registro inicial e final | |
224 | - int regIni = ((exibi * pagina) - exibi); | |
225 | - int regFim = (regIni + exibi); | |
226 | - | |
227 | - if (regFim > registros) | |
228 | - regFim = registros; | |
229 | - | |
230 | - // fim paginação | |
231 | - | |
232 | - List<ParametroCalculo> resultado = dao.listAll(regIni, regFim); | |
233 | - List<ParametroCalculo> paginacao = new ArrayList<ParametroCalculo>(); | |
234 | - | |
235 | - for (int i = regIni; i < regFim; i++) { | |
236 | - paginacao.add(resultado.get(i)); | |
237 | - } | |
238 | - | |
239 | - result.include("paginas", totalPag); | |
240 | - result.include("registros", registros); | |
241 | - result.include("regInic", ++regIni); | |
242 | - result.include("regFim", regFim); | |
243 | - result.include("controle", "parametrosCalculo"); | |
244 | - result.include("ultimoParametro", ultimoParametro); | |
245 | - | |
246 | - return paginacao; | |
247 | - } | |
248 | - | |
249 | - @Get("/parametrosCalculo/lista") | |
250 | - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
251 | - public List<ParametroCalculo> lista(ParametroCalculo parametroCalculo) { | |
252 | - result.include("parametroCalculo", parametroCalculo); | |
253 | - return dao.listAll(parametroCalculo); | |
254 | - } | |
255 | - | |
256 | - @Get("/parametrosCalculo/atualizar/{id}") | |
257 | - @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR") | |
258 | - public ParametroCalculo form(Long id) { | |
259 | - ParametroCalculo parametroCalculo = this.dao.load(id); | |
260 | - result.include("usuarioList", dao.getAllUsuarios()); | |
261 | - return parametroCalculo; | |
262 | - } | |
263 | - | |
264 | - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
265 | - public void form() { | |
266 | - ParametroCalculo parametroCalculo = new ParametroCalculo(); | |
267 | - parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId())); | |
268 | - //parametroCalculo.setTsInicio(new java.util.Date()); | |
269 | - result.include("parametroCalculo", parametroCalculo); | |
270 | - } | |
271 | - | |
272 | - private void criarNovoParametroCalculo(ParametroCalculo parametroCalculo, | |
273 | - int tipo) { | |
274 | - boolean ok = false; | |
275 | - | |
276 | - switch (tipo) { | |
277 | - case ParametroCalculoController.MODO_ADD: | |
278 | - parametroCalculo.setId(0L); | |
279 | - ok = true; | |
280 | - break; | |
281 | - | |
282 | - case ParametroCalculoController.MODO_IMPORT: | |
283 | - ok = true; | |
284 | - break; | |
285 | - } | |
286 | - | |
287 | - if (ok) { | |
288 | - new CopiadorParametroCalculo().criarNovoParametroCalculo( | |
289 | - parametroCalculo, usuarioWeb, dao.getSession()); | |
290 | - } | |
291 | - | |
292 | - } | |
293 | - | |
294 | - private boolean validarParametroCalculoAtivacao(ParametroCalculo parametroCalculo){ | |
295 | - boolean resultado = true; | |
296 | - String mensagem=""; | |
297 | - String aviso= " Não foi possível ativar este parâmetro de cálculo!<br/> Antes da ativação será necessário resolver as pendências listadas abaixo."; | |
298 | - | |
299 | - if(parametroCalculo.getRecomendacoes().size()>0){ | |
300 | - for(Recomendacao r: parametroCalculo.getRecomendacoes()){ | |
301 | - if(r.getCriterios().size()>0){ | |
302 | - for(Criterio c: r.getCriterios()){ | |
303 | - if((c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE) && (c.getFaixas().size() < 1)){ | |
304 | - mensagem = mensagem+" O criterio "+c.getNumeroCriterio()+" da recomendação "+r.getNumeroRecomendacao()+" é do tipo DECRESCENTE e não possui nenhuma faixa cadastrada.<br/>"; | |
305 | - resultado = false; | |
306 | - } | |
307 | - } | |
308 | - }else{ | |
309 | - mensagem = mensagem+" A recomendação "+r.getNumeroRecomendacao()+" não possui nenhum critério cadastrado.<br/>"; | |
310 | - resultado = false; | |
311 | - } | |
312 | - } | |
313 | - }else{ | |
314 | - mensagem = "Nenhuma recomendação foi cadastrada."; | |
315 | - resultado = false; | |
316 | - } | |
317 | - | |
318 | - if(resultado){ | |
319 | - result.include("mensagem", Messages.getString("parametro_calculo.validacao.ativado")); | |
320 | - }else{ | |
321 | - result.include("mensagem",aviso); | |
322 | - System.out.println(mensagem); | |
323 | - } | |
324 | - | |
325 | - return resultado; | |
326 | - } | |
327 | - | |
328 | - private void ativarParametroCalculo(Long id){ | |
329 | - ParametroCalculo parametroCalculoelegivel, parametroCalculoAtivo; | |
330 | - parametroCalculoelegivel = dao.load(id); | |
331 | - parametroCalculoAtivo = dao.getLastParametrosCalculoAtivo(); | |
332 | - | |
333 | - parametroCalculoelegivel.setTsInicio(new Date()); | |
334 | - parametroCalculoAtivo.setTsFim(parametroCalculoelegivel.getTsInicio()); | |
335 | - | |
336 | - dao.update(parametroCalculoelegivel); | |
337 | - dao.update(parametroCalculoAtivo); | |
338 | - } | |
339 | - | |
340 | - @Get("/parametrosCalculo/relatorio/{id}") | |
341 | - @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO") | |
342 | - public ParametroCalculo relatorio(Long id) { | |
343 | - ParametroCalculo parametroCalculo = this.dao.load(id); | |
344 | - result.include("usuarioList", dao.getAllUsuarios()); | |
345 | - result.include("recomendacaoList", | |
346 | - new RecomendacaoDAO(dao.getSession()) | |
347 | - .listAllAtivas(parametroCalculo)); | |
348 | - | |
349 | - return parametroCalculo; | |
350 | - } | |
351 | - | |
352 | - @Get("/parametrosCalculo/errosAtivacao/{id}") | |
353 | - @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO") | |
354 | - public ParametroCalculo errosAtivacao(Long id) { | |
355 | - ParametroCalculo parametroCalculo = this.dao.load(id); | |
356 | - result.include("usuarioList", dao.getAllUsuarios()); | |
357 | - | |
358 | - | |
359 | - List<Recomendacao> recomendacaoList = parametroCalculo.getRecomendacoes(); | |
360 | - List<Recomendacao> recomendacaoListErros = new ArrayList<Recomendacao>(); | |
361 | - | |
362 | - for(Recomendacao r: recomendacaoList){ | |
363 | - if(r.getCriterios().size()<1){ | |
364 | - recomendacaoListErros.add(r); | |
365 | - }else{ | |
366 | - boolean add = false; | |
367 | - List<Criterio> criterios = new ArrayList<Criterio>(); | |
368 | - for(Criterio c: r.getCriterios()){ | |
369 | - if(c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE && c.getFaixas().size()<1){ | |
370 | - criterios.add(c); | |
371 | - add = true; | |
372 | - } | |
373 | - } | |
374 | - if(add){ | |
375 | - r.setCriterios(criterios); | |
376 | - recomendacaoListErros.add(r); | |
377 | - } | |
378 | - } | |
379 | - } | |
380 | - | |
381 | - | |
382 | - result.include("recomendacaoList", recomendacaoListErros); | |
383 | - | |
384 | - return parametroCalculo; | |
385 | - } | |
386 | - | |
387 | - @Get("/parametroAtivo.xls") | |
388 | - public File exportarAtivo(){ | |
389 | - Long id = dao.getLastParametrosCalculoAtivo().getId(); | |
390 | - return exportar(id); | |
391 | - } | |
392 | - | |
393 | - @Get("/parametrosCalculo/exportar/{id}/*") | |
394 | - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
395 | - public File exportar(Long id) { | |
396 | - File relatorio = new File("workbook.ods"); | |
397 | - ParametroCalculo parametroCalculo = this.dao.load(id); | |
398 | - List<Recomendacao> recomendacaoList = new RecomendacaoDAO( | |
399 | - dao.getSession()).listAllAtivas(parametroCalculo); | |
400 | - String msgAtivacao=""; | |
401 | - | |
402 | - if(parametroCalculo.getTsInicio() != null){ | |
403 | - msgAtivacao = "Ativado em: "+parametroCalculo.getTsInicio()+"."; | |
404 | - } | |
405 | - if(parametroCalculo.getTsFim() != null){ | |
406 | - msgAtivacao = msgAtivacao +" Encerrado em: "+parametroCalculo.getTsFim(); | |
407 | - } | |
408 | - | |
409 | - Workbook wb = new HSSFWorkbook(); | |
410 | - FileOutputStream fileOut; | |
411 | - | |
412 | - Map<String, CellStyle> styles = createStyles(wb); | |
413 | - CreationHelper createHelper = wb.getCreationHelper(); | |
414 | - Sheet sheet = wb.createSheet("new sheet"); | |
415 | - sheet.setPrintGridlines(false); | |
416 | - sheet.setDisplayGridlines(false); | |
417 | - | |
418 | - short rows = 0; | |
419 | - Row row = sheet.createRow(rows); | |
420 | - Cell cell = row.createCell(0); | |
421 | - cell.setCellValue(createHelper.createRichTextString(parametroCalculo.getDescricao())); | |
422 | - cell.setCellStyle(styles.get("title")); | |
423 | - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1")); | |
424 | - rows++; | |
425 | - | |
426 | - row = sheet.createRow(rows); | |
427 | - cell = row.createCell(0); | |
428 | - cell.setCellValue(createHelper.createRichTextString(msgAtivacao)); | |
429 | - CellStyle style = wb.createCellStyle(); | |
430 | - style.setAlignment(CellStyle.ALIGN_CENTER); | |
431 | - cell.setCellStyle(style); | |
432 | - | |
433 | - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$2:$L$2")); | |
434 | - rows += 3; | |
435 | - | |
436 | - for (Recomendacao recomendacao : recomendacaoList) { | |
437 | - row = sheet.createRow(rows); | |
438 | - cell = row.createCell(0); | |
439 | - cell.setCellValue( | |
440 | - createHelper.createRichTextString("Recomendação " | |
441 | - + recomendacao.getNumeroRecomendacao()) | |
442 | - + ": " + recomendacao.getDescricao() | |
443 | - + " (Peso: "+recomendacao.getPeso()+")" | |
444 | - ); | |
445 | - cell.setCellStyle(styles.get("subtitle")); | |
446 | - rows++; | |
447 | - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$"+rows+":$L$"+rows)); | |
448 | - | |
449 | - /* | |
450 | - row = sheet.createRow(rows); | |
451 | - cell = row.createCell(1); | |
452 | - cell.setCellValue("Descrição"); | |
453 | - cell.setCellStyle(styles.get("label")); | |
454 | - row.createCell(2).setCellValue(recomendacao.getDescricao()); | |
455 | - rows++; | |
456 | - | |
457 | - row = sheet.createRow(rows); | |
458 | - cell = row.createCell(1); | |
459 | - cell.setCellValue("Peso"); | |
460 | - cell.setCellStyle(styles.get("label")); | |
461 | - cell = row.createCell(2); | |
462 | - cell.setCellValue(recomendacao.getPeso()); | |
463 | - cell.setCellStyle(styles.get("numeric")); | |
464 | - rows += 2; | |
465 | - */ | |
466 | - | |
467 | - row = sheet.createRow(rows); | |
468 | - cell = row.createCell(1); | |
469 | - cell.setCellValue("Número Critério"); | |
470 | - cell.setCellStyle(styles.get("label")); | |
471 | - cell = row.createCell(2); | |
472 | - cell.setCellValue("Peso"); | |
473 | - cell.setCellStyle(styles.get("label")); | |
474 | - cell = row.createCell(3); | |
475 | - cell.setCellValue("Descrição"); | |
476 | - cell.setCellStyle(styles.get("label")); | |
477 | - cell = row.createCell(4); | |
478 | - cell.setCellValue("Requisito"); | |
479 | - cell.setCellStyle(styles.get("label")); | |
480 | - cell = row.createCell(5); | |
481 | - cell.setCellValue("Tipo de Verificação"); | |
482 | - cell.setCellStyle(styles.get("label")); | |
483 | - cell = row.createCell(6); | |
484 | - cell.setCellValue("Tipo de Mensagem"); | |
485 | - cell.setCellStyle(styles.get("label")); | |
486 | - rows++; | |
487 | - | |
488 | - for (Criterio criterio : recomendacao.getCriterios()) { | |
489 | - row = sheet.createRow(rows); | |
490 | - row.createCell(1).setCellValue(criterio.getNumeroCriterio()); | |
491 | - row.createCell(2).setCellValue(criterio.getPeso()); | |
492 | - row.createCell(3).setCellValue(criterio.getDescricao()); | |
493 | - | |
494 | - row.createCell(4).setCellValue(criterio.getRequisito()); | |
495 | - | |
496 | - String tipoVetificacao; | |
497 | - if(criterio.isVerificacaoAutomatica()){ | |
498 | - tipoVetificacao = "Automática"; | |
499 | - }else if(!criterio.isVerificacaoAutomatica()){ | |
500 | - tipoVetificacao="Humana"; | |
501 | - }else{ | |
502 | - tipoVetificacao=""; | |
503 | - } | |
504 | - | |
505 | - String tipoErro; | |
506 | - if(criterio.isErro()){ | |
507 | - tipoErro = "Erro"; | |
508 | - }else if(!criterio.isErro()){ | |
509 | - tipoErro="Aviso"; | |
510 | - }else{ | |
511 | - tipoErro=""; | |
512 | - } | |
513 | - | |
514 | - row.createCell(5).setCellValue(tipoVetificacao); | |
515 | - row.createCell(6).setCellValue(tipoErro); | |
516 | - | |
517 | - if(criterio.getTipoTeste().getId().intValue()==3){ | |
518 | - rows++; | |
519 | - row = sheet.createRow(rows); | |
520 | - cell = row.createCell(2); | |
521 | - cell.setCellValue("Faixa"); | |
522 | - cell.setCellStyle(styles.get("label")); | |
523 | - cell = row.createCell(3); | |
524 | - cell.setCellValue("Descrição"); | |
525 | - cell.setCellStyle(styles.get("label")); | |
526 | - cell = row.createCell(4); | |
527 | - cell.setCellValue("Início"); | |
528 | - cell.setCellStyle(styles.get("label")); | |
529 | - cell = row.createCell(5); | |
530 | - cell.setCellValue("Fim"); | |
531 | - cell.setCellStyle(styles.get("label")); | |
532 | - cell = row.createCell(6); | |
533 | - cell.setCellValue("%"); | |
534 | - cell.setCellStyle(styles.get("label")); | |
535 | - rows++; | |
536 | - | |
537 | - for(Faixa faixa:criterio.getFaixas()){ | |
538 | - row = sheet.createRow(rows); | |
539 | - row.createCell(2).setCellValue(faixa.getFaixa()); | |
540 | - row.createCell(3).setCellValue(faixa.getDescricao()); | |
541 | - row.createCell(4).setCellValue(faixa.getFaixaInicio()); | |
542 | - row.createCell(5).setCellValue(faixa.getFaixaFim()); | |
543 | - row.createCell(6).setCellValue(faixa.getPercentualConformidade()); | |
544 | - rows++; | |
545 | - | |
546 | - } | |
547 | - | |
548 | - } | |
549 | - | |
550 | - | |
551 | - rows++; | |
552 | - } | |
553 | - | |
554 | - rows += 2; | |
555 | - } | |
556 | - | |
557 | - try { | |
558 | - fileOut = new FileOutputStream(relatorio); | |
559 | - wb.write(fileOut); | |
560 | - } catch (FileNotFoundException e) { | |
561 | - e.printStackTrace(); | |
562 | - } catch (IOException e) { | |
563 | - e.printStackTrace(); | |
564 | - } | |
565 | - | |
566 | - return relatorio; | |
567 | - } | |
568 | - | |
569 | - private static Map<String, CellStyle> createStyles(Workbook wb) { | |
570 | - Map<String, CellStyle> styles = new HashMap<String, CellStyle>(); | |
571 | - | |
572 | - CellStyle style; | |
573 | - Font fontLargeBold = wb.createFont(); | |
574 | - fontLargeBold.setFontHeightInPoints((short) 12); | |
575 | - fontLargeBold.setFontName("Arial"); | |
576 | - fontLargeBold.setBoldweight(Font.BOLDWEIGHT_BOLD); | |
577 | - | |
578 | - Font fontMediumBold = wb.createFont(); | |
579 | - fontMediumBold.setFontHeightInPoints((short) 11); | |
580 | - fontMediumBold.setFontName("Arial"); | |
581 | - fontMediumBold.setBoldweight(Font.BOLDWEIGHT_BOLD); | |
582 | - | |
583 | - Font fontNormalBold = wb.createFont(); | |
584 | - fontNormalBold.setFontHeightInPoints((short) 10); | |
585 | - fontNormalBold.setFontName("Arial"); | |
586 | - fontNormalBold.setBoldweight(Font.BOLDWEIGHT_BOLD); | |
587 | - | |
588 | - style = wb.createCellStyle(); | |
589 | - style.setAlignment(CellStyle.ALIGN_CENTER); | |
590 | - style.setFont(fontLargeBold); | |
591 | - styles.put("title", style); | |
592 | - | |
593 | - style = wb.createCellStyle(); | |
594 | - style.setAlignment(CellStyle.ALIGN_LEFT); | |
595 | - style.setFont(fontMediumBold); | |
596 | - style.setBorderBottom(CellStyle.BORDER_DOTTED); | |
597 | - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); | |
598 | - styles.put("subtitle", style); | |
599 | - | |
600 | - style = wb.createCellStyle(); | |
601 | - style.setAlignment(CellStyle.ALIGN_LEFT); | |
602 | - style.setFont(fontNormalBold); | |
603 | - styles.put("label", style); | |
604 | - | |
605 | - style = wb.createCellStyle(); | |
606 | - style.setAlignment(CellStyle.ALIGN_LEFT); | |
607 | - style.setDataFormat(wb.createDataFormat().getFormat("0")); | |
608 | - styles.put("numeric", style); | |
609 | - | |
610 | - return styles; | |
611 | - } | |
612 | -} | |
1 | +package br.com.eselo.controller; | |
2 | + | |
3 | +import java.io.File; | |
4 | +import java.io.FileNotFoundException; | |
5 | +import java.io.FileOutputStream; | |
6 | +import java.io.IOException; | |
7 | +import java.util.ArrayList; | |
8 | +import java.util.Date; | |
9 | +import java.util.HashMap; | |
10 | +import java.util.List; | |
11 | +import java.util.Map; | |
12 | + | |
13 | +import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |
14 | +import org.apache.poi.ss.usermodel.Cell; | |
15 | +import org.apache.poi.ss.usermodel.CellStyle; | |
16 | +import org.apache.poi.ss.usermodel.CreationHelper; | |
17 | +import org.apache.poi.ss.usermodel.Font; | |
18 | +import org.apache.poi.ss.usermodel.IndexedColors; | |
19 | +import org.apache.poi.ss.usermodel.Row; | |
20 | +import org.apache.poi.ss.usermodel.Sheet; | |
21 | +import org.apache.poi.ss.usermodel.Workbook; | |
22 | +import org.apache.poi.ss.util.CellRangeAddress; | |
23 | + | |
24 | +import br.com.caelum.vraptor.Get; | |
25 | +import br.com.caelum.vraptor.Path; | |
26 | +import br.com.caelum.vraptor.Post; | |
27 | +import br.com.caelum.vraptor.Put; | |
28 | +import br.com.caelum.vraptor.Resource; | |
29 | +import br.com.caelum.vraptor.Result; | |
30 | +import br.com.caelum.vraptor.Validator; | |
31 | +import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder; | |
32 | +import br.com.caelum.vraptor.validator.ValidationMessage; | |
33 | +import br.com.eselo.annotations.Restrito; | |
34 | +import br.com.eselo.component.CopiadorParametroCalculo; | |
35 | +import br.com.eselo.component.Messages; | |
36 | +import br.com.eselo.component.UsuarioWeb; | |
37 | +import br.com.eselo.dao.AvaliacaoDAO; | |
38 | +import br.com.eselo.dao.ParametroCalculoDAO; | |
39 | +import br.com.eselo.dao.RecomendacaoDAO; | |
40 | +import br.com.eselo.dao.UsuarioDAO; | |
41 | +import br.com.eselo.integracao.CriterioAvaliado; | |
42 | +import br.com.eselo.model.Criterio; | |
43 | +import br.com.eselo.model.Faixa; | |
44 | +import br.com.eselo.model.ParametroCalculo; | |
45 | +import br.com.eselo.model.Recomendacao; | |
46 | +import br.com.eselo.model.Usuario; | |
47 | + | |
48 | +@Resource | |
49 | +public class ParametroCalculoController { | |
50 | + | |
51 | + private final ParametroCalculoDAO dao; | |
52 | + private final Result result; | |
53 | + private final Validator validator; | |
54 | + private final UsuarioWeb usuarioWeb; | |
55 | + | |
56 | + protected static final int MODO_ADD = 1; | |
57 | + protected static final int MODO_EDIT = 2; | |
58 | + protected static final int MODO_DELETE = 3; | |
59 | + protected static final int MODO_IMPORT = 4; | |
60 | + | |
61 | + public ParametroCalculoController(ParametroCalculoDAO _dao, | |
62 | + RecomendacaoDAO _daoRecomendacao, Result _result, | |
63 | + Validator _validator, UsuarioWeb _usuarioWeb) { | |
64 | + dao = _dao; | |
65 | + result = _result; | |
66 | + validator = _validator; | |
67 | + usuarioWeb = _usuarioWeb; | |
68 | + } | |
69 | + | |
70 | + @Get("/parametrosCalculo/novo") | |
71 | + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
72 | + public void novo() { | |
73 | + ParametroCalculo parametroCalculo = new ParametroCalculo(); | |
74 | + parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId())); | |
75 | + parametroCalculo.setTsInicio(new java.util.Date()); | |
76 | + inserirParametroCalculo(parametroCalculo); | |
77 | + | |
78 | + result.redirectTo(ParametroCalculoController.class) | |
79 | + .form(dao.getMaxId()); | |
80 | + } | |
81 | + | |
82 | + @Get("/parametrosCalculo/importar/") | |
83 | + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
84 | + public void importar(long idParametroCalculo) { | |
85 | + | |
86 | + String acao = VRaptorRequestHolder.currentRequest().getRequest().getParameter("acao"); | |
87 | + | |
88 | + String mensagem=""; | |
89 | + | |
90 | + if(acao.equals("Importar")){ | |
91 | + ParametroCalculo pc = dao.load(idParametroCalculo); | |
92 | + this.criarNovoParametroCalculo(pc, MODO_IMPORT); | |
93 | + mensagem = Messages.getString("parametro_calculo.criado") | |
94 | + + pc.getDescricao() + "."; | |
95 | + | |
96 | + result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId()); | |
97 | + | |
98 | + }else if(acao.equals("Não Importar")){ | |
99 | + criarNovoParametroCalculo(new ParametroCalculo(), MODO_ADD); | |
100 | + mensagem = Messages.getString("parametro_calculo.criado.limpo"); | |
101 | + | |
102 | + result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId()); | |
103 | + | |
104 | + }else if(acao.equals("Cancelar")){ | |
105 | + mensagem = Messages.getString("validacao.acao_cancelada"); | |
106 | + result.redirectTo(ParametroCalculoController.class).lista(); | |
107 | + } | |
108 | + | |
109 | + result.include("mensagem", mensagem); | |
110 | + } | |
111 | + | |
112 | + @Post("/parametrosCalculo") | |
113 | + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
114 | + public void adicionar(ParametroCalculo parametroCalculo) { | |
115 | + | |
116 | + inserirParametroCalculo(parametroCalculo); | |
117 | + | |
118 | + result.include("mensagem", "Parâmetro de Cálculo salvo com sucesso."); | |
119 | + result.redirectTo(ParametroCalculoController.class).index(1); | |
120 | + } | |
121 | + | |
122 | + protected void inserirParametroCalculo(ParametroCalculo parametroCalculo) { | |
123 | + if (parametroCalculo.getDescricao() == null) { | |
124 | + validator.add(new ValidationMessage(Messages | |
125 | + .getString("parametro_calculo.validacao.descricao"), | |
126 | + "parametroCalculo.descricao")); | |
127 | + } | |
128 | + | |
129 | + dao.save(parametroCalculo); | |
130 | + } | |
131 | + | |
132 | + @Put("/parametrosCalculo") | |
133 | + @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR") | |
134 | + public void atualizar(ParametroCalculo parametroCalculo) { | |
135 | + | |
136 | + @SuppressWarnings("unused") | |
137 | + List<Usuario> usuarios = dao.getAllUsuarios(); | |
138 | + ParametroCalculo parametroCalculoCadastrado = dao.load(parametroCalculo.getId()); | |
139 | + | |
140 | + parametroCalculo.setTsInicio(parametroCalculoCadastrado.getTsInicio()); | |
141 | + parametroCalculoCadastrado.setUsuario(new UsuarioDAO(dao.getSession()).load(usuarioWeb.getId())); | |
142 | + parametroCalculo.setUsuario(parametroCalculoCadastrado.getUsuario()); | |
143 | + parametroCalculoCadastrado.setDescricao(parametroCalculo.getDescricao()); | |
144 | + | |
145 | + result.include("mensagem", "Parâmetro de Cálculo atualizado com sucesso."); | |
146 | + result.redirectTo(ParametroCalculoController.class).form(parametroCalculo.getId()); | |
147 | + } | |
148 | + | |
149 | + @Path("/parametrosCalculo/ativar/{id}") | |
150 | + @Restrito(descricao = "PARAMETRO_CALCULO_ATIVAR") | |
151 | + public void ativar(Long id) { | |
152 | + | |
153 | + ParametroCalculo pc = dao.load(id); | |
154 | + | |
155 | + if(validarParametroCalculoAtivacao(pc)){ | |
156 | + ativarParametroCalculo(id); | |
157 | + result.redirectTo(ParametroCalculoController.class).lista(); | |
158 | + }else{ | |
159 | + result.redirectTo(ParametroCalculoController.class).errosAtivacao(id); | |
160 | + } | |
161 | + } | |
162 | + | |
163 | + @Path("/parametrosCalculo/delete/{id}") | |
164 | + @Restrito(descricao = "PARAMETRO_CALCULO_EXCLUIR") | |
165 | + public void excluir(Long id) { | |
166 | + if (dao.listAll().size() > 1) { | |
167 | + ParametroCalculo pc = dao.load(id); | |
168 | + | |
169 | + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ | |
170 | + if ((pc.getTsFim() == null)) { | |
171 | + | |
172 | + if(pc.getTsInicio()!=null){ | |
173 | + pc = dao.getLastParametrosCalculoAtivavel(pc); | |
174 | + pc.setTsFim(null); | |
175 | + dao.remove(id); | |
176 | + dao.update(pc); | |
177 | + }else{ | |
178 | + dao.remove(id); | |
179 | + } | |
180 | + | |
181 | + result.include("mensagem", | |
182 | + Messages.getString("parametro_calculo.validacao.excluido")); | |
183 | + } else { | |
184 | + result.include("mensagem", | |
185 | + Messages.getString("parametro_calculo.validacao.nao_pode_excluir")); | |
186 | + } | |
187 | + }else{ | |
188 | + | |
189 | + result.include("mensagem", | |
190 | + Messages.getString("parametro_calculo.validacao.nao_pode_excluir.em_uso")); | |
191 | + } | |
192 | + | |
193 | + } else { | |
194 | + result.include("mensagem", | |
195 | + Messages.getString("parametro_calculo.validacao.nao_pode_excluir.unico")); | |
196 | + } | |
197 | + | |
198 | + result.redirectTo(ParametroCalculoController.class).lista(); | |
199 | + } | |
200 | + | |
201 | + @Get("/parametrosCalculo") | |
202 | + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
203 | + public List<ParametroCalculo> lista() { | |
204 | + return this.index(1); | |
205 | + } | |
206 | + | |
207 | + @Get("/parametrosCalculo/{pagina}") | |
208 | + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
209 | + public List<ParametroCalculo> index(int pagina) { | |
210 | + ParametroCalculo ultimoParametro = dao.load(dao.getMaxId()); | |
211 | + | |
212 | + // Paginação | |
213 | + // quantidade de registros por pagina | |
214 | + int exibi = 7; | |
215 | + // Informa a quantidade de registros | |
216 | + int registros = dao.numLinhas(); | |
217 | + // Quantidade de paginas na paginação | |
218 | + int totalPag = registros / exibi; | |
219 | + // se houver resto na divisao acima acrescenta uma pagina na paginação | |
220 | + if ((registros - (totalPag * exibi)) > 0) | |
221 | + totalPag++; | |
222 | + | |
223 | + // Calculo do registro inicial e final | |
224 | + int regIni = ((exibi * pagina) - exibi); | |
225 | + int regFim = (regIni + exibi); | |
226 | + | |
227 | + if (regFim > registros) | |
228 | + regFim = registros; | |
229 | + | |
230 | + // fim paginação | |
231 | + | |
232 | + List<ParametroCalculo> resultado = dao.listAll(regIni, regFim); | |
233 | + List<ParametroCalculo> paginacao = new ArrayList<ParametroCalculo>(); | |
234 | + | |
235 | + for (int i = regIni; i < regFim; i++) { | |
236 | + paginacao.add(resultado.get(i)); | |
237 | + } | |
238 | + | |
239 | + result.include("paginas", totalPag); | |
240 | + result.include("registros", registros); | |
241 | + result.include("regInic", ++regIni); | |
242 | + result.include("regFim", regFim); | |
243 | + result.include("controle", "parametrosCalculo"); | |
244 | + result.include("ultimoParametro", ultimoParametro); | |
245 | + | |
246 | + return paginacao; | |
247 | + } | |
248 | + | |
249 | + @Get("/parametrosCalculo/lista") | |
250 | + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
251 | + public List<ParametroCalculo> lista(ParametroCalculo parametroCalculo) { | |
252 | + result.include("parametroCalculo", parametroCalculo); | |
253 | + return dao.listAll(parametroCalculo); | |
254 | + } | |
255 | + | |
256 | + @Get("/parametrosCalculo/atualizar/{id}") | |
257 | + @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR") | |
258 | + public ParametroCalculo form(Long id) { | |
259 | + ParametroCalculo parametroCalculo = this.dao.load(id); | |
260 | + result.include("usuarioList", dao.getAllUsuarios()); | |
261 | + return parametroCalculo; | |
262 | + } | |
263 | + | |
264 | + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR") | |
265 | + public void form() { | |
266 | + ParametroCalculo parametroCalculo = new ParametroCalculo(); | |
267 | + parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId())); | |
268 | + //parametroCalculo.setTsInicio(new java.util.Date()); | |
269 | + result.include("parametroCalculo", parametroCalculo); | |
270 | + } | |
271 | + | |
272 | + private void criarNovoParametroCalculo(ParametroCalculo parametroCalculo, | |
273 | + int tipo) { | |
274 | + boolean ok = false; | |
275 | + | |
276 | + switch (tipo) { | |
277 | + case ParametroCalculoController.MODO_ADD: | |
278 | + parametroCalculo.setId(0L); | |
279 | + ok = true; | |
280 | + break; | |
281 | + | |
282 | + case ParametroCalculoController.MODO_IMPORT: | |
283 | + ok = true; | |
284 | + break; | |
285 | + } | |
286 | + | |
287 | + if (ok) { | |
288 | + new CopiadorParametroCalculo().criarNovoParametroCalculo( | |
289 | + parametroCalculo, usuarioWeb, dao.getSession()); | |
290 | + } | |
291 | + | |
292 | + } | |
293 | + | |
294 | + private boolean validarParametroCalculoAtivacao(ParametroCalculo parametroCalculo){ | |
295 | + boolean resultado = true; | |
296 | + String mensagem=""; | |
297 | + String aviso= " Não foi possível ativar este parâmetro de cálculo!<br/> Antes da ativação será necessário resolver as pendências listadas abaixo."; | |
298 | + | |
299 | + if(parametroCalculo.getRecomendacoes().size()>0){ | |
300 | + for(Recomendacao r: parametroCalculo.getRecomendacoes()){ | |
301 | + if(r.getCriterios().size()>0){ | |
302 | + for(Criterio c: r.getCriterios()){ | |
303 | + if((c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE) && (c.getFaixas().size() < 1)){ | |
304 | + mensagem = mensagem+" O criterio "+c.getNumeroCriterio()+" da recomendação "+r.getNumeroRecomendacao()+" é do tipo DECRESCENTE e não possui nenhuma faixa cadastrada.<br/>"; | |
305 | + resultado = false; | |
306 | + } | |
307 | + } | |
308 | + }else{ | |
309 | + mensagem = mensagem+" A recomendação "+r.getNumeroRecomendacao()+" não possui nenhum critério cadastrado.<br/>"; | |
310 | + resultado = false; | |
311 | + } | |
312 | + } | |
313 | + }else{ | |
314 | + mensagem = "Nenhuma recomendação foi cadastrada."; | |
315 | + resultado = false; | |
316 | + } | |
317 | + | |
318 | + if(resultado){ | |
319 | + result.include("mensagem", Messages.getString("parametro_calculo.validacao.ativado")); | |
320 | + }else{ | |
321 | + result.include("mensagem",aviso); | |
322 | + System.out.println(mensagem); | |
323 | + } | |
324 | + | |
325 | + return resultado; | |
326 | + } | |
327 | + | |
328 | + private void ativarParametroCalculo(Long id){ | |
329 | + ParametroCalculo parametroCalculoelegivel, parametroCalculoAtivo; | |
330 | + parametroCalculoelegivel = dao.load(id); | |
331 | + parametroCalculoAtivo = dao.getLastParametrosCalculoAtivo(); | |
332 | + | |
333 | + parametroCalculoelegivel.setTsInicio(new Date()); | |
334 | + | |
335 | + dao.update(parametroCalculoelegivel); | |
336 | + | |
337 | + if(parametroCalculoAtivo!=null){ | |
338 | + parametroCalculoAtivo.setTsFim(parametroCalculoelegivel.getTsInicio()); | |
339 | + dao.update(parametroCalculoAtivo); | |
340 | + } | |
341 | + } | |
342 | + | |
343 | + @Get("/parametrosCalculo/relatorio/{id}") | |
344 | + @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO") | |
345 | + public ParametroCalculo relatorio(Long id) { | |
346 | + ParametroCalculo parametroCalculo = this.dao.load(id); | |
347 | + result.include("usuarioList", dao.getAllUsuarios()); | |
348 | + result.include("recomendacaoList", | |
349 | + new RecomendacaoDAO(dao.getSession()) | |
350 | + .listAllAtivas(parametroCalculo)); | |
351 | + | |
352 | + return parametroCalculo; | |
353 | + } | |
354 | + | |
355 | + @Get("/parametrosCalculo/errosAtivacao/{id}") | |
356 | + @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO") | |
357 | + public ParametroCalculo errosAtivacao(Long id) { | |
358 | + ParametroCalculo parametroCalculo = this.dao.load(id); | |
359 | + result.include("usuarioList", dao.getAllUsuarios()); | |
360 | + | |
361 | + List<Recomendacao> recomendacaoList = new RecomendacaoDAO(dao.getSession()).listAllAtivas(parametroCalculo); | |
362 | + List<Recomendacao> recomendacaoListErros = new ArrayList<Recomendacao>(); | |
363 | + | |
364 | + for(Recomendacao r: recomendacaoList){ | |
365 | + if(r.getCriterios().size()<1){ | |
366 | + recomendacaoListErros.add(r); | |
367 | + }else{ | |
368 | + List<Criterio> criterios = new ArrayList<Criterio>(); | |
369 | + for(Criterio c: r.getCriterios()){ | |
370 | + if(c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE && c.getFaixas().size()<1){ | |
371 | + criterios.add(c); | |
372 | + } | |
373 | + } | |
374 | + r.setCriterios(criterios); | |
375 | + recomendacaoListErros.add(r); | |
376 | + } | |
377 | + } | |
378 | + | |
379 | + | |
380 | + result.include("recomendacaoList", recomendacaoListErros); | |
381 | + | |
382 | + return parametroCalculo; | |
383 | + } | |
384 | + | |
385 | + @Get("/parametroAtivo.xls") | |
386 | + public File exportarAtivo(){ | |
387 | + Long id = dao.getLastParametrosCalculoAtivo().getId(); | |
388 | + return exportar(id); | |
389 | + } | |
390 | + | |
391 | + @Get("/parametrosCalculo/exportar/{id}/*") | |
392 | + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA") | |
393 | + public File exportar(Long id) { | |
394 | + File relatorio = new File("workbook.ods"); | |
395 | + ParametroCalculo parametroCalculo = this.dao.load(id); | |
396 | + List<Recomendacao> recomendacaoList = new RecomendacaoDAO( | |
397 | + dao.getSession()).listAllAtivas(parametroCalculo); | |
398 | + String msgAtivacao=""; | |
399 | + | |
400 | + if(parametroCalculo.getTsInicio() != null){ | |
401 | + msgAtivacao = "Ativado em: "+parametroCalculo.getTsInicio()+"."; | |
402 | + } | |
403 | + if(parametroCalculo.getTsFim() != null){ | |
404 | + msgAtivacao = msgAtivacao +" Encerrado em: "+parametroCalculo.getTsFim(); | |
405 | + } | |
406 | + | |
407 | + Workbook wb = new HSSFWorkbook(); | |
408 | + FileOutputStream fileOut; | |
409 | + | |
410 | + Map<String, CellStyle> styles = createStyles(wb); | |
411 | + CreationHelper createHelper = wb.getCreationHelper(); | |
412 | + Sheet sheet = wb.createSheet("new sheet"); | |
413 | + sheet.setPrintGridlines(false); | |
414 | + sheet.setDisplayGridlines(false); | |
415 | + | |
416 | + short rows = 0; | |
417 | + Row row = sheet.createRow(rows); | |
418 | + Cell cell = row.createCell(0); | |
419 | + cell.setCellValue(createHelper.createRichTextString(parametroCalculo.getDescricao())); | |
420 | + cell.setCellStyle(styles.get("title")); | |
421 | + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1")); | |
422 | + rows++; | |
423 | + | |
424 | + row = sheet.createRow(rows); | |
425 | + cell = row.createCell(0); | |
426 | + cell.setCellValue(createHelper.createRichTextString(msgAtivacao)); | |
427 | + CellStyle style = wb.createCellStyle(); | |
428 | + style.setAlignment(CellStyle.ALIGN_CENTER); | |
429 | + cell.setCellStyle(style); | |
430 | + | |
431 | + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$2:$L$2")); | |
432 | + rows += 3; | |
433 | + | |
434 | + for (Recomendacao recomendacao : recomendacaoList) { | |
435 | + row = sheet.createRow(rows); | |
436 | + cell = row.createCell(0); | |
437 | + cell.setCellValue( | |
438 | + createHelper.createRichTextString("Recomendação " | |
439 | + + recomendacao.getNumeroRecomendacao()) | |
440 | + + ": " + recomendacao.getDescricao() | |
441 | + + " (Peso: "+recomendacao.getPeso()+")" | |
442 | + ); | |
443 | + cell.setCellStyle(styles.get("subtitle")); | |
444 | + rows++; | |
445 | + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$"+rows+":$L$"+rows)); | |
446 | + | |
447 | + /* | |
448 | + row = sheet.createRow(rows); | |
449 | + cell = row.createCell(1); | |
450 | + cell.setCellValue("Descrição"); | |
451 | + cell.setCellStyle(styles.get("label")); | |
452 | + row.createCell(2).setCellValue(recomendacao.getDescricao()); | |
453 | + rows++; | |
454 | + | |
455 | + row = sheet.createRow(rows); | |
456 | + cell = row.createCell(1); | |
457 | + cell.setCellValue("Peso"); | |
458 | + cell.setCellStyle(styles.get("label")); | |
459 | + cell = row.createCell(2); | |
460 | + cell.setCellValue(recomendacao.getPeso()); | |
461 | + cell.setCellStyle(styles.get("numeric")); | |
462 | + rows += 2; | |
463 | + */ | |
464 | + | |
465 | + row = sheet.createRow(rows); | |
466 | + cell = row.createCell(1); | |
467 | + cell.setCellValue("Número Critério"); | |
468 | + cell.setCellStyle(styles.get("label")); | |
469 | + cell = row.createCell(2); | |
470 | + cell.setCellValue("Peso"); | |
471 | + cell.setCellStyle(styles.get("label")); | |
472 | + cell = row.createCell(3); | |
473 | + cell.setCellValue("Descrição"); | |
474 | + cell.setCellStyle(styles.get("label")); | |
475 | + cell = row.createCell(4); | |
476 | + cell.setCellValue("Requisito"); | |
477 | + cell.setCellStyle(styles.get("label")); | |
478 | + cell = row.createCell(5); | |
479 | + cell.setCellValue("Tipo de Verificação"); | |
480 | + cell.setCellStyle(styles.get("label")); | |
481 | + cell = row.createCell(6); | |
482 | + cell.setCellValue("Tipo de Mensagem"); | |
483 | + cell.setCellStyle(styles.get("label")); | |
484 | + rows++; | |
485 | + | |
486 | + for (Criterio criterio : recomendacao.getCriterios()) { | |
487 | + row = sheet.createRow(rows); | |
488 | + row.createCell(1).setCellValue(criterio.getNumeroCriterio()); | |
489 | + row.createCell(2).setCellValue(criterio.getPeso()); | |
490 | + row.createCell(3).setCellValue(criterio.getDescricao()); | |
491 | + | |
492 | + row.createCell(4).setCellValue(criterio.getRequisito()); | |
493 | + | |
494 | + String tipoVetificacao; | |
495 | + if(criterio.isVerificacaoAutomatica()){ | |
496 | + tipoVetificacao = "Automática"; | |
497 | + }else if(!criterio.isVerificacaoAutomatica()){ | |
498 | + tipoVetificacao="Humana"; | |
499 | + }else{ | |
500 | + tipoVetificacao=""; | |
501 | + } | |
502 | + | |
503 | + String tipoErro; | |
504 | + if(criterio.isErro()){ | |
505 | + tipoErro = "Erro"; | |
506 | + }else if(!criterio.isErro()){ | |
507 | + tipoErro="Aviso"; | |
508 | + }else{ | |
509 | + tipoErro=""; | |
510 | + } | |
511 | + | |
512 | + row.createCell(5).setCellValue(tipoVetificacao); | |
513 | + row.createCell(6).setCellValue(tipoErro); | |
514 | + | |
515 | + if(criterio.getTipoTeste().getId().intValue()==3){ | |
516 | + rows++; | |
517 | + row = sheet.createRow(rows); | |
518 | + cell = row.createCell(2); | |
519 | + cell.setCellValue("Faixa"); | |
520 | + cell.setCellStyle(styles.get("label")); | |
521 | + cell = row.createCell(3); | |
522 | + cell.setCellValue("Descrição"); | |
523 | + cell.setCellStyle(styles.get("label")); | |
524 | + cell = row.createCell(4); | |
525 | + cell.setCellValue("Início"); | |
526 | + cell.setCellStyle(styles.get("label")); | |
527 | + cell = row.createCell(5); | |
528 | + cell.setCellValue("Fim"); | |
529 | + cell.setCellStyle(styles.get("label")); | |
530 | + cell = row.createCell(6); | |
531 | + cell.setCellValue("%"); | |
532 | + cell.setCellStyle(styles.get("label")); | |
533 | + rows++; | |
534 | + | |
535 | + for(Faixa faixa:criterio.getFaixas()){ | |
536 | + row = sheet.createRow(rows); | |
537 | + row.createCell(2).setCellValue(faixa.getFaixa()); | |
538 | + row.createCell(3).setCellValue(faixa.getDescricao()); | |
539 | + row.createCell(4).setCellValue(faixa.getFaixaInicio()); | |
540 | + row.createCell(5).setCellValue(faixa.getFaixaFim()); | |
541 | + row.createCell(6).setCellValue(faixa.getPercentualConformidade()); | |
542 | + rows++; | |
543 | + | |
544 | + } | |
545 | + | |
546 | + } | |
547 | + | |
548 | + | |
549 | + rows++; | |
550 | + } | |
551 | + | |
552 | + rows += 2; | |
553 | + } | |
554 | + | |
555 | + try { | |
556 | + fileOut = new FileOutputStream(relatorio); | |
557 | + wb.write(fileOut); | |
558 | + } catch (FileNotFoundException e) { | |
559 | + e.printStackTrace(); | |
560 | + } catch (IOException e) { | |
561 | + e.printStackTrace(); | |
562 | + } | |
563 | + | |
564 | + return relatorio; | |
565 | + } | |
566 | + | |
567 | + private static Map<String, CellStyle> createStyles(Workbook wb) { | |
568 | + Map<String, CellStyle> styles = new HashMap<String, CellStyle>(); | |
569 | + | |
570 | + CellStyle style; | |
571 | + Font fontLargeBold = wb.createFont(); | |
572 | + fontLargeBold.setFontHeightInPoints((short) 12); | |
573 | + fontLargeBold.setFontName("Arial"); | |
574 | + fontLargeBold.setBoldweight(Font.BOLDWEIGHT_BOLD); | |
575 | + | |
576 | + Font fontMediumBold = wb.createFont(); | |
577 | + fontMediumBold.setFontHeightInPoints((short) 11); | |
578 | + fontMediumBold.setFontName("Arial"); | |
579 | + fontMediumBold.setBoldweight(Font.BOLDWEIGHT_BOLD); | |
580 | + | |
581 | + Font fontNormalBold = wb.createFont(); | |
582 | + fontNormalBold.setFontHeightInPoints((short) 10); | |
583 | + fontNormalBold.setFontName("Arial"); | |
584 | + fontNormalBold.setBoldweight(Font.BOLDWEIGHT_BOLD); | |
585 | + | |
586 | + style = wb.createCellStyle(); | |
587 | + style.setAlignment(CellStyle.ALIGN_CENTER); | |
588 | + style.setFont(fontLargeBold); | |
589 | + styles.put("title", style); | |
590 | + | |
591 | + style = wb.createCellStyle(); | |
592 | + style.setAlignment(CellStyle.ALIGN_LEFT); | |
593 | + style.setFont(fontMediumBold); | |
594 | + style.setBorderBottom(CellStyle.BORDER_DOTTED); | |
595 | + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); | |
596 | + styles.put("subtitle", style); | |
597 | + | |
598 | + style = wb.createCellStyle(); | |
599 | + style.setAlignment(CellStyle.ALIGN_LEFT); | |
600 | + style.setFont(fontNormalBold); | |
601 | + styles.put("label", style); | |
602 | + | |
603 | + style = wb.createCellStyle(); | |
604 | + style.setAlignment(CellStyle.ALIGN_LEFT); | |
605 | + style.setDataFormat(wb.createDataFormat().getFormat("0")); | |
606 | + styles.put("numeric", style); | |
607 | + | |
608 | + return styles; | |
609 | + } | |
610 | +} | |
613 | 611 | \ No newline at end of file | ... | ... |