Browse Source

Endpoints Cobranza

master
akirwana 4 months ago
parent
commit
6ea5d4ad62
7 changed files with 582 additions and 1 deletions
  1. +16
    -0
      src/main/java/jumapacelaya/gob/mx/cobranza/controlador/CobranzaControlador.java
  2. +294
    -0
      src/main/java/jumapacelaya/gob/mx/cobranza/dto/detalleCarteraDTO.java
  3. +151
    -1
      src/main/java/jumapacelaya/gob/mx/cobranza/servicio/CobranzaServicio.java
  4. +32
    -0
      src/main/java/jumapacelaya/gob/mx/infowall/controlador/InfowallControlador.java
  5. +23
    -0
      src/main/java/jumapacelaya/gob/mx/infowall/dto/totalPagosHoyDTO.java
  6. +5
    -0
      src/main/java/jumapacelaya/gob/mx/infowall/repositorio/InfowallRepositorio.java
  7. +61
    -0
      src/main/java/jumapacelaya/gob/mx/infowall/servicio/InfowallServicio.java

+ 16
- 0
src/main/java/jumapacelaya/gob/mx/cobranza/controlador/CobranzaControlador.java View File

@ -1,8 +1,12 @@
package jumapacelaya.gob.mx.cobranza.controlador;
import java.util.List;
import java.util.Optional;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import jakarta.inject.Inject;
import jumapacelaya.gob.mx.cobranza.dto.detalleCarteraDTO;
import jumapacelaya.gob.mx.cobranza.servicio.CobranzaServicio;
@Controller("/cobranza")
@ -16,4 +20,16 @@ public class CobranzaControlador {
return servicio.obtenerTotalPredios();
}
@Get("/tblcarteravencida/detallepredios{?page,size}")
public List<detalleCarteraDTO> obtenerDetalleCartera(Optional<Integer> page, Optional<Integer> size) {
int pageNumber = page.orElse(1);
int pageSize = size.orElse(10);
return servicio.obtenerDetalleCartera(pageNumber, pageSize);
}
@Get("/tblcarteravencida/detallepredios/{predioid}")
public List<detalleCarteraDTO> obtenerDetallePorPredio(Long predioid) {
return servicio.obtenerDetallePorPredio(predioid);
}
}

+ 294
- 0
src/main/java/jumapacelaya/gob/mx/cobranza/dto/detalleCarteraDTO.java View File

