@RoleAdmin @RoleAdminMissao @RoleAdminMissaoComplexo public static void salvar(@Valid Afastamento afastamento) throws Exception { String template; if ((afastamento.dataHoraInicio != null) && (afastamento.dataHoraFim != null) && (!afastamento.descricao.equals(""))) { if (!afastamento.ordemDeDatasCorreta()) { Validation.addError("dataHoraInicio", "afastamentos.dataHoraInicio.validation"); } } template = afastamento.id > 0 ? "Afastamentos/editar.html" : "Afastamentos/incluir.html"; if (Validation.hasErrors()) { List<Condutor> condutores = Condutor.listarTodos(AutorizacaoGI.titular().getOrgaoUsuario()); renderTemplate(template, afastamento, condutores); } else { List<Missao> missoes = Missao.retornarMissoes( "condutor.id", afastamento.condutor.id, afastamento.condutor.cpOrgaoUsuario.getId(), afastamento.dataHoraInicio, afastamento.dataHoraFim); String listaMissoes = ""; String delimitador = ""; for (Missao item : missoes) { listaMissoes += delimitador; listaMissoes += item.getSequence(); delimitador = ","; } if (missoes.size() > 0) { Validation.addError("LinkErroCondutor", listaMissoes); renderTemplate(template, afastamento); } else { afastamento.save(); listarPorCondutor(afastamento.condutor.id); } } }
private static String gerarTimeLine( Calendar dataHoraPesquisa, String registros, List<Afastamento> afastamentos, List<Plantao> plantoes, List<Missao> missoes, List<ServicoVeiculo> servicosVeiculos, String entidade) { String delim = ""; if (!registros.isEmpty()) delim = ", "; for (Afastamento afastamento : afastamentos) { registros += delim; SimpleDateFormat formatoData = new SimpleDateFormat("yyyy,M,d,H,m,s"); registros += "[ \'" + "Afastamentos" + "\', \'" + afastamento.condutor.getNome() + "\', new Date("; if (afastamento.dataHoraInicio.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && afastamento.dataHoraInicio.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && afastamento.dataHoraInicio.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && afastamento.dataHoraInicio.after(dataHoraPesquisa)) { registros += formatoData.format(afastamento.dataHoraInicio.getTime()) + "), new Date("; } else { Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_INICIAL_DIA, MINUTO_INICIAL_DIA, SEGUNDO_INICIAL_DIA); registros += formatoData.format(dataHora.getTime()) + "), new Date("; } if (afastamento.dataHoraFim != null) { if (afastamento.dataHoraFim.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && afastamento.dataHoraFim.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && afastamento.dataHoraFim.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && afastamento.dataHoraFim.after(dataHoraPesquisa)) { registros += formatoData.format(afastamento.dataHoraFim.getTime()) + ") ]"; delim = ", "; continue; } } Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_FINAL_EXPEDIENTE, MINUTO_FINAL_EXPEDIENTE, SEGUNDO_FINAL_EXPEDIENTE); registros += formatoData.format(dataHora.getTime()) + ") ]"; delim = ", "; } for (Plantao plantao : plantoes) { registros += delim; SimpleDateFormat formatoData = new SimpleDateFormat("yyyy,M,d,H,m,s"); registros += "[ \'" + "Plantoes" + "\', \'" + plantao.condutor.getNome() + "\', new Date("; if (plantao.dataHoraInicio.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && plantao.dataHoraInicio.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && plantao.dataHoraInicio.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && plantao.dataHoraInicio.after(dataHoraPesquisa)) { registros += formatoData.format(plantao.dataHoraInicio.getTime()) + "), new Date("; } else { Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_INICIAL_DIA, MINUTO_INICIAL_DIA, SEGUNDO_INICIAL_DIA); registros += formatoData.format(dataHora.getTime()) + "), new Date("; } if (plantao.dataHoraFim != null) { if (plantao.dataHoraFim.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && plantao.dataHoraFim.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && plantao.dataHoraFim.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && plantao.dataHoraFim.after(dataHoraPesquisa)) { registros += formatoData.format(plantao.dataHoraFim.getTime()) + ") ]"; delim = ", "; continue; } } Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_FINAL_EXPEDIENTE, MINUTO_FINAL_EXPEDIENTE, SEGUNDO_FINAL_EXPEDIENTE); registros += formatoData.format(dataHora.getTime()) + ") ]"; delim = ", "; } for (ServicoVeiculo servicoVeiculo : servicosVeiculos) { registros += delim; SimpleDateFormat formatoData = new SimpleDateFormat("yyyy,M,d,H,m,s"); registros += "[ \'" + "Servicos" + "\', \'" + servicoVeiculo.veiculo.placa + "\', new Date("; if (servicoVeiculo.dataHoraInicio.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && servicoVeiculo.dataHoraInicio.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && servicoVeiculo.dataHoraInicio.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && servicoVeiculo.dataHoraInicio.after(dataHoraPesquisa)) { registros += formatoData.format(servicoVeiculo.dataHoraInicio.getTime()) + "), new Date("; } else { Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_INICIAL_DIA, MINUTO_INICIAL_DIA, SEGUNDO_INICIAL_DIA); registros += formatoData.format(dataHora.getTime()) + "), new Date("; } if (servicoVeiculo.dataHoraFim != null) { if (servicoVeiculo.dataHoraFim.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && servicoVeiculo.dataHoraFim.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && servicoVeiculo.dataHoraFim.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && servicoVeiculo.dataHoraFim.after(dataHoraPesquisa)) { registros += formatoData.format(servicoVeiculo.dataHoraFim.getTime()) + ") ]"; delim = ", "; continue; } } Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_FINAL_EXPEDIENTE, MINUTO_FINAL_EXPEDIENTE, SEGUNDO_FINAL_EXPEDIENTE); registros += formatoData.format(dataHora.getTime()) + ") ]"; delim = ", "; } String label = "condutor"; for (Missao missao : missoes) { registros += delim; SimpleDateFormat formatoData = new SimpleDateFormat("yyyy,M,d,H,m,s"); if (entidade.equals("condutor")) { label = missao.getSequence() + "-" + missao.condutor.getNome(); } else { label = missao.getSequence() + "-" + missao.veiculo.placa; } registros += "[ \'" + "Missoes" + "\', \'" + label + "\', new Date("; if (missao.dataHoraSaida.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && missao.dataHoraSaida.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && missao.dataHoraSaida.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && missao.dataHoraSaida.after(dataHoraPesquisa)) { registros += formatoData.format(missao.dataHoraSaida.getTime()) + "), new Date("; } else { Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_INICIAL_DIA, MINUTO_INICIAL_DIA, SEGUNDO_INICIAL_DIA); registros += formatoData.format(dataHora.getTime()) + "), new Date("; } if (missao.dataHoraRetorno != null) { if (missao.dataHoraRetorno.get(Calendar.YEAR) == dataHoraPesquisa.get(Calendar.YEAR) && missao.dataHoraRetorno.get(Calendar.MONTH) == dataHoraPesquisa.get(Calendar.MONTH) && missao.dataHoraRetorno.get(Calendar.DAY_OF_MONTH) == dataHoraPesquisa.get(Calendar.DAY_OF_MONTH) && missao.dataHoraRetorno.after(dataHoraPesquisa)) { registros += formatoData.format(missao.dataHoraRetorno.getTime()) + ") ]"; delim = ", "; continue; } } Calendar dataHora = recuperarDataEHora( dataHoraPesquisa, HORA_FINAL_EXPEDIENTE, MINUTO_FINAL_EXPEDIENTE, SEGUNDO_FINAL_EXPEDIENTE); registros += formatoData.format(dataHora.getTime()) + ") ]"; delim = ", "; } return registros; }