Rev 450 | Rev 562 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 450 | Rev 561 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | package br.com.ec.repository.jpa; |
1 | package br.com.ec.repository.jpa; |
| 2 | 2 | ||
| - | 3 | import java.util.ArrayList; |
|
| 3 | import java.util.Date; |
4 | import java.util.Date; |
| 4 | import java.util.List; |
5 | import java.util.List; |
| 5 | 6 | ||
| 6 | import javax.persistence.Query; |
7 | import javax.persistence.Query; |
| 7 | import javax.persistence.TypedQuery; |
8 | import javax.persistence.TypedQuery; |
| Line 11... | Line 12... | ||
| 11 | import br.com.ec.core.util.DataUtils; |
12 | import br.com.ec.core.util.DataUtils; |
| 12 | import br.com.ec.core.util.VerificadorUtil; |
13 | import br.com.ec.core.util.VerificadorUtil; |
| 13 | import br.com.ec.domain.dto.AuditoriaVendaDTO; |
14 | import br.com.ec.domain.dto.AuditoriaVendaDTO; |
| 14 | import br.com.ec.domain.dto.FormaPagamentoDTO; |
15 | import br.com.ec.domain.dto.FormaPagamentoDTO; |
| 15 | import br.com.ec.domain.dto.LojaDTO; |
16 | import br.com.ec.domain.dto.LojaDTO; |
| - | 17 | import br.com.ec.domain.dto.ModeloDTO; |
|
| - | 18 | import br.com.ec.domain.dto.RankingComprasTransferenciasEstiloDTO; |
|
| - | 19 | import br.com.ec.domain.dto.RankingComprasTransferenciasEstiloPorLojaDTO; |
|
| - | 20 | import br.com.ec.domain.dto.RankingModeloDTO; |
|
| - | 21 | import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO; |
|
| - | 22 | import br.com.ec.domain.dto.consulta.ParametrosConsultaPorPeriodoDTO; |
|
| 16 | import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO; |
23 | import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO; |
| 17 | import br.com.ec.domain.model.Venda; |
24 | import br.com.ec.domain.model.Venda; |
| - | 25 | import br.com.ec.domain.model.tipos.TipoEstiloProduto; |
|
| - | 26 | import br.com.ec.domain.model.tipos.TipoGenero; |
|
| - | 27 | import br.com.ec.domain.model.tipos.TipoOrdenacaoMaisVendidos; |
|
| - | 28 | import br.com.ec.domain.model.tipos.TipoProduto; |
|
| 18 | import br.com.ec.domain.shared.ConstantesSEC; |
29 | import br.com.ec.domain.shared.ConstantesSEC; |
| 19 | import br.com.ec.repository.SistemaAbstractRepository; |
30 | import br.com.ec.repository.SistemaAbstractRepository; |
| 20 | import br.com.ec.repository.VendaRepository; |
31 | import br.com.ec.repository.VendaRepository; |
| 21 | 32 | ||
| 22 | @Repository |
33 | @Repository |
| Line 215... | Line 226... | ||
| 215 | if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getCodigoCupom())) {
|
226 | if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getCodigoCupom())) {
|
| 216 | query.setParameter("codigoCupom", parametros.getCodigoCupom());
|
227 | query.setParameter("codigoCupom", parametros.getCodigoCupom());
|
| 217 | }
|
228 | }
|
| 218 | */
|
229 | */
|
| 219 | }
|
230 | }
|
| - | 231 | ||
| - | 232 | @Override |
|
| - | 233 | public List<RankingModeloDTO> consultarModelosMaisVendidos(ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta) { |
|
| - | 234 | List<RankingModeloDTO> modelos = new ArrayList<RankingModeloDTO>(); |
|
| - | 235 | try { |
|
| - | 236 | StringBuilder sql = new StringBuilder(); |
|
| - | 237 | sql.append("SELECT COUNT(l), m.seq_modelo, m.dsc_modelo "); |
|
| - | 238 | ||
| - | 239 | // CONSULTANDO ESTOQUE DO MODELO
|
|
| - | 240 | sql.append(",(SELECT SUM(pl.qtd_estoque) FROM sc_sec.sec_produto_loja pl "); |
|
| - | 241 | sql.append("LEFT JOIN sc_sec.sec_produto pp ON pp.seq_produto = pl.seq_produto "); |
|
| - | 242 | sql.append("LEFT JOIN sc_sec.sec_modelo mm ON mm.seq_modelo = pp.seq_modelo "); |
|
| - | 243 | sql.append("WHERE mm.seq_modelo = m.seq_modelo AND pp.tip_produto = 'C') "); |
|
| - | 244 | ||
| - | 245 | sql.append("FROM sc_sec.sec_lancamento l "); |
|
| - | 246 | sql.append("LEFT JOIN sc_sec.sec_venda v ON l.seq_venda = v.seq_venda "); |
|
| - | 247 | sql.append("LEFT JOIN sc_sec.sec_produto p ON p.seq_produto = l.seq_produto "); |
|
| - | 248 | sql.append("LEFT JOIN sc_sec.sec_modelo m ON m.seq_modelo = p.seq_modelo "); |
|
| - | 249 | sql.append("WHERE v.dth_venda <= :dataFinal AND v.dth_venda > :dataInicial "); |
|
| - | 250 | sql.append("AND p.tip_produto = 'C' "); |
|
| - | 251 | sql.append("AND m.seq_modelo IS NOT NULL "); |
|
| - | 252 | sql.append("GROUP BY m.seq_modelo, m.dsc_modelo "); |
|
| - | 253 | sql.append("ORDER BY COUNT(l) DESC "); |
|
| - | 254 | ||
| - | 255 | Query query = getEntityManager().createNativeQuery(sql.toString()); |
|
| - | 256 | Date dataInicial = DataUtils.getDataComHorarioMinimo(parametrosConsulta.getDataInicial()); |
|
| - | 257 | Date dataFinal = DataUtils.getDataComHorarioMaximo(parametrosConsulta.getDataFinal()); |
|
| - | 258 | query.setParameter("dataInicial", dataInicial); |
|
| - | 259 | query.setParameter("dataFinal", dataFinal); |
|
| - | 260 | ||
| - | 261 | List<Object[]> resultList = query.getResultList(); |
|
| - | 262 | ||
| - | 263 | for (Object[] objects : resultList) { |
|
| - | 264 | RankingModeloDTO rankingModeloDTO = new RankingModeloDTO(); |
|
| - | 265 | rankingModeloDTO.setModelo(new ModeloDTO(Long.parseLong(objects[1].toString()), objects[2].toString(), null)); |
|
| - | 266 | rankingModeloDTO.setQuantidadeVendas(Integer.valueOf(objects[0].toString())); |
|
| - | 267 | rankingModeloDTO.setQuantidadeEstoqueGeral(Integer.valueOf(objects[3].toString())); |
|
| - | 268 | modelos.add(rankingModeloDTO); |
|
| - | 269 | }
|
|
| - | 270 | } catch(Exception ex) { |
|
| - | 271 | ex.printStackTrace(); |
|
| - | 272 | return null; |
|
| - | 273 | }
|
|
| - | 274 | return modelos; |
|
| - | 275 | /*
|
|
| - | 276 |
|
|
| - | 277 | sql.append("SELECT new br.com.ec.domain.dto.RankingModeloDTO(l.produto.modelo, SUM(l.valorVenda), SUM(l.valorCompra), COUNT(l.produto.modelo), ");
|
|
| - | 278 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getSequencialLoja())) {
|
|
| - | 279 | sql.append("(");
|
|
| - | 280 | sql.append(adicionarConsultaDoEstoque(parametrosConsulta.getSequencialLoja(), "l.produto.modelo", parametrosConsulta.getTipoProduto(), parametrosConsulta.getEstiloProduto()));
|
|
| - | 281 | sql.append("), ");
|
|
| - | 282 | }
|
|
| - | 283 | sql.append("(");
|
|
| - | 284 | sql.append(adicionarConsultaDoEstoque(null, "l.produto.modelo", parametrosConsulta.getTipoProduto(), parametrosConsulta.getEstiloProduto()));
|
|
| - | 285 | sql.append(")) FROM Lancamento l ");
|
|
| - | 286 | sql.append("WHERE l.venda.dataVenda >= :dataInicial AND l.venda.dataVenda <= :dataFinal ");
|
|
| - | 287 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getSequencialLoja())) {
|
|
| - | 288 | sql.append("AND l.venda.loja.sequencial = :sequencialLoja ");
|
|
| - | 289 | }
|
|
| - | 290 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoProduto())) {
|
|
| - | 291 | sql.append("AND l.produto.tipo = :tipoProduto ");
|
|
| - | 292 | }
|
|
| - | 293 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getModelo())) {
|
|
| - | 294 | sql.append("AND l.produto.modelo = :modelo ");
|
|
| - | 295 | }
|
|
| - | 296 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getEstiloProduto())) {
|
|
| - | 297 | sql.append("AND l.produto.estilo = :estiloProduto ");
|
|
| - | 298 | }
|
|
| - | 299 | sql.append("GROUP BY l.produto.modelo ");
|
|
| - | 300 | if (parametrosConsulta.getTipoOrdenacao().equals(TipoOrdenacaoMaisVendidos.LUCRO.getValor())) {
|
|
| - | 301 | sql.append("ORDER BY SUM(l.valorVenda - l.valorCompra) DESC ");
|
|
| - | 302 | } else if (parametrosConsulta.getTipoOrdenacao().equals(TipoOrdenacaoMaisVendidos.QUANTIDADE.getValor())) {
|
|
| - | 303 | sql.append("ORDER BY COUNT(l.produto.modelo) DESC ");
|
|
| - | 304 | } else if (parametrosConsulta.getTipoOrdenacao().equals(TipoOrdenacaoMaisVendidos.VALOR_VENDIDO.getValor())) {
|
|
| - | 305 | sql.append("ORDER BY SUM(l.valorVenda) DESC ");
|
|
| - | 306 | }
|
|
| - | 307 | try {
|
|
| - | 308 | TypedQuery<RankingModeloDTO> query = getEntityManager().createQuery(sql.toString(), RankingModeloDTO.class)
|
|
| - | 309 | .setParameter("dataInicial", DataUtils.getDataComHorarioMinimo(parametrosConsulta.getDataInicial()))
|
|
| - | 310 | .setParameter("dataFinal", DataUtils.getDataComHorarioMaximo(parametrosConsulta.getDataFinal()));
|
|
| - | 311 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getQuantidadeModelos())) {
|
|
| - | 312 | query.setMaxResults(parametrosConsulta.getQuantidadeModelos());
|
|
| - | 313 | }
|
|
| - | 314 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getSequencialLoja())) {
|
|
| - | 315 | query.setParameter("sequencialLoja", parametrosConsulta.getSequencialLoja());
|
|
| - | 316 | }
|
|
| - | 317 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoProduto())) {
|
|
| - | 318 | query.setParameter("tipoProduto", parametrosConsulta.getTipoProduto());
|
|
| - | 319 | }
|
|
| - | 320 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getModelo())) {
|
|
| - | 321 | query.setParameter("modelo", parametrosConsulta.getModelo());
|
|
| - | 322 | }
|
|
| - | 323 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getEstiloProduto())) {
|
|
| - | 324 | query.setParameter("estiloProduto", parametrosConsulta.getEstiloProduto());
|
|
| - | 325 | }
|
|
| - | 326 | return query.getResultList();
|
|
| - | 327 | } catch(Exception ex) {
|
|
| - | 328 | ex.printStackTrace();
|
|
| - | 329 | return null;
|
|
| - | 330 | }
|
|
| - | 331 | */
|
|
| - | 332 | }
|
|
| - | 333 | ||
| - | 334 | @Override |
|
| - | 335 | public List<RankingComprasTransferenciasEstiloDTO> consultarRankingPorEstilo(Long sequencialModelo, ParametrosConsultaPorPeriodoDTO parametrosConsultaPorPeriodoDTO) { |
|
| - | 336 | List<RankingComprasTransferenciasEstiloDTO> rankingPorEstilo = new ArrayList<RankingComprasTransferenciasEstiloDTO>(); |
|
| - | 337 | try { |
|
| - | 338 | StringBuilder sql = new StringBuilder(); |
|
| - | 339 | sql.append("SELECT p.tip_estilo "); |
|
| - | 340 | ||
| - | 341 | sql.append("," + adicionarConsultaVendasRankingPorEstilo(TipoProduto.CAPA.getValor(), TipoGenero.UNISSEX.getValor())); |
|
| - | 342 | sql.append("," + adicionarConsultaVendasRankingPorEstilo(TipoProduto.CAPA.getValor(), TipoGenero.MASCULINO.getValor())); |
|
| - | 343 | sql.append("," + adicionarConsultaVendasRankingPorEstilo(TipoProduto.CAPA.getValor(), TipoGenero.FEMININO.getValor())); |
|
| - | 344 | ||
| - | 345 | sql.append("," + adicionarConsultaEstoqueRankingPorEstilo(TipoProduto.CAPA.getValor(), TipoGenero.UNISSEX.getValor())); |
|
| - | 346 | sql.append("," + adicionarConsultaEstoqueRankingPorEstilo(TipoProduto.CAPA.getValor(), TipoGenero.MASCULINO.getValor())); |
|
| - | 347 | sql.append("," + adicionarConsultaEstoqueRankingPorEstilo(TipoProduto.CAPA.getValor(), TipoGenero.FEMININO.getValor())); |
|
| - | 348 | ||
| - | 349 | sql.append("FROM sc_sec.sec_lancamento l "); |
|
| - | 350 | sql.append("LEFT JOIN sc_sec.sec_venda v ON l.seq_venda = v.seq_venda "); |
|
| - | 351 | sql.append("LEFT JOIN sc_sec.sec_produto p ON p.seq_produto = l.seq_produto "); |
|
| - | 352 | sql.append("LEFT JOIN sc_sec.sec_modelo m ON m.seq_modelo = p.seq_modelo "); |
|
| - | 353 | sql.append("WHERE v.dth_venda <= :dataFinal AND v.dth_venda >= :dataInicial "); |
|
| - | 354 | sql.append("AND p.tip_produto = '" + TipoProduto.CAPA.getValor() + "' "); |
|
| - | 355 | sql.append("AND m.seq_modelo = :sequencialModelo "); |
|
| - | 356 | sql.append("GROUP BY p.tip_estilo "); |
|
| - | 357 | sql.append("ORDER BY p.tip_estilo "); |
|
| - | 358 | ||
| - | 359 | Query query = getEntityManager().createNativeQuery(sql.toString()); |
|
| - | 360 | Date dataInicial = DataUtils.getDataComHorarioMinimo(parametrosConsultaPorPeriodoDTO.getDataInicial()); |
|
| - | 361 | Date dataFinal = DataUtils.getDataComHorarioMaximo(parametrosConsultaPorPeriodoDTO.getDataFinal()); |
|
| - | 362 | query.setParameter("dataInicial", dataInicial); |
|
| - | 363 | query.setParameter("dataFinal", dataFinal); |
|
| - | 364 | query.setParameter("sequencialModelo", sequencialModelo); |
|
| - | 365 | ||
| - | 366 | List<Object[]> resultList = query.getResultList(); |
|
| - | 367 | for (Object[] objects : resultList) { |
|
| - | 368 | RankingComprasTransferenciasEstiloDTO rankingEstiloDTO = new RankingComprasTransferenciasEstiloDTO(); |
|
| - | 369 | rankingEstiloDTO.setEstilo(TipoEstiloProduto.parse(objects[0].toString())); |
|
| - | 370 | rankingEstiloDTO.setQuantidadeVendasUnissex(Integer.valueOf(objects[1].toString())); |
|
| - | 371 | rankingEstiloDTO.setQuantidadeVendasMasculino(Integer.valueOf(objects[2].toString())); |
|
| - | 372 | rankingEstiloDTO.setQuantidadeVendasFeminino(Integer.valueOf(objects[3].toString())); |
|
| - | 373 | rankingEstiloDTO.setQuantidadeEstoqueUnissex(Integer.valueOf(objects[4].toString())); |
|
| - | 374 | rankingEstiloDTO.setQuantidadeEstoqueMasculino(Integer.valueOf(objects[5].toString())); |
|
| - | 375 | rankingEstiloDTO.setQuantidadeEstoqueFeminino(Integer.valueOf(objects[6].toString())); |
|
| - | 376 | rankingPorEstilo.add(rankingEstiloDTO); |
|
| - | 377 | }
|
|
| - | 378 | } catch(Exception ex) { |
|
| - | 379 | ex.printStackTrace(); |
|
| - | 380 | return null; |
|
| - | 381 | }
|
|
| - | 382 | return rankingPorEstilo; |
|
| - | 383 | }
|
|
| - | 384 | ||
| - | 385 | private String adicionarConsultaVendasRankingPorEstilo(String tipoProduto, String tipoGenero) { |
|
| - | 386 | StringBuilder sql = new StringBuilder(); |
|
| - | 387 | sql.append("(SELECT COUNT(*) FROM sc_sec.sec_lancamento ll "); |
|
| - | 388 | sql.append("LEFT JOIN sc_sec.sec_venda vv ON ll.seq_venda = vv.seq_venda "); |
|
| - | 389 | sql.append("LEFT JOIN sc_sec.sec_produto pp ON pp.seq_produto = ll.seq_produto "); |
|
| - | 390 | sql.append("LEFT JOIN sc_sec.sec_modelo mm ON mm.seq_modelo = pp.seq_modelo "); |
|
| - | 391 | sql.append("WHERE vv.dth_venda <= :dataFinal AND vv.dth_venda >= :dataInicial "); |
|
| - | 392 | sql.append("AND mm.seq_modelo = :sequencialModelo AND pp.tip_estilo = p.tip_estilo "); |
|
| - | 393 | sql.append("AND pp.tip_produto = '" + tipoProduto + "' AND pp.tip_genero LIKE '" + tipoGenero + "') "); |
|
| - | 394 | return sql.toString(); |
|
| - | 395 | }
|
|
| - | 396 | ||
| - | 397 | private String adicionarConsultaEstoqueRankingPorEstilo(String tipoProduto, String tipoGenero) { |
|
| - | 398 | StringBuilder sql = new StringBuilder(); |
|
| - | 399 | sql.append("(SELECT SUM(pl.qtd_estoque) FROM sc_sec.sec_produto_loja pl "); |
|
| - | 400 | sql.append("LEFT JOIN sc_sec.sec_produto pp ON pp.seq_produto = pl.seq_produto "); |
|
| - | 401 | sql.append("LEFT JOIN sc_sec.sec_modelo mm ON mm.seq_modelo = pp.seq_modelo "); |
|
| - | 402 | sql.append("WHERE mm.seq_modelo = :sequencialModelo AND pp.tip_estilo = p.tip_estilo "); |
|
| - | 403 | sql.append("AND pp.tip_produto = '" + tipoProduto + "' AND pp.tip_genero LIKE '" + tipoGenero + "') "); |
|
| - | 404 | return sql.toString(); |
|
| - | 405 | }
|
|
| - | 406 | ||
| - | 407 | @Override |
|
| - | 408 | public List<RankingComprasTransferenciasEstiloPorLojaDTO> consultarRankingPorEstiloPorLoja(Long sequencialModelo, |
|
| - | 409 | String tipoEstilo, ParametrosConsultaPorPeriodoDTO parametrosConsultaPorPeriodoDTO) { |
|
| - | 410 | List<RankingComprasTransferenciasEstiloPorLojaDTO> rankingPorEstiloPorLoja = new ArrayList<RankingComprasTransferenciasEstiloPorLojaDTO>(); |
|
| - | 411 | try { |
|
| - | 412 | StringBuilder sql = new StringBuilder(); |
|
| - | 413 | sql.append("SELECT v.seq_loja, lj.dsc_loja "); |
|
| - | 414 | ||
| - | 415 | sql.append("," + adicionarConsultaVendasRankingPorEstiloPorLoja(TipoProduto.CAPA.getValor(), TipoGenero.UNISSEX.getValor())); |
|
| - | 416 | sql.append("," + adicionarConsultaVendasRankingPorEstiloPorLoja(TipoProduto.CAPA.getValor(), TipoGenero.MASCULINO.getValor())); |
|
| - | 417 | sql.append("," + adicionarConsultaVendasRankingPorEstiloPorLoja(TipoProduto.CAPA.getValor(), TipoGenero.FEMININO.getValor())); |
|
| - | 418 | ||
| - | 419 | sql.append("," + adicionarConsultaEstoqueRankingPorEstiloPorLoja(TipoProduto.CAPA.getValor(), TipoGenero.UNISSEX.getValor())); |
|
| - | 420 | sql.append("," + adicionarConsultaEstoqueRankingPorEstiloPorLoja(TipoProduto.CAPA.getValor(), TipoGenero.MASCULINO.getValor())); |
|
| - | 421 | sql.append("," + adicionarConsultaEstoqueRankingPorEstiloPorLoja(TipoProduto.CAPA.getValor(), TipoGenero.FEMININO.getValor())); |
|
| - | 422 | ||
| - | 423 | sql.append("FROM sc_sec.sec_lancamento l "); |
|
| - | 424 | sql.append("LEFT JOIN sc_sec.sec_venda v ON l.seq_venda = v.seq_venda "); |
|
| - | 425 | sql.append("LEFT JOIN sc_sec.sec_loja lj ON lj.seq_loja = v.seq_loja "); |
|
| - | 426 | sql.append("LEFT JOIN sc_sec.sec_produto p ON p.seq_produto = l.seq_produto "); |
|
| - | 427 | sql.append("LEFT JOIN sc_sec.sec_modelo m ON m.seq_modelo = p.seq_modelo "); |
|
| - | 428 | sql.append("WHERE v.dth_venda <= :dataFinal AND v.dth_venda >= :dataInicial "); |
|
| - | 429 | sql.append("AND p.tip_produto = '" + TipoProduto.CAPA.getValor() + "' "); |
|
| - | 430 | sql.append("AND m.seq_modelo = :sequencialModelo "); |
|
| - | 431 | sql.append("AND p.tip_estilo = :tipoEstilo "); |
|
| - | 432 | sql.append("AND lj.ind_ativo IS TRUE "); |
|
| - | 433 | sql.append("GROUP BY lj.num_ordem, v.seq_loja, lj.dsc_loja "); |
|
| - | 434 | sql.append("ORDER BY lj.num_ordem "); |
|
| - | 435 | ||
| - | 436 | Query query = getEntityManager().createNativeQuery(sql.toString()); |
|
| - | 437 | Date dataInicial = DataUtils.getDataComHorarioMinimo(parametrosConsultaPorPeriodoDTO.getDataInicial()); |
|
| - | 438 | Date dataFinal = DataUtils.getDataComHorarioMaximo(parametrosConsultaPorPeriodoDTO.getDataFinal()); |
|
| - | 439 | query.setParameter("dataInicial", dataInicial); |
|
| - | 440 | query.setParameter("dataFinal", dataFinal); |
|
| - | 441 | query.setParameter("sequencialModelo", sequencialModelo); |
|
| - | 442 | query.setParameter("tipoEstilo", tipoEstilo); |
|
| - | 443 | ||
| - | 444 | List<Object[]> resultList = query.getResultList(); |
|
| - | 445 | for (Object[] objects : resultList) { |
|
| - | 446 | RankingComprasTransferenciasEstiloPorLojaDTO rankingEstiloPorLojaDTO = new RankingComprasTransferenciasEstiloPorLojaDTO(); |
|
| - | 447 | rankingEstiloPorLojaDTO.setLojaDTO(new LojaDTO(Long.parseLong(objects[0].toString()), objects[1].toString())); |
|
| - | 448 | rankingEstiloPorLojaDTO.setQuantidadeVendasUnissex(Integer.valueOf(objects[2].toString())); |
|
| - | 449 | rankingEstiloPorLojaDTO.setQuantidadeVendasMasculino(Integer.valueOf(objects[3].toString())); |
|
| - | 450 | rankingEstiloPorLojaDTO.setQuantidadeVendasFeminino(Integer.valueOf(objects[4].toString())); |
|
| - | 451 | rankingEstiloPorLojaDTO.setQuantidadeEstoqueUnissex(Integer.valueOf(objects[5].toString())); |
|
| - | 452 | rankingEstiloPorLojaDTO.setQuantidadeEstoqueMasculino(Integer.valueOf(objects[6].toString())); |
|
| - | 453 | rankingEstiloPorLojaDTO.setQuantidadeEstoqueFeminino(Integer.valueOf(objects[7].toString())); |
|
| - | 454 | rankingPorEstiloPorLoja.add(rankingEstiloPorLojaDTO); |
|
| - | 455 | }
|
|
| - | 456 | ||
| - | 457 | } catch(Exception ex) { |
|
| - | 458 | ex.printStackTrace(); |
|
| - | 459 | return null; |
|
| - | 460 | }
|
|
| - | 461 | return rankingPorEstiloPorLoja; |
|
| - | 462 | }
|
|
| - | 463 | ||
| - | 464 | private String adicionarConsultaVendasRankingPorEstiloPorLoja(String tipoProduto, String tipoGenero) { |
|
| - | 465 | StringBuilder sql = new StringBuilder(); |
|
| - | 466 | sql.append("(SELECT COUNT(*) FROM sc_sec.sec_lancamento ll "); |
|
| - | 467 | sql.append("LEFT JOIN sc_sec.sec_venda vv ON ll.seq_venda = vv.seq_venda "); |
|
| - | 468 | sql.append("LEFT JOIN sc_sec.sec_produto pp ON pp.seq_produto = ll.seq_produto "); |
|
| - | 469 | sql.append("LEFT JOIN sc_sec.sec_modelo mm ON mm.seq_modelo = pp.seq_modelo "); |
|
| - | 470 | sql.append("WHERE vv.dth_venda <= :dataFinal AND vv.dth_venda >= :dataInicial "); |
|
| - | 471 | sql.append("AND vv.seq_loja = v.seq_loja "); |
|
| - | 472 | sql.append("AND mm.seq_modelo = :sequencialModelo AND pp.tip_estilo = :tipoEstilo "); |
|
| - | 473 | sql.append("AND pp.tip_produto = '" + tipoProduto + "' AND pp.tip_genero LIKE '" + tipoGenero + "') "); |
|
| - | 474 | return sql.toString(); |
|
| - | 475 | }
|
|
| - | 476 | ||
| - | 477 | private String adicionarConsultaEstoqueRankingPorEstiloPorLoja(String tipoProduto, String tipoGenero) { |
|
| - | 478 | StringBuilder sql = new StringBuilder(); |
|
| - | 479 | sql.append("(SELECT SUM(pl.qtd_estoque) FROM sc_sec.sec_produto_loja pl "); |
|
| - | 480 | sql.append("LEFT JOIN sc_sec.sec_produto pp ON pp.seq_produto = pl.seq_produto "); |
|
| - | 481 | sql.append("LEFT JOIN sc_sec.sec_modelo mm ON mm.seq_modelo = pp.seq_modelo "); |
|
| - | 482 | sql.append("WHERE pl.seq_loja = v.seq_loja AND mm.seq_modelo = :sequencialModelo "); |
|
| - | 483 | sql.append("AND pp.tip_estilo = p.tip_estilo "); |
|
| - | 484 | sql.append("AND pp.tip_produto = '" + tipoProduto + "' AND pp.tip_genero LIKE '" + tipoGenero + "') "); |
|
| - | 485 | return sql.toString(); |
|
| - | 486 | }
|
|
| - | 487 | ||
| - | 488 | /*
|
|
| - | 489 | private String adicionarConsultaDoEstoque(Long sequencialLoja, String modelo, String tipoProduto, String estiloProduto) {
|
|
| - | 490 | sql.append("SELECT SUM(pl.quantidadeEstoque) FROM ProdutoLoja pl ");
|
|
| - | 491 | sql.append("WHERE pl.produto.modelo = " + modelo + " ");
|
|
| - | 492 | if (VerificadorUtil.naoEstaNuloOuVazio(sequencialLoja)) {
|
|
| - | 493 | sql.append("AND pl.loja.sequencial = :sequencialLoja ");
|
|
| - | 494 | }
|
|
| - | 495 | if (VerificadorUtil.naoEstaNuloOuVazio(tipoProduto)) {
|
|
| - | 496 | sql.append("AND pl.produto.tipo = :tipoProduto ");
|
|
| - | 497 | }
|
|
| - | 498 | if (VerificadorUtil.naoEstaNuloOuVazio(estiloProduto)) {
|
|
| - | 499 | sql.append("AND pl.produto.estilo = :estiloProduto ");
|
|
| - | 500 | }
|
|
| - | 501 | return sql.toString().trim();
|
|
| - | 502 | }
|
|
| - | 503 | */
|
|
| 220 | 504 | ||
| 221 | /*
|
505 | /*
|
| 222 | private void setarParametrosStringConsultarVendaPorLojaEePeriodo(StringBuilder sql, Venda venda, Date dataInicial, Date dataFinal) {
|
506 | private void setarParametrosStringConsultarVendaPorLojaEePeriodo(StringBuilder sql, Venda venda, Date dataInicial, Date dataFinal) {
|
| 223 | setarStringParametrosConsultar(sql, venda);
|
507 | setarStringParametrosConsultar(sql, venda);
|
| 224 | if (VerificadorUtil.naoEstaNuloOuVazio(dataInicial) && VerificadorUtil.naoEstaNuloOuVazio(dataFinal)) {
|
508 | if (VerificadorUtil.naoEstaNuloOuVazio(dataInicial) && VerificadorUtil.naoEstaNuloOuVazio(dataFinal)) {
|
| Line 635... | Line 919... | ||
| 635 | } catch(Exception ex) { |
919 | } catch(Exception ex) { |
| 636 | ex.printStackTrace(); |
920 | ex.printStackTrace(); |
| 637 | return null; |
921 | return null; |
| 638 | }
|
922 | }
|
| 639 | }
|
923 | }
|
| - | 924 | ||
| - | 925 | ||
| 640 | 926 | ||
| 641 | /*
|
927 | /*
|
| 642 | 928 | ||
| 643 | @Override
|
929 | @Override
|
| 644 | public Integer obterQuantidadeProdutosVendidosPorLojaEePeriodo(ParametrosConsultaVendasDTO parametrosConsulta) {
|
930 | public Integer obterQuantidadeProdutosVendidosPorLojaEePeriodo(ParametrosConsultaVendasDTO parametrosConsulta) {
|
| Line 1323... | Line 1609... | ||
| 1323 | ex.printStackTrace();
|
1609 | ex.printStackTrace();
|
| 1324 | return null;
|
1610 | return null;
|
| 1325 | }
|
1611 | }
|
| 1326 | }
|
1612 | }
|
| 1327 |
|
1613 |
|
| 1328 | @Override
|
- | |
| 1329 | public List<RankingModeloDTO> consultarModelosMaisVendidos(ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta) {
|
- | |
| 1330 | StringBuilder sql = new StringBuilder();
|
- | |
| 1331 | sql.append("SELECT new br.com.ec.domain.dto.RankingModeloDTO(l.produto.modelo, SUM(l.valorVenda), SUM(l.valorCompra), COUNT(l.produto.modelo), ");
|
- | |
| 1332 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getSequencialLoja())) {
|
- | |
| 1333 | sql.append("(");
|
- | |
| 1334 | sql.append(adicionarConsultaDoEstoque(parametrosConsulta.getSequencialLoja(), "l.produto.modelo", parametrosConsulta.getTipoProduto(), parametrosConsulta.getEstiloProduto()));
|
- | |
| 1335 | sql.append("), ");
|
- | |
| 1336 | }
|
- | |
| 1337 | sql.append("(");
|
- | |
| 1338 | sql.append(adicionarConsultaDoEstoque(null, "l.produto.modelo", parametrosConsulta.getTipoProduto(), parametrosConsulta.getEstiloProduto()));
|
- | |
| 1339 | sql.append(")) FROM Lancamento l ");
|
- | |
| 1340 | sql.append("WHERE l.venda.dataVenda >= :dataInicial AND l.venda.dataVenda <= :dataFinal ");
|
- | |
| 1341 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getSequencialLoja())) {
|
- | |
| 1342 | sql.append("AND l.venda.loja.sequencial = :sequencialLoja ");
|
- | |
| 1343 | }
|
- | |
| 1344 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoProduto())) {
|
- | |
| 1345 | sql.append("AND l.produto.tipo = :tipoProduto ");
|
- | |
| 1346 | }
|
- | |
| 1347 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getModelo())) {
|
- | |
| 1348 | sql.append("AND l.produto.modelo = :modelo ");
|
- | |
| 1349 | }
|
- | |
| 1350 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getEstiloProduto())) {
|
- | |
| 1351 | sql.append("AND l.produto.estilo = :estiloProduto ");
|
- | |
| 1352 | }
|
- | |
| 1353 | sql.append("GROUP BY l.produto.modelo ");
|
- | |
| 1354 | if (parametrosConsulta.getTipoOrdenacao().equals(TipoOrdenacaoMaisVendidos.LUCRO.getValor())) {
|
- | |
| 1355 | sql.append("ORDER BY SUM(l.valorVenda - l.valorCompra) DESC ");
|
- | |
| 1356 | } else if (parametrosConsulta.getTipoOrdenacao().equals(TipoOrdenacaoMaisVendidos.QUANTIDADE.getValor())) {
|
- | |
| 1357 | sql.append("ORDER BY COUNT(l.produto.modelo) DESC ");
|
- | |
| 1358 | } else if (parametrosConsulta.getTipoOrdenacao().equals(TipoOrdenacaoMaisVendidos.VALOR_VENDIDO.getValor())) {
|
- | |
| 1359 | sql.append("ORDER BY SUM(l.valorVenda) DESC ");
|
- | |
| 1360 | }
|
- | |
| 1361 | try {
|
- | |
| 1362 | TypedQuery<RankingModeloDTO> query = getEntityManager().createQuery(sql.toString(), RankingModeloDTO.class)
|
- | |
| 1363 | .setParameter("dataInicial", DataUtils.getDataComHorarioMinimo(parametrosConsulta.getDataInicial()))
|
- | |
| 1364 | .setParameter("dataFinal", DataUtils.getDataComHorarioMaximo(parametrosConsulta.getDataFinal()));
|
- | |
| 1365 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getQuantidadeModelos())) {
|
- | |
| 1366 | query.setMaxResults(parametrosConsulta.getQuantidadeModelos());
|
- | |
| 1367 | }
|
- | |
| 1368 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getSequencialLoja())) {
|
- | |
| 1369 | query.setParameter("sequencialLoja", parametrosConsulta.getSequencialLoja());
|
- | |
| 1370 | }
|
- | |
| 1371 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getTipoProduto())) {
|
- | |
| 1372 | query.setParameter("tipoProduto", parametrosConsulta.getTipoProduto());
|
- | |
| 1373 | }
|
- | |
| 1374 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getModelo())) {
|
- | |
| 1375 | query.setParameter("modelo", parametrosConsulta.getModelo());
|
- | |
| 1376 | }
|
- | |
| 1377 | if (VerificadorUtil.naoEstaNulo(parametrosConsulta.getEstiloProduto())) {
|
- | |
| 1378 | query.setParameter("estiloProduto", parametrosConsulta.getEstiloProduto());
|
- | |
| 1379 | }
|
- | |
| 1380 | return query.getResultList();
|
- | |
| 1381 | } catch(Exception ex) {
|
- | |
| 1382 | ex.printStackTrace();
|
- | |
| 1383 | return null;
|
- | |
| 1384 | }
|
- | |
| 1385 | }
|
- | |
| 1386 |
|
- | |
| 1387 | private String adicionarConsultaDoEstoque(Long sequencialLoja, String modelo, String tipoProduto, String estiloProduto) {
|
- | |
| 1388 | StringBuilder sql = new StringBuilder();
|
- | |
| 1389 | sql.append("SELECT SUM(pl.quantidadeEstoque) FROM ProdutoLoja pl ");
|
- | |
| 1390 | sql.append("WHERE pl.produto.modelo = " + modelo + " ");
|
- | |
| 1391 | if (VerificadorUtil.naoEstaNuloOuVazio(sequencialLoja)) {
|
- | |
| 1392 | sql.append("AND pl.loja.sequencial = :sequencialLoja ");
|
- | |
| 1393 | }
|
- | |
| 1394 | if (VerificadorUtil.naoEstaNuloOuVazio(tipoProduto)) {
|
- | |
| 1395 | sql.append("AND pl.produto.tipo = :tipoProduto ");
|
- | |
| 1396 | }
|
- | |
| 1397 | if (VerificadorUtil.naoEstaNuloOuVazio(estiloProduto)) {
|
- | |
| 1398 | sql.append("AND pl.produto.estilo = :estiloProduto ");
|
- | |
| 1399 | }
|
- | |
| 1400 | return sql.toString().trim();
|
- | |
| 1401 | }
|
- | |
| 1402 | */
|
- | |
| 1403 | /*
|
- | |
| 1404 | private String adicionarQueryConsultaDoEstoque(Long sequencialLoja, Modelo modelo, String tipoProduto, String estiloProduto) {
|
1614 | private String adicionarQueryConsultaDoEstoque(Long sequencialLoja, Modelo modelo, String tipoProduto, String estiloProduto) {
|
| 1405 | try {
|
1615 | try {
|
| 1406 | TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
|
1616 | TypedQuery<Long> query = getEntityManager().createQuery(sql.toString(), Long.class);
|
| 1407 | if (VerificadorUtil.naoEstaNuloOuVazio(sequencialLoja)) {
|
1617 | if (VerificadorUtil.naoEstaNuloOuVazio(sequencialLoja)) {
|
| 1408 | query.setParameter("sequencialLoja", sequencialLoja);
|
1618 | query.setParameter("sequencialLoja", sequencialLoja);
|