@ -0,0 +1,294 @@
package jumapacelaya.gob.mx.cobranza.dto;
import java.math.BigDecimal;
public class detalleCarteraDTO {
private Long predio;
private String nomcliente;
private String direccion;
private String colonia;
private String zona;
private String uso;
private String tarifa;
private String actividad;
private String habitado;
private Integer vip;
private String metsuministro;
private String medidor;
private String estado;
private String estadogestion;
private String estadocobranza;
private String estadocorte;
private String cortefectivo;
private String estadoconvfc;
private String estadoconvfv;
private Integer factvencidas;
private Integer antiguedad;
private BigDecimal saldoiva;
private BigDecimal saldototal;
private Integer r7, a7, r8, a8, r11, a11, r12, a12;
private Integer r13, a13, r14, a14, r15, a15, r16, a16;
private Integer r17, a17, r112, a112, r116, a116;
private Integer reconexion;
private Integer factventa;
private String conceptosfv;
private BigDecimal adeudofv;
private String programa;
private String fid;
// Getters y setters
public Long getPredio() { return predio; }
public void setPredio(Long predio) {
this.predio = predio;
}
public String getNomcliente() { return nomcliente; }
public void setNomcliente(String nomcliente) {
this.nomcliente = nomcliente;
}
public String getDireccion() { return direccion; }
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getColonia() { return colonia; }
public void setColonia(String colonia) {
this.colonia = colonia;
}
public String getZona() { return zona; }
public void setZona(String zona) {
this.zona = zona;
}
public String getUso() { return uso; }
public void setUso(String uso) {
this.uso = uso;
}
public String getTarifa() { return tarifa; }
public void setTarifa(String tarifa) {
this.tarifa = tarifa;
}
public String getActividad() { return actividad; }
public void setActividad(String actividad) {
this.actividad = actividad;
}
public String getHabitado() { return habitado; }
public void setHabitado(String habitado) {
this.habitado = habitado;
}
public Integer getVip() { return vip; }
public void setVip(Integer vip) {
this.vip = vip;
}
public String getMetsuministro() { return metsuministro; }
public void setMetsuministro(String metsuministro) {
this.metsuministro = metsuministro;
}
public String getMedidor() { return medidor; }
public void setMedidor(String medidor) {
this.medidor = medidor;
}
public String getEstado() { return estado; }
public void setEstado(String estado) {
this.estado = estado;
}
public String getEstadogestion() { return estadogestion; }
public void setEstadogestion(String estadogestion) {
this.estadogestion = estadogestion;
}
public String getEstadocobranza() { return estadocobranza; }
public void setEstadocobranza(String estadocobranza) {
this.estadocobranza = estadocobranza;
}
public String getEstadocorte() { return estadocorte; }
public void setEstadocorte(String estadocorte) {
this.estadocorte = estadocorte;
}
public String getCortefectivo() { return cortefectivo; }
public void setCortefectivo(String cortefectivo) {
this.cortefectivo = cortefectivo;
}
public String getEstadoconvfc() { return estadoconvfc; }
public void setEstadoconvfc(String estadoconvfc) {
this.estadoconvfc = estadoconvfc;
}
public String getEstadoconvfv() { return estadoconvfv; }
public void setEstadoconvfv(String estadoconvfv) {
this.estadoconvfv = estadoconvfv;
}
public Integer getFactvencidas() { return factvencidas; }
public void setFactvencidas(Integer factvencidas) {
this.factvencidas = factvencidas;
}
public Integer getAntiguedad() { return antiguedad; }
public void setAntiguedad(Integer antiguedad) {
this.antiguedad = antiguedad;
}
public BigDecimal getSaldoiva() { return saldoiva; }
public void setSaldoiva(BigDecimal saldoiva) {
this.saldoiva = saldoiva;
}
public BigDecimal getSaldototal() { return saldototal; }
public void setSaldototal(BigDecimal saldototal) {
this.saldototal = saldototal;
}
public Integer getR7() { return r7; }
public void setR7(Integer r7) {
this.r7 = r7;
}
public Integer getA7() { return a7; }
public void setA7(Integer a7) {
this.a7 = a7;
}
public Integer getR8() { return r8; }
public void setR8(Integer r8) {
this.r8 = r8;
}
public Integer getA8() { return a8; }
public void setA8(Integer a8) {
this.a8 = a8;
}
public Integer getR11() { return r11; }
public void setR11(Integer r11) {
this.r11 = r11;
}
public Integer getA11() { return a11; }
public void setA11(Integer a11) {
this.a11 = a11;
}
public Integer getR12() { return r12; }
public void setR12(Integer r12) {
this.r12 = r12;
}
public Integer getA12() { return a12; }
public void setA12(Integer a12) {
this.a12 = a12;
}
public Integer getR13() { return r13; }
public void setR13(Integer r13) {
this.r13 = r13;
}
public Integer getA13() { return a13; }
public void setA13(Integer a13) {
this.a13 = a13;
}
public Integer getR14() { return r14; }
public void setR14(Integer r14) {
this.r14 = r14;
}
public Integer getA14() { return a14; }
public void setA14(Integer a14) {
this.a14 = a14;
}
public Integer getR15() { return r15; }
public void setR15(Integer r15) {
this.r15 = r15;
}
public Integer getA15() { return a15; }
public void setA15(Integer a15) {
this.a15 = a15;
}
public Integer getR16() { return r16; }
public void setR16(Integer r16) {
this.r16 = r16;
}
public Integer getA16() { return a16; }
public void setA16(Integer a16) {
this.a16 = a16;
}
public Integer getR17() { return r17; }
public void setR17(Integer r17) {
this.r17 = r17;
}
public Integer getA17() { return a17; }
public void setA17(Integer a17) {
this.a17 = a17;
}
public Integer getR112() { return r112; }
public void setR112(Integer r112) {
this.r112 = r112;
}
public Integer getA112() { return a112; }
public void setA112(Integer a112) {
this.a112 = a112;
}
public Integer getR116() { return r116; }
public void setR116(Integer r116) {
this.r116 = r116;
}
public Integer getA116() { return a116; }
public void setA116(Integer a116) {
this.a116 = a116;
}
public Integer getReconexion() { return reconexion; }
public void setReconexion(Integer reconexion) {
this.reconexion = reconexion;
}
public Integer getFactventa() { return factventa; }
public void setFactventa(Integer factventa) {
this.factventa = factventa;
}
public String getConceptosfv() { return conceptosfv; }
public void setConceptosfv(String conceptosfv) {
this.conceptosfv = conceptosfv;
}
public BigDecimal getAdeudofv() { return adeudofv; }
public void setAdeudofv(BigDecimal adeudofv) {
this.adeudofv = adeudofv;
}
public String getPrograma() { return programa; }
public void setPrograma(String programa) {
this.programa = programa;
}
public String getFid() { return fid; }
public void setFid(String fid) {
this.fid = fid;
}
}

