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 | \ No newline at end of file | 611 | \ No newline at end of file |