Search in sources :

Example 11 with BonLivraison

use of me.kadarh.mecaworks.domain.bons.BonLivraison in project mecaworks by KadarH.

the class BonLivraisonServiceImpl method insertBonLivraison.

@Override
public void insertBonLivraison(BonEngin bonEngin) {
    BonLivraison bonLivraison = new BonLivraison();
    bonLivraison.setDate(bonEngin.getDate());
    bonLivraison.setChantierDepart(bonEngin.getChantierGazoil());
    bonLivraison.setChantierArrivee(bonEngin.getChantierTravail());
    bonLivraison.setCode(bonEngin.getCode() + "X" + bonEngin.getId());
    bonLivraison.setPompiste(bonEngin.getPompiste());
    bonLivraison.setTransporteur(bonEngin.getChauffeur());
    bonLivraison.setQuantite(bonEngin.getQuantite());
    add(bonLivraison);
}
Also used : BonLivraison(me.kadarh.mecaworks.domain.bons.BonLivraison)

Example 12 with BonLivraison

use of me.kadarh.mecaworks.domain.bons.BonLivraison in project mecaworks by KadarH.

the class BonLivraisonServiceImpl method bonList.

/**
 * Search by any attribute of BonLivraison if possible
 *
 * @param pageable
 * @param search   keyword
 * @return Page of results
 */
@Override
public Page<BonLivraison> bonList(Pageable pageable, String search) {
    try {
        if (search.isEmpty()) {
            log.debug("fetching bonLivraison page");
            return bonLivraisonRepo.findAll(pageable);
        } else {
            log.debug("Searching by :" + search);
            // creating example
            // Searching by code, date, quantité, nom chantier, nom employe
            BonLivraison bonLivraison = new BonLivraison();
            Chantier chantier = new Chantier();
            chantier.setNom(search);
            bonLivraison.setChantierDepart(chantier);
            bonLivraison.setChantierArrivee(chantier);
            Employe employe = new Employe();
            employe.setNom(search);
            bonLivraison.setPompiste(employe);
            bonLivraison.setTransporteur(employe);
            bonLivraison.setCode(search);
            try {
                bonLivraison.setDate(LocalDate.parse(search, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            } catch (Exception e) {
                log.debug("Cannot search by date : keyword doesn't match date pattern");
            }
            try {
                bonLivraison.setQuantite(Integer.valueOf(search));
            } catch (Exception e) {
                log.debug("Cannot search by quantité : keyword is not a number");
            }
            // creating matcher
            ExampleMatcher matcher = ExampleMatcher.matchingAny().withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING).withIgnoreCase().withIgnoreNullValues();
            Example<BonLivraison> example = Example.of(bonLivraison, matcher);
            Pageable pageable1 = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "date"));
            log.debug("getting search results");
            return bonLivraisonRepo.findAll(example, pageable1);
        }
    } catch (Exception e) {
        log.debug("Failed retrieving list of bons de Lisvraison");
        throw new OperationFailedException("Operation échouée", e);
    }
}
Also used : BonLivraison(me.kadarh.mecaworks.domain.bons.BonLivraison) Chantier(me.kadarh.mecaworks.domain.others.Chantier) OperationFailedException(me.kadarh.mecaworks.service.exceptions.OperationFailedException) Employe(me.kadarh.mecaworks.domain.others.Employe) ResourceNotFoundException(me.kadarh.mecaworks.service.exceptions.ResourceNotFoundException) OperationFailedException(me.kadarh.mecaworks.service.exceptions.OperationFailedException) DataIntegrityViolationException(org.springframework.dao.DataIntegrityViolationException) NoSuchElementException(java.util.NoSuchElementException)

Example 13 with BonLivraison

use of me.kadarh.mecaworks.domain.bons.BonLivraison in project mecaworks by KadarH.

the class UserCalculService method getListChantierWithQuantities.

public List<ChantierBatch> getListChantierWithQuantities(int month, int year) {
    log.info("calling method getListChantierWithQuantities(month,year) in UserCalculService -- ");
    try {
        List<ChantierBatch> list = new ArrayList<>();
        ChantierBatch chantierBatch;
        LocalDate from = LocalDate.of(year, Month.of(month).getValue(), 1);
        LocalDate to = LocalDate.of(year + 1, Month.of(month).plus(1).getValue(), 1);
        List<BonEngin> bonEngins = bonEnginRepo.findAllBetweenDates(from, to);
        List<BonLivraison> bonLivraisons = bonLivraisonRepo.findAllBetweenDates(from, to);
        List<BonFournisseur> bonFournisseurs = bonFournisseurRepo.findAllBetweenDates(from, to);
        Map<Chantier, Long> sum = bonEngins.stream().collect(Collectors.groupingBy(BonEngin::getChantierTravail, Collectors.summingLong(BonEngin::getQuantite)));
        Map<Chantier, Long> sum2 = bonEngins.stream().filter(bonEngin -> bonEngin.getEngin().getGroupe().getLocataire() && bonEngin.getId() != null).collect(Collectors.groupingBy(BonEngin::getChantierTravail, Collectors.summingLong(BonEngin::getQuantite)));
        Map<Chantier, Long> chargeLocataire = bonEngins.stream().collect(Collectors.groupingBy(BonEngin::getChantierTravail, Collectors.summingLong(BonEngin::getChargeHoraire)));
        Map<Chantier, Long> chargeLocataireExterne = bonEngins.stream().filter(bonEngin -> bonEngin.getEngin().getGroupe().getLocataire()).collect(Collectors.groupingBy(BonEngin::getChantierTravail, Collectors.summingLong(BonEngin::getChargeHoraire)));
        Map<Chantier, Long> consommationPrevue = bonEngins.stream().collect(Collectors.groupingBy(BonEngin::getChantierTravail, Collectors.summingLong(BonEngin::getConsommationPrevu)));
        Map<Chantier, Double> prix = bonFournisseurs.stream().collect(Collectors.groupingBy(BonFournisseur::getChantier, Collectors.averagingDouble(BonFournisseur::getPrixUnitaire)));
        Map<Chantier, Long> quantiteAchetee = bonFournisseurs.stream().collect(Collectors.groupingBy(BonFournisseur::getChantier, Collectors.summingLong(BonFournisseur::getQuantite)));
        Map<Chantier, Long> quantiteFlotante = bonLivraisons.stream().collect(Collectors.groupingBy(BonLivraison::getChantierDepart, Collectors.summingLong(BonLivraison::getQuantite)));
        for (Map.Entry<Chantier, Long> entry : sum.entrySet()) {
            if (entry != null) {
                // Fix in 0 if null
                Long quantite = entry.getValue();
                Long quantiteL = sum2.get(entry.getKey()) == null ? 0L : sum2.get(entry.getKey());
                Long cl = chargeLocataire.get(entry.getKey()) == null ? 0L : chargeLocataire.get(entry.getKey());
                Long clex = chargeLocataireExterne.get(entry.getKey()) == null ? 0L : chargeLocataireExterne.get(entry.getKey());
                Long cp = consommationPrevue.get(entry.getKey()) == null ? 0L : consommationPrevue.get(entry.getKey());
                Long qa = quantiteAchetee.get(entry.getKey()) == null ? 0L : quantiteAchetee.get(entry.getKey());
                Long qf = quantiteFlotante.get(entry.getKey()) == null ? 0L : quantiteFlotante.get(entry.getKey());
                Float p = prix.get(entry.getKey()) == null ? 0f : prix.get(entry.getKey()).floatValue();
                chantierBatch = new ChantierBatch(month, year, quantite, quantiteL, cl, clex, cp, p, qa, qf, entry.getKey());
                if (chantierBatch.getQuantiteLocation() == null)
                    chantierBatch.setQuantiteLocation(0L);
                if (chantierBatch.getQuantite() == null)
                    chantierBatch.setQuantite(0L);
                if (chantierBatch.getChargeLocataireExterne() == null)
                    chantierBatch.setChargeLocataireExterne(0L);
                if (chantierBatch.getChargeLocataire() == null)
                    chantierBatch.setChargeLocataire(0L);
                if (chantierBatch.getConsommationPrevue() == null)
                    chantierBatch.setConsommationPrevue(0L);
                if (chantierBatch.getGazoilAchete() == null)
                    chantierBatch.setGazoilAchete(0L);
                if (chantierBatch.getGazoilFlotant() == null)
                    chantierBatch.setGazoilFlotant(0L);
                list.add(chantierBatch);
            }
        }
        log.info("--> List of Chantier_Batch contains " + list.size() + " elements");
        return list;
    } catch (NoSuchElementException e) {
        log.info("Operation failed : No element in ChantierBatch table -- ");
        throw new ResourceNotFoundException("Opération echouée, Il n'y a aucun element pour les mois precedents", e);
    } catch (Exception e) {
        log.info("Operation failed -- ");
        throw new OperationFailedException("Opération echouée, problème de la base", e);
    }
}
Also used : Engin(me.kadarh.mecaworks.domain.others.Engin) java.util(java.util) BonEnginRepo(me.kadarh.mecaworks.repo.bons.BonEnginRepo) Month(java.time.Month) BonFournisseur(me.kadarh.mecaworks.domain.bons.BonFournisseur) Quantite(me.kadarh.mecaworks.domain.user.Quantite) EnginService(me.kadarh.mecaworks.service.EnginService) BonEngin(me.kadarh.mecaworks.domain.bons.BonEngin) BonLivraison(me.kadarh.mecaworks.domain.bons.BonLivraison) Chantier(me.kadarh.mecaworks.domain.others.Chantier) Collectors(java.util.stream.Collectors) ResourceNotFoundException(me.kadarh.mecaworks.service.exceptions.ResourceNotFoundException) Slf4j(lombok.extern.slf4j.Slf4j) OperationFailedException(me.kadarh.mecaworks.service.exceptions.OperationFailedException) BonFournisseurRepo(me.kadarh.mecaworks.repo.bons.BonFournisseurRepo) ChronoUnit(java.time.temporal.ChronoUnit) ChantierBatch(me.kadarh.mecaworks.domain.user.ChantierBatch) StockRepo(me.kadarh.mecaworks.repo.others.StockRepo) Service(org.springframework.stereotype.Service) LocalDate(java.time.LocalDate) BonLivraisonRepo(me.kadarh.mecaworks.repo.bons.BonLivraisonRepo) Stock(me.kadarh.mecaworks.domain.others.Stock) Transactional(org.springframework.transaction.annotation.Transactional) BonFournisseur(me.kadarh.mecaworks.domain.bons.BonFournisseur) OperationFailedException(me.kadarh.mecaworks.service.exceptions.OperationFailedException) LocalDate(java.time.LocalDate) ResourceNotFoundException(me.kadarh.mecaworks.service.exceptions.ResourceNotFoundException) OperationFailedException(me.kadarh.mecaworks.service.exceptions.OperationFailedException) ChantierBatch(me.kadarh.mecaworks.domain.user.ChantierBatch) BonLivraison(me.kadarh.mecaworks.domain.bons.BonLivraison) BonEngin(me.kadarh.mecaworks.domain.bons.BonEngin) Chantier(me.kadarh.mecaworks.domain.others.Chantier) ResourceNotFoundException(me.kadarh.mecaworks.service.exceptions.ResourceNotFoundException)

Aggregations

BonLivraison (me.kadarh.mecaworks.domain.bons.BonLivraison)13 OperationFailedException (me.kadarh.mecaworks.service.exceptions.OperationFailedException)7 ResourceNotFoundException (me.kadarh.mecaworks.service.exceptions.ResourceNotFoundException)6 LocalDate (java.time.LocalDate)5 BonEngin (me.kadarh.mecaworks.domain.bons.BonEngin)5 Chantier (me.kadarh.mecaworks.domain.others.Chantier)5 ChronoUnit (java.time.temporal.ChronoUnit)4 Collectors (java.util.stream.Collectors)4 Slf4j (lombok.extern.slf4j.Slf4j)4 BonFournisseur (me.kadarh.mecaworks.domain.bons.BonFournisseur)4 BonEnginRepo (me.kadarh.mecaworks.repo.bons.BonEnginRepo)4 BonFournisseurRepo (me.kadarh.mecaworks.repo.bons.BonFournisseurRepo)4 BonLivraisonRepo (me.kadarh.mecaworks.repo.bons.BonLivraisonRepo)4 Service (org.springframework.stereotype.Service)4 Transactional (org.springframework.transaction.annotation.Transactional)4 Month (java.time.Month)3 java.util (java.util)3 NoSuchElementException (java.util.NoSuchElementException)3 Engin (me.kadarh.mecaworks.domain.others.Engin)3 Stock (me.kadarh.mecaworks.domain.others.Stock)3