SupplementVerreIteHelper.java
package com.sintia.ffl.admin.optique.specifique.isea.helpers;
import com.sintia.ffl.admin.optique.dal.entities.DistributeurIte;
import com.sintia.ffl.admin.optique.dal.entities.FabricantIte;
import com.sintia.ffl.admin.optique.dal.entities.SupplementVerreIte;
import com.sintia.ffl.admin.optique.dal.entities.TypeSupplementIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.DistributeurCatalogueIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.FabricantCatalogueIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.SupplementVerreCatalogueIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.TypeSupplementCatalogueIte;
import com.sintia.ffl.admin.optique.dal.repositories.DistributeurIteRepository;
import com.sintia.ffl.admin.optique.dal.repositories.FabricantIteRepository;
import com.sintia.ffl.admin.optique.dal.repositories.TypeSupplementIteRepository;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.DistributeurCatalogueIteRepository;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.FabricantCatalogueIteRepository;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.TypeSupplementCatalogueIteRepository;
import com.sintia.ffl.admin.optique.services.services.SupplementVerreIteService;
import com.sintia.ffl.admin.optique.specifique.isea.models.SupplementCSV;
import com.sintia.ffl.admin.optique.specifique.isea.reporter.ChargementReporter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Service
@RequiredArgsConstructor
@Slf4j
public class SupplementVerreIteHelper {
private final ChargementReporter chargementReporter;
private final SupplementVerreIteService supplementVerreCatalogueIteService;
private final DistributeurCatalogueIteRepository distributeurCatalogueIteRepository;
private final FabricantCatalogueIteRepository fabricantCatalogueIteRepository;
private final TypeSupplementCatalogueIteRepository typeSupplementCatalogueIteRepository;
public void process(List<SupplementCSV> supplementCSVList, String codeFabricant, String codeFournisseur, Date date) {
for(SupplementCSV supplementCSV : supplementCSVList){
try {
if ("C".equals(supplementCSV.getAction()) || "M".equals(supplementCSV.getAction())) {
createOrModifySupplementVerre(codeFabricant, codeFournisseur, date, supplementCSV);
}
} catch(Exception e){
log.error("Erreur Rencontrée dans le traitement du supplement {} cause {}", supplementCSV.getCodeSupplement(), e.getMessage());
chargementReporter.addError("Erreur Rencontrée dans le traitement du supplement "+supplementCSV.getCodeSupplement() +" cause "+e.getMessage());
}
}
}
/**
* Creation ou modification Enregistrement SupplementVerre
* @param codeFabricant
* @param codeFournisseur
* @param date
* @param supplementCSV
*/
private void createOrModifySupplementVerre(String codeFabricant, String codeFournisseur, Date date, SupplementCSV supplementCSV) {
SupplementVerreCatalogueIte supplementVerreCatalogueIte = supplementVerreCatalogueIteService.exist(supplementCSV.getCodeSupplement(), codeFabricant,
codeFournisseur);
if (supplementVerreCatalogueIte != null) {
modifySupplementVerreIte(date, supplementCSV, supplementVerreCatalogueIte);
chargementReporter.addSupplement(supplementCSV);
} else {
createSupplementVerreIte(date, supplementCSV);
chargementReporter.addSupplement(supplementCSV);
}
}
/**
* Modification Enregistrement Supplement
* @param date
* @param supplementCSV
* @param supplementVerreIte
*/
private void modifySupplementVerreIte(Date date, SupplementCSV supplementCSV, SupplementVerreCatalogueIte supplementVerreIte) {
Optional<DistributeurCatalogueIte> distributeurIte = distributeurCatalogueIteRepository.findById(supplementVerreIte.getIdDistributeurIte());
Optional<FabricantCatalogueIte> fabricantIte = fabricantCatalogueIteRepository.findById(supplementVerreIte.getIdFabricantIte());
Optional<TypeSupplementCatalogueIte> typeSupplementIte = typeSupplementCatalogueIteRepository.findBycTypeSupplement(supplementCSV.getTypeSupplement());
// Modification
String ctypeTraitAntireflet = getCtypeTraitAntiReflet(supplementCSV.getAntiReflet());
SupplementVerreCatalogueIte supplementVerreIteToUpdate = SupplementVerreCatalogueIte.builder()
.idSupplementVerreIte(supplementVerreIte.getIdSupplementVerreIte())
.idTypeSupplementIte(typeSupplementIte.map(TypeSupplementCatalogueIte::getIdTypeSupplementIte).orElse(null))
.codeSupplementVerre(supplementVerreIte.getCodeSupplementVerre())
.libelleSupplementVerre(supplementCSV.getNomSupplement())
.idFabricantIte(fabricantIte.map(FabricantCatalogueIte::getIdFabricantIte).orElse(null))
.idDistributeurIte(distributeurIte.map(DistributeurCatalogueIte::getIdDistributeurIte).orElse(null))
.cTypeTraitAntireflet(ctypeTraitAntireflet)
.cProcedeSpecialFabrication(supplementCSV.getControle()).cTypeTeinte(supplementCSV.getTeinte())
.bCouchePhotochromique("Y".equals(supplementCSV.getPolymerisation()) ? "1" : "0")
.bAntirayure("Y".equals(supplementCSV.getDurci()) ? "1" : "0")
.bAntisalissure("Y".equals(supplementCSV.getAntiSalissure()) ? "1" : "0")
.bCoucheUv("Y".equals(supplementCSV.getUv()) ? "1" : "0")
.bSaisie("1")
.dateMaj(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())
.dateCreation(supplementVerreIte.getDateCreation()).build();
supplementVerreCatalogueIteService.modifyOrCreate(supplementVerreIteToUpdate);
}
private String getCtypeTraitAntiReflet(String antiReflet) {
switch (antiReflet){
case "2": return "1";
case "8": return "3";
case "0": return "0";
case "5": return "5";
default: return "";
}
}
/**
* Creation Enregistrement SupplementVerre
* @param date
* @param supplementCSV
*/
private void createSupplementVerreIte(Date date, SupplementCSV supplementCSV) {
Optional<DistributeurCatalogueIte> distributeurCatalogueIte = distributeurCatalogueIteRepository.findBycOptoCodeDistributeur(supplementCSV.getCodeFournisseur());
Optional<FabricantCatalogueIte> fabricantCatalogueIte = fabricantCatalogueIteRepository.findBycOptoCodeFabricant(supplementCSV.getCodeFabricant());
Optional<TypeSupplementCatalogueIte> typeSupplementCatalogueIte = typeSupplementCatalogueIteRepository.findBycTypeSupplement(supplementCSV.getTypeSupplement());
String ctypeTraitAntireflet = getCtypeTraitAntiReflet(supplementCSV.getAntiReflet());
SupplementVerreCatalogueIte supplementVerreIteToUpdate = SupplementVerreCatalogueIte.builder()
.idTypeSupplementIte(typeSupplementCatalogueIte.map(TypeSupplementCatalogueIte::getIdTypeSupplementIte).orElse(null))
.codeSupplementVerre(supplementCSV.getCodeSupplement())
.libelleSupplementVerre(supplementCSV.getNomSupplement())
.idFabricantIte(fabricantCatalogueIte.map(FabricantCatalogueIte::getIdFabricantIte).orElse(null))
.idDistributeurIte(distributeurCatalogueIte.map(DistributeurCatalogueIte::getIdDistributeurIte).orElse(null))
.cTypeTraitAntireflet(ctypeTraitAntireflet)
.cProcedeSpecialFabrication(supplementCSV.getControle()).cTypeTeinte(supplementCSV.getTeinte())
.bCouchePhotochromique("Y".equals(supplementCSV.getPolymerisation()) ? "1" : "0")
.bAntirayure("Y".equals(supplementCSV.getDurci()) ? "1" : "0")
.bAntisalissure("Y".equals(supplementCSV.getAntiSalissure()) ? "1" : "0")
.bCoucheUv("Y".equals(supplementCSV.getUv()) ? "1" : "0")
.bSaisie("1")
.dateMaj(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()).dateCreation(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()).build();
supplementVerreCatalogueIteService.modifyOrCreate(supplementVerreIteToUpdate);
}
}