Jelajahi Sumber

增加工单物料核界面

ChengJH 1 tahun lalu
induk
melakukan
960083f0de

+ 27 - 0
app/src/main/java/com/uas/pda_smart_com_lg/bean/StockTaskMultipleBean.java

@@ -27,6 +27,7 @@ public class StockTaskMultipleBean {
     private String PR_SPEC;
     private double PD_OUTQTY;
     private double PD_RESTQTY;
+    private double PD_RESTQTY1;
     private double PR_ZXBZS;
     private String BAR_LOCATION;
     private String PD_BATCHCODE;
@@ -35,8 +36,34 @@ public class StockTaskMultipleBean {
     private String DC;
     private double INQTY;
     private double PBQTY;
+    private double PD_PDAQTY;
+    private double PD_PDAQTY1;
     private List<NOSBean> NOS;
 
+    public double getPD_PDAQTY() {
+        return PD_PDAQTY;
+    }
+
+    public void setPD_PDAQTY(double PD_PDAQTY) {
+        this.PD_PDAQTY = PD_PDAQTY;
+    }
+
+    public double getPD_PDAQTY1() {
+        return PD_PDAQTY1;
+    }
+
+    public void setPD_PDAQTY1(double PD_PDAQTY1) {
+        this.PD_PDAQTY1 = PD_PDAQTY1;
+    }
+
+    public double getPD_RESTQTY1() {
+        return PD_RESTQTY1;
+    }
+
+    public void setPD_RESTQTY1(double PD_RESTQTY1) {
+        this.PD_RESTQTY1 = PD_RESTQTY1;
+    }
+
     public double getINQTY() {
         return INQTY;
     }

+ 23 - 22
app/src/main/java/com/uas/pda_smart_com_lg/fragment/IOCOutMakeMaterialOper.java

@@ -1538,28 +1538,29 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
     }
 
     private void spliteBarcode(final String currentBarcode, String barRemain, String restqty) {
-        new AlertDialog.Builder(getActivity()).setTitle("提示")
-                .setMessage("条码数量(" + barRemain + ")大于剩余需要采集数量(" + restqty + "),确认拆分?")
-                .setPositiveButton("拆分", new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        if (!CommonUtil.isRepeatClick())
-                            breakingBtnClickEvent(currentBarcode,"0");
-                    }
-                }).setNeutralButton("确认出库", new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        if (!CommonUtil.isRepeatClick())
-                            breakingBtnClickEvent(currentBarcode,"-1");
-                    }
-                })
-                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        dialog.dismiss();
-                    }
-                })
-                .show();
+//        new AlertDialog.Builder(getActivity()).setTitle("提示")
+//                .setMessage("条码数量(" + barRemain + ")大于剩余需要采集数量(" + restqty + "),确认拆分?")
+//                .setPositiveButton("拆分", new DialogInterface.OnClickListener() {
+//                    @Override
+//                    public void onClick(DialogInterface dialog, int which) {
+//                        if (!CommonUtil.isRepeatClick())
+//                            breakingBtnClickEvent(currentBarcode,"0");
+//                    }
+//                }).setNeutralButton("确认出库", new DialogInterface.OnClickListener() {
+//                    @Override
+//                    public void onClick(DialogInterface dialog, int which) {
+//                        if (!CommonUtil.isRepeatClick())
+//                            breakingBtnClickEvent(currentBarcode,"-1");
+//                    }
+//                })
+//                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
+//                    @Override
+//                    public void onClick(DialogInterface dialog, int which) {
+//                        dialog.dismiss();
+//                    }
+//                })
+//                .show();
+        breakingBtnClickEvent(currentBarcode,"-1");
     }
 
     /**

+ 6 - 0
app/src/main/java/com/uas/pda_smart_com_lg/fragment/IndexWareHouseContentFragment.java

@@ -127,6 +127,12 @@ public class IndexWareHouseContentFragment extends BaseFragment implements Adapt
                     getFragmentManager().beginTransaction().addToBackStack(null)
                             .replace(R.id.container_function_fragment, fragment).commit();
                     break;
+                //工单物料核对
+                case GloableParams.WORK_ORDER_MATERIAL_CHECK:
+                    fragment = new WorkOrderMaterialCheckFragment();
+                    getFragmentManager().beginTransaction().addToBackStack(null)
+                            .replace(R.id.container_function_fragment, fragment).commit();
+                    break;
                     //条码数量修改
                 case GloableParams.GRIDNAME_MODIFY_QUANTITY:
                     fragment = new ModifyBarcodeQuantityFragment();

+ 175 - 0
app/src/main/java/com/uas/pda_smart_com_lg/fragment/WorkDataSummaryFragment.java

@@ -0,0 +1,175 @@
+package com.uas.pda_smart_com_lg.fragment;
+
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.android.volley.Request;
+import com.bin.david.form.core.SmartTable;
+import com.bin.david.form.data.column.Column;
+import com.bin.david.form.data.format.IFormat;
+import com.bin.david.form.data.table.TableData;
+import com.uas.pda_smart_com_lg.R;
+import com.uas.pda_smart_com_lg.bean.StockTaskMultipleBean;
+import com.uas.pda_smart_com_lg.global.GloableParams;
+import com.uas.pda_smart_com_lg.util.CommonUtil;
+import com.uas.pda_smart_com_lg.util.FastjsonUtil;
+import com.uas.pda_smart_com_lg.util.HttpCallback;
+import com.uas.pda_smart_com_lg.util.HttpParams;
+import com.uas.pda_smart_com_lg.util.VolleyRequest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by RaoMeng on 2021/4/22
+ * Desc: 备料数据汇总
+ */
+public class WorkDataSummaryFragment extends BaseFragment {
+    private SmartTable mSmartTable;
+    private Column<String> mProdcodeColumn, mOutqtyColumn;
+    private Column<Double> mPdaqtyColumn, mDetailColumn,mPdaqtytColumn;
+    private TableData<StockTaskMultipleBean> mTableData;
+    private TextView mNumTextView;
+    private CheckBox mCheckBox;
+    private String mPiid, mInouno;
+    private List<StockTaskMultipleBean> mStockTaskMultipleBeans;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fragment_stock_data_summary;
+    }
+
+    @Override
+    protected void initViews() {
+        setTitle("备料数据汇总");
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            mInouno = bundle.getString("pi_inoutno");
+            mPiid = bundle.getString("pi_id");
+        }
+
+        mNumTextView = root.findViewById(R.id.stock_data_summary_num_tv);
+        mCheckBox = root.findViewById(R.id.stock_data_summary_cb);
+        mSmartTable = root.findViewById(R.id.stock_data_summary_st);
+
+        CommonUtil.getDefaultTable(mActivity, mSmartTable);
+//        mTypeColumn = new Column<String>("  型号  ", "PR_ORISPECCODE");
+        mProdcodeColumn = new Column<String>("物料编号", "PD_PRODCODE");
+        mOutqtyColumn = new Column<String>("名称", "PR_DETAIL");
+        mPdaqtyColumn = new Column<Double>("出库数量", "PD_OUTQTY", new IFormat<Double>() {
+            @Override
+            public String format(Double aDouble) {
+                return CommonUtil.doubleFormat(aDouble);
+            }
+        });
+        mPdaqtytColumn = new Column<Double>("扫码出库数量", "PD_PDAQTY", new IFormat<Double>() {
+            @Override
+            public String format(Double aDouble) {
+                return CommonUtil.doubleFormat(aDouble);
+            }
+        });
+        mDetailColumn = new Column<Double>("扫码核对数量", "PD_PDAQTY1", new IFormat<Double>() {//PD_RESTQTY
+            @Override
+            public String format(Double aDouble) {
+                return CommonUtil.doubleFormat(aDouble);
+            }
+        });
+    }
+
+    @Override
+    protected void initEvents() {
+        mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                getDataList();
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+        mNumTextView.setText("单号:" + mInouno);
+
+        mStockTaskMultipleBeans = new ArrayList<>();
+        setTableData(mStockTaskMultipleBeans);
+
+        getDataList();
+    }
+
+    private void setTableData(List<StockTaskMultipleBean> filterTableData) {
+        mTableData = new TableData<StockTaskMultipleBean>("出库单列表", filterTableData,
+                mOutqtyColumn, mProdcodeColumn,mPdaqtyColumn, mPdaqtytColumn,mDetailColumn);
+        mSmartTable.setTableData(mTableData);
+        mSmartTable.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                mSmartTable.postInvalidate();
+            }
+        }, 100);
+    }
+
+    private void getDataList() {
+        progressDialog.show();
+        mStockTaskMultipleBeans.clear();
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_OUTMATERIAL_GETPREMATERIALLIST)
+                .method(Request.Method.POST)
+                .addParam("ids", mPiid)
+                .addParam("showall", mCheckBox.isChecked() ? "-1" : "0")
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    String result = o.toString();
+                    JSONObject resultObject = JSON.parseObject(result);
+                    JSONArray dataArray = resultObject.getJSONArray("data");
+                    if (dataArray != null && dataArray.size() > 0) {
+                        for (int i = 0; i < dataArray.size(); i++) {
+                            JSONObject dataObject = dataArray.getJSONObject(i);
+                            if (dataObject != null) {
+                                StockTaskMultipleBean stockTaskMultipleBean = new StockTaskMultipleBean();
+                                stockTaskMultipleBean.setPD_PRODCODE(FastjsonUtil.getText(dataObject, "PD_PRODCODE"));
+                                stockTaskMultipleBean.setPR_DETAIL(FastjsonUtil.getText(dataObject, "PR_DETAIL"));
+                                stockTaskMultipleBean.setPD_OUTQTY(FastjsonUtil.getDouble(dataObject, "PD_OUTQTY"));
+                                stockTaskMultipleBean.setPD_PDAQTY(FastjsonUtil.getDouble(dataObject, "PD_PDAQTY"));
+                                stockTaskMultipleBean.setPD_PDAQTY1(FastjsonUtil.getDouble(dataObject, "PD_PDAQTY1"));
+                                //新增型号
+                                stockTaskMultipleBean.setPR_ORISPECCODE(FastjsonUtil.getText(dataObject,"PR_ORISPECCODE"));
+
+                                mStockTaskMultipleBeans.add(stockTaskMultipleBean);
+                            }
+                        }
+                    }
+                    setTableData(mStockTaskMultipleBeans);
+                } catch (Exception e) {
+                    setTableData(mStockTaskMultipleBeans);
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                setTableData(mStockTaskMultipleBeans);
+                progressDialog.dismiss();
+                CommonUtil.toastNoRepeat(mActivity, failStr);
+            }
+        });
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+}

