ChooseStationActivity.java 9.33 KB
package com.huaheng.robot.login;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.huaheng.robot.LoginActivity;
import com.huaheng.robot.MainActivity;
import com.huaheng.robot.R;
import com.huaheng.robot.adapter.ChooseAdapter;
import com.huaheng.robot.adapter.ChooseBean;
import com.huaheng.robot.adapter.MenuBean;
import com.huaheng.robot.adapter.RecyclerViewAdapter;
import com.huaheng.robot.bean.ActivityIslandBean;
import com.huaheng.robot.bean.LineBean;
import com.huaheng.robot.bean.WorkProcessBean;
import com.huaheng.robot.bean.WorkProcessDetailBean;
import com.huaheng.robot.https.HttpInterface;
import com.huaheng.robot.https.HttpInterface2;
import com.huaheng.robot.https.Subscribers.ProgressSubscriber;
import com.huaheng.robot.https.Subscribers.SubscriberOnNextListener;
import com.huaheng.robot.util.CommonActivity;
import com.huaheng.robot.util.Constant;
import com.huaheng.robot.util.DataBaseHelpter;
import com.huaheng.robot.util.MenuConstant;
import com.huaheng.robot.util.WMSLog;
import com.huaheng.robot.util.WMSUtils;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class ChooseStationActivity extends CommonActivity {

    @BindView(R.id.line_list)
    ListView lineList;
    @BindView(R.id.chooseRecycleView)
    RecyclerView recyclerView;
    @BindView(R.id.stationLayout)
    FrameLayout stationLayout;
    private Context mContext;
    private RecyclerViewAdapter adapter;
    private GridLayoutManager layoutManager;
    private ArrayList<MenuBean> menuBeans;
    private List<LineBean> mlist;
    private ArrayList<UserBean> userBeans;
    private ChooseAdapter mAdapter;
    private ArrayList<ChooseBean> chooseBeanList;
    private ArrayList<WorkProcessBean> workProcessBeans;
    private ArrayList<WorkProcessDetailBean> workProcessDetailBeans;
    private int lineNumber = 0;

    @Override
    protected void initActivityOnCreate(Bundle saveInstance) {
        super.initActivityOnCreate(saveInstance);
        setContentView(R.layout.activity_choose_station);
        ButterKnife.bind(this);
        this.setTitle(this.getString(R.string.choose_line));
        mContext = this;
        Bundle bundle = getIntent().getExtras();
        userBeans = bundle.getParcelableArrayList("userBean");
        initView();
    }

    private void initList() {
        mlist = DataBaseHelpter.queryAllLine();
        chooseBeanList = parseList(mlist);
        mAdapter = new ChooseAdapter(this);
        lineList.setAdapter(mAdapter);
        lineList.setOnItemClickListener(listener);
        mAdapter.setList(chooseBeanList);
    }

    private ArrayList<ChooseBean> parseList(List<LineBean> list) {
        ArrayList<ChooseBean> chooseBeans = new ArrayList<>();
        for(LineBean lineBean : list) {
            chooseBeans.add(new ChooseBean(this.getResources().getDrawable(R.mipmap.cangku), lineBean.getName()));
        }
        return chooseBeans;
    }

    AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            lineNumber = position + 1;
            WMSUtils.saveData(Constant.CURREN_LINE_NUMBER, String.valueOf(lineNumber));
            WMSUtils.saveData(Constant.CURREN_LINE_NAME, mlist.get(position).getName());
            setTitle(mContext.getString(R.string.choose_station));
            getWorkProcess();
        }
    };

     private void initView() {
        initList();
        adapter = new RecyclerViewAdapter(mContext);
        layoutManager = new GridLayoutManager(mContext, 3);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);
        adapter.setOnItemClickListener(stationClickListener);
        getModules();
    }

    private void getModules() {
        String warehouseCode = userBeans.get(0).getCode();
        int warehouseId = userBeans.get(0).getId();
        WMSUtils.saveData(Constant.CURREN_WAREHOUSE, userBeans.get(0).getName());
        HttpInterface.getInsstance().getModules(new ProgressSubscriber<ArrayList<ModulesBean>>(ChooseStationActivity.this, modulesListener), warehouseCode, warehouseId);
    }

    SubscriberOnNextListener modulesListener = new SubscriberOnNextListener<ArrayList<ModulesBean>>() {
        @Override
        public void onNext(ArrayList<ModulesBean> modulesBeans) {
            if(modulesBeans != null) {
                DataBaseHelpter.deleteAll(ModulesBean.class);
                for(int i=0; i<modulesBeans.size(); i++) {
                    ModulesBean module = modulesBeans.get(i);
                    module.set_id(i);
                    DataBaseHelpter.insertModule(module);
                }
            }
        }

        @Override
        public void onError(String str) {
            reStart();
        }
    };

    private ArrayList<MenuBean> buildMenuBeans(ArrayList<WorkProcessDetailBean> workProcessDetailBeans){
        ArrayList<MenuBean> menuBeanList = new ArrayList<>();
        for(WorkProcessDetailBean workProcessDetailBean : workProcessDetailBeans) {
            if(workProcessDetailBean.getWorkProcessId() ==  lineNumber) {
                if(workProcessDetailBean.getName().equals(ChooseStationActivity.this.getString(R.string.liku))) {
                    continue;
                }
                menuBeanList.add(new MenuBean(mContext.getResources().getDrawable(R.mipmap.station), workProcessDetailBean.getName()));
            }
        }
        return menuBeanList;
    }

    private void getWorkProcess() {
        HttpInterface2.getInsstance().getWorkProcess(new ProgressSubscriber<ArrayList<WorkProcessBean>>(mContext, workProcessListener));
    }

    SubscriberOnNextListener workProcessListener = new SubscriberOnNextListener<ArrayList<WorkProcessBean>>() {
        @Override
        public void onNext(ArrayList<WorkProcessBean> WorkProcess) {
            workProcessBeans = WorkProcess;
            for(WorkProcessBean workProcessBean : WorkProcess) {
                DataBaseHelpter.insertWorkProcess(workProcessBean);
            }
            getAllActivityIsland();
        }

        @Override
        public void onError(String str) {
            reStart();
        }
    };

    private void getWorkProcessDetail() {
        HttpInterface2.getInsstance().getWorkProcessDetail(new ProgressSubscriber<ArrayList<WorkProcessDetailBean>>(mContext, workProcessDetailListener));
    }

    SubscriberOnNextListener workProcessDetailListener = new SubscriberOnNextListener<ArrayList<WorkProcessDetailBean>>() {
        @Override
        public void onNext(ArrayList<WorkProcessDetailBean> workProcessDetails) {
            workProcessDetailBeans = workProcessDetails;
            DataBaseHelpter.deleteAll(WorkProcessDetailBean.class);
            for(WorkProcessDetailBean workProcessDetailBean : workProcessDetails) {
                DataBaseHelpter.insertWorkProcessDetailBean(workProcessDetailBean);
            }
            menuBeans = buildMenuBeans(workProcessDetails);
            if(menuBeans != null) {
                adapter.setList(menuBeans);
            }
            lineList.setVisibility(View.GONE);
            stationLayout.setVisibility(View.VISIBLE);

        }

        @Override
        public void onError(String str) {
            reStart();
        }
    };



    RecyclerViewAdapter.OnRecyclerViewItemClickListener stationClickListener = new RecyclerViewAdapter.OnRecyclerViewItemClickListener() {
        @Override
        public void onItemClick(int position) {
            WMSUtils.saveData(Constant.CURREN_STATION, workProcessDetailBeans.get(position).getName());
            WMSUtils.saveData(Constant.CURREN_STATION_NUMBER, String.valueOf(workProcessDetailBeans.get(position).getSequence()));
            WMSUtils.startActivity(mContext, MainActivity.class);
        }
    };

    private void getAllActivityIsland() {
        HttpInterface2.getInsstance().getAllActivityIsland(new ProgressSubscriber<List<ActivityIslandBean>>(ChooseStationActivity.this, activityIsland));
    }

    SubscriberOnNextListener activityIsland = new SubscriberOnNextListener<List<ActivityIslandBean>>() {
        @Override
        public void onNext(List<ActivityIslandBean> activityIslandBeanList) {
            WMSLog.d("getAllActivityIsland:" + activityIslandBeanList);
            DataBaseHelpter.deleteAll(ActivityIslandBean.class);
            for(ActivityIslandBean activityIslandBean : activityIslandBeanList) {
                DataBaseHelpter.insertActivityIsland(activityIslandBean);
            }
            getWorkProcessDetail();
        }

        @Override
        public void onError(String str) {
            reStart();
        }
    };

    private void reStart() {
        finish();
        Intent intent = new Intent();
        intent.setClass(mContext, ChooseStationActivity.class);
        Bundle bundle = new Bundle();
        bundle.putParcelableArrayList("userBean", userBeans);// 序列化
        intent.putExtras(bundle);// 发送数据
        startActivity(intent);
    }
}