From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation
---
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java | 303 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 303 insertions(+), 0 deletions(-)
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java
new file mode 100644
index 0000000..dbd8d1a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java
@@ -0,0 +1,303 @@
+package com.megatim.fdxconsultation.dao.impl.supervision;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.supervision.TransfertDAO;
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TransfertDAOImpl extends AbstractGenericDAO<Transfert, Long> implements TransfertDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<Transfert> getManagedEntityClass() {
+ return Transfert.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public List<Transfert> filter(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+
+ Query query = em.createQuery(filterQueryString(supervisionFilterModalFormRequest));
+ setParameters(query, supervisionFilterModalFormRequest);
+
+ return query
+ .setFirstResult(0)
+ .setMaxResults(200)
+ .getResultList();
+ }
+
+ @Override
+ public Long getTotalTransfert(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " etattransfert = 'TERMINE'";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsReussie(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.TERMINE";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsAttente(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ATTENTE_ROUTAGE";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsEchec(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ECHOUE "
+ + "AND t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ECHEC_EMPREINTE "
+ + "AND t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ECHEC_NOMENCLATURE";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsManuel(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ return 0L;
+ }
+
+ @Override
+ public Long getTransfertsAutomatique(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ return 0L;
+ }
+
+ @Override
+ public Double getTailleTotale(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+ String queryString = "SELECT COALESCE(SUM(t.taille), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery : "");
+
+ Query query = em.createQuery(queryString);
+ return ((double) result(query, sens, dateDebut, dateFin)) / 1000;
+ }
+
+ @Override
+ public Long getNombreTypeFichier(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(DISTINCT t.typeFichier), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery : "");
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Double getVitesseMoyenne(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ double tempsMisTermine = getTempsMisTermine(sens, dateDebut, dateFin);
+ double tailleTotaleTermine = getTailleTotaleTermine(sens, dateDebut, dateFin) / 1000;
+
+ return (tempsMisTermine > 0) ? (tailleTotaleTermine / tempsMisTermine) : 0;
+ }
+
+ private Double getTailleTotaleTermine(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(SUM(t.taille), 0) "
+ + "FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.TERMINE";
+
+ Query query = em.createQuery(queryString);
+
+ return (double) result(query, sens, dateDebut, dateFin);
+ }
+
+ private Double getTempsMisTermine(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereNativeQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).nativeQuery();
+
+ String queryString = "SELECT COALESCE(SUM(DATE_PART('second', t.datefin - t.datedebut)), 0) AS date_diff "
+ + "FROM transfert t " + (!whereNativeQuery.isEmpty() ? "WHERE " + whereNativeQuery + " AND " : " WHERE ")
+ + " t.etattransfert = 'TERMINE'";
+
+ Query query = em.createNativeQuery(queryString);
+
+ return (double) nativeResult(query, sens, dateDebut, dateFin);
+ }
+
+ private Object result(Query query, SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ if (sens != null) {
+ setParam(query, "sens", sens);
+ }
+
+ if (dateDebut != null) {
+ setParam(query, "dateDebut", dateDebut);
+ }
+
+ if (dateFin != null) {
+ setParam(query, "dateFin", dateFin.toLocalDate().atTime(LocalTime.MAX));
+ }
+
+ return query.getSingleResult();
+ }
+
+ private Object nativeResult(Query query, SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ if (sens != null) {
+ setParam(query, "sens", sens.toString());
+ }
+
+ if (dateDebut != null) {
+ setParam(query, "dateDebut", Timestamp.valueOf(dateDebut));
+ }
+
+ if (dateFin != null) {
+ setParam(query, "dateFin", Timestamp.valueOf(dateFin.toLocalDate().atTime(LocalTime.MAX)));
+ }
+
+ return query.getSingleResult();
+ }
+
+ private void setParam(Query query, String paramName, Object paramvalue) {
+ if (paramvalue != null) {
+ query.setParameter(paramName, paramvalue);
+ }
+ }
+
+ private String filterQueryString(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+ StringBuilder queryString = new StringBuilder("SELECT t FROM Transfert t");
+
+ boolean hasCondition = false;
+
+ if (supervisionFilterModalFormRequest.getNomFichier() != null) {
+ queryString.append(" WHERE t.nomFichier LIKE :nomFichier");
+ hasCondition = true;
+ }
+
+ if (supervisionFilterModalFormRequest.getTypeFichier() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.typeFichier = :typeFichier");
+ }
+
+ if (supervisionFilterModalFormRequest.getSensTransfert() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.sensTransfert = :sensTransfert");
+ }
+
+ if (supervisionFilterModalFormRequest.getEtatTransfert() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.etatTransfert = :etatTransfert");
+ }
+
+ if (supervisionFilterModalFormRequest.getDateDebut() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.dateCreation >= :dateDebut");
+ }
+
+ if (supervisionFilterModalFormRequest.getDateFin() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+
+ queryString.append("t.dateDebut <= :dateFin");
+ }
+
+ return queryString.toString();
+ }
+
+ private void setParameters(Query query, SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+
+ if (supervisionFilterModalFormRequest.getNomFichier() != null) {
+ setParam(query, "nomFichier", "%" + supervisionFilterModalFormRequest.getNomFichier() + "%");
+ }
+
+ if (supervisionFilterModalFormRequest.getTypeFichier() != null) {
+ setParam(query, "typeFichier", supervisionFilterModalFormRequest.getTypeFichier().getCode());
+ }
+
+ if (supervisionFilterModalFormRequest.getSensTransfert() != null) {
+ setParam(query, "sensTransfert", supervisionFilterModalFormRequest.getSensTransfert());
+ }
+
+ if (supervisionFilterModalFormRequest.getEtatTransfert() != null) {
+ setParam(query, "etatTransfert", supervisionFilterModalFormRequest.getEtatTransfert());
+ }
+
+ if (supervisionFilterModalFormRequest.getDateDebut() != null) {
+ setParam(query, "dateDebut", supervisionFilterModalFormRequest.getDateDebut().toLocalDate().atStartOfDay());
+ }
+
+ if (supervisionFilterModalFormRequest.getDateFin() != null) {
+ setParam(query, "dateFin", supervisionFilterModalFormRequest.getDateFin().toLocalDate().atTime(LocalTime.MAX));
+ }
+
+ }
+
+}
--
Gitblit v1.10.0