+ 311 - 0
app/src/main/java/com/uas/pda_smart_com_lg/fragment/WorkOrderCollectFragment.java

@@ -0,0 +1,311 @@
+package com.uas.pda_smart_com_lg.fragment;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.android.volley.Request;
+import com.uas.pda_smart_com_lg.R;
+import com.uas.pda_smart_com_lg.activity.FunctionActivity;
+import com.uas.pda_smart_com_lg.global.GloableParams;
+import com.uas.pda_smart_com_lg.listener.MyEditorActionListener;
+import com.uas.pda_smart_com_lg.util.CameraUtil;
+import com.uas.pda_smart_com_lg.util.CommonUtil;
+import com.uas.pda_smart_com_lg.util.FastjsonUtil;
+import com.uas.pda_smart_com_lg.util.FragmentUtils;
+import com.uas.pda_smart_com_lg.util.HttpCallback;
+import com.uas.pda_smart_com_lg.util.HttpParams;
+import com.uas.pda_smart_com_lg.util.VolleyRequest;
+import com.uas.pda_smart_com_lg.view.ClearableEditText;
+import com.uuzuche.lib_zxing.activity.CaptureActivity;
+import com.uuzuche.lib_zxing.activity.CodeUtils;
+
+/**
+ * Created by RaoMeng on 2024/7/2
+ * Desc: 工单物料核对采集页面
+ */
+public class WorkOrderCollectFragment extends BaseFragment implements View.OnClickListener {
+    private static final int SCAN_BARCODE_CODE = 101;
+    private ClearableEditText mTagEditText, mBarcodeEditText;
+    private ImageView mScanImageView;
+    private TextView mResultTextView, mNumTextView, mClassTextView;
+    private Button mMoreButton;
+    private PopupWindow mMenuPopupWindow;
+    private String pi_inoutno, pi_id, pi_class;
+    private CheckBox cb_caiji;
+    private boolean isChecked=false;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fragment_inventory_collect;
+    }
+
+    @Override
+    protected void initViews() {
+        ((FunctionActivity) getActivity()).setTitle("工单物料核对");
+        ((FunctionActivity) getActivity()).setMoreBtnVisible(true);
+
+        mMoreButton = mActivity.findViewById(R.id.btn_actionbar_more);
+        mTagEditText = root.findViewById(R.id.inventory_collect_tag_et);
+        mBarcodeEditText = root.findViewById(R.id.inventory_collect_barcode_et);
+        mScanImageView = root.findViewById(R.id.inventory_collect_scan_iv);
+        mResultTextView = root.findViewById(R.id.inventory_collect_result_tv);
+        mNumTextView = root.findViewById(R.id.inventory_collect_num_tv);
+        mClassTextView = root.findViewById(R.id.inventory_collect_class_tv);
+        cb_caiji=root.findViewById(R.id.cb_caiji);
+
+        mBarcodeEditText.requestFocus();
+    }
+
+    @Override
+    protected void initEvents() {
+        mMoreButton.setOnClickListener(this);
+        mScanImageView.setOnClickListener(this);
+        cb_caiji.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                WorkOrderCollectFragment.this.isChecked=isChecked;
+            }
+        });
+//        mTagEditText.setOnFocusChangeListener(new View.OnFocusChangeListen) {
+//            @Override
+//            public void onFocusChange(View v, boolean hasFocus) {
+//                if (!hasFocus) {
+//                    String tag = mTagEditText.getText().toString().trim();
+//                    SharedPreUtil.saveString(mActivity, Constants.FLAG.INVENTORY_DC_TIME_CACHE, tag);
+//                }
+//            }
+//        });
+//
+//        CommonUtil.setEditorActionListener(mTagEditText, new MyEditorActionListener() {
+//            @Override
+//            public void MyEditorAction(String text, int actionId, KeyEvent event) {
+//                SharedPreUtil.saveString(mActivity, Constants.FLAG.INVENTORY_DC_TIME_CACHE, text);
+//            }
+//        });
+
+        CommonUtil.setEditorActionListener(mBarcodeEditText, new MyEditorActionListener() {
+            @Override
+            public void MyEditorAction(String text, int actionId, KeyEvent event) {
+//                String deadLine = mTagEditText.getText().toString().trim();
+                String barcode = mBarcodeEditText.getText().toString().trim();
+
+//                if (TextUtils.isEmpty(deadLine)) {
+//                    CommonUtil.toastNoRepeat(mActivity, "请输入临界校验日期");
+//                    return;
+//                }
+
+                if (TextUtils.isEmpty(barcode)) {
+                    CommonUtil.toastNoRepeat(mActivity, "请采集条码");
+                    return;
+                }
+
+                progressDialog.show();
+
+                VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_BARSTOCK_GETBARCODEINFO)
+                        .method(Request.Method.GET)
+                        .tag(TAG + "getbarcodeinfo")
+                        .flag(0)
+                        .addParam("inoutno", pi_inoutno)
+//                        .addParam("deadline", deadLine)
+                        .addParam("barcode", barcode)
+                        .addParam("iscancel",isChecked+"")
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+
+                        try {
+                            mBarcodeEditText.setText("");
+                            String result = o.toString();
+                            JSONObject resultObject = JSON.parseObject(result);
+                            JSONObject dataObject = resultObject.getJSONObject("data");
+                            if (dataObject != null) {
+                                String type = FastjsonUtil.getText(dataObject, "BI_TYPE");
+                                String prompt = "采集成功!";
+                                if (!"超期".equals(type)) {
+                                    mResultTextView.setTextColor(mActivity.getResources().getColor(R.color.black));
+                                    prompt = "采集成功!";
+                                } else {
+                                    mResultTextView.setTextColor(mActivity.getResources().getColor(R.color.red));
+                                    prompt = "采集成功!已超期";
+                                }
+
+                                mResultTextView.setVisibility(View.VISIBLE);
+                                mResultTextView.setText(prompt
+                                                + "\n物料:" + FastjsonUtil.getText(dataObject, "BI_PRODCODE")
+//                                        + "\n品牌:" + FastjsonUtil.getText(dataObject, "BI_BRAND")
+//                                        + "\nLOTNO:" + FastjsonUtil.getText(dataObject, "BI_LOTNO")
+//                                        + "\nDC:" + FastjsonUtil.getText(dataObject, "BI_DATECODE")
+                                                + "\n型号:" + FastjsonUtil.getText(dataObject, "PR_ORISPECCODE")
+                                                + "\n条码号:" + FastjsonUtil.getText(dataObject, "BI_BARCODE")
+                                                + "\n数量:" + FastjsonUtil.getText(dataObject, "BI_INQTY")
+                                );
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        mBarcodeEditText.setText("");
+                        progressDialog.dismiss();
+                        CommonUtil.toastNoRepeat(mActivity, failStr);
+                        mResultTextView.setVisibility(View.VISIBLE);
+                        mResultTextView.setText(failStr);
+                    }
+                });
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            pi_inoutno = bundle.getString("pi_inoutno");
+            pi_id = bundle.getString("pi_id");
+            pi_class = bundle.getString("pi_class");
+
+            mNumTextView.setText(pi_inoutno);
+            mClassTextView.setText(pi_class);
+        }
+
+//        String deadLine = SharedPreUtil.getString(mActivity, Constants.FLAG.INVENTORY_DC_TIME_CACHE, "");
+//        if (!TextUtils.isEmpty(deadLine)) {
+//            mTagEditText.setText(deadLine);
+//            mBarcodeEditText.requestFocus();
+//        } else {
+//            mTagEditText.requestFocus();
+//        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.btn_actionbar_more:
+                showMoreMenu();
+                break;
+            case R.id.pop_inventory_collect_menu_1:
+                closeMenuPopupWindow();
+                Fragment fragment = new WorkDataSummaryFragment();
+                Bundle bundle = new Bundle();
+                bundle.putString("pi_inoutno", pi_inoutno);
+                bundle.putString("pi_id", pi_id);
+                fragment.setArguments(bundle);
+                FragmentUtils.switchFragment(this, fragment);
+                break;
+            case R.id.pop_inventory_collect_menu_2:
+                closeMenuPopupWindow();
+                fragment = new WorkDataSummaryFragment();
+                bundle = new Bundle();
+                bundle.putString("pi_inoutno", pi_inoutno);
+                bundle.putString("pi_id", pi_id);
+                fragment.setArguments(bundle);
+                FragmentUtils.switchFragment(this, fragment);
+                break;
+            case R.id.inventory_collect_scan_iv:
+                if (CameraUtil.hasCamera()) {
+                    if (root.findFocus() != null) {
+                        Intent intent = new Intent();
+                        intent.setClass(mActivity, CaptureActivity.class);
+                        startActivityForResult(intent, SCAN_BARCODE_CODE);
+                    }
+                } else {
+                    CommonUtil.toastNoRepeat(mActivity, getString(R.string.no_camera_detected));
+                }
+                break;
+        }
+    }
+
+
+    /**
+     * 展示扩展菜单
+     */
+    private void showMoreMenu() {
+        View view = View.inflate(getActivity(), R.layout.pop_inventory_collect_menu, null);
+        Button detailBtn = (Button) view.findViewById(R.id.pop_inventory_collect_menu_1);
+        Button summaryBtn = (Button) view.findViewById(R.id.pop_inventory_collect_menu_2);
+        summaryBtn.setText("汇总明细");
+        detailBtn.setOnClickListener(this);
+        summaryBtn.setOnClickListener(this);
+        detailBtn.setVisibility(View.GONE);
+
+        mMenuPopupWindow = new PopupWindow(view, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
+        mMenuPopupWindow.setBackgroundDrawable(new BitmapDrawable());
+        mMenuPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                closeMenuPopupWindow();
+            }
+        });
+        CommonUtil.setBackgroundAlpha(getActivity(), 0.5f);
+        mMenuPopupWindow.showAsDropDown(mMoreButton);
+    }
+
+    private void closeMenuPopupWindow() {
+        if (mMenuPopupWindow != null) {
+            mMenuPopupWindow.dismiss();
+            CommonUtil.setBackgroundAlpha(mActivity, 1f);
+        }
+    }
+
+    @Override
+    public void onHiddenChanged(boolean hidden) {
+        super.onHiddenChanged(hidden);
+        if (!hidden) {
+            ((FunctionActivity) getActivity()).setTitle("工单物料核对");
+            ((FunctionActivity) getActivity()).setMoreBtnVisible(true);
+            mBarcodeEditText.requestFocus();
+        } else {
+            ((FunctionActivity) getActivity()).setMoreBtnVisible(false);
+        }
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode != Activity.RESULT_OK) {
+            return;
+        }
+        if (requestCode == SCAN_BARCODE_CODE && data != null) {
+            if (data.getExtras() != null) {
+                String result = data.getExtras().getString(CodeUtils.RESULT_STRING);
+                mBarcodeEditText.setText(result);
+                mBarcodeEditText.setSelection(result.length());
+            }
+        }
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        ((FunctionActivity) getActivity()).setMoreBtnVisible(false);
+    }
+}