+ 151
- 1
src/main/java/jumapacelaya/gob/mx/cobranza/servicio/CobranzaServicio.java View File

@ -1,11 +1,17 @@
package jumapacelaya.gob.mx.cobranza.servicio;
import jakarta.inject.Singleton;
import jumapacelaya.gob.mx.cobranza.dto.detalleCarteraDTO;
import javax.sql.DataSource;
import io.micronaut.transaction.annotation.Transactional;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
@Singleton
public class CobranzaServicio {
@ -16,6 +22,7 @@ public class CobranzaServicio {
this.dataSource = dataSource;
}
@Transactional
public int obtenerTotalPredios() {
String query = "SELECT COUNT(*) AS TotalPredios FROM cobranza.tblcarteravencida";
try (Connection connection = dataSource.getConnection();
@ -29,7 +36,150 @@ public class CobranzaServicio {
}
} catch (Exception e) {
throw new RuntimeException("Error al obtener total de predios en cartera vencida", e);
throw new RuntimeException("Error al obtener total de predios en cartera vencida" +
e.getMessage(), e);
}
}
@Transactional
public List<detalleCarteraDTO> obtenerDetalleCartera(int offset, int limit) {
String query = "SELECT * FROM cobranza.tblcarteravencida OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
List<detalleCarteraDTO> lista = new ArrayList<>();
try (Connection connection = dataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setInt(1, offset);
stmt.setInt(2, limit);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
detalleCarteraDTO dto = new detalleCarteraDTO();
dto.setPredio(rs.getLong("PREDIO"));
dto.setNomcliente(rs.getString("NOMCLIENTE"));
dto.setDireccion(rs.getString("DIRECCION"));
dto.setColonia(rs.getString("COLONIA"));
dto.setZona(rs.getString("ZONA"));
dto.setUso(rs.getString("USO"));
dto.setTarifa(rs.getString("TARIFA"));
dto.setActividad(rs.getString("ACTIVIDAD"));
dto.setHabitado(rs.getString("HABITADO"));
dto.setVip(rs.getInt("VIP"));
dto.setMetsuministro(rs.getString("METSUMINISTRO"));
dto.setMedidor(rs.getString("MEDIDOR"));
dto.setEstado(rs.getString("ESTADO"));
dto.setEstadogestion(rs.getString("ESTADOGESTION"));
dto.setEstadocobranza(rs.getString("ESTADOCOBRANZA"));
dto.setEstadocorte(rs.getString("ESTADOCORTE"));
dto.setCortefectivo(rs.getString("CORTEEFECTIVO"));
dto.setEstadoconvfc(rs.getString("ESTADOCONVFC"));
dto.setEstadoconvfv(rs.getString("ESTADOCONVFV"));
dto.setFactvencidas(rs.getInt("FACTVENCIDAS"));
dto.setAntiguedad(rs.getInt("ANTIGUEDAD"));
dto.setSaldoiva(rs.getBigDecimal("SALDOIVA"));
dto.setSaldototal(rs.getBigDecimal("SALDOTOTAL"));
dto.setR7(rs.getInt("R7"));
dto.setA7(rs.getInt("A7"));
dto.setR8(rs.getInt("R8"));
dto.setA8(rs.getInt("A8"));
dto.setR11(rs.getInt("R11"));
dto.setA11(rs.getInt("A11"));
dto.setR12(rs.getInt("R12"));
dto.setA12(rs.getInt("A12"));
dto.setR13(rs.getInt("R13"));
dto.setA13(rs.getInt("A13"));
dto.setR14(rs.getInt("R14"));
dto.setA14(rs.getInt("A14"));
dto.setR15(rs.getInt("R15"));
dto.setA15(rs.getInt("A15"));
dto.setR16(rs.getInt("R16"));
dto.setA16(rs.getInt("A16"));
dto.setR17(rs.getInt("R17"));
dto.setA17(rs.getInt("A17"));
dto.setR112(rs.getInt("R112"));
dto.setA112(rs.getInt("A112"));
dto.setR116(rs.getInt("R116"));
dto.setA116(rs.getInt("A116"));
dto.setReconexion(rs.getInt("RECONEXION"));
dto.setFactventa(rs.getInt("FACTVENTA"));
dto.setConceptosfv(rs.getString("CONCEPTOSFV"));
dto.setAdeudofv(rs.getBigDecimal("ADEUDOFV"));
dto.setPrograma(rs.getString("PROGRAMA"));
dto.setFid(rs.getString("FID"));
lista.add(dto);
}
} catch (Exception e) {
throw new RuntimeException("Error al obtener detalle de cartera vencida", e);
}
return lista;
}
@Transactional
public List<detalleCarteraDTO> obtenerDetallePorPredio(Long predioId) {
String query = "SELECT * FROM cobranza.tblcarteravencida WHERE predio = ?";
List<detalleCarteraDTO> lista = new ArrayList<>();
try (Connection connection = dataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setLong(1, predioId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
detalleCarteraDTO dto = new detalleCarteraDTO();
dto.setPredio(rs.getLong("PREDIO"));
dto.setNomcliente(rs.getString("NOMCLIENTE"));
dto.setDireccion(rs.getString("DIRECCION"));
dto.setColonia(rs.getString("COLONIA"));
dto.setZona(rs.getString("ZONA"));
dto.setUso(rs.getString("USO"));
dto.setTarifa(rs.getString("TARIFA"));
dto.setActividad(rs.getString("ACTIVIDAD"));
dto.setHabitado(rs.getString("HABITADO"));
dto.setVip(rs.getInt("VIP"));
dto.setMetsuministro(rs.getString("METSUMINISTRO"));
dto.setMedidor(rs.getString("MEDIDOR"));
dto.setEstado(rs.getString("ESTADO"));
dto.setEstadogestion(rs.getString("ESTADOGESTION"));
dto.setEstadocobranza(rs.getString("ESTADOCOBRANZA"));
dto.setEstadocorte(rs.getString("ESTADOCORTE"));
dto.setCortefectivo(rs.getString("CORTEEFECTIVO"));
dto.setEstadoconvfc(rs.getString("ESTADOCONVFC"));
dto.setEstadoconvfv(rs.getString("ESTADOCONVFV"));
dto.setFactvencidas(rs.getInt("FACTVENCIDAS"));
dto.setAntiguedad(rs.getInt("ANTIGUEDAD"));
dto.setSaldoiva(rs.getBigDecimal("SALDOIVA"));
dto.setSaldototal(rs.getBigDecimal("SALDOTOTAL"));
dto.setR7(rs.getInt("R7")); dto.setA7(rs.getInt("A7"));
dto.setR8(rs.getInt("R8")); dto.setA8(rs.getInt("A8"));
dto.setR11(rs.getInt("R11")); dto.setA11(rs.getInt("A11"));
dto.setR12(rs.getInt("R12")); dto.setA12(rs.getInt("A12"));
dto.setR13(rs.getInt("R13")); dto.setA13(rs.getInt("A13"));
dto.setR14(rs.getInt("R14")); dto.setA14(rs.getInt("A14"));
dto.setR15(rs.getInt("R15")); dto.setA15(rs.getInt("A15"));
dto.setR16(rs.getInt("R16")); dto.setA16(rs.getInt("A16"));
dto.setR17(rs.getInt("R17")); dto.setA17(rs.getInt("A17"));
dto.setR112(rs.getInt("R112")); dto.setA112(rs.getInt("A112"));
dto.setR116(rs.getInt("R116")); dto.setA116(rs.getInt("A116"));
dto.setReconexion(rs.getInt("RECONEXION"));
dto.setFactventa(rs.getInt("FACTVENTA"));
dto.setConceptosfv(rs.getString("CONCEPTOSFV"));
dto.setAdeudofv(rs.getBigDecimal("ADEUDOFV"));
dto.setPrograma(rs.getString("PROGRAMA"));
dto.setFid(rs.getString("FID"));
lista.add(dto);
}
} catch (Exception e) {
throw new RuntimeException("Error al obtener detalle por predio", e);
}
return lista;
}
}

