/** * */ package br.com.centralit.citcorpore.ajaxForms; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.allcolor.yahp.converter.CYaHPConverter; import org.allcolor.yahp.converter.IHtmlToPdfTransformer; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.LinhaBaseProjetoDTO; import br.com.centralit.citcorpore.bean.ProjetoDTO; import br.com.centralit.citcorpore.bean.RecursoTarefaLinBaseProjDTO; import br.com.centralit.citcorpore.bean.TarefaLinhaBaseProjetoDTO; import br.com.centralit.citcorpore.bean.TimeSheetProjetoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.LinhaBaseProjetoService; import br.com.centralit.citcorpore.negocio.ProjetoService; import br.com.centralit.citcorpore.negocio.RecursoTarefaLinBaseProjService; import br.com.centralit.citcorpore.negocio.TarefaLinhaBaseProjetoService; import br.com.centralit.citcorpore.negocio.TimeSheetProjetoService; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilFormatacao; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.UtilStrings; /** * @author valdoilo.damasceno * */ @SuppressWarnings("rawtypes") public class CarteiraTrabalho extends AjaxFormAction { private UsuarioDTO usuarioDto; @Override public Class<TimeSheetProjetoDTO> getBeanClass() { return TimeSheetProjetoDTO.class; } @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { filtrarGantt(document, request, response); } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoexpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } TimeSheetProjetoDTO timeSheetProjetoDTO = (TimeSheetProjetoDTO)document.getBean(); if (timeSheetProjetoDTO.getData() != null){ if (timeSheetProjetoDTO.getData().after(UtilDatas.getDataAtual())){ document.alert(UtilI18N.internacionaliza(request, "carteiraTrabalho.dataNaoMaiorAtual")); return; } } if (timeSheetProjetoDTO.getPercExecutado() == null){ document.alert(UtilI18N.internacionaliza(request, "carteiraTrabalho.informePercentual")); return; } if (timeSheetProjetoDTO.getPercExecutado().doubleValue() > 100){ document.alert(UtilI18N.internacionaliza(request, "carteiraTrabalho.percentualNaoMaior100")); return; } timeSheetProjetoDTO.setDataHoraReg(UtilDatas.getDataHoraAtual()); TimeSheetProjetoService timeSheetProjetoService = (TimeSheetProjetoService) ServiceLocator.getInstance().getService(TimeSheetProjetoService.class, WebUtil.getUsuarioSistema(request)); timeSheetProjetoService.create(timeSheetProjetoDTO); document.alert(UtilI18N.internacionaliza(request, "carteiraTrabalho.registroIncluido")); document.getForm("formCarteira").clear(); document.getElementById("idRecursoTarefaLinBaseProj").setValue("" + timeSheetProjetoDTO.getIdRecursoTarefaLinBaseProj()); document.executeScript("$(\'#POPUP_EDITAR\').dialog(\'close\');"); document.executeScript("reload()"); //listTimeSheet(document, request, response); } public void print(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { CYaHPConverter converter = new CYaHPConverter(); File fout = new File("c:\\teste.pdf"); FileOutputStream out = new FileOutputStream(fout); List headerFooterList = new ArrayList(); Map properties = new HashMap(); headerFooterList.add(new IHtmlToPdfTransformer.CHeaderFooter( "<table width=\"100%\"><tbody><tr><td align=\"left\">Generated with YaHPConverter.</td><td align=\"right\">"+UtilI18N.internacionaliza(request, "citcorpore.comum.pagina")+" <pagenumber>/<pagecount></td></tr></tbody></table>", IHtmlToPdfTransformer.CHeaderFooter.HEADER)); headerFooterList.add(new IHtmlToPdfTransformer.CHeaderFooter( "� 2011 Quentin Anciaux", IHtmlToPdfTransformer.CHeaderFooter.FOOTER)); String str = "<HTML><HEAD></HEAD><BODY><H1>Testing</H1><FORM>" + "check : <INPUT TYPE='checkbox' checked=checked/><br/><br><table><tr><td style='border:1px solid black'>TESTE</td><td style='border:1px solid black'>TESTE 2</td></tr></table>" + "</FORM></BODY></HTML>"; properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS, IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER); //properties.put(IHtmlToPdfTransformer.FOP_TTF_FONT_PATH, fontPath); converter.convertToPdf(str, IHtmlToPdfTransformer.A4P, headerFooterList, "file:///temp/", // root for relative external CSS and IMAGE out, properties); /* properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS, IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER); converter.convertToPdf(new URL("http://localhost:8080/citsmart/pages/index/index.load"), IHtmlToPdfTransformer.A4P, headerFooterList, out, properties); System.out.println("after conversion");*/ out.flush(); out.close(); document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.situacaoFinalizado")); } public void listTimeSheet(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoexpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } TimeSheetProjetoDTO timeSheetProjetoDTO = (TimeSheetProjetoDTO)document.getBean(); RecursoTarefaLinBaseProjService recursoTarefaLinBaseProjService = (RecursoTarefaLinBaseProjService) ServiceLocator.getInstance().getService(RecursoTarefaLinBaseProjService.class, null); TimeSheetProjetoService timeSheetProjetoService = (TimeSheetProjetoService) ServiceLocator.getInstance().getService(TimeSheetProjetoService.class, null); TarefaLinhaBaseProjetoService tarefaLinhaBaseProjetoService = (TarefaLinhaBaseProjetoService) ServiceLocator.getInstance().getService(TarefaLinhaBaseProjetoService.class, null); Collection colTimes = timeSheetProjetoService.findByIdRecursoTarefaLinBaseProj(timeSheetProjetoDTO.getIdRecursoTarefaLinBaseProj(), usuario.getIdEmpregado()); RecursoTarefaLinBaseProjDTO recursoTarefaLinBaseProjDTO = new RecursoTarefaLinBaseProjDTO(); recursoTarefaLinBaseProjDTO.setIdRecursoTarefaLinBaseProj(timeSheetProjetoDTO.getIdRecursoTarefaLinBaseProj()); recursoTarefaLinBaseProjDTO = (RecursoTarefaLinBaseProjDTO) recursoTarefaLinBaseProjService.restore(recursoTarefaLinBaseProjDTO); String strDetTarefa = ""; document.executeScript("indicaGauge(0)"); if (recursoTarefaLinBaseProjDTO != null){ TarefaLinhaBaseProjetoDTO tarefaLinhaBaseProjetoDTO = new TarefaLinhaBaseProjetoDTO(); tarefaLinhaBaseProjetoDTO.setIdTarefaLinhaBaseProjeto(recursoTarefaLinBaseProjDTO.getIdTarefaLinhaBaseProjeto()); tarefaLinhaBaseProjetoDTO = (TarefaLinhaBaseProjetoDTO) tarefaLinhaBaseProjetoService.restore(tarefaLinhaBaseProjetoDTO); if (tarefaLinhaBaseProjetoDTO != null){ strDetTarefa = "<b>" + tarefaLinhaBaseProjetoDTO.getNomeTarefa() + "</b>"; Double tempoAlocMin = recursoTarefaLinBaseProjDTO.getTempoAlocMinutos(); double tempo = 0; if (tempoAlocMin != null){ tempo = tempoAlocMin.doubleValue(); tempo = tempo / 60; } strDetTarefa += "<br>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.trabalhoEstimado")+"" + UtilFormatacao.formatDouble(tempo, 2) + " h"; strDetTarefa += "<br>" + UtilStrings.nullToVazio(tarefaLinhaBaseProjetoDTO.getDetalhamentoTarefa()); } } document.getElementById("divInfoTarefa").setInnerHTML(strDetTarefa); String strTables = "<table width='100%'>"; strTables += "<tr>" + "<td><b>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.linhaBase")+"</b></td>" + "<td><b>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.data")+"</b></td>" + "<td><b>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.hora")+"</b></td>" + "<td><b>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.qtdeHoras")+"</b></td>" + "<td><b>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.porcExecutado")+"</b></td>" + "<td><b>"+UtilI18N.internacionaliza(request, "carteiraTrabalho.registradoEm")+"</b></td>" + "<td><b>"+UtilI18N.internacionaliza(request, "citcorpore.ui.tabela.coluna.Detalhamento")+"</b></td>" + "</tr>"; String strPerc = "0"; double percMaior = 0; if (colTimes != null){ for (Iterator it = colTimes.iterator(); it.hasNext();){ TimeSheetProjetoDTO timeSheetProjetoAux = (TimeSheetProjetoDTO)it.next(); String strLinhaBase = "Atual"; if (timeSheetProjetoAux.getIdLinhaBaseProjeto() != null){ strLinhaBase = "" + timeSheetProjetoAux.getIdLinhaBaseProjeto(); } //quebrar linha do detalhamento caso seja muito grande String detalhamentoAuxiliar = ""; if(timeSheetProjetoAux.getDetalhamento().length() > 70){ detalhamentoAuxiliar = timeSheetProjetoAux.getDetalhamento(); detalhamentoAuxiliar = timeSheetProjetoAux.getDetalhamento().substring(0, 70) + "<br>"; detalhamentoAuxiliar += timeSheetProjetoAux.getDetalhamento().substring(71); } else { detalhamentoAuxiliar = timeSheetProjetoAux.getDetalhamento(); } strTables += "<tr>" + "<td>" + strLinhaBase + "</td>" + "<td>" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, timeSheetProjetoAux.getData(), WebUtil.getLanguage(request)) + "</td>" + "<td>" + timeSheetProjetoAux.getHora() + "</td>" + "<td>" + UtilFormatacao.formatDouble(timeSheetProjetoAux.getQtdeHoras(), 2) + "</td>" + "<td>" + UtilFormatacao.formatDouble(timeSheetProjetoAux.getPercExecutado(), 2) + "</td>" + "<td>" + UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, timeSheetProjetoAux.getDataHoraReg(), WebUtil.getLanguage(request)) + "</td>" + "<td>" + detalhamentoAuxiliar + "</td>" + "</tr>"; if (timeSheetProjetoAux.getDataHoraReg().getTime() > percMaior){ strPerc = UtilFormatacao.formatDouble(timeSheetProjetoAux.getPercExecutado(), 0); percMaior = timeSheetProjetoAux.getDataHoraReg().getTime(); } } } strTables += "</table>"; document.getElementById("divInfoTimeSheet").setInnerHTML(strTables); document.executeScript("indicaGauge(" + strPerc + ")"); //print(document, request, response); } /** * Filtra GANTT de acordo com Tipo de Solicitacao e Grupo de Seguran�a * selecionado. * * @param document * @param request * @param response * @throws Exception * @author valdoilo */ public void filtrarGantt(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoexpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } TarefaLinhaBaseProjetoService tarefaLinhaBaseProjetoService = (TarefaLinhaBaseProjetoService) ServiceLocator.getInstance().getService(TarefaLinhaBaseProjetoService.class, null); Collection colCarteira = tarefaLinhaBaseProjetoService.findCarteiraByIdEmpregado(usuario.getIdEmpregado()); StringBuilder strBuff = new StringBuilder(); if (colCarteira != null && colCarteira.size() > 0){ strBuff = gerarGantt(colCarteira, document, request); } document.executeScript(strBuff.toString()); document.getElementById("loading_overlay").setVisible(false); } /** * Gera GANTT a partir da Lista de Solicita��es de Servi�o. * * @param listaSolicitacaoServico * @return <code>StringBuilder</code> * @author valdoilo * @throws Exception * @throws ServiceException */ private StringBuilder gerarGantt( Collection<TarefaLinhaBaseProjetoDTO> lista, DocumentHTML document, HttpServletRequest request) throws ServiceException, Exception { ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, null); LinhaBaseProjetoService linhaBaseProjetoService = (LinhaBaseProjetoService) ServiceLocator.getInstance().getService(LinhaBaseProjetoService.class, null); StringBuilder gantt = new StringBuilder(); StringBuilder atvAtrasadas = new StringBuilder(); boolean existeAtrasada = false; atvAtrasadas.append("<table width='100%'>"); atvAtrasadas.append("<tr><td colspan='20'><b>"); atvAtrasadas.append(UtilI18N.internacionaliza(request, "carteiraTrabalho.listaTarefaAtrasada")); atvAtrasadas.append("</b></td></tr>"); atvAtrasadas.append("<tr><td> </td><td><b>"); atvAtrasadas.append(UtilI18N.internacionaliza(request, "carteiraTrabalho.projeto")); atvAtrasadas.append("</b></td><td><b>"); atvAtrasadas.append(UtilI18N.internacionaliza(request, "carteiraTrabalho.tarefa")); atvAtrasadas.append("</b></td><td><b>"); atvAtrasadas.append(UtilI18N.internacionaliza(request, "citcorpore.comum.datafim")); atvAtrasadas.append("</b></td></tr>"); gantt.append("$(function() {"); gantt.append("'use strict';"); gantt.append("$('.gantt').gantt({"); if (lista != null && lista.size() > 0){ gantt.append("source: ["); for (TarefaLinhaBaseProjetoDTO tarefaLinhaBaseProjetoDTO : lista) { LinhaBaseProjetoDTO linhaBaseProjetoDTO = new LinhaBaseProjetoDTO(); linhaBaseProjetoDTO.setIdLinhaBaseProjeto(tarefaLinhaBaseProjetoDTO.getIdLinhaBaseProjeto()); linhaBaseProjetoDTO = (LinhaBaseProjetoDTO) linhaBaseProjetoService.restore(linhaBaseProjetoDTO); String nomeProjeto = ""; if (linhaBaseProjetoDTO != null){ ProjetoDTO projetoDto = new ProjetoDTO(); projetoDto.setIdProjeto(linhaBaseProjetoDTO.getIdProjeto()); projetoDto = (ProjetoDTO) projetoService.restore(projetoDto); if (projetoDto != null){ nomeProjeto = projetoDto.getNomeProjeto(); } } nomeProjeto = nomeProjeto.replaceAll("\'", ""); String nomeTarefa = ""; nomeTarefa = tarefaLinhaBaseProjetoDTO.getNomeTarefa().replaceAll("\'", "").replaceAll("\"", ""); gantt.append("{"); gantt.append("name: '" + nomeProjeto + "',"); gantt.append("desc: '" + nomeTarefa + "', "); gantt.append("values:[{ "); String styleCustomClass = "ganttRed"; if (tarefaLinhaBaseProjetoDTO.getDataFim() != null && tarefaLinhaBaseProjetoDTO.getDataFim().after(UtilDatas.getDataHoraAtual())) { styleCustomClass = "ganttBlue"; }else{ existeAtrasada = true; atvAtrasadas.append("<tr><td><img src=\"" + Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/b.gif\" border=\"0\"/></td><td>" + nomeProjeto + "</td><td>" + tarefaLinhaBaseProjetoDTO.getNomeTarefa() + "</td><td>" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, tarefaLinhaBaseProjetoDTO.getDataFim(), document.getLanguage()) + "</td></tr>"); } Date d1 = UtilDatas.alteraData(tarefaLinhaBaseProjetoDTO.getDataInicio(), -1, Calendar.DAY_OF_MONTH); Date d2 = UtilDatas.alteraData(tarefaLinhaBaseProjetoDTO.getDataFim(), -1, Calendar.DAY_OF_MONTH); gantt.append("from: '/Date(" + d1.getTime() + ")/',"); gantt.append("to: '/Date(" + d2.getTime() + ")/', "); gantt.append("label: '" + tarefaLinhaBaseProjetoDTO.getNomeTarefa().replaceAll("\'", "") + "',"); gantt.append("desc: '" + nomeTarefa + "', "); gantt.append("customClass: '" + styleCustomClass + "',"); gantt.append("dataObj: {idTarefaLinhaBaseProjeto: '" + tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto() + "',idRecursoTarefaLinBaseProj: '" + tarefaLinhaBaseProjetoDTO.getIdRecursoTarefaLinBaseProj() + "'}"); gantt.append("}]"); gantt.append("},"); } gantt.append("],"); } if (!existeAtrasada){ atvAtrasadas.append("<tr><td colspan='20'>"); atvAtrasadas.append(UtilI18N.internacionaliza(request, "carteiraTrabalho.naoExisteTarefaAtrasada")); atvAtrasadas.append("</td></td>"); } atvAtrasadas.append("</table>"); document.getElementById("atrasadas").setInnerHTML(atvAtrasadas.toString()); gantt.append("navigate: 'scroll',"); gantt.append("scale: 'days',"); gantt.append("maxScale: 'months',"); gantt.append("minScale: 'days',"); gantt.append("itemsPerPage: 10,"); gantt.append("onItemClick: function(data) {"); gantt.append("editaAtividade(data)},"); gantt.append("onAddClick: function(dt, rowId) {"); gantt.append("}"); gantt.append("});"); gantt.append("});"); return gantt; } /** * @return valor do atributo usuarioDto. */ public UsuarioDTO getUsuarioDto() { return usuarioDto; } /** * Define valor do atributo usuarioDto. * * @param usuarioDto */ public void setUsuarioDto(UsuarioDTO usuarioDto) { this.usuarioDto = usuarioDto; } }