package com.megatim.fdxconsultation.core.impl.api.supervision;
|
|
import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
|
import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
|
import com.fdx.messaging.common.TransfertDataMessage;
|
import com.megatim.fdxconsultation.core.ifaces.supervision.TransfertManager;
|
import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
|
import com.megatim.fdxconsultation.dao.ifaces.supervision.TransfertDAO;
|
import com.megatim.fdxconsultation.dao.impl.supervision.TransfertMessageKey;
|
import com.megatim.fdxconsultation.model.searchentities.TransfertSearch;
|
import com.megatim.fdxconsultation.model.supervision.SensTransfert;
|
import com.megatim.fdxconsultation.model.supervision.Transfert;
|
import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardRequest;
|
import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardResponse;
|
import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
|
import java.time.LocalDateTime;
|
import java.time.LocalTime;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
import javax.annotation.PostConstruct;
|
import javax.ejb.EJB;
|
import javax.enterprise.context.ApplicationScoped;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@ApplicationScoped
|
public class TransfertManagerImpl extends AbstractGenericManager<Transfert, Long> implements TransfertManager {
|
|
@EJB
|
private TransfertDAO dao;
|
|
private final Map<String, Transfert> transfertMap = new ConcurrentHashMap<>();
|
|
@PostConstruct
|
public void init() {
|
findAll().forEach(t -> {
|
String key = new TransfertMessageKey(t).key();
|
transfertMap.put(key, t);
|
});
|
}
|
|
@Override
|
public GenericDAO<Transfert, Long> getDao() {
|
return dao;
|
}
|
|
@Override
|
public PaginationWithSearchEnityDAO<Transfert, Long, TransfertSearch> getPaginationDao() {
|
return dao;
|
}
|
|
@Override
|
public String getEntityIdName() {
|
return "id";
|
}
|
|
@Override
|
public Transfert persistTransfert(Transfert t) {
|
|
String key = new TransfertMessageKey(t).key();
|
Transfert transfert = transfertMap.get(key);
|
|
if (transfert == null) {
|
|
transfertMap.put(key, save(t));
|
|
} else if (!transfert.getEtatTransfert().equals(t.getEtatTransfert())) {
|
|
setFields(transfert, t);
|
transfertMap.put(key, update(transfert.getId(), transfert));
|
|
}
|
|
return transfertMap.get(key);
|
}
|
|
@Override
|
public StandaloneDashboardResponse standaloneDashboardResponse(StandaloneDashboardRequest standaloneDashboardRequest) {
|
|
LocalDateTime dateDebut = standaloneDashboardRequest.getDateDebut();
|
LocalDateTime dateFin
|
= (standaloneDashboardRequest.getDateFin() != null)
|
? standaloneDashboardRequest.getDateFin().toLocalDate().atTime(LocalTime.MAX)
|
: null;
|
SensTransfert sens = standaloneDashboardRequest.getSens();
|
|
StandaloneDashboardResponse response = new StandaloneDashboardResponse();
|
|
response.setNombreTypeFichier(dao.getNombreTypeFichier(sens, dateDebut, dateFin));
|
response.setTailleTotale(dao.getTailleTotale(sens, dateDebut, dateFin));
|
response.setTotalTransfert(dao.getTotalTransfert(sens, dateDebut, dateFin));
|
response.setTotalTransfertAutomatique(dao.getTransfertsAutomatique(sens, dateDebut, dateFin));
|
response.setTotalTransfertEchec(dao.getTransfertsEchec(sens, dateDebut, dateFin));
|
response.setTotalTransfertManuel(dao.getTransfertsManuel(sens, dateDebut, dateFin));
|
response.setTransfertAttente(dao.getTransfertsAttente(sens, dateDebut, dateFin));
|
response.setTransfertReussie(dao.getTransfertsReussie(sens, dateDebut, dateFin));
|
response.setVitesseMoyenne(dao.getVitesseMoyenne(sens, dateDebut, dateFin));
|
|
if (response.getTotalTransfert() > 0) {
|
response.setTailleMoyenne(response.getTailleTotale() / response.getTotalTransfert());
|
} else {
|
response.setTailleMoyenne(0);
|
}
|
|
return response;
|
|
}
|
|
@Override
|
public List<Transfert> filter(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
|
List<Transfert> transferts = dao.filter(supervisionFilterModalFormRequest);
|
transferts.sort((t1, t2) -> Long.compare(t2.getId(), t1.getId()));
|
return transferts;
|
}
|
|
private void setFields(Transfert transfert, Transfert t) {
|
|
transfert.setCodeAgent(t.getCodeAgent());
|
transfert.setCodeAgentRecepteur(t.getCodeAgentRecepteur());
|
transfert.setEtatTransfert(t.getEtatTransfert());
|
transfert.setSensTransfert(t.getSensTransfert());
|
transfert.setDateDebut(t.getDateDebut());
|
transfert.setDateFin(t.getDateFin());
|
transfert.setNomFichier(t.getNomFichier());
|
transfert.setSended(t.getSended());
|
transfert.setTaille(t.getTaille());
|
transfert.setTypeFichier(t.getTypeFichier());
|
}
|
|
}
|