+ 453 - 0
app/src/main/java/com/uas/pda_smart_com_lg/fragment/WorkOrderMaterialCheckFragment.java

@@ -0,0 +1,453 @@
+package com.uas.pda_smart_com_lg.fragment;
+
+import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.pda_smart_com_lg.R;
+import com.uas.pda_smart_com_lg.activity.FunctionActivity;
+import com.uas.pda_smart_com_lg.application.PdaApplication;
+import com.uas.pda_smart_com_lg.bean.IOCOutMakeMaterialFuzzySearch;
+import com.uas.pda_smart_com_lg.bean.StorageInBillBean;
+import com.uas.pda_smart_com_lg.global.GloableParams;
+import com.uas.pda_smart_com_lg.util.CommonUtil;
+import com.uas.pda_smart_com_lg.util.Constants;
+import com.uas.pda_smart_com_lg.util.FastjsonUtil;
+import com.uas.pda_smart_com_lg.util.FragmentUtils;
+import com.uas.pda_smart_com_lg.util.HttpCallback;
+import com.uas.pda_smart_com_lg.util.HttpParams;
+import com.uas.pda_smart_com_lg.util.JsonTools;
+import com.uas.pda_smart_com_lg.util.MyArrayAdapter;
+import com.uas.pda_smart_com_lg.util.VolleyRequest;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.ButterKnife;
+
+/**
+ * Created by RaoMeng on 2024/7/2
+ * Desc: 工单物料核对
+ */
+public class WorkOrderMaterialCheckFragment extends BaseFragment {
+    private AutoCompleteTextView mNumEdittext;
+    private ImageView mCleanIv;
+    private Button mSubmitButton;
+    private ListView mNumListView;
+    private InputMethodManager mInputMethodManager;
+    private AdapterListView adapterListView;
+    private IOCOutMakeMaterialFuzzySearch fuzzySearchData;
+    private MyArrayAdapter<String> fuzzyStringAdapter;
+    private List<StorageInBillBean> mBillList;
+    private PopupWindow listViewPopupWindow;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fragment_inventory_bill;
+    }
+
+    @Override
+    protected void initViews() {
+        ((FunctionActivity) getActivity()).setTitle("工单物料核对");
+
+        mNumEdittext = root.findViewById(R.id.inventory_bill_num_et);
+        mCleanIv = root.findViewById(R.id.inventory_bill_clear_iv);
+        mSubmitButton = root.findViewById(R.id.inventory_bill_submit_btn);
+        mNumListView = root.findViewById(R.id.inventory_bill_list_lv);
+
+        //弹出软键盘
+        mInputMethodManager = (InputMethodManager) root.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+        mInputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
+        mNumEdittext.requestFocus();
+        mNumEdittext.setThreshold(1);
+
+        mBillList = (List<StorageInBillBean>) PdaApplication.getDataCacheFromMap(Constants.FLAG.INVENTORY_BILL_LIST_CACHE);
+        if (mBillList == null || mBillList.size() == 0) {
+            mBillList = new ArrayList<>();
+            adapterListView = new AdapterListView(getActivity(), R.layout.item_inventory_bill_list, mBillList);
+            mNumListView.setAdapter(adapterListView);
+        } else {
+            adapterListView = new AdapterListView(getActivity(), R.layout.item_inventory_bill_list, mBillList);
+            mNumListView.setAdapter(adapterListView);
+        }
+    }
+
+    @Override
+    protected void initEvents() {
+        mCleanIv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mNumEdittext.setText("");
+            }
+        });
+
+        mNumListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                rowClickEvent(i);
+            }
+        });
+        mNumListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
+            @Override
+            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
+                //把listView 的item传过去
+                showListPopupWindow(i);
+                return true;
+            }
+        });
+        mNumEdittext.addTextChangedListener(inOutNoTextWatcher);
+
+        mNumEdittext.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                getStockChecks();
+            }
+        });
+
+        mNumEdittext.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_SEND
+                        || actionId == EditorInfo.IME_ACTION_SEARCH
+                        || actionId == EditorInfo.IME_ACTION_DONE
+                        || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
+                    getStockChecks();
+                    return true;
+                }
+                return false;
+            }
+        });
+
+        mSubmitButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getStockChecks();
+            }
+        });
+    }
+
+    private void getStockChecks() {
+        if (TextUtils.isEmpty(mNumEdittext.getText().toString().trim())) {
+            CommonUtil.toastNoRepeat(getActivity(), "请输入盘点单号");
+        } else if (CommonUtil.isStringContainsSpecialChar(mNumEdittext.getText().toString().trim())) {
+            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+        } else {
+            //判断单号和仓库组合是否已经存在于变量orders中
+            boolean isExist = false;
+            for (int i = 0; i < mBillList.size(); i++) {
+                if ((mBillList.get(i).getPI_INOUTNO()).equals(mNumEdittext.getText().toString().trim())) {
+                    isExist = true;
+                    break;
+                }
+            }
+            if (isExist) {
+                Toast.makeText(getActivity(), "单号重复", Toast.LENGTH_SHORT).show();
+                reset();
+            } else {
+                submitBtnClick();
+            }
+        }
+    }
+
+    @Override
+    protected void initDatas() {
+
+    }
+
+
+    private TextWatcher inOutNoTextWatcher = new TextWatcher() {
+        @Override
+        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+        }
+
+        @Override
+        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+            //当字数超过3个,自动弹出输入提示框
+            if (charSequence.length() >= 3) {
+                if (!charSequence.toString().matches(Constants.REGEX.NO_SYMBOL)) {
+                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.note_number_cannot_contain_special));
+                    mNumEdittext.setText(null);
+                    mNumEdittext.requestFocus();
+                } else {
+                    fuzzySearch();
+                }
+
+            }
+        }
+
+        @Override
+        public void afterTextChanged(Editable editable) {
+            if (mSubmitButton != null) {
+                if (editable.length() == 0) {
+                    mSubmitButton.setEnabled(false);
+                    mCleanIv.setVisibility(View.GONE);
+                } else {
+                    mSubmitButton.setEnabled(true);
+                    mCleanIv.setVisibility(View.VISIBLE);
+                }
+            }
+        }
+    };
+
+    //根据输入字母请求订单号,模糊搜索
+    private void fuzzySearch() {
+        String url = null;
+        try {
+            url = GloableParams.ADDRESS_OUTFUZZYSEARCH
+                    + "?inoutNo=" + URLEncoder.encode(mNumEdittext.getText().toString().toLowerCase(), "utf-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(url)
+                .tag(TAG + "fuzzysearch")
+                .flag(0)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                String result = o.toString();
+                List<String> autoStrings = new ArrayList<>();
+                fuzzySearchData = JsonTools.parseJsonToBean(result, IOCOutMakeMaterialFuzzySearch.class);
+                if (fuzzySearchData.getData() == null) {
+                } else {
+                    autoStrings.clear();
+                    fuzzyStringAdapter = new MyArrayAdapter<String>(mActivity, android.R.layout.simple_dropdown_item_1line, autoStrings);
+                    if (mNumEdittext != null) {
+                        mNumEdittext.setAdapter(fuzzyStringAdapter);
+                    }
+                    for (int i = 0; i < fuzzySearchData.getData().size(); i++) {
+                        fuzzyStringAdapter.add(fuzzySearchData.getData().get(i).getPI_INOUTNO());
+                    }
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                reset();
+                CommonUtil.toastNoRepeat(mActivity, failStr);
+            }
+        });
+    }
+
+    private void submitBtnClick() {
+        progressDialog.show();
+        String inOutNoString = mNumEdittext.getText().toString();
+        if (TextUtils.isEmpty(mNumEdittext.getText().toString())) {
+            return;
+        }
+
+        //发送请求至服务器进行确认
+        String url = null;
+        try {
+            url = GloableParams.ADDRESS_OUTGETPRODOUT
+                    + "?inoutNo=" + URLEncoder.encode(inOutNoString, "utf-8");
+        } catch (UnsupportedEncodingException e) {
+            url = GloableParams.ADDRESS_OUTGETPRODOUT
+                    + "?inoutNo=" + inOutNoString;
+            e.printStackTrace();
+        }
+
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(url)
+                .tag(TAG + "getprodout")
+                .flag(0)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    String result = o.toString();
+                    JSONObject resultObject = JSON.parseObject(result);
+                    JSONArray dataArray = resultObject.getJSONArray("data");
+                    if (dataArray == null || dataArray.size() <= 0) {
+                        return;
+                    }
+                    JSONObject dataObject = dataArray.getJSONObject(0);
+                    StorageInBillBean billBean = new StorageInBillBean();
+                    billBean.setPI_INOUTNO(FastjsonUtil.getText(dataObject, "PI_INOUTNO"));
+                    billBean.setPI_CLASS(FastjsonUtil.getText(dataObject, "PI_CLASS"));
+                    billBean.setPI_CARDCODE(FastjsonUtil.getText(dataObject, "PI_CARDCODE"));
+                    billBean.setPI_ID(FastjsonUtil.getLong(dataObject, "PI_ID"));
+                    billBean.setPI_PDASTATUS(FastjsonUtil.getText(dataObject, "PI_PDASTATUS"));
+                    billBean.setPI_STATUS(FastjsonUtil.getText(dataObject, "PI_STATUSCODE"));
+
+                    //判断单号和仓库组合是否已经存在于变量orders中
+                    for (int i = 0; i < mBillList.size(); i++) {
+                        if (!TextUtils.isEmpty(billBean.getPI_INOUTNO())
+                                && billBean.getPI_INOUTNO().equals(mBillList.get(i).getPI_INOUTNO())) {
+                            Toast.makeText(getActivity(), "单号重复", Toast.LENGTH_SHORT).show();
+                            reset();
+                            return;
+                        }
+                    }
+                    mBillList.add(0, billBean);
+                    adapterListView.notifyDataSetChanged();
+                    if (getActivity() != null) {
+                        mNumEdittext.getText().clear();
+                        CommonUtil.closeKeybord(((EditText) mNumEdittext), mActivity);
+                        if (progressDialog.isShowing())
+                            progressDialog.dismiss();
+                    }
+
+                } catch (Exception e) {
+
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                if (failStr != null) {
+                    CommonUtil.toastNoRepeat(mActivity, failStr);
+                }
+                reset();
+            }
+        });
+    }
+
+    private void showListPopupWindow(final int i) {
+        //点击删除移除ataList.get(i)数据
+        View view = LayoutInflater.from(getActivity()).inflate(R.layout.popupwindow_ioc_out_make_material_listview, null);
+        Button deleteBtn = (Button) view.findViewById(R.id.delete);
+        Button againBtn = (Button) view.findViewById(R.id.again);
+        againBtn.setVisibility(View.GONE);
+        deleteBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                deleteEvent(i);
+                closeListPopupWindow();
+            }
+        });
+        listViewPopupWindow = new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
+        listViewPopupWindow.setAnimationStyle(R.style.MenuAnimationFade);
+        listViewPopupWindow.setBackgroundDrawable(new BitmapDrawable());
+        CommonUtil.setBackgroundAlpha(mActivity, 0.5f);
+        listViewPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                closeListPopupWindow();
+            }
+        });
+        listViewPopupWindow.showAtLocation(mSubmitButton, Gravity.CENTER, 0, 0);
+    }
+
+    //关闭listView的PopupWindow
+    private void closeListPopupWindow() {
+        if (listViewPopupWindow != null) {
+            listViewPopupWindow.dismiss();
+            listViewPopupWindow = null;
+            CommonUtil.setBackgroundAlpha(mActivity, 1f);
+        }
+    }
+
+    /**
+     * 删除单据
+     *
+     * @param position
+     */
+    private void deleteEvent(final int position) {
+        try {
+            mBillList.remove(position);
+            adapterListView.notifyDataSetChanged();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    private void rowClickEvent(final int i) {
+        String pi_inoutno = mBillList.get(i).getPI_INOUTNO();
+        long pi_id = mBillList.get(i).getPI_ID();
+        String pi_class = mBillList.get(i).getPI_CLASS();
+        WorkOrderCollectFragment collectFragment = new WorkOrderCollectFragment();
+
+        Bundle bundle = new Bundle();
+        bundle.putString("pi_inoutno", pi_inoutno);
+        bundle.putString("pi_id", pi_id + "");
+        bundle.putString("pi_class", pi_class);
+
+        collectFragment.setArguments(bundle);
+
+        FragmentUtils.switchFragment(WorkOrderMaterialCheckFragment.this, collectFragment);
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+
+        CommonUtil.closeKeybord(((EditText) mNumEdittext), mActivity);
+        ButterKnife.unbind(this);
+        PdaApplication.putDataCache2Map(Constants.FLAG.INVENTORY_BILL_LIST_CACHE, mBillList);
+    }
+
+    public void reset() {
+        if (getActivity() != null) {
+            mNumEdittext.getText().clear();
+            CommonUtil.editTextGetFocus(mNumEdittext);
+            CommonUtil.openKeybord(((EditText) mNumEdittext), mActivity);
+            if (progressDialog.isShowing())
+                progressDialog.dismiss();
+        }
+    }
+
+    /**
+     * 页面listview 设置适配器
+     */
+    private class AdapterListView extends ArrayAdapter<StorageInBillBean> {
+        private int resourceId;
+
+        public AdapterListView(Context context, int resource, List<StorageInBillBean> objects) {
+            super(context, resource, objects);
+            resourceId = resource;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            StorageInBillBean data = getItem(position);
+            convertView = LayoutInflater.from(getContext()).inflate(resourceId, null);
+
+            ((TextView) convertView.findViewById(R.id.item_inventory_bill_num_tv)).setText(data.getPI_INOUTNO());
+
+            return convertView;
+        }
+
+    }
+}

+ 4 - 2
app/src/main/java/com/uas/pda_smart_com_lg/global/GloableParams.java

@@ -763,11 +763,12 @@ public class GloableParams {
     public static final String GRIDNAME_FINISHED_PRODUCT_STORAGE = "成品入库";
     public static final String GRIDNAME_FINISHED_PRODUCT_OUTBOUND = "成品出库";
     public static final String GRIDNAME_EQUIPMENT_CYCLECOUNT_OUTBOUND = "设备周期盘点";
+    public static final String WORK_ORDER_MATERIAL_CHECK= "工单物料核对";
     public static final String[] storageGridNames = {GRIDNAME_GOOD_SEARCH, GRIDNAME_BATCH_OPRATION,
             GRIDNAME_STORAGE_TRANSFER, GRIDNAME_MODIFY_QUANTITY, GRIDNAME_WORK_INVENTORY, GRIDNAME_BOM_CHECK,MENU_STORAGE_STOCK_INFO_COLLECT,
             GRIDNAME_FINISHED_PRODUCT_STORAGE,
             GRIDNAME_FINISHED_PRODUCT_OUTBOUND,
-            GRIDNAME_EQUIPMENT_CYCLECOUNT_OUTBOUND};
+            GRIDNAME_EQUIPMENT_CYCLECOUNT_OUTBOUND,WORK_ORDER_MATERIAL_CHECK};
     public static final int[] storageGridImgs = {R.drawable.storage_good_search,
             R.drawable.storage_bach_operation, R.drawable.storage_transfer,
             R.drawable.storage_work_inventory,
@@ -775,7 +776,8 @@ public class GloableParams {
             R.drawable.storage_transfer,
             R.drawable.ic_finished_product_storage,
             R.drawable.ic_finished_product_outbound,
-            R.drawable.equipment
+            R.drawable.equipment,
+            R.drawable.iv_hed
     };
     //DETAIL:搜索备料单号,下拉列表
     public static final String SPINNER_PREPARE_SEARCH = "搜索备料单号";

TEMPAT SAMPAH
app/src/main/res/drawable-xhdpi/iv_hed.png


+ 0 - 1
app/src/main/res/layout/fragment_stock_data_summary.xml

@@ -23,7 +23,6 @@
             android:id="@+id/stock_data_summary_cb"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:checked="true"
             android:text="未完成" />
     </LinearLayout>
 

+ 2 - 2
build.gradle

@@ -43,8 +43,8 @@ ext {
             targetSdkVersion : 28,
             compileSdkVersion: 28,
             buildToolsVersion: "28.0.3",
-            versionCode      : 30,
-            versionName      : "v2.3.7"
+            versionCode      : 33,
+            versionName      : "v2.3.9"
     ]
 
     depsVersion = [