/**
* CentralIT - CITSmart
*
*/
package br.com.centralit.citcorpore.integracao;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.RelatorioValorServicoContratoDTO;
import br.com.centralit.citcorpore.bean.ValoresServicoContratoDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.integracao.Order;
import br.com.citframework.util.Constantes;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class ValoresServicoContratoDao extends CrudDaoDefaultImpl {
public ValoresServicoContratoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idValorServicoContrato", "idValorServicoContrato", true, true, false, false));
listFields.add(new Field("idServicoContrato", "idServicoContrato", false, false, false, false));
listFields.add(new Field("valorServico", "valorServico", false, false, false, false));
listFields.add(new Field("dataInicio", "dataInicio", false, false, false, false));
listFields.add(new Field("dataFim", "dataFim", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "ValorServicoContrato";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return ValoresServicoContratoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
public Collection findByIdServicoContrato(Integer parm) throws Exception {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", parm));
ordenacao.add(new Order("idValorServicoContrato"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Retorna Lita de Valores Servico Contrato Ativas
* idServicoContrato.
*
* @param idServicoContrato
* @return valoresServicoContrato
* @throws Exception
*/
public Collection obterValoresAtivosPorIdServicoContrato(Integer idServicoContrato) throws Exception {
List parametro = new ArrayList();
List list = new ArrayList();
String sql = "SELECT idValorServicoContrato,idServicoContrato,valorServico,dataInicio,dataFim FROM " + getTableName() +" WHERE idServicoContrato = ? ORDER BY idValorServicoContrato DESC";
parametro.add(idServicoContrato);
list = this.execSQL(sql, parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idValorServicoContrato");
listRetorno.add("idServicoContrato");
listRetorno.add("valorServico");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
Collection result = this.engine.listConvertion(getBean(), list, listRetorno);
return result;
}
public void deleteByIdServicoContrato(Integer parm) throws Exception {
List condicao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", parm));
super.deleteByCondition(condicao);
}
public boolean existeAtivos(Integer idServicoContrato) throws Exception {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", idServicoContrato));
condicao.add(new Condition("dataFim", "is", null));
ordenacao.add(new Order("idValorServicoContrato"));
Collection var = super.findByCondition(condicao, ordenacao);
if(var==null || var.isEmpty())
return false;
return true;
}
public Collection<RelatorioValorServicoContratoDTO> listaValoresServicoContrato(ValoresServicoContratoDTO valoresServicoContratoDTO) throws Exception {
List<RelatorioValorServicoContratoDTO> listaQuantidadeSolicitacaoServico = null;
if (valoresServicoContratoDTO != null && valoresServicoContratoDTO.getIdContrato() != null &&
valoresServicoContratoDTO.getDataInicio() != null && valoresServicoContratoDTO.getDataFim() != null) {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
sql.append("select ");
sql.append("s.nomeservico, vsc.idvalorservicocontrato, vsc.valorServico, ");
sql.append("vsc.datainicio, vsc.datafim ");
sql.append("from ");
sql.append("solicitacaoservico ss ");
sql.append("inner join ");
sql.append("servicocontrato sc on sc.idservicocontrato = ss.idservicocontrato ");
sql.append("inner join ");
sql.append("valorservicocontrato vsc on vsc.idservicocontrato = sc.idservicocontrato ");
sql.append("inner join ");
sql.append("contratos c on c.idcontrato = sc.idcontrato ");
sql.append("inner join ");
sql.append("servico s on s.idservico = sc.idservico ");
sql.append("where ");
sql.append("c.idcontrato = ? and ");
parametro.add(valoresServicoContratoDTO.getIdContrato() );
if (valoresServicoContratoDTO.getIdServico() != null && !valoresServicoContratoDTO.getIdServico().equals("") ) {
sql.append("s.idservico = ? and ");
parametro.add(valoresServicoContratoDTO.getIdServico() );
}
sql.append("ss.datahorainicio between ? and ? and ");
sql.append("UPPER(ss.situacao) = UPPER('Fechada') ");
sql.append("group by ");
sql.append("s.nomeServico, ");
sql.append("vsc.valorServico, ");
sql.append("vsc.idValorServicoContrato, ");
sql.append("vsc.datainicio, ");
sql.append("vsc.datafim ");
parametro.add(valoresServicoContratoDTO.getDataInicio());
parametro.add(transformaHoraFinal(valoresServicoContratoDTO.getDataFim()) );
// if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE) ) {
// parametro.add(valoresServicoContratoDTO.getDataInicio() );
// } else {
// parametro.add(valoresServicoContratoDTO.getDataFim() + " 23:59:59 ");
// }
//
// if (valoresServicoContratoDTO.getIdContrato() != null) {
// parametro.add(valoresServicoContratoDTO.getIdContrato() );
// }
//
// if (valoresServicoContratoDTO.getIdServico() != null) {
// sql.append(" servicocontrato.idservico = ? ");
// parametro.add(valoresServicoContratoDTO.getIdServico() );
// }
List list = execSQL(sql.toString(), parametro.toArray() );
listRetorno.add("nomeServico");
listRetorno.add("idServicoContrato");
listRetorno.add("valorServico");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
if (list != null && !list.isEmpty() ) {
listaQuantidadeSolicitacaoServico = this.listConvertion(RelatorioValorServicoContratoDTO.class, list, listRetorno);
return listaQuantidadeSolicitacaoServico;
}
}
return listaQuantidadeSolicitacaoServico;
}
private Timestamp transformaHoraFinal(Date data) throws ParseException{
String dataHora = data + " 23:59:59";
String pattern = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
java.util.Date d = sdf.parse(dataHora);
java.sql.Timestamp sqlDate = new java.sql.Timestamp(d.getTime());
return sqlDate;
}
/**
* @param idServicoContrato
* @param data
* @throws PersistenceException
* @author cledson.junior
*/
public void updateValoresServicoContrato(Integer idServicoContrato, Date data) throws PersistenceException {
List parametros = new ArrayList();
if (data != null) {
parametros.add(data);
} else {
parametros.add(null);
}
parametros.add(idServicoContrato);
String sql = "UPDATE " + getTableName() + " SET datafim = ? WHERE idServicoContrato = ?";
execUpdate(sql, parametros.toArray());
}
}