package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.AtividadesOSDTO;
import br.com.centralit.citcorpore.bean.OSDTO;
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 AtividadesOSDao extends CrudDaoDefaultImpl {
public AtividadesOSDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idAtividadesOS", "idAtividadesOS", true, true, false, false));
listFields.add(new Field("idOS", "idOS", false, false, false, false));
listFields.add(new Field("sequencia", "sequencia", false, false, false, false));
listFields.add(new Field("idAtividadeServicoContrato", "idAtividadeServicoContrato", false, false, false, false));
listFields.add(new Field("descricaoAtividade", "descricaoAtividade", false, false, false, false));
listFields.add(new Field("obsAtividade", "obsAtividade", false, false, false, false));
listFields.add(new Field("custoAtividade", "custoAtividade", false, false, false, false));
listFields.add(new Field("glosaAtividade", "glosaAtividade", false, false, false, false));
listFields.add(new Field("qtdeExecutada", "qtdeExecutada", false, false, false, false));
listFields.add(new Field("complexidade", "complexidade", false, false, false, false));
listFields.add(new Field("formula", "formula", false, false, false, false));
listFields.add(new Field("contabilizar", "contabilizar", false, false, false, false));
listFields.add(new Field("idServicoContratoContabil", "idServicoContratoContabil", false, false, false, false));
listFields.add(new Field("deleted", "deleted", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "AtividadesOS";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return AtividadesOSDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
public Collection findByIdOS(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idOS", "=", parm));
ordenacao.add(new Order("sequencia"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdOS(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idOS", "=", parm));
super.deleteByCondition(condicao);
}
@Override
public void updateNotNull(IDto obj) throws PersistenceException {
super.updateNotNull(obj);
}
/**
* Retorna o custo de atividades por id OS.
*
* @param idOs
* @return <code>Double</code>
* @throws Exception
*/
public Double retornarCustoAtividadeOSByIdOs(Integer idOs) throws PersistenceException {
String sql = "select sum(custoatividade) from atividadesos where idos = ?";
List dados = this.execSQL(sql, new Object[] { idOs });
List fields = new ArrayList();
fields.add("custoAtividade");
Collection<AtividadesOSDTO> listaDeAtividadeOS = this.listConvertion(
getBean(), dados, fields);
if (listaDeAtividadeOS != null && !listaDeAtividadeOS.isEmpty()) {
for (AtividadesOSDTO atividade : listaDeAtividadeOS) {
return atividade.getCustoAtividade();
}
return null;
} else {
return null;
}
}
/**
* Retorna list de atividades por id OS.
*
* @param idOs
* @return <code>Double</code>
* @throws Exception
*/
public Collection listOSNumeroAtividade(Integer idAtividadesOS) throws PersistenceException {
String sql = "SELECT os.numero, osAtv.descricaoatividade, osAtv.idos, osAtv.idatividadesos " +
"FROM atividadesos osAtv INNER JOIN os ON os.idos = osAtv.idos WHERE osAtv.idatividadesos = ?";
List dados = this.execSQL(sql, new Object[] { idAtividadesOS });
List fields = new ArrayList();
fields.add("numeroOS");
fields.add("descricaoAtividade");
fields.add("idOS");
fields.add("idAtividadesOS");
return this.listConvertion(getBean(), dados, fields);
}
/**
* Retorna a quantidadedeExecu��o de atividades por id OS.
*
* @param idOs
* @return <code>Double</code>
* @throws Exception
*/
public Double retornarQtdExecucao(Integer idOs) throws PersistenceException {
String sql = "select sum(qtdeExecutada) from atividadesos where idos = ?";
List dados = this.execSQL(sql, new Object[] { idOs });
List fields = new ArrayList();
fields.add("qtdeExecutada");
Collection<AtividadesOSDTO> listaDeAtividadeOS = this.listConvertion(
getBean(), dados, fields);
if (listaDeAtividadeOS != null && !listaDeAtividadeOS.isEmpty()) {
for (AtividadesOSDTO atividade : listaDeAtividadeOS) {
return atividade.getQtdeExecutada();
}
return null;
} else {
return null;
}
}
/**
* Retorna a soma das glosas de atividades por id OS.
* @param idOs
* @return
* @throws Exception
*/
public Double retornarGlosaAtividadeOSByIdOs(Integer idOs) throws PersistenceException {
String sql = "select sum(glosaatividade) from atividadesos where idos = ?";
List dados = this.execSQL(sql, new Object[] { idOs });
List fields = new ArrayList();
fields.add("glosaAtividade");
Collection<AtividadesOSDTO> listaDeAtividadeOS = this.listConvertion(
getBean(), dados, fields);
if (listaDeAtividadeOS != null && !listaDeAtividadeOS.isEmpty()) {
for (AtividadesOSDTO atividade : listaDeAtividadeOS) {
return atividade.getGlosaAtividade();
}
return null;
} else {
return null;
}
}
/**
* M�todo para atualizar observao de os n�o homologadas
*
* @param observacao
* @param os
* @throws Exception
*/
public boolean atualizaObservacao(Integer idatividadeservicocontrato, String observacao, List<OSDTO> os) throws PersistenceException {
int resp = 0;
for (OSDTO osdto : os) {
List parametros = new ArrayList();
parametros.add(observacao);
parametros.add(idatividadeservicocontrato);
parametros.add(osdto.getIdOS());
String sql = "UPDATE atividadesos SET obsatividade = ? WHERE idatividadeservicocontrato = ? AND idos = ? ";
int temp = super.execUpdate(sql, parametros.toArray());
if(temp > 0)
resp = temp;
}
if (resp>0)
return true;
else
return false;
}
public Collection findByIdOsServicoContratoContabil(Integer idOS, Integer idServicoContratoContabil) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idOS", "=", idOS));
condicao.add(new Condition("idServicoContratoContabil", "=", idServicoContratoContabil));
List ordenacao = new ArrayList();
ordenacao.add(new Order("idOS"));
return super.findByCondition(condicao, ordenacao);
}
}