🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / retrofit2 Observable ile sıralı request yapma

1-) Android RMOS - retrofit2 Observable ile sıralı request yapma

 

 

implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

 

 

implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'

 

 

İNTERFACE

 

package com.ramazan.rmosposx.Grup.Kur;

import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Body;
import retrofit2.http.POST;

public interface KurService {
    
@POST("api/Kur/KurGetir")
    Observable<KurModel> KurGetir(
@Body KurRequest kurRequest);
}

 

SERVİCEGENARATOR.JAVA

package com.ramazan.rmosposx;


import com.ramazan.rmosposx.Departman.DepartmanModel;
import com.ramazan.rmosposx.Departman.DepartmanService;
import com.ramazan.rmosposx.Fis.FisModel;
import com.ramazan.rmosposx.Fis.FisModelRequest;
import com.ramazan.rmosposx.Fis.FisService;
import com.ramazan.rmosposx.Grup.GrupModel;
import com.ramazan.rmosposx.Grup.GrupService;
import com.ramazan.rmosposx.Grup.Kdv.KdvModel;
import com.ramazan.rmosposx.Grup.Kdv.KdvRequest;
import com.ramazan.rmosposx.Grup.Kdv.KdvService;
import com.ramazan.rmosposx.Grup.Kur.KurModel;
import com.ramazan.rmosposx.Grup.Kur.KurRequest;
import com.ramazan.rmosposx.Grup.Kur.KurService;
import com.ramazan.rmosposx.Grup.Recete.ReceteModel;
import com.ramazan.rmosposx.Grup.Recete.ReceteModelRequest;
import com.ramazan.rmosposx.Grup.Recete.ReceteService;
import com.ramazan.rmosposx.Grup.Satis.SatisRequest;
import com.ramazan.rmosposx.Grup.Satis.SatisResponse;
import com.ramazan.rmosposx.Grup.Satis.SatisService;
import com.ramazan.rmosposx.Grup.Urun.UrunModel;
import com.ramazan.rmosposx.Grup.Urun.UrunModelRequest;
import com.ramazan.rmosposx.Grup.Urun.UrunService;
import com.ramazan.rmosposx.Param.ParamModel;
import com.ramazan.rmosposx.Param.ParamService;
import com.ramazan.rmosposx.Posta.Masa.MasaModel;
import com.ramazan.rmosposx.Posta.Masa.MasaModelRequest;
import com.ramazan.rmosposx.Posta.Masa.MasaService;
import com.ramazan.rmosposx.Posta.PostaModel;
import com.ramazan.rmosposx.Posta.PostaService;
import com.ramazan.rmosposx.User.UserModel;
import com.ramazan.rmosposx.User.UserModelResponse;
import com.ramazan.rmosposx.User.UserService;

import java.util.concurrent.TimeUnit;

import io.reactivex.rxjava3.core.Observable;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.Body;