+ 32
- 0
src/main/java/jumapacelaya/gob/mx/infowall/controlador/InfowallControlador.java View File

@ -0,0 +1,32 @@
package jumapacelaya.gob.mx.infowall.controlador;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import io.micronaut.http.annotation.Get;
import jakarta.inject.Inject;
import jumapacelaya.gob.mx.infowall.dto.totalPagosHoyDTO;
import jumapacelaya.gob.mx.infowall.servicio.InfowallServicio;
public class InfowallControlador {
@Inject
InfowallServicio servicio;
@Get("/totalpagoshoy/{entidad}/{punto}")
public totalPagosHoyDTO obtenerTotalPagosHoy(String entidad, String punto) {
List<Integer> entidadIds = Arrays.stream(entidad.split(","))
.map(String::trim)
.map(Integer::parseInt)
.collect(Collectors.toList());
List<Integer> puntoIds = Arrays.stream(punto.split(","))
.map(String::trim)
.map(Integer::parseInt)
.collect(Collectors.toList());
return servicio.obtenerTotalPagosHoy(entidadIds, puntoIds);
}
}

+ 23
- 0
src/main/java/jumapacelaya/gob/mx/infowall/dto/totalPagosHoyDTO.java View File

@ -0,0 +1,23 @@
package jumapacelaya.gob.mx.infowall.dto;
import java.math.BigDecimal;
public class totalPagosHoyDTO {
private BigDecimal totalpagado;
private int numeropagos;
public totalPagosHoyDTO(BigDecimal totalpagado, int numeropagos) {
this.totalpagado = totalpagado;
this.numeropagos = numeropagos;
}
public BigDecimal getTotalpagado() { return totalpagado; }
public void setTotalpagado(BigDecimal totalpagado) {
this.totalpagado = totalpagado;
}
public int getNumeropagos() { return numeropagos; }
public void setNumeropagos(int numeropagos) {
this.numeropagos = numeropagos;
}
}

+ 5
- 0
src/main/java/jumapacelaya/gob/mx/infowall/repositorio/InfowallRepositorio.java View File

@ -0,0 +1,5 @@
package jumapacelaya.gob.mx.infowall.repositorio;
public class InfowallRepositorio {
}

+ 61
- 0
src/main/java/jumapacelaya/gob/mx/infowall/servicio/InfowallServicio.java View File

@ -0,0 +1,61 @@
package jumapacelaya.gob.mx.infowall.servicio;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import java.util.stream.Collectors;
import javax.sql.DataSource;
import io.micronaut.transaction.annotation.Transactional;
import jumapacelaya.gob.mx.infowall.dto.totalPagosHoyDTO;
public class InfowallServicio {
private final DataSource dataSource;
public InfowallServicio(DataSource dataSource) {
this.dataSource = dataSource;
}
@Transactional
public totalPagosHoyDTO obtenerTotalPagosHoy(List<Integer> entidadIds, List<Integer> puntoIds) {
String query = "SELECT SUM(total) AS totalpagado, COUNT(total) AS numeropagos " +
"FROM pagosenc p " +
"INNER JOIN lotesenc l USING (numloteid) " +
"WHERE fechaing BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE + 1) " +
"AND entidadid IN (%s) AND puntoid IN (%s)";
String entidadPlaceholders = entidadIds.stream().map(id -> "?").collect(Collectors.joining(","));
String puntoPlaceholders = puntoIds.stream().map(id -> "?").collect(Collectors.joining(","));
query = String.format(query, entidadPlaceholders, puntoPlaceholders);
try (Connection connection = dataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
int index = 1;
for (Integer id : entidadIds) {
stmt.setInt(index++, id);
}
for (Integer id : puntoIds) {
stmt.setInt(index++, id);
}
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
BigDecimal total = rs.getBigDecimal("totalpagado");
int count = rs.getInt("numeropagos");
return new totalPagosHoyDTO(total != null ? total : BigDecimal.ZERO, count);
} else {
return new totalPagosHoyDTO(BigDecimal.ZERO, 0);
}
} catch (Exception e) {
throw new RuntimeException("Error al obtener total de pagos de hoy", e);
}
}
}

Loading…
Cancel
Save