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 | ... | ... |