ScanUnloadingActivity.java 16.6 KB
package com.lijinji.scan;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputFilter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import com.lijinji.scan.adapter.AbsCommonAdapter;
import com.lijinji.scan.adapter.AbsViewHolder;
import com.lijinji.scan.adapter.RefreshParams;
import com.lijinji.scan.bean.BarcodeDataBean;
import com.lijinji.scan.bean.BarcodeOrderBean;
import com.lijinji.scan.bean.TableModel;
import com.lijinji.scan.https.HttpInterface;
import com.lijinji.scan.https.Subscribers.ProgressSubscriber;
import com.lijinji.scan.https.Subscribers.SubscriberOnNextListener;
import com.lijinji.scan.product.InputFilterMinMax;
import com.lijinji.scan.util.CommonActivity;
import com.lijinji.scan.util.Constant;
import com.lijinji.scan.util.WMSUtils;
import com.lijinji.scan.widget.MyListView;
import com.lijinji.scan.widget.SyncHorizontalScrollView;
import com.lijinji.scan.widget.pullrefresh.AbPullToRefreshView;
import com.zbar.scan.ScanCaptureAct;

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

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class ScanUnloadingActivity extends CommonActivity {

    @BindView(R.id.right_title_container)
    LinearLayout rightTitleContainer;
    @BindView(R.id.title_horsv)
    SyncHorizontalScrollView titleHorsv;
    @BindView(R.id.left_container_listview)
    MyListView leftContainerListview;
    @BindView(R.id.right_container_listview)
    MyListView rightContainerListview;
    @BindView(R.id.content_horsv)
    SyncHorizontalScrollView contentHorsv;
    @BindView(R.id.pull_refresh_scroll)
    ScrollView pullRefreshScroll;
    @BindView(R.id.pulltorefreshview)
    AbPullToRefreshView pulltorefreshview;
    @BindView(R.id.allPage)
    TextView allPage;
    @BindView(R.id.alterPage)
    TextView alterPage;
    @BindView(R.id.fromPage)
    TextView fromPage;
    @BindView(R.id.firstPage)
    TextView firstPage;
    @BindView(R.id.upPage)
    TextView upPage;
    @BindView(R.id.downPage)
    TextView downPage;
    @BindView(R.id.lastPage)
    TextView lastPage;
    @BindView(R.id.jumpPage)
    TextView jumpPage;
    private Context mContext;
    private int RESULT_CODE = 1;
    private AbsCommonAdapter<TableModel> mRightAdapter;
    private String result;
    private int pageNo = 1;
    private int pageSize = 10;
    private int mAlertPage = 1;
    private int upPageNo = pageNo;
    private List<BarcodeDataBean> barcodeDataBeans;

    @Override
    protected void initActivityOnCreate(Bundle savedInstanceState) {
        super.initActivityOnCreate(savedInstanceState);
        setContentView(R.layout.activity_scan_unloading);
        ButterKnife.bind(this);
        mContext = this;
        setTitle(this.getString(R.string.scan_history));
        initView();
        getBarcodeDataByCondition(pageNo);
    }

    private void initView() {
        getLayoutInflater().inflate(R.layout.unloading_right_title, rightTitleContainer);
        // 设置两个水平控件的联动
        titleHorsv.setScrollView(contentHorsv);
        contentHorsv.setScrollView(titleHorsv);
        initTableView();
        pulltorefreshview.setPullRefreshEnable(false);
        pulltorefreshview.setLoadMoreEnable(false);
    }

    public void initTableView() {
        mRightAdapter = new AbsCommonAdapter<TableModel>(mContext, R.layout.unloading_right_item) {
            @Override
            public void convert(AbsViewHolder helper, TableModel item, final int pos) {
                TextView tv_table_content_right_item0 = helper.getView(R.id.tv_table_content_right_item0);
                TextView tv_table_content_right_item1 = helper.getView(R.id.tv_table_content_right_item1);
                TextView tv_table_content_right_item2 = helper.getView(R.id.tv_table_content_right_item2);
                TextView tv_table_content_right_item3 = helper.getView(R.id.tv_table_content_right_item3);
                TextView tv_table_content_right_item4 = helper.getView(R.id.tv_table_content_right_item4);
                TextView tv_table_content_right_item5 = helper.getView(R.id.tv_table_content_right_item5);
                TextView tv_table_content_right_item6 = helper.getView(R.id.tv_table_content_right_item6);
                TextView tv_table_content_right_item7 = helper.getView(R.id.tv_table_content_right_item7);
                TextView tv_table_content_right_item8 = helper.getView(R.id.tv_table_content_right_item8);
                TextView tv_table_content_right_item9 = helper.getView(R.id.tv_table_content_right_item9);
                TextView tv_table_content_right_item10 = helper.getView(R.id.tv_table_content_right_item10);
                TextView tv_table_content_right_item11 = helper.getView(R.id.tv_table_content_right_item11);
                TextView tv_table_content_right_item12 = helper.getView(R.id.tv_table_content_right_item12);
                TextView tv_table_content_right_item13 = helper.getView(R.id.tv_table_content_right_item13);
                TextView tv_table_content_right_item14 = helper.getView(R.id.tv_table_content_right_item14);
                TextView tv_table_content_right_item15 = helper.getView(R.id.tv_table_content_right_item15);
                TextView tv_table_content_right_item16 = helper.getView(R.id.tv_table_content_right_item16);
                TextView tv_table_content_right_item17 = helper.getView(R.id.tv_table_content_right_item17);
                TextView tv_table_content_right_item18 = helper.getView(R.id.tv_table_content_right_item18);

                tv_table_content_right_item0.setText(item.getText0());
                tv_table_content_right_item1.setText(item.getText1());
                tv_table_content_right_item2.setText(item.getText2());
                tv_table_content_right_item3.setText(item.getText3());
                tv_table_content_right_item4.setText(item.getText4());
                tv_table_content_right_item5.setText(item.getText5());
                tv_table_content_right_item6.setText(item.getText6());
                tv_table_content_right_item7.setText(item.getText7());
                tv_table_content_right_item8.setText(item.getText8());
                tv_table_content_right_item9.setText(item.getText9());
                tv_table_content_right_item10.setText(item.getText10());
                tv_table_content_right_item11.setText(item.getText11());
                tv_table_content_right_item12.setText(item.getText12());
                tv_table_content_right_item13.setText(item.getText13());
                tv_table_content_right_item14.setText(item.getText14());
                tv_table_content_right_item15.setText(item.getText15());
                tv_table_content_right_item16.setText(item.getText16());
                tv_table_content_right_item17.setText(item.getText17());
                tv_table_content_right_item18.setText(item.getText18());


            }
        };
        rightContainerListview.setAdapter(mRightAdapter);
    }

    private void setData(List<BarcodeDataBean> barcodeDataBeans) {
        doGetDatas(0, RefreshParams.REFRESH_DATA, barcodeDataBeans);
    }

    //模拟网络请求
    public void doGetDatas(int pageno, int state, List<BarcodeDataBean> barcodeDataBeans) {
        if (state == RefreshParams.REFRESH_DATA) {
            pulltorefreshview.onHeaderRefreshFinish();
        } else {
            pulltorefreshview.onFooterLoadFinish();
        }
        setDatas(barcodeDataBeans, state);
    }

    private void setDatas(List<BarcodeDataBean> barcodeDataBeans, int type) {
        List<TableModel> mDatas = new ArrayList<>();
        for (BarcodeDataBean barcodeDataBean : barcodeDataBeans) {
            TableModel tableMode = new TableModel();
            tableMode.setText0(String.valueOf(barcodeDataBean.getId()));
            tableMode.setText1(barcodeDataBean.getThisPackQty());
            tableMode.setText2(cutTime(barcodeDataBean.getReciveDate()));
            tableMode.setText3(cutTime(barcodeDataBean.getProductDate()));
            tableMode.setText4(cutTime(barcodeDataBean.getValidityDate()));
            tableMode.setText5(barcodeDataBean.getItemBarcode());
            tableMode.setText6(barcodeDataBean.getItemCode());
            tableMode.setText7(barcodeDataBean.getItemName());
            tableMode.setText8(barcodeDataBean.getBatch());
            tableMode.setText9(barcodeDataBean.getQty());
            tableMode.setText10(barcodeDataBean.getItemUnitCode());
            tableMode.setText11(barcodeDataBean.getSupplierCode());
            tableMode.setText12(getScanTitle(barcodeDataBean.getGeneralSource()));
            tableMode.setText13(barcodeDataBean.getLineNumber());
            tableMode.setText14(barcodeDataBean.getActualQty());
            tableMode.setText15(barcodeDataBean.getCreatedBy());
            tableMode.setText16(WMSUtils.freshTimeDate(barcodeDataBean.getCreated()));
            tableMode.setText17(barcodeDataBean.getUpdatedBy());
            tableMode.setText18(WMSUtils.freshTimeDate(barcodeDataBean.getUpdated()));
            mDatas.add(tableMode);
        }
        boolean isMore;
        if (type == RefreshParams.LOAD_DATA) {
            isMore = true;
        } else {
            isMore = false;
        }
        mRightAdapter.addData(mDatas, isMore);
        //加载数据成功,增加页数
        mDatas.clear();
    }

    private void freshMenuText(int mAllPage, int mAlter) {
        allPage.setText(String.format(getResources().getString(R.string.all_page), mAllPage));
        alterPage.setText(String.format(getResources().getString(R.string.alter_page), 10));
        fromPage.setText(String.format(getResources().getString(R.string.from_page), pageNo, mAlter));
        firstPage.setText(String.format(getResources().getString(R.string.first_page)));
        upPage.setText(String.format(getResources().getString(R.string.up_page)));
        downPage.setText(String.format(getResources().getString(R.string.down_page)));
        lastPage.setText(String.format(getResources().getString(R.string.last_page)));
        jumpPage.setText(String.format(getResources().getString(R.string.jump_page)));
        if (mAlter > 1) {
            firstPage.setTextColor(getResources().getColor(R.color.black));
            lastPage.setTextColor(getResources().getColor(R.color.black));
            jumpPage.setTextColor(getResources().getColor(R.color.black));
            firstPage.setClickable(true);
            lastPage.setClickable(true);
            jumpPage.setClickable(true);
        } else {
            firstPage.setTextColor(getResources().getColor(R.color.gray_bg));
            lastPage.setTextColor(getResources().getColor(R.color.gray_bg));
            jumpPage.setTextColor(getResources().getColor(R.color.gray_bg));
            firstPage.setClickable(false);
            lastPage.setClickable(false);
            jumpPage.setClickable(false);
        }
        if (pageNo == 1) {
            upPage.setTextColor(getResources().getColor(R.color.gray_bg));
            upPage.setEnabled(false);
        } else {
            upPage.setTextColor(getResources().getColor(R.color.black));
            upPage.setEnabled(true);
        }

        if (pageNo == mAlter || mAlter == 0) {
            downPage.setTextColor(getResources().getColor(R.color.gray_bg));
            downPage.setEnabled(false);
        } else {
            downPage.setTextColor(getResources().getColor(R.color.black));
            downPage.setEnabled(true);
        }
    }

    private void showJumpDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_choose, null);
        TextView cancel = view.findViewById(R.id.choosepage_cancel);
        TextView sure = view.findViewById(R.id.choosepage_sure);
        final EditText edittext = view.findViewById(R.id.choosepage_edittext);
        edittext.setFilters(new InputFilter[]{new InputFilterMinMax(1, mAlertPage)});
        final Dialog dialog = builder.create();
        dialog.show();
        dialog.getWindow().setContentView(view);
        //使editext可以唤起软键盘
        dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        sure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getBarcodeDataByCondition(Integer.parseInt(edittext.getText().toString()));
                dialog.dismiss();
            }
        });
    }

    private String getScanTitle(int value) {
        switch (value) {
            case Constant.EMPTY_TASK_SCAN:
                return mContext.getString(R.string.empty_task_scan);
            case Constant.UNLOADING_SCAN:
                return mContext.getString(R.string.unloading_scan);
        }
        return mContext.getString(R.string.empty_task_scan);
    }

    private String cutTime(String time) {
        if (WMSUtils.isNotEmpty(time) && time.length() >= 10) {
            time = time.substring(0, 10);
        }
        return time;
    }


    private void startScanActivity() {
        Intent intent = new Intent();
        intent.setClass(mContext, ScanCaptureAct.class);
        this.startActivityForResult(intent, RESULT_CODE);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data != null) {
            result = data.getExtras().containsKey("SCAN_RESULT") ? data.getExtras().getString("SCAN_RESULT") : null;
            if (result != null) {
                scanBarcodeData(result);
            }
        }
    }

    private void scanBarcodeData(String code) {
        String userCode = WMSUtils.getData(Constant.LOGIN_NAME);
        HttpInterface.getInsstance().scanBarcodeData(new ProgressSubscriber<String>
                (mContext, dataListener), userCode, code);
    }

    SubscriberOnNextListener dataListener = new SubscriberOnNextListener<String>() {
        @Override
        public void onNext(String str) {
//            scanView.setTextColor(getResources().getColor(R.color.black));
              WMSUtils.showLong(mContext.getString(R.string.scan_success) + result);
            getBarcodeDataByCondition(pageNo);
        }

        @Override
        public void onError(String str) {
//            scanView.setTextColor(getResources().getColor(R.color.red));
//            scanView.setText(mContext.getString(R.string.scan_error) + result);
            WMSUtils.showLong(mContext.getString(R.string.scan_error) + result);
        }
    };

    private void getBarcodeDataByCondition(int page) {
        upPageNo = page;
        String condition = "";
        String condition2 = "";
        String orderby = "id desc";
        HttpInterface.getInsstance().getBarcodeDataByCondition(new ProgressSubscriber<BarcodeOrderBean>
                (mContext, barcodeListener), upPageNo, pageSize, orderby, condition, condition2);
    }

    SubscriberOnNextListener barcodeListener = new SubscriberOnNextListener<BarcodeOrderBean>() {

        @Override
        public void onNext(BarcodeOrderBean barcodeOrderBean) {
            pageNo = upPageNo;
            barcodeDataBeans = barcodeOrderBean.getDatas();
            setData(barcodeDataBeans);
            int size = barcodeOrderBean.getCount();
            int alter = size / pageSize + 1;
            if (size % pageSize == 0) {
                alter = alter - 1;
            }
            mAlertPage = alter;
            freshMenuText(size, alter);
        }

        @Override
        public void onError(String str) {

        }
    };

    @OnClick({R.id.firstPage, R.id.upPage, R.id.downPage, R.id.lastPage, R.id.jumpPage, R.id.scanUnloadingBtn})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.firstPage:
                getBarcodeDataByCondition(1);
                break;
            case R.id.upPage:
                getBarcodeDataByCondition(pageNo - 1);
                break;
            case R.id.downPage:
                getBarcodeDataByCondition(pageNo + 1);
                break;
            case R.id.lastPage:
                getBarcodeDataByCondition(mAlertPage);
                break;
            case R.id.jumpPage:
                showJumpDialog();
                break;
            case R.id.scanUnloadingBtn:
                startScanActivity();
                break;
        }
    }

}