package br.com.centralit.citcorpore.ajaxForms;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
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.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.AssinaturaAprovacaoProjetoDTO;
import br.com.centralit.citcorpore.bean.ClienteDTO;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.CronogramaDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.FornecedorDTO;
import br.com.centralit.citcorpore.bean.LinhaBaseProjetoDTO;
import br.com.centralit.citcorpore.bean.MarcoPagamentoPrjDTO;
import br.com.centralit.citcorpore.bean.OSDTO;
import br.com.centralit.citcorpore.bean.PerfilContratoDTO;
import br.com.centralit.citcorpore.bean.ProdutoContratoDTO;
import br.com.centralit.citcorpore.bean.ProdutoTarefaLinBaseProjDTO;
import br.com.centralit.citcorpore.bean.ProjetoDTO;
import br.com.centralit.citcorpore.bean.RecursoProjetoDTO;
import br.com.centralit.citcorpore.bean.RecursoTarefaLinBaseProjDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.TarefaLinhaBaseProjetoDTO;
import br.com.centralit.citcorpore.bean.TemplateImpressaoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.metainfo.util.JSONUtil;
import br.com.centralit.citcorpore.negocio.AssinaturaAprovacaoProjetoService;
import br.com.centralit.citcorpore.negocio.ClienteService;
import br.com.centralit.citcorpore.negocio.ContratoService;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.centralit.citcorpore.negocio.FornecedorService;
import br.com.centralit.citcorpore.negocio.LinhaBaseProjetoService;
import br.com.centralit.citcorpore.negocio.MarcoPagamentoPrjService;
import br.com.centralit.citcorpore.negocio.OSService;
import br.com.centralit.citcorpore.negocio.PerfilContratoService;
import br.com.centralit.citcorpore.negocio.ProdutoContratoService;
import br.com.centralit.citcorpore.negocio.ProdutoTarefaLinBaseProjService;
import br.com.centralit.citcorpore.negocio.ProjetoService;
import br.com.centralit.citcorpore.negocio.RecursoProjetoService;
import br.com.centralit.citcorpore.negocio.RecursoTarefaLinBaseProjService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.negocio.TarefaLinhaBaseProjetoService;
import br.com.centralit.citcorpore.negocio.TemplateImpressaoService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.LogicException;
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;
import br.com.citframework.util.UtilTratamentoArquivos;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
@SuppressWarnings({ "rawtypes", "unchecked","unused" })
public class Cronograma extends AjaxFormAction {
@Override
public void load(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;
}
CronogramaDTO cronogramaDTO = (CronogramaDTO)document.getBean();
ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, null);
LinhaBaseProjetoService linhaBaseProjetoService = (LinhaBaseProjetoService) ServiceLocator.getInstance().getService(LinhaBaseProjetoService.class, null);
TarefaLinhaBaseProjetoService tarefaLinhaBaseProjetoService = (TarefaLinhaBaseProjetoService) ServiceLocator.getInstance().getService(TarefaLinhaBaseProjetoService.class, null);
Collection colProjetos = projetoService.list();
HTMLSelect idProjeto = document.getSelectById("idProjetoCombo");
idProjeto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
if (colProjetos != null){
idProjeto.addOptions(colProjetos, "idProjeto", "nomeProjeto", null);
}
if (cronogramaDTO.getIdProjeto() != null){
abreProjeto(document, request, response);
}
}
@Override
public Class getBeanClass() {
return CronogramaDTO.class;
}
public void saveMarcosPag(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;
}
CronogramaDTO cronogramaDTO = (CronogramaDTO)document.getBean();
if (cronogramaDTO.getIdProjeto() == null){
document.alert(UtilI18N.internacionaliza(request, "pagamentoProjeto.informeProjeto"));
return;
}
MarcoPagamentoPrjService marcoPagamentoPrjService = (MarcoPagamentoPrjService) ServiceLocator.getInstance().getService(MarcoPagamentoPrjService.class, WebUtil.getUsuarioSistema(request));
Map<String, Object> map = null;
try {
map = JSONUtil.convertJsonToMap(cronogramaDTO.getMarcosProjeto(), true);
//System.out.println("Cronograma.save(): " + cronogramaDTO.getMarcosProjeto());
Collection obj = (Collection) map.get("ARRAY");
Collection colMarcos = getMarcosPag(request, obj);
if (colMarcos != null){
for (Iterator it = colMarcos.iterator(); it.hasNext();){
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = (MarcoPagamentoPrjDTO)it.next();
marcoPagamentoPrjDTO.setIdProjeto(cronogramaDTO.getIdProjeto());
if (marcoPagamentoPrjDTO.getId() != null && marcoPagamentoPrjDTO.getId().indexOf("tmp") < 0){
try{
marcoPagamentoPrjDTO.setIdMarcoPagamentoPrj(Integer.parseInt(marcoPagamentoPrjDTO.getId()));
}catch(Exception e){}
}
if (marcoPagamentoPrjDTO.getNomeMarcoPag() == null || marcoPagamentoPrjDTO.getNomeMarcoPag().trim().equalsIgnoreCase("")){
document.alert(UtilI18N.internacionaliza(request, "cronograma.marcoPagamento"));
return;
}
if (marcoPagamentoPrjDTO.getDataPrevisaoPag() == null){
document.alert(UtilI18N.internacionaliza(request, "cronograma.faltaInformarPagamento") + marcoPagamentoPrjDTO.getNomeMarcoPag());
return;
}
}
marcoPagamentoPrjService.saveFromCollection(colMarcos, cronogramaDTO.getIdProjeto());
}
document.alert(UtilI18N.internacionaliza(request, "cronograma.cronogramaPagamentoSalvo"));
document.executeScript("$(\"#__blackpopup__\").trigger(\"close\");");
} catch (Exception e) {
System.out.println("Cronograma.save(): " + cronogramaDTO.getMarcosProjeto());
e.printStackTrace();
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
throw e;
}
Collection colMarcos = marcoPagamentoPrjService.findByIdProjeto(cronogramaDTO.getIdProjeto());
String strMarcos = "";
if (colMarcos != null){
for (Iterator it = colMarcos.iterator(); it.hasNext();){
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = (MarcoPagamentoPrjDTO)it.next();
String nomeMarco = marcoPagamentoPrjDTO.getNomeMarcoPag();
nomeMarco = nomeMarco.replaceAll("\'", "");
nomeMarco = nomeMarco.replaceAll("\"", "");
String dataPagStr = UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, marcoPagamentoPrjDTO.getDataPrevisaoPag(), WebUtil.getLanguage(request));
if (!strMarcos.trim().equalsIgnoreCase("")){
strMarcos += ",";
}
strMarcos += "{id:\"" + marcoPagamentoPrjDTO.getIdMarcoPagamentoPrj() + "\", nomeMarcoPag:\"" + nomeMarco + "\", dataPrevisaoPag:\"" + dataPagStr + "\"}";
}
}
document.executeScript("geraMarcos('" + strMarcos + "')");
}
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;
}
CronogramaDTO cronogramaDTO = (CronogramaDTO)document.getBean();
//System.out.println("-------------------------------TA:");
//System.out.println(cronogramaDTO.getTa());
LinhaBaseProjetoService linhaBaseProjetoService = (LinhaBaseProjetoService) ServiceLocator.getInstance().getService(LinhaBaseProjetoService.class, WebUtil.getUsuarioSistema(request));
try {
Map<String, Object> map = JSONUtil.convertJsonToMap(cronogramaDTO.getTa(), true);
Collection obj = (Collection) map.get("TASKS");
Collection<TarefaLinhaBaseProjetoDTO> colTarefas = getTarefas(obj,request);
for (TarefaLinhaBaseProjetoDTO tarefa : colTarefas) {
ArrayList<RecursoTarefaLinBaseProjDTO> recursos = (ArrayList<RecursoTarefaLinBaseProjDTO>) tarefa.getColRecursos();
for(int i = 0; i < recursos.size(); i++){
if(recursos.get(i).getEsforcoPorOS().equalsIgnoreCase("")){
recursos.get(i).setEsforcoPorOS("0");
}
if(recursos.get(i).getTempoAloc() != null && recursos.get(i).getTempoAloc().equalsIgnoreCase("00:00")){
if(!recursos.get(i).getEsforcoPorOS().equalsIgnoreCase("0")){
Double esforcoPorOs = 0.0;
try {
esforcoPorOs = Double.parseDouble(recursos.get(i).getEsforcoPorOS());
} catch (Exception e) {
document.alert(UtilI18N.internacionaliza(request, "cronograma.erro"));
e.printStackTrace();
return;
}
recursos.get(i).setTempoAlocMinutos(Double.parseDouble(recursos.get(i).getEsforcoPorOS())*60);
}
}
}
}
java.sql.Date data = UtilDatas.getDataAtual();
String hora = UtilDatas.getHoraHHMM(UtilDatas.getDataHoraAtual()).replaceAll(":", "");
LinhaBaseProjetoDTO linhaBaseProjetoDTO = new LinhaBaseProjetoDTO();
linhaBaseProjetoDTO.setIdProjeto(cronogramaDTO.getIdProjeto());
linhaBaseProjetoDTO.setDataLinhaBase(data);
linhaBaseProjetoDTO.setDataUltAlteracao(data);
linhaBaseProjetoDTO.setHoraLinhaBase(hora);
linhaBaseProjetoDTO.setHoraUltAlteracao(hora);
linhaBaseProjetoDTO.setUsuarioUltAlteracao(usuario.getNomeUsuario());
linhaBaseProjetoDTO.setSituacao(cronogramaDTO.getSituacaoLinhaBaseProjetoSelecionada());
if (linhaBaseProjetoDTO.getSituacao() == null){
linhaBaseProjetoDTO.setSituacao(LinhaBaseProjetoDTO.ATIVO);
}
linhaBaseProjetoDTO.setColTarefas(colTarefas);
if (cronogramaDTO.getIdLinhaBaseProjeto() != null && cronogramaDTO.getIdLinhaBaseProjeto().intValue() > 0){
boolean criacao = false;
if (UtilStrings.nullToVazio(cronogramaDTO.getNovaLinhaBaseProjeto()).equalsIgnoreCase("S")){
criacao = true;
}else{
LinhaBaseProjetoDTO linhaBaseProjetoAux = new LinhaBaseProjetoDTO();
linhaBaseProjetoAux.setIdLinhaBaseProjeto(cronogramaDTO.getIdLinhaBaseProjeto());
linhaBaseProjetoAux = (LinhaBaseProjetoDTO) linhaBaseProjetoService.restore(linhaBaseProjetoAux);
if (linhaBaseProjetoAux != null){
if (!linhaBaseProjetoAux.getSituacao().equalsIgnoreCase(LinhaBaseProjetoDTO.ATIVO)){ //SE ESTIVER DIFERENTE DE ATIVO, OU SEJA, JA ESTIVER INICIADO... ENTAO, CRIA.
criacao = true;
}
}
}
//-----
if (criacao){
linhaBaseProjetoDTO.setIdLinhaBaseProjetoUpdate(cronogramaDTO.getIdLinhaBaseProjeto());
linhaBaseProjetoService.create(linhaBaseProjetoDTO);
}else{
linhaBaseProjetoDTO.setDataLinhaBase(null); //Deve-se setar nulo neste campo para nao ser atualizado dentro do UPDATE do service
linhaBaseProjetoDTO.setHoraLinhaBase(null); //Deve-se setar nulo neste campo para nao ser atualizado dentro do UPDATE do service
linhaBaseProjetoDTO.setIdLinhaBaseProjeto(cronogramaDTO.getIdLinhaBaseProjeto());
linhaBaseProjetoService.update(linhaBaseProjetoDTO);
}
}else{
linhaBaseProjetoService.create(linhaBaseProjetoDTO);
}
document.alert(UtilI18N.internacionaliza(request, "cronograma.cronogramaGravadoSucesso"));
document.executeScript("$(\"#__blackpopup__\").trigger(\"close\");");
abreProjeto(document, request, response);
} catch (Exception e) {
System.out.println("Cronograma.save(): " + cronogramaDTO.getTa());
e.printStackTrace();
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
throw e;
}
//System.out.println(map);
}
public void abreProjeto(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;
}
CronogramaDTO cronogramaDTO = (CronogramaDTO)document.getBean();
if (cronogramaDTO.getIdProjeto() == null || cronogramaDTO.getIdProjeto().intValue() == 0){
return;
}
document.executeScript("ge.reset()");
document.getElementById("podeModificar").setValue("S");
LinhaBaseProjetoService linhaBaseProjetoService = (LinhaBaseProjetoService) ServiceLocator.getInstance().getService(LinhaBaseProjetoService.class, null);
ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, null);
TarefaLinhaBaseProjetoService tarefaLinhaBaseProjetoService = (TarefaLinhaBaseProjetoService) ServiceLocator.getInstance().getService(TarefaLinhaBaseProjetoService.class, null);
PerfilContratoService perfilContratoService = (PerfilContratoService) ServiceLocator.getInstance().getService(PerfilContratoService.class, null);
RecursoProjetoService recursoProjetoService = (RecursoProjetoService) ServiceLocator.getInstance().getService(RecursoProjetoService.class, null);
EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
ProdutoContratoService produtoContratoService = (ProdutoContratoService)ServiceLocator.getInstance().getService(ProdutoContratoService.class, null);
RecursoTarefaLinBaseProjService recursoTarefaLinBaseProjService = (RecursoTarefaLinBaseProjService)ServiceLocator.getInstance().getService(RecursoTarefaLinBaseProjService.class, null);
ProdutoTarefaLinBaseProjService produtoTarefaLinBaseProjService = (ProdutoTarefaLinBaseProjService)ServiceLocator.getInstance().getService(ProdutoTarefaLinBaseProjService.class, null);
MarcoPagamentoPrjService marcoPagamentoPrjService = (MarcoPagamentoPrjService) ServiceLocator.getInstance().getService(MarcoPagamentoPrjService.class, WebUtil.getUsuarioSistema(request));
ProjetoDTO projetoDto = new ProjetoDTO();
projetoDto.setIdProjeto(cronogramaDTO.getIdProjeto());
projetoDto = (ProjetoDTO) projetoService.restore(projetoDto);
String strPerfis = "";
if (projetoDto != null && projetoDto.getIdContrato() != null){
Collection colPerfis = perfilContratoService.findByIdContrato(projetoDto.getIdContrato());
if (colPerfis != null){
for (Iterator it = colPerfis.iterator(); it.hasNext();){
PerfilContratoDTO perfilContratoDTO = (PerfilContratoDTO)it.next();
if (perfilContratoDTO.getDeleted() != null && perfilContratoDTO.getDeleted().equalsIgnoreCase("Y")){
continue;
}
String nomePerfil = UtilStrings.nullToVazio(perfilContratoDTO.getNomePerfilContrato()).replaceAll("\'", "").replaceAll("\"", "");
if (!strPerfis.trim().equalsIgnoreCase("")){
strPerfis += ",";
}
strPerfis += "{id:\"" + perfilContratoDTO.getIdPerfilContrato() + "\", name:\"" + nomePerfil + "\"}";
}
}
}
String strProducts = "";
if (projetoDto != null && projetoDto.getIdContrato() != null){
Collection colProds = produtoContratoService.findByIdContrato(projetoDto.getIdContrato());
if (colProds != null){
for (Iterator it = colProds.iterator(); it.hasNext();){
ProdutoContratoDTO produtoContratoDTO = (ProdutoContratoDTO)it.next();
if (produtoContratoDTO.getDeleted() != null && produtoContratoDTO.getDeleted().equalsIgnoreCase("Y")){
continue;
}
String nomeProduto = UtilStrings.nullToVazio(produtoContratoDTO.getNomeProduto()).replaceAll("\'", "").replaceAll("\"", "");
if (!strProducts.trim().equalsIgnoreCase("")){
strProducts += ",";
}
strProducts += "{id:\"" + produtoContratoDTO.getIdProdutoContrato() + "\", name:\"" + nomeProduto + "\"}";
}
}
}
//document.executeScript("setPerfis('" + strPerfis + "')");
Collection colLinhasBase = linhaBaseProjetoService.findByIdProjeto(cronogramaDTO.getIdProjeto());
LinhaBaseProjetoDTO linhaBaseProjetoDTO = null;
if (colLinhasBase != null){
for (Iterator it = colLinhasBase.iterator(); it.hasNext();){
linhaBaseProjetoDTO = (LinhaBaseProjetoDTO) it.next();
break;
}
}
Collection colRecursos = recursoProjetoService.findByIdProjeto(cronogramaDTO.getIdProjeto());
String strRecursos = "";
if (colRecursos != null){
for (Iterator it = colRecursos.iterator(); it.hasNext();){
RecursoProjetoDTO recursoProjetoDTO = (RecursoProjetoDTO) it.next();
EmpregadoDTO empregadoDTO = new EmpregadoDTO();
empregadoDTO.setIdEmpregado(recursoProjetoDTO.getIdEmpregado());
empregadoDTO = (EmpregadoDTO) empregadoService.restore(empregadoDTO);
if (empregadoDTO != null){
String nomeAux = UtilStrings.nullToVazio(empregadoDTO.getNome()).replaceAll("\'", "").replaceAll("\"", "");
if (!strRecursos.trim().equalsIgnoreCase("")){
strRecursos += ",";
}
strRecursos += "{id:\"" + recursoProjetoDTO.getIdEmpregado() + "\", name:\"" + nomeAux + "\"}";
}
}
}
Collection colMarcos = marcoPagamentoPrjService.findByIdProjeto(cronogramaDTO.getIdProjeto());
String strMarcos = "";
if (colMarcos != null){
for (Iterator it = colMarcos.iterator(); it.hasNext();){
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = (MarcoPagamentoPrjDTO)it.next();
String nomeMarco = marcoPagamentoPrjDTO.getNomeMarcoPag();
nomeMarco = nomeMarco.replaceAll("\'", "");
nomeMarco = nomeMarco.replaceAll("\"", "");
String dataPagStr = UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, marcoPagamentoPrjDTO.getDataPrevisaoPag(), WebUtil.getLanguage(request));
if (!strMarcos.trim().equalsIgnoreCase("")){
strMarcos += ",";
}
strMarcos += "{id:\"0" + marcoPagamentoPrjDTO.getIdMarcoPagamentoPrj() + "\", nomeMarcoPag:\"" + nomeMarco + "\", dataPrevisaoPag:\"" + dataPagStr + "\"}";
}
}
document.executeScript("geraMarcos('" + strMarcos + "')");
document.getTextAreaById("ta").setValue("");
StringBuilder strBuffer = new StringBuilder();
if (linhaBaseProjetoDTO != null){
document.getElementById("idLinhaBaseProjeto").setValue("" + linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
document.getElementById("situacaoLinhaBaseProjeto").setValue("" + linhaBaseProjetoDTO.getSituacao());
Collection colTarefasLnBase = tarefaLinhaBaseProjetoService.findByIdLinhaBaseProjeto(linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
strBuffer.append("{\"tasks\":[");
if (colTarefasLnBase != null){
int i = 0;
for (Iterator it = colTarefasLnBase.iterator(); it.hasNext();){
TarefaLinhaBaseProjetoDTO tarefaLinhaBaseProjetoDTO = (TarefaLinhaBaseProjetoDTO)it.next();
String nome = tarefaLinhaBaseProjetoDTO.getNomeTarefa();
String idMarcoPagamentoPrjStr = "0";
nome = UtilStrings.nullToVazio(nome).replaceAll("\"", "");
nome = nome.replaceAll("\'", "");
String code = tarefaLinhaBaseProjetoDTO.getCodeTarefa();
code = UtilStrings.nullToVazio(code).replaceAll("\"", "");
code = code.replaceAll("\'", "");
String description = tarefaLinhaBaseProjetoDTO.getDetalhamentoTarefa();
String depends = "";
int nivel = 0;
long start = 0;
long end = 0;
double duracao = 0;
double progresso = 0;
String objDepends;
if (tarefaLinhaBaseProjetoDTO.getNivel() != null){
nivel = tarefaLinhaBaseProjetoDTO.getNivel();
}
if (tarefaLinhaBaseProjetoDTO.getIdMarcoPagamentoPrj() != null){
idMarcoPagamentoPrjStr = "0" + tarefaLinhaBaseProjetoDTO.getIdMarcoPagamentoPrj();
}
String status = "STATUS_ACTIVE";
if (tarefaLinhaBaseProjetoDTO.getSituacao().trim().equalsIgnoreCase(TarefaLinhaBaseProjetoDTO.ATIVO)){
status = "STATUS_ACTIVE";
}
if (tarefaLinhaBaseProjetoDTO.getSituacao().trim().equalsIgnoreCase(TarefaLinhaBaseProjetoDTO.PRONTO)){
status = "STATUS_DONE";
}
if (tarefaLinhaBaseProjetoDTO.getSituacao().trim().equalsIgnoreCase(TarefaLinhaBaseProjetoDTO.FALHA)){
status = "STATUS_FAILED";
}
if (tarefaLinhaBaseProjetoDTO.getSituacao().trim().equalsIgnoreCase(TarefaLinhaBaseProjetoDTO.SUSPENSA)){
status = "STATUS_SUSPENDED";
}
if (tarefaLinhaBaseProjetoDTO.getSituacao().trim().equalsIgnoreCase(TarefaLinhaBaseProjetoDTO.SEMDEFINICAO)){
status = "STATUS_UNDEFINED";
}
if (tarefaLinhaBaseProjetoDTO.getDataInicio() != null){
start = tarefaLinhaBaseProjetoDTO.getDataInicio().getTime();
}
if (tarefaLinhaBaseProjetoDTO.getDataFim() != null){
end = tarefaLinhaBaseProjetoDTO.getDataFim().getTime();
}
if (tarefaLinhaBaseProjetoDTO.getDuracaoHora() != null){
end = tarefaLinhaBaseProjetoDTO.getDataFim().getTime();
}
if (tarefaLinhaBaseProjetoDTO.getDuracaoHora() != null){
duracao = tarefaLinhaBaseProjetoDTO.getDuracaoHora();
}
if (tarefaLinhaBaseProjetoDTO.getProgresso() != null){
progresso = tarefaLinhaBaseProjetoDTO.getProgresso();
}
if(tarefaLinhaBaseProjetoDTO.getDepends() != null && !tarefaLinhaBaseProjetoDTO.getDepends().equalsIgnoreCase("")){
depends = tarefaLinhaBaseProjetoDTO.getDepends();
}else{
depends = "0:0";
}
/* if(objDepends != null){
depends = objDepends;
}*/
Collection colRecsVinc = recursoTarefaLinBaseProjService.findByIdTarefaLinhaBaseProjeto(tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto());
String strRecsVinc = "";
if (colRecsVinc != null){
for (Iterator itRec = colRecsVinc.iterator(); itRec.hasNext();){
RecursoTarefaLinBaseProjDTO recursoTarefaLinBaseProjDTO = (RecursoTarefaLinBaseProjDTO)itRec.next();
if (!strRecsVinc.trim().equalsIgnoreCase("")){
strRecsVinc += ",";
}
strRecsVinc += "{\"id\":\"" + recursoTarefaLinBaseProjDTO.getIdRecursoTarefaLinBaseProj() + "\",";
strRecsVinc += "\"resourceId\":\"" + recursoTarefaLinBaseProjDTO.getIdEmpregado() + "\",";
strRecsVinc += "\"roleId\":\"" + recursoTarefaLinBaseProjDTO.getIdPerfilContrato() + "\",";
strRecsVinc += "\"effort\":" + geraTempoMiliSegundos(recursoTarefaLinBaseProjDTO.getTempoAloc()) + ",";
strRecsVinc += "\"esforcoPorOS\":" + recursoTarefaLinBaseProjDTO.getEsforcoPorOS() + "}";
}
}
Collection colProdsVinc = produtoTarefaLinBaseProjService.findByIdTarefaLinhaBaseProjeto(tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto());
String strProdsVinc = "";
if (colProdsVinc != null){
for (Iterator itRec = colProdsVinc.iterator(); itRec.hasNext();){
ProdutoTarefaLinBaseProjDTO produtoTarefaLinBaseProjDTO = (ProdutoTarefaLinBaseProjDTO)itRec.next();
if (!strProdsVinc.trim().equalsIgnoreCase("")){
strProdsVinc += ",";
}
strProdsVinc += "{\"id\":\"" + produtoTarefaLinBaseProjDTO.getIdTarefaLinhaBaseProjeto() + "_" + produtoTarefaLinBaseProjDTO.getIdProdutoContrato() + "\",\"productId\":\"" + produtoTarefaLinBaseProjDTO.getIdProdutoContrato() + "\"}";
}
}
if (i > 0){
strBuffer.append(",");
}
strBuffer.append("{\"id\":" + tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto() + ",\"name\":\"" + nome + "\",\"code\":\"" + code + "\",\"description\":\"" + description + "\",\"level\":" + nivel + "," +
"\"status\":\"" + status + "\",\"start\":" + start + ",\"duration\":" + duracao + ",\"progress\":" + progresso + ",\"end\":" + end + ",\"startIsMilestone\":true,\"endIsMilestone\":false," +
"\"depends\":\"" + depends + "\",\"idMarcoPagamentoPrj\":\"" + idMarcoPagamentoPrjStr + "\"," +
"\"assigs\":[" + strRecsVinc + "],\"prods\":[" + strProdsVinc + "]}");
i++;
}
}
strBuffer.append("],\"selectedRow\":0,\"deletedTaskIds\":[],\"canWrite\":true,\"canWriteOnParent\":true }");
document.getTextAreaById("ta").setValue(strBuffer.toString());
}
document.executeScript("loadProjectFromTextArea('" + strPerfis + "','" + strRecursos + "','" + strProducts + "')");
if (linhaBaseProjetoDTO != null){
if (linhaBaseProjetoDTO.getSituacao().equalsIgnoreCase("E")){
if (linhaBaseProjetoDTO.getJustificativaMudanca() == null || linhaBaseProjetoDTO.getJustificativaMudanca().trim().equalsIgnoreCase("")){
document.getElementById("podeModificar").setValue("N");
document.alert(UtilI18N.internacionaliza(request, "cronograma.linhaEmExecucao"));
}
}
}
}
private long geraTempoMiliSegundos(String str){
if (str == null){
return 0;
}
try{
long l = Long.parseLong(str);
l = l * 36000;
return l;
}catch(Exception e){
return 0;
}
}
public void carregaTemplatesPrintProjeto(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;
}
TemplateImpressaoService templateImpressaoService = (TemplateImpressaoService) ServiceLocator.getInstance().getService(TemplateImpressaoService.class, null);
CronogramaDTO cronogramaDTO = (CronogramaDTO)document.getBean();
Collection colTemplates = templateImpressaoService.list();
HTMLSelect idTemplate = document.getSelectById("idTemplate");
if (colTemplates != null){
for (Iterator it = colTemplates.iterator(); it.hasNext();){
TemplateImpressaoDTO templateImpressaoDTO = (TemplateImpressaoDTO) it.next();
String nome = UtilStrings.nullToVazio(templateImpressaoDTO.getNomeTemplate()).replaceAll("\'", "");
idTemplate.addOption("" + templateImpressaoDTO.getIdTemplateImpressao(), nome);
}
}
}
public void printProjeto(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;
}
CronogramaDTO cronogramaDTO = (CronogramaDTO)document.getBean();
if (cronogramaDTO.getIdProjeto() == null || cronogramaDTO.getIdProjeto().intValue() == 0){
return;
}
if (cronogramaDTO.getIdTemplateImpressao() == null || cronogramaDTO.getIdTemplateImpressao().intValue() == 0){
document.alert(UtilI18N.internacionaliza(request, "cronograma.informeTemplateImpressao"));
return;
}
LinhaBaseProjetoService linhaBaseProjetoService = (LinhaBaseProjetoService) ServiceLocator.getInstance().getService(LinhaBaseProjetoService.class, null);
ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, null);
TarefaLinhaBaseProjetoService tarefaLinhaBaseProjetoService = (TarefaLinhaBaseProjetoService) ServiceLocator.getInstance().getService(TarefaLinhaBaseProjetoService.class, null);
PerfilContratoService perfilContratoService = (PerfilContratoService) ServiceLocator.getInstance().getService(PerfilContratoService.class, null);
AssinaturaAprovacaoProjetoService assinaturaService = (AssinaturaAprovacaoProjetoService) ServiceLocator.getInstance().getService(AssinaturaAprovacaoProjetoService.class, null);
RecursoProjetoService recursoProjetoService = (RecursoProjetoService) ServiceLocator.getInstance().getService(RecursoProjetoService.class, null);
EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
ProdutoContratoService produtoContratoService = (ProdutoContratoService)ServiceLocator.getInstance().getService(ProdutoContratoService.class, null);
RecursoTarefaLinBaseProjService recursoTarefaLinBaseProjService = (RecursoTarefaLinBaseProjService)ServiceLocator.getInstance().getService(RecursoTarefaLinBaseProjService.class, null);
ProdutoTarefaLinBaseProjService produtoTarefaLinBaseProjService = (ProdutoTarefaLinBaseProjService)ServiceLocator.getInstance().getService(ProdutoTarefaLinBaseProjService.class, null);
OSService osService = (OSService)ServiceLocator.getInstance().getService(OSService.class, null);
ContratoService contratoService = (ContratoService)ServiceLocator.getInstance().getService(ContratoService.class, null);
FornecedorService fornecedorService = (FornecedorService)ServiceLocator.getInstance().getService(FornecedorService.class, null);
ClienteService clienteService = (ClienteService)ServiceLocator.getInstance().getService(ClienteService.class, null);
ServicoContratoService servicoContratoService = (ServicoContratoService)ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
ServicoService servicoService = (ServicoService)ServiceLocator.getInstance().getService(ServicoService.class, null);
TemplateImpressaoService templateImpressaoService = (TemplateImpressaoService) ServiceLocator.getInstance().getService(TemplateImpressaoService.class, null);
MarcoPagamentoPrjService marcoPagamentoPrjService = (MarcoPagamentoPrjService) ServiceLocator.getInstance().getService(MarcoPagamentoPrjService.class, null);
TemplateImpressaoDTO templateImpressaoDTO = new TemplateImpressaoDTO();
templateImpressaoDTO.setIdTemplateImpressao(cronogramaDTO.getIdTemplateImpressao());
templateImpressaoDTO = (TemplateImpressaoDTO) templateImpressaoService.restore(templateImpressaoDTO);
if (templateImpressaoDTO == null){
document.alert(UtilI18N.internacionaliza(request, "cronograma.naoEncontrouTemplate"));
return;
}
ProjetoDTO projetoDto = new ProjetoDTO();
projetoDto.setIdProjeto(cronogramaDTO.getIdProjeto());
projetoDto = (ProjetoDTO) projetoService.restore(projetoDto);
OSDTO osDto = null;
if (projetoDto != null && projetoDto.getIdOs() != null){
osDto = new OSDTO();
osDto.setIdOS(projetoDto.getIdOs());
osDto = (OSDTO) osService.restore(osDto);
if (osDto != null){
projetoDto.setNomeAreaRequisitante(osDto.getNomeAreaRequisitante());
projetoDto.setAno(osDto.getAno());
projetoDto.setNumero(osDto.getNumero());
projetoDto.setDemanda(osDto.getDemanda());
projetoDto.setObjetivo(osDto.getObjetivo());
projetoDto.setDataEmissao(osDto.getDataEmissao());
ServicoContratoDTO servicoContratoDTO = new ServicoContratoDTO();
servicoContratoDTO.setIdServicoContrato(osDto.getIdServicoContrato());
servicoContratoDTO = (ServicoContratoDTO) servicoContratoService.restore(servicoContratoDTO);
if (servicoContratoDTO != null){
ServicoDTO servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(servicoContratoDTO.getIdServico());
servicoDTO = (ServicoDTO) servicoService.restore(servicoDTO);
if (servicoDTO != null){
projetoDto.setNomeServicoOS(servicoDTO.getNomeServico());
}
}
}
}
if (projetoDto.getAno() == null){
projetoDto.setAno(new Integer(0));
}
if (projetoDto.getNumero() == null){
projetoDto.setNumero("");
}
if (projetoDto.getNomeAreaRequisitante() == null){
projetoDto.setNomeAreaRequisitante("");
}
if (projetoDto.getDemanda() == null){
projetoDto.setDemanda("");
}
if (projetoDto.getObjetivo() == null){
projetoDto.setObjetivo("");
}
if (projetoDto.getNomeServicoOS() == null){
projetoDto.setNomeServicoOS("");
}
String strPerfis = "";
ContratoDTO contratoDto = new ContratoDTO();
FornecedorDTO fornecedorDTO = new FornecedorDTO();
ClienteDTO clienteDto = new ClienteDTO();
Collection<PerfilContratoDTO> colPerfis = null;
if (projetoDto != null && projetoDto.getIdContrato() != null){
colPerfis = perfilContratoService.findByIdContrato(projetoDto.getIdContrato());
contratoDto.setIdContrato(projetoDto.getIdContrato());
contratoDto = (ContratoDTO) contratoService.restore(contratoDto);
if (contratoDto != null){
fornecedorDTO.setIdFornecedor(contratoDto.getIdFornecedor());
fornecedorDTO = (FornecedorDTO) fornecedorService.restore(fornecedorDTO);
//
clienteDto.setIdCliente(contratoDto.getIdCliente());
clienteDto = (ClienteDTO) clienteService.restore(clienteDto);
}
}
if(colPerfis == null){
document.alert(UtilI18N.internacionaliza(request, "cronograma.definaPerfil"));
return;
}
if(colPerfis != null && colPerfis.isEmpty()){
document.alert(UtilI18N.internacionaliza(request, "cronograma.definaPerfil"));
return;
}
Boolean possuiPerfilValido = false;
for (PerfilContratoDTO perfil : colPerfis) {
if(perfil.getDeleted() == null){
possuiPerfilValido = true;
}
}
if(!possuiPerfilValido){
document.alert(UtilI18N.internacionaliza(request, "cronograma.definaPerfil"));
return;
}
String strProducts = "";
Collection colProds = null;
if (projetoDto != null && projetoDto.getIdContrato() != null){
colProds = produtoContratoService.findByIdContrato(projetoDto.getIdContrato());
}
Collection colLinhasBase = linhaBaseProjetoService.findByIdProjeto(cronogramaDTO.getIdProjeto());
LinhaBaseProjetoDTO linhaBaseProjetoDTO = null;
if (colLinhasBase != null){
for (Iterator it = colLinhasBase.iterator(); it.hasNext();){
linhaBaseProjetoDTO = (LinhaBaseProjetoDTO) it.next();
break;
}
}
Collection colRecursos = recursoProjetoService.findByIdProjeto(cronogramaDTO.getIdProjeto());
if (colRecursos != null){
for (Iterator it = colRecursos.iterator(); it.hasNext();){
RecursoProjetoDTO recursoProjetoDTO = (RecursoProjetoDTO) it.next();
EmpregadoDTO empregadoDTO = new EmpregadoDTO();
empregadoDTO.setIdEmpregado(recursoProjetoDTO.getIdEmpregado());
empregadoDTO = (EmpregadoDTO) empregadoService.restore(empregadoDTO);
recursoProjetoDTO.setEmpregadoDTO(empregadoDTO);
}
}
if(linhaBaseProjetoDTO == null){
document.alert(UtilI18N.internacionaliza(request, "cronograma.cronogramaVazio"));
return;
}
Collection<PerfilContratoDTO> colPerfisValoresProjeto = perfilContratoService.getTotaisByIdLinhaBaseProjeto(linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
Collection<AssinaturaAprovacaoProjetoDTO> colAssinaturas = assinaturaService.findByIdProjeto(cronogramaDTO.getIdProjeto());
if(colAssinaturas != null){
for (AssinaturaAprovacaoProjetoDTO assinatura : colAssinaturas) {
EmpregadoDTO empregadoDTO = new EmpregadoDTO();
empregadoDTO.setIdEmpregado(assinatura.getIdEmpregadoAssinatura());
empregadoDTO = (EmpregadoDTO) empregadoService.restore(empregadoDTO);
assinatura.setNome(empregadoDTO.getNome());
if(empregadoDTO.getNit() != null && !empregadoDTO.getNit().isEmpty()){
assinatura.setMatricula("Matrícula: " + empregadoDTO.getNit());
} else {
assinatura.setMatricula(" ");
}
}
Collections.sort((List<AssinaturaAprovacaoProjetoDTO>) colAssinaturas);
}
Double totalTempoAloc = new Double(0);
Collection colMarcosFin = marcoPagamentoPrjService.findByIdProjeto(cronogramaDTO.getIdProjeto());
if (colMarcosFin != null){
for (Iterator it = colMarcosFin.iterator(); it.hasNext();){
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = (MarcoPagamentoPrjDTO)it.next();
marcoPagamentoPrjDTO.setTempoAlocMinutosTotal(new Double(0));
marcoPagamentoPrjDTO.setCustoPerfil(new Double(0));
Collection colPerfisByMarcosFin = perfilContratoService.getTotaisByIdMarcoPagamentoPrj(marcoPagamentoPrjDTO.getIdMarcoPagamentoPrj(), linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
if (colPerfisByMarcosFin != null){
marcoPagamentoPrjDTO.setColPerfisByMarcosFin(colPerfisByMarcosFin);
for (Iterator itX = colPerfisByMarcosFin.iterator(); itX.hasNext();){
PerfilContratoDTO perfilContrato = (PerfilContratoDTO)itX.next();
if (perfilContrato.getTempoAlocMinutosTotal() != null){
marcoPagamentoPrjDTO.setTempoAlocMinutosTotal(marcoPagamentoPrjDTO.getTempoAlocMinutosTotal().doubleValue() + perfilContrato.getTempoAlocMinutosTotal().doubleValue());
totalTempoAloc = totalTempoAloc + perfilContrato.getTempoAlocMinutosTotal().doubleValue();
}
if (perfilContrato.getCustoTotalPerfil() != null){
marcoPagamentoPrjDTO.setCustoPerfil(marcoPagamentoPrjDTO.getCustoPerfil().doubleValue() + perfilContrato.getCustoTotalPerfil().doubleValue());
}
}
}else{
marcoPagamentoPrjDTO.setColPerfisByMarcosFin(new ArrayList());
}
Collection colProdutosByMarcosFin = produtoContratoService.getProdutosByIdMarcoPagamentoPrj(marcoPagamentoPrjDTO.getIdMarcoPagamentoPrj(), linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
if (colProdutosByMarcosFin != null){
marcoPagamentoPrjDTO.setColProdutosByMarcosFin(colProdutosByMarcosFin);
}else{
marcoPagamentoPrjDTO.setColProdutosByMarcosFin(new ArrayList());
}
}
}
Collection colPerfisByMarcosFinSemMarcos = perfilContratoService.getTotaisSEMIdMarcoPagamentoPrj(linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
if (colPerfisByMarcosFinSemMarcos != null && colPerfisByMarcosFinSemMarcos.size() > 0){
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = new MarcoPagamentoPrjDTO();
marcoPagamentoPrjDTO.setTempoAlocMinutosTotal(new Double(0));
marcoPagamentoPrjDTO.setCustoPerfil(new Double(0));
marcoPagamentoPrjDTO.setNomeMarcoPag("--SEM ATRIBUICAO--");
marcoPagamentoPrjDTO.setDataPrevisaoPag(UtilDatas.getDataAtual());
marcoPagamentoPrjDTO.setColPerfisByMarcosFin(colPerfisByMarcosFinSemMarcos);
for (Iterator itX = colPerfisByMarcosFinSemMarcos.iterator(); itX.hasNext();){
PerfilContratoDTO perfilContrato = (PerfilContratoDTO)itX.next();
if (perfilContrato.getTempoAlocMinutosTotal() != null){
marcoPagamentoPrjDTO.setTempoAlocMinutosTotal(marcoPagamentoPrjDTO.getTempoAlocMinutosTotal().doubleValue() + perfilContrato.getTempoAlocMinutosTotal().doubleValue());
totalTempoAloc = totalTempoAloc + perfilContrato.getTempoAlocMinutosTotal().doubleValue();
}
if (perfilContrato.getCustoTotalPerfil() != null){
marcoPagamentoPrjDTO.setCustoPerfil(marcoPagamentoPrjDTO.getCustoPerfil().doubleValue() + perfilContrato.getCustoTotalPerfil().doubleValue());
}
}
marcoPagamentoPrjDTO.setColProdutosByMarcosFin(new ArrayList());
if (colMarcosFin == null){
colMarcosFin = new ArrayList();
}
colMarcosFin.add(marcoPagamentoPrjDTO);
}
Date dataInicio = null;
Date dataFim = null;
double duracaoTotal = 0;
StringBuilder strBuffer = new StringBuilder();
if (linhaBaseProjetoDTO != null){
Collection<TarefaLinhaBaseProjetoDTO> colTarefasLnBase = tarefaLinhaBaseProjetoService.findByIdLinhaBaseProjeto(linhaBaseProjetoDTO.getIdLinhaBaseProjeto());
if (colTarefasLnBase != null){
Boolean possuiRecursos = false;
for (TarefaLinhaBaseProjetoDTO tarefa : colTarefasLnBase) {
if(tarefa.getCusto() != null && tarefa.getCusto() != 0){
possuiRecursos = true;
}
}
if(!possuiRecursos){
document.alert(UtilI18N.internacionaliza(request, "cronograma.definaRecursos"));
return;
}
for (Iterator it = colTarefasLnBase.iterator(); it.hasNext();){
TarefaLinhaBaseProjetoDTO tarefaLinhaBaseProjetoDTO = (TarefaLinhaBaseProjetoDTO)it.next();
if (dataInicio == null){
dataInicio = tarefaLinhaBaseProjetoDTO.getDataInicio();
}
if (dataFim == null){
dataFim = tarefaLinhaBaseProjetoDTO.getDataFim();
}
if (dataInicio.after(tarefaLinhaBaseProjetoDTO.getDataInicio())){
dataInicio = tarefaLinhaBaseProjetoDTO.getDataInicio();
}
if (dataFim.before(tarefaLinhaBaseProjetoDTO.getDataFim())){
dataFim = tarefaLinhaBaseProjetoDTO.getDataFim();
}
if (tarefaLinhaBaseProjetoDTO.getNivel() != null && tarefaLinhaBaseProjetoDTO.getNivel().intValue() == 0){
if (tarefaLinhaBaseProjetoDTO.getDuracaoHora() != null){
duracaoTotal = tarefaLinhaBaseProjetoDTO.getDuracaoHora();
}
}
Collection colPerfisVinc = perfilContratoService.getTotaisByIdTarefaLinhaBaseProjeto(tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto());
tarefaLinhaBaseProjetoDTO.setColPerfis(colPerfisVinc);
String strPerfisVinc = "";
if (colPerfisVinc != null){
for (Iterator itRec = colPerfisVinc.iterator(); itRec.hasNext();){
PerfilContratoDTO perfilContratoDTO = (PerfilContratoDTO)itRec.next();
if (!strPerfisVinc.trim().equalsIgnoreCase("")){
strPerfisVinc += ",";
}
strPerfisVinc += perfilContratoDTO.getNomePerfilContrato();
}
}
tarefaLinhaBaseProjetoDTO.setNomesPerfis(strPerfisVinc);
Collection colRecsVinc = recursoTarefaLinBaseProjService.findByIdTarefaLinhaBaseProjeto(tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto());
tarefaLinhaBaseProjetoDTO.setColRecursos(colRecsVinc);
String strRecsVinc = "";
if (colRecsVinc != null){
for (Iterator itRec = colRecsVinc.iterator(); itRec.hasNext();){
RecursoTarefaLinBaseProjDTO recursoTarefaLinBaseProjDTO = (RecursoTarefaLinBaseProjDTO)itRec.next();
EmpregadoDTO empregadoDTO = new EmpregadoDTO();
empregadoDTO.setIdEmpregado(recursoTarefaLinBaseProjDTO.getIdEmpregado());
empregadoDTO = (EmpregadoDTO) empregadoService.restore(empregadoDTO);
recursoTarefaLinBaseProjDTO.setEmpregadoDTO(empregadoDTO);
if (empregadoDTO != null){
if (!strRecsVinc.trim().equalsIgnoreCase("")){
strRecsVinc += ",";
}
strRecsVinc += empregadoDTO.getNome();
}
}
}
tarefaLinhaBaseProjetoDTO.setNomesRecursos(strRecsVinc);
//---
Collection colProdsVinc = produtoTarefaLinBaseProjService.findByIdTarefaLinhaBaseProjeto(tarefaLinhaBaseProjetoDTO.getIdTarefaLinhaBaseProjeto());
tarefaLinhaBaseProjetoDTO.setColProdutos(colProdsVinc);
String strProdsVinc = "";
if (colProdsVinc != null){
for (Iterator itRec = colProdsVinc.iterator(); itRec.hasNext();){
ProdutoTarefaLinBaseProjDTO produtoTarefaLinBaseProjDTO = (ProdutoTarefaLinBaseProjDTO)itRec.next();
ProdutoContratoDTO produtoContratoDTO = new ProdutoContratoDTO();
produtoContratoDTO.setIdProdutoContrato(produtoTarefaLinBaseProjDTO.getIdProdutoContrato());
produtoContratoDTO = (ProdutoContratoDTO) produtoContratoService.restore(produtoContratoDTO);
if (produtoContratoDTO != null){
if (!strProdsVinc.trim().equalsIgnoreCase("")){
strProdsVinc += ",";
}
strProdsVinc += produtoContratoDTO.getNomeProduto();
}
}
}
tarefaLinhaBaseProjetoDTO.setNomesProdutos(strProdsVinc);
}
}
if (colTarefasLnBase != null){
//Template template = cfg.getTemplate("D:/AmbienteTrabalho/jboss-4.2.3.GA/server/default/deploy/citsmart.war/templateFreeMarker/osMI.ftl");
Map<String, Object> data = new HashMap<String, Object>();
data.put("tasks", colTarefasLnBase);
data.put("finMilestones", colMarcosFin);
data.put("rolesValues", colPerfisValoresProjeto);
data.put("Assinaturas", colAssinaturas);
data.put("init", dataInicio);
data.put("end", dataFim);
data.put("duration", duracaoTotal);
data.put("products", colProds);
data.put("roles", colPerfis);
data.put("resourcesProject", colRecursos);
data.put("lineBaseDTO", linhaBaseProjetoDTO);
data.put("contractDto", contratoDto);
data.put("providerDto", fornecedorDTO);
data.put("customerDto", clienteDto);
data.put("projectDTO", projetoDto);
data.put("osDto", osDto);
if (totalTempoAloc == null){
totalTempoAloc = new Double(0);
}
double x = totalTempoAloc.doubleValue() / 60;
data.put("totalTempoAloc", UtilFormatacao.formatDouble(x, 2));
File f = new File(CITCorporeUtil.CAMINHO_REAL_APP + "/templateFreeMarker/" + usuario.getIdUsuario());
f.mkdirs();
String strPathTemplateCAB = CITCorporeUtil.CAMINHO_REAL_APP + "/templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_CAB.ftl";
UtilTratamentoArquivos.geraFileTxtFromString(strPathTemplateCAB, templateImpressaoDTO.getHtmlCabecalho());
String strPathTemplateCORPO = CITCorporeUtil.CAMINHO_REAL_APP + "/templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_CORPO.ftl";
UtilTratamentoArquivos.geraFileTxtFromString(strPathTemplateCORPO, templateImpressaoDTO.getHtmlCorpo());
String strPathTemplateROD = CITCorporeUtil.CAMINHO_REAL_APP + "/templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_ROD.ftl";
UtilTratamentoArquivos.geraFileTxtFromString(strPathTemplateROD, UtilStrings.nullToVazio(templateImpressaoDTO.getHtmlRodape()));
String strPathTemplateCAB_HTML = strPathTemplateCAB.replaceAll(".ftl", ".html");
String strPathTemplateCORPO_HTML = strPathTemplateCORPO.replaceAll(".ftl", ".html");
String strPathTemplateROD_HTML = strPathTemplateROD.replaceAll(".ftl", ".html");
String strPathTemplateCORPO_PDF = strPathTemplateCORPO.replaceAll(".ftl", ".pdf");
String strPathPDF = Constantes.getValue("CONTEXTO_APLICACAO") + "/templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_CORPO.pdf";
geraTemplate("templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_CAB.ftl", data, strPathTemplateCAB_HTML);
geraTemplate("templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_CORPO.ftl", data, strPathTemplateCORPO_HTML);
geraTemplate("templateFreeMarker/" + usuario.getIdUsuario() + "/" + templateImpressaoDTO.getIdTemplateImpressao() + "_ROD.ftl", data, strPathTemplateROD_HTML);
CYaHPConverter converter = new CYaHPConverter();
File fout = new File(strPathTemplateCORPO_PDF);
FileOutputStream out = new FileOutputStream(fout);
List headerFooterList = new ArrayList();
Map properties = new HashMap();
String strCabecalho = UtilTratamentoArquivos.getStringTextFromFileTxtTemplate(strPathTemplateCAB_HTML);
String strRodape = UtilTratamentoArquivos.getStringTextFromFileTxtTemplate(strPathTemplateROD_HTML);
headerFooterList.add(new IHtmlToPdfTransformer.CHeaderFooter(strCabecalho, IHtmlToPdfTransformer.CHeaderFooter.HEADER));
headerFooterList.add(new IHtmlToPdfTransformer.CHeaderFooter(strRodape, IHtmlToPdfTransformer.CHeaderFooter.FOOTER));
int tamCab = 0;
if (templateImpressaoDTO.getTamCabecalho() != null){
tamCab = templateImpressaoDTO.getTamCabecalho().intValue();
}
IHtmlToPdfTransformer.PageSize pageSize = new IHtmlToPdfTransformer.PageSize(IHtmlToPdfTransformer.A4P.getSize()[0],IHtmlToPdfTransformer.A4P.getSize()[1],
IHtmlToPdfTransformer.A4P.getMargin()[0],IHtmlToPdfTransformer.A4P.getMargin()[1],IHtmlToPdfTransformer.A4P.getMargin()[2], IHtmlToPdfTransformer.A4P.getMargin()[3] + tamCab);
properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS, IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER);
String str = UtilTratamentoArquivos.getStringTextFromFileTxtTemplate(strPathTemplateCORPO_HTML);
converter.convertToPdf(str,
pageSize,
headerFooterList,
"file:///temp/", // root for relative external CSS and IMAGE
out,
properties);
/*
converter.convertToPdf(new URL("http://localhost:8080/citsmart/templateFreeMarker/osMI.html"),
IHtmlToPdfTransformer.A4P, headerFooterList, out,
properties);
*/
out.flush();
out.close();
document.executeScript("window.open('" + strPathPDF + "')");
}
}
}
private void geraTemplate(String strPathTemplate, Map<String, Object> data, String strPathOutput) throws IOException, TemplateException{
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(CITCorporeUtil.CAMINHO_REAL_APP));
Template template = null;
if(System.getProperty("os.name").contains("Windows")){
template = cfg.getTemplate(strPathTemplate, "ISO-8859-1");
} else {
template = cfg.getTemplate(strPathTemplate, "UTF-8");
}
Writer file = new FileWriter(new File(strPathOutput));
template.process(data, file);
file.flush();
file.close();
}
private Collection getTarefas(Collection col, HttpServletRequest request) throws LogicException{
if (col != null){
Collection colRetorno = new ArrayList();
for (Iterator it = col.iterator(); it.hasNext();){
HashMap mapItem = (HashMap)it.next();
String name = (String)(mapItem.get("NAME"));
if (name.equals("")){
throw new LogicException(UtilI18N.internacionaliza(request, "cronograma.informeAtividade"));
}
TarefaLinhaBaseProjetoDTO tarefaLinhaBaseProjetoDTO = generateDTO(mapItem);
colRetorno.add(tarefaLinhaBaseProjetoDTO);
}
return colRetorno;
}
return null;
}
private Collection getMarcosPag(HttpServletRequest request, Collection col){
if (col != null){
Collection colRetorno = new ArrayList();
for (Iterator it = col.iterator(); it.hasNext();){
HashMap mapItem = (HashMap)it.next();
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = generateMarcoPagDTO(request, mapItem);
colRetorno.add(marcoPagamentoPrjDTO);
}
return colRetorno;
}
return null;
}
private MarcoPagamentoPrjDTO generateMarcoPagDTO(HttpServletRequest request, HashMap mapItem){
if (mapItem == null){
return null;
}
MarcoPagamentoPrjDTO marcoPagamentoPrjDTO = new MarcoPagamentoPrjDTO();
marcoPagamentoPrjDTO.setId(UtilStrings.nullToVazio((String)mapItem.get("ID")).trim());
marcoPagamentoPrjDTO.setNomeMarcoPag(UtilStrings.nullToVazio((String)mapItem.get("NOMEMARCOPAG")).trim());
String dataStr = UtilStrings.nullToVazio((String)mapItem.get("DATAPREVISAOPAG")).trim();
if (!dataStr.trim().equalsIgnoreCase("")){
try{
marcoPagamentoPrjDTO.setDataPrevisaoPag(UtilDatas.convertStringToSQLDate(TipoDate.DATE_DEFAULT, dataStr, WebUtil.getLanguage(request)));
}catch(Exception e){}
}
return marcoPagamentoPrjDTO;
}
private TarefaLinhaBaseProjetoDTO generateDTO(HashMap mapItem){
if (mapItem == null){
return null;
}
TarefaLinhaBaseProjetoDTO tarefaLinhaBaseProjetoDTO = new TarefaLinhaBaseProjetoDTO();
tarefaLinhaBaseProjetoDTO.setProgresso(new Double(0));
tarefaLinhaBaseProjetoDTO.setNomeTarefa(UtilStrings.nullToVazio((String)mapItem.get("NAME")).trim());
String start = UtilStrings.nullToVazio((String)mapItem.get("START")).trim();
long startLong = Long.parseLong(start);
java.sql.Date dataInicial = new java.sql.Date(startLong);
tarefaLinhaBaseProjetoDTO.setDataInicio(dataInicial);
String end = UtilStrings.nullToVazio((String)mapItem.get("END")).trim();
long endLong = Long.parseLong(end);
java.sql.Date dataFinal = new java.sql.Date(endLong);
tarefaLinhaBaseProjetoDTO.setDataFim(dataFinal);
String depends = UtilStrings.nullToVazio((String)mapItem.get("DEPENDS")).trim();
tarefaLinhaBaseProjetoDTO.setDepends(depends);
try{
String level = UtilStrings.nullToVazio((String)mapItem.get("LEVEL")).trim();
int levelInt = Integer.parseInt(level);
tarefaLinhaBaseProjetoDTO.setNivel(levelInt);
}catch(Exception e){
e.printStackTrace();
}
String id = UtilStrings.nullToVazio((String)mapItem.get("ID")).trim();
tarefaLinhaBaseProjetoDTO.setIdInternal(id);
if (id != null && id.indexOf("tmp") < 0){ //se id nao tiver nulo, eh o id original da tarefa.
Integer idLn = null;
try{
idLn = new Integer(id);
tarefaLinhaBaseProjetoDTO.setIdTarefaLinhaBaseProjeto(idLn);
}catch(Exception e){
}
}
String code = UtilStrings.nullToVazio((String)mapItem.get("CODE")).trim();
tarefaLinhaBaseProjetoDTO.setCodeTarefa(code);
String collapsed = UtilStrings.nullToVazio((String)mapItem.get("COLLAPSED")).trim();
if (collapsed.equalsIgnoreCase("true")){
tarefaLinhaBaseProjetoDTO.setCollapsed("S");
}else{
tarefaLinhaBaseProjetoDTO.setCollapsed("N");
}
try{
String dur = UtilStrings.nullToVazio((String)mapItem.get("DURATION")).trim();
dur = dur.replaceAll(",", "");
double durDouble = Double.parseDouble(dur);
tarefaLinhaBaseProjetoDTO.setDuracaoHora(durDouble);
}catch(Exception e){
e.printStackTrace();
}
try{
String prg = UtilStrings.nullToVazio((String)mapItem.get("PROGRESS")).trim();
prg = prg.replaceAll(",", "");
double prgDouble = Double.parseDouble(prg);
tarefaLinhaBaseProjetoDTO.setProgresso(prgDouble);
}catch(Exception e){
e.printStackTrace();
}
if (tarefaLinhaBaseProjetoDTO.getProgresso() == null){
tarefaLinhaBaseProjetoDTO.setProgresso(new Double(0));
}
try{
String idMarco = UtilStrings.nullToVazio((String)mapItem.get("IDMARCOPAGAMENTOPRJ")).trim();
idMarco = idMarco.replaceAll(",", "");
Integer intIdMarco = 0;
if(!idMarco.equalsIgnoreCase("")){
intIdMarco = Integer.parseInt(idMarco);
}
if (intIdMarco != null && intIdMarco.longValue() == 0) {
intIdMarco = null;
}
tarefaLinhaBaseProjetoDTO.setIdMarcoPagamentoPrj(intIdMarco);
}catch(Exception e){
e.printStackTrace();
}
String status = UtilStrings.nullToVazio((String)mapItem.get("STATUS")).trim();
if (status.equalsIgnoreCase("STATUS_ACTIVE")){
tarefaLinhaBaseProjetoDTO.setSituacao(TarefaLinhaBaseProjetoDTO.ATIVO);
}
if (status.equalsIgnoreCase("STATUS_DONE")){
tarefaLinhaBaseProjetoDTO.setSituacao(TarefaLinhaBaseProjetoDTO.PRONTO);
}
if (status.equalsIgnoreCase("STATUS_FAILED")){
tarefaLinhaBaseProjetoDTO.setSituacao(TarefaLinhaBaseProjetoDTO.FALHA);
}
if (status.equalsIgnoreCase("STATUS_SUSPENDED")){
tarefaLinhaBaseProjetoDTO.setSituacao(TarefaLinhaBaseProjetoDTO.SUSPENSA);
}
if (status.equalsIgnoreCase("STATUS_UNDEFINED")){
tarefaLinhaBaseProjetoDTO.setSituacao(TarefaLinhaBaseProjetoDTO.SEMDEFINICAO);
}
tarefaLinhaBaseProjetoDTO.setEstimada("N");
Collection colAssigs = (Collection) mapItem.get("ASSIGS");
Collection colRecursos = new ArrayList();
Collection colProdutos = new ArrayList();
if (colAssigs != null){
for (Iterator it = colAssigs.iterator(); it.hasNext();){
HashMap mapX = (HashMap)it.next();
String idResStr = (String) mapX.get("RESOURCEID");
String idPapelStr = (String) mapX.get("ROLEID");
String effortStr = (String) mapX.get("EFFORT");
String esforcoPorOSStr = (String) mapX.get("ESFORCOPOROS");
//System.out.println("RECURSO >>>>>>> " + idResStr + " >>> " + idPapelStr + " >>> " + effortStr);
RecursoTarefaLinBaseProjDTO recursoTarefaLinBaseProjDTO = new RecursoTarefaLinBaseProjDTO();
try{
recursoTarefaLinBaseProjDTO.setIdEmpregado(new Integer(idResStr));
recursoTarefaLinBaseProjDTO.setIdPerfilContrato(new Integer(idPapelStr));
recursoTarefaLinBaseProjDTO.setEsforcoPorOS(esforcoPorOSStr);
if (effortStr != null){
try{
double effortAux = Double.parseDouble(effortStr);
effortAux = effortAux / 36000;
effortStr = UtilFormatacao.formatDouble(effortAux, 0);
effortStr = UtilFormatacao.formataHoraHHMM(effortStr);
}catch(Exception e){
effortStr = "";
}
}
recursoTarefaLinBaseProjDTO.setTempoAloc(effortStr);
colRecursos.add(recursoTarefaLinBaseProjDTO);
}catch(Exception e){
}
}
}
Collection colProds = (Collection) mapItem.get("PRODS");
if (colProds != null){
for (Iterator it = colProds.iterator(); it.hasNext();){
HashMap mapX = (HashMap)it.next();
String idProdStr = (String) mapX.get("PRODUCTID");
//System.out.println("PRODUTO >>>>>>> " + idProdStr);
ProdutoTarefaLinBaseProjDTO produtoTarefaLinBaseProjDTO = new ProdutoTarefaLinBaseProjDTO();
try{
produtoTarefaLinBaseProjDTO.setIdProdutoContrato(new Integer(idProdStr));
colProdutos.add(produtoTarefaLinBaseProjDTO);
}catch(Exception e){
}
}
}
String description = UtilStrings.nullToVazio((String)mapItem.get("DESCRIPTION")).trim();
tarefaLinhaBaseProjetoDTO.setDetalhamentoTarefa(description);
tarefaLinhaBaseProjetoDTO.setColRecursos(colRecursos);
tarefaLinhaBaseProjetoDTO.setColProdutos(colProdutos);
return tarefaLinhaBaseProjetoDTO;
}
}