public class ServiceGenerator {
    
public static Retrofit retrofit;
    
private static Retrofit.Builder builder;
    
private static OkHttpClient.Builder httpClient;
    
private static ServiceGenerator instance = new ServiceGenerator();

    
public static ServiceGenerator getInstance() {
        
return instance;
    }

    
public Retrofit createService() {
        
builder = new Retrofit.Builder();
        
builder.baseUrl(Genel.webApiLink).addConverterFactory(GsonConverterFactory.create());


        
httpClient = new OkHttpClient().newBuilder()
                .connectTimeout(
1, TimeUnit.MINUTES)
                .readTimeout(
1, TimeUnit.MINUTES)
                .writeTimeout(
1, TimeUnit.MINUTES);

        
builder.client(httpClient.build());

        
builder.addCallAdapterFactory(RxJava3CallAdapterFactory.create());

        
retrofit = builder.build();
        
return retrofit;
    }

    
private ServiceGenerator() {
        Retrofit retrofit = createService();

        
userService = retrofit.create(UserService.class);
        
departmanService = retrofit.create(DepartmanService.class);
        
masaService = retrofit.create(MasaService.class);
        
fisService = retrofit.create(FisService.class);

        
receteService = retrofit.create(ReceteService.class);
        
urunService = retrofit.create(UrunService.class);
        
grupService = retrofit.create(GrupService.class);
        
paramService = retrofit.create(ParamService.class);
        
postaService = retrofit.create(PostaService.class);

        
satisService = retrofit.create(SatisService.class);
        
kdvService = retrofit.create(KdvService.class);

        
kurService = retrofit.create(KurService.class);
    }

    
private UserService userService;
    
private DepartmanService departmanService;
    
private MasaService masaService;
    
private FisService fisService;
    
private ReceteService receteService;
    
private UrunService urunService;
    
private GrupService grupService;
    
private ParamService paramService;
    
private PostaService postaService;
    
private SatisService satisService;
    
private KdvService kdvService;
    
private KurService kurService;

    
public Observable<KurModel> KurGetir(@Body KurRequest kurRequest) {
        
return kurService.KurGetir(kurRequest);
    }

    
public Observable<KdvModel> Kdv_Bul(KdvRequest kdvRequest) {
        
return kdvService.Kdv_Bul(kdvRequest);
    }

    
public Call<SatisResponse> SatisYap(SatisRequest satisRequest) {
        
return satisService.SatisYap(satisRequest);
    }

    
public Call<UserModelResponse> KullaniciGiris(UserModel userModel) {
        
return userService.KullaniciGiris(userModel);
    }

    
public Call<DepartmanModel> TumDepartmanlar() {
        
return departmanService.TumDepartmanlar();
    }

    
public Call<MasaModel> MasaPostaListesi(MasaModelRequest masaModel) {
        
return masaService.MasaPostaListesi(masaModel);
    }

    
public Call<FisModel> YeniFisnoAL(FisModelRequest fisModelRequest) {
        
return fisService.YeniFisnoAL(fisModelRequest);
    }

    
public Call<ReceteModel> ReceteGetir(ReceteModelRequest receteModelRequest) {
        
return receteService.ReceteGetir(receteModelRequest);
    }

    
public Observable<UrunModel> UrunGetir(UrunModelRequest urunModelRequest) {
        
return urunService.UrunGetir(urunModelRequest);
    }

    
public Call<GrupModel> AraGrupListesi(String depKodu) {
        
return grupService.AraGrupListesi(depKodu);
    }

    
public Call<ParamModel> ParametreGetir() {
        
return paramService.ParametreGetir();
    }

    
public Call<PostaModel> PostaListesi(String depKodu) {
        
return postaService.PostaListesi(depKodu);
    }
}

 

 

ÖRNEK :

public void siparisVer() {
    
if (siparisModelList != null && siparisModelList.size() > 0) {
        
for (final SiparisModel siparisModel : siparisModelList) {

            UrunModelRequest urunModelRequest =
new UrunModelRequest();
            urunModelRequest.setDepartmanKodu(Genel.
dep_kod);
            urunModelRequest.setReceteKodu(siparisModel.getReceteModel().getRecGenelkod());
// "1010121"
            
urunModelRequest.setTip("S");


            Disposable disposable =  ServiceGenerator.
getInstance().UrunGetir(urunModelRequest)
                    .subscribeOn(Schedulers.
io())
                    .flatMap((Function<UrunModel, ObservableSource<KurModel>>) response1 -> {
                        KurRequest kurRequest =
new KurRequest();
                        kurRequest.setDepkodu(Genel.
dep_kod);
                        kurRequest.setFolio(
"0");
                        kurRequest.setTarih(Genel.
paramModel.getParamTarih());

                        
urunModel = response1.getModel().get(0);

                        Observable<KurModel> kurModelObservable=ServiceGenerator.
getInstance().KurGetir(kurRequest);
                        
return kurModelObservable;
                    })
                    .flatMap((Function<KurModel, ObservableSource<KdvModel>>) response2 -> {

                        KdvRequest kdvRequest =
new KdvRequest();
                        kdvRequest.setDepKodu(Genel.
dep_kod);
                        kdvRequest.setReceteKodu(
urunModel.getRecGenelkod());

                        Observable<KdvModel> kdvModelObservable=ServiceGenerator.
getInstance().Kdv_Bul(kdvRequest);
                        
return kdvModelObservable;

                    })
                    .map(response3 -> {

                        
return response3;
                    })
                    .observeOn(AndroidSchedulers.
mainThread())
                    .subscribeWith(
new DisposableObserver<KdvModel>() {

                        
@Override
                        
public void onNext(KdvModel response3) {
                        }

                        
@Override
                        
public void onError(Throwable e) {
                            Toast.
makeText(mainActivity, "HATA "+e.getMessage(), Toast.LENGTH_SHORT).show();
                        }

                        
@Override
                        
public void onComplete() {

                        }
                    });


        }
    }
}

 

 2021 Ocak 18 Pazartesi
 406