浏览代码

智能上架(扫码), 默认为非单盘,增加友盟远程日志, 修改仓库物料查询列表, 增加本地异常记录,上架与结束上架清除列表数据,调整条码位置,智能上架(扫码) 增加列表数据, 及ID上传,修改进入出库采集页光标定位, 弹窗选择料号后光标跳转至条码号,修改入库采集增加修改条码与料号功能

songw 8 月之前
父节点
当前提交
c1d9315ca6
共有 31 个文件被更改,包括 1452 次插入21 次删除
  1. 5 3
      app/build.gradle
  2. 16 1
      app/proguard-rules.pro
  3. 4 0
      app/src/main/AndroidManifest.xml
  4. 2 2
      app/src/main/java/com/uas/xzc_electronic/application/PdaApplication.java
  5. 55 0
      app/src/main/java/com/uas/xzc_electronic/bean/MaterialInquiryBean.java
  6. 1 1
      app/src/main/java/com/uas/xzc_electronic/fragment/CaseNumberFragment.java
  7. 232 0
      app/src/main/java/com/uas/xzc_electronic/fragment/FindMaterialsFragment.java
  8. 2 2
      app/src/main/java/com/uas/xzc_electronic/fragment/IOCOutMakeMaterial.java
  9. 10 0
      app/src/main/java/com/uas/xzc_electronic/fragment/IndexWareHouseContentFragment.java
  10. 248 0
      app/src/main/java/com/uas/xzc_electronic/fragment/LightEmptyStorageSpaceFragment.java
  11. 205 0
      app/src/main/java/com/uas/xzc_electronic/fragment/MaterialVerificationMaterialFra.java
  12. 2 0
      app/src/main/java/com/uas/xzc_electronic/fragment/NewJltStorageInFilterListFragment.java
  13. 1 2
      app/src/main/java/com/uas/xzc_electronic/fragment/OutboundLis_Two_fragment.java
  14. 2 0
      app/src/main/java/com/uas/xzc_electronic/fragment/ReleaseAlarmFragment.java
  15. 1 0
      app/src/main/java/com/uas/xzc_electronic/fragment/StockBarcodeListFragment.java
  16. 1 1
      app/src/main/java/com/uas/xzc_electronic/fragment/UnpackingFragment.java
  17. 2 1
      app/src/main/java/com/uas/xzc_electronic/fragment/WHCheckBarcodeFragment.java
  18. 6 0
      app/src/main/java/com/uas/xzc_electronic/fragment/WHCheckContentFragment.java
  19. 2 0
      app/src/main/java/com/uas/xzc_electronic/fragment/WHTransferLocationFragment.java
  20. 47 2
      app/src/main/java/com/uas/xzc_electronic/global/GloableParams.java
  21. 10 2
      app/src/main/java/com/uas/xzc_electronic/util/CommonUtil.java
  22. 4 0
      app/src/main/java/com/uas/xzc_electronic/util/VolleyRequest.java
  23. 67 0
      app/src/main/java/com/uas/xzc_electronic/view/LayoutDrawFormat.java
  24. 二进制
      app/src/main/res/drawable-xhdpi/dianliangkongkucun.png
  25. 221 0
      app/src/main/res/layout/fra_find_materials.xml
  26. 183 0
      app/src/main/res/layout/fra_material_verification_material.xml
  27. 110 0
      app/src/main/res/layout/fragment_light_empty_storage_space.xml
  28. 2 2
      app/src/main/res/layout/fragment_whcheck_barcode.xml
  29. 1 0
      app/src/main/res/layout/pop_jlt_storage_in_box_menu.xml
  30. 8 0
      app/src/main/res/values/strings.xml
  31. 2 2
      build.gradle

+ 5 - 3
app/build.gradle

@@ -80,9 +80,11 @@ dependencies {
     implementation deps.permisson
     implementation deps.basePopup
     implementation deps.smartTable
-    implementation  'com.umeng.umsdk:common:9.4.0'// 必选
-    implementation  'com.umeng.umsdk:asms:1.2.3'// 必选
-    implementation 'com.umeng.umsdk:apm:1.4.0' // 错误分析升级为独立SDK,看crash数据请一定集成,可选
+    // 友盟基础组件库(所有友盟业务SDK都依赖基础组件库)
+    implementation 'com.umeng.umsdk:common:9.4.4' //(必选)
+    implementation 'com.umeng.umsdk:asms:1.4.1' // asms包依赖(必选)
+    implementation 'com.umeng.umsdk:apm:1.5.2' // U-APM包依赖(必选) 错误分析升级为独立SDK,看crash数据请一定集成
+
     implementation 'org.greenrobot:eventbus:3.1.1'
 }
 

+ 16 - 1
app/proguard-rules.pro

@@ -166,4 +166,19 @@
 ################################
 ##实体类
 #-keep class com.uas.yitao_newelectronic.bean.** {*;}
-##-keep .** {*;}
+##-keep .** {*;}
+
+
+
+#友盟混淆
+-keep class com.umeng.** {*;}
+-keep class org.repackage.** {*;}
+-keep class com.uyumao.** { *; }
+-keepclassmembers class * {
+   public <init> (org.json.JSONObject);
+}
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+

+ 4 - 0
app/src/main/AndroidManifest.xml

@@ -23,6 +23,10 @@
 
     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
 
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+    <uses-permission android:name="android.permission.INTERNET"/>
+
 
 
     <application

+ 2 - 2
app/src/main/java/com/uas/xzc_electronic/application/PdaApplication.java

@@ -99,12 +99,12 @@ public class PdaApplication extends Application {
 
     private void initUmeng() {
         //2.在Application.oncreate()中调用预初始化函数
-        UMConfigure.preInit(this, "6170b8b61c91e0671bb0da5a","umeng");
+        UMConfigure.preInit(this, "67d3da7748ac1b4f87e70f18","umeng");
         UMConfigure.setLogEnabled(true);
         //3.客户端用户同意隐私政策后,正式初始化友盟+SDK
         UMConfigure.init(
                 this,
-                "6170b8b61c91e0671bb0da5a",
+                "67d3da7748ac1b4f87e70f18",
                 "umeng",
                 UMConfigure.DEVICE_TYPE_PHONE, ""
         );

+ 55 - 0
app/src/main/java/com/uas/xzc_electronic/bean/MaterialInquiryBean.java

@@ -0,0 +1,55 @@
+package com.uas.xzc_electronic.bean;
+
+public
+        /**
+         * Created by sw on 2025-03-11
+         */
+class MaterialInquiryBean {
+
+    private String PL_SHELFCODE;
+    private String BAR_PRODCODE;
+    private String V_LOCATIONS;
+    private long V_TOTALCOUNT;
+    private long V_BARREMAIN;
+
+
+    public String getV_LOCATIONS() {
+        return V_LOCATIONS;
+    }
+
+    public void setV_LOCATIONS(String v_LOCATIONS) {
+        V_LOCATIONS = v_LOCATIONS;
+    }
+
+    public String getPL_SHELFCODE() {
+        return PL_SHELFCODE;
+    }
+
+    public void setPL_SHELFCODE(String PL_SHELFCODE) {
+        this.PL_SHELFCODE = PL_SHELFCODE;
+    }
+
+    public String getBAR_PRODCODE() {
+        return BAR_PRODCODE;
+    }
+
+    public void setBAR_PRODCODE(String BAR_PRODCODE) {
+        this.BAR_PRODCODE = BAR_PRODCODE;
+    }
+
+    public long getV_TOTALCOUNT() {
+        return V_TOTALCOUNT;
+    }
+
+    public void setV_TOTALCOUNT(long v_TOTALCOUNT) {
+        V_TOTALCOUNT = v_TOTALCOUNT;
+    }
+
+    public long getV_BARREMAIN() {
+        return V_BARREMAIN;
+    }
+
+    public void setV_BARREMAIN(long v_BARREMAIN) {
+        V_BARREMAIN = v_BARREMAIN;
+    }
+}

+ 1 - 1
app/src/main/java/com/uas/xzc_electronic/fragment/CaseNumberFragment.java

@@ -111,7 +111,7 @@ public class CaseNumberFragment extends BaseFragment{
                     }
                 });
 
-
+        storage_recharge_collect_et.requestFocus();
 
     }
 

+ 232 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/FindMaterialsFragment.java

@@ -0,0 +1,232 @@
+package com.uas.xzc_electronic.fragment;
+
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.volley.Request;
+import com.uas.xzc_electronic.R;
+import com.uas.xzc_electronic.activity.FunctionActivity;
+import com.uas.xzc_electronic.global.GloableParams;
+import com.uas.xzc_electronic.util.CommonUtil;
+import com.uas.xzc_electronic.util.HttpCallback;
+import com.uas.xzc_electronic.util.HttpParams;
+import com.uas.xzc_electronic.util.VolleyRequest;
+import com.uas.xzc_electronic.view.ClearableEditText;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public
+        /**
+         * Created by sw on 2025-03-10
+         */
+class FindMaterialsFragment extends BaseFragment {
+
+    private ClearableEditText cet_bar_code;
+    private Button bt_dianliang,bt_miedeng;
+    private TextView tv_msg;
+    private LinearLayout ll_content;
+    private TextView tv_liaohao,tv_name,tv_spc,tv_panshu,tv_number;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fra_find_materials;
+    }
+
+    @Override
+    protected void initViews() {
+        FunctionActivity.setTitle(getResources().getString(R.string.find_materials));
+        cet_bar_code = root.findViewById(R.id.cet_bar_code);
+        bt_dianliang = root.findViewById(R.id.bt_dianliang);
+        bt_miedeng = root.findViewById(R.id.bt_miedeng);
+        tv_msg = root.findViewById(R.id.tv_msg);
+
+        ll_content = root.findViewById(R.id.ll_content);
+        tv_liaohao = root.findViewById(R.id.tv_liaohao);
+        tv_name = root.findViewById(R.id.tv_name);
+        tv_spc = root.findViewById(R.id.tv_spc);
+        tv_panshu = root.findViewById(R.id.tv_panshu);
+        tv_number = root.findViewById(R.id.tv_number);
+    }
+
+    @Override
+    protected void initEvents() {
+        cet_bar_code.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_SEND
+                        || actionId == EditorInfo.IME_ACTION_DONE
+                        || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
+                    getEnterData();
+                    return true;
+                }
+                return false;
+            }
+        });
+
+        bt_dianliang.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getDianLiangData();
+            }
+        });
+
+        bt_miedeng.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getMieDengData();
+            }
+        });
+    }
+
+    private void getMieDengData() {
+        String code = cet_bar_code.getText().toString().trim();
+        if(TextUtils.isEmpty(code)){
+            CommonUtil.toastNoRepeat(mActivity, "请输入料号或条码号");
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_BAR_LIGHT_OFF)
+                .method(Request.Method.GET)
+                .addParam("code",code)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    JSONObject jsonObject = new JSONObject(o.toString());
+                    boolean success = jsonObject.getBoolean("success");
+                    if (success) {
+                        ll_content.setVisibility(View.GONE);
+                        tv_msg.setVisibility(View.VISIBLE);
+                        tv_msg.setTextColor(getResources().getColor(R.color.blue));
+                        tv_msg.setText(jsonObject.getString("data"));
+                        cet_bar_code.setText("");
+                        cet_bar_code.requestFocus();
+                    }
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                cet_bar_code.setText("");
+                cet_bar_code.requestFocus();
+                tv_msg.setVisibility(View.VISIBLE);
+                ll_content.setVisibility(View.GONE);
+                tv_msg.setText(failStr);
+                tv_msg.setTextColor(getResources().getColor(R.color.red));
+            }
+        });
+    }
+
+    private void getDianLiangData() {
+        String code = cet_bar_code.getText().toString().trim();
+        if(TextUtils.isEmpty(code)){
+            CommonUtil.toastNoRepeat(mActivity, "请输入料号或条码号");
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_BAR_LIGHT_ON)
+                .method(Request.Method.GET)
+                .addParam("code",code)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    JSONObject jsonObject = new JSONObject(o.toString());
+                    boolean success = jsonObject.getBoolean("success");
+                    if (success) {
+                        ll_content.setVisibility(View.GONE);
+                        tv_msg.setVisibility(View.VISIBLE);
+                        tv_msg.setTextColor(getResources().getColor(R.color.blue));
+                        tv_msg.setText(jsonObject.getString("data"));
+                    }
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                cet_bar_code.setText("");
+                cet_bar_code.requestFocus();
+                tv_msg.setVisibility(View.VISIBLE);
+                ll_content.setVisibility(View.GONE);
+                tv_msg.setText(failStr);
+                tv_msg.setTextColor(getResources().getColor(R.color.red));
+            }
+        });
+    }
+
+    private void getEnterData() {
+        String code = cet_bar_code.getText().toString().trim();
+        if(TextUtils.isEmpty(code)){
+            CommonUtil.toastNoRepeat(mActivity, "请输入料号或条码号");
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_GET_SHELF_PROD_DATA)
+                .method(Request.Method.GET)
+                .addParam("code",code)  //必填
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    JSONObject jsonObject = new JSONObject(o.toString());
+                    boolean success = jsonObject.getBoolean("success");
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    if (success) {
+                        tv_msg.setVisibility(View.GONE);
+                        ll_content.setVisibility(View.VISIBLE);
+                        tv_liaohao.setText(data.getString("PR_CODE"));
+                        tv_name.setText(data.getString("PR_DETAIL"));
+                        tv_spc.setText(data.getString("PR_SPEC"));
+                        tv_panshu.setText(data.getString("CN"));
+                        tv_number.setText(data.getString("BAR_REMAIN"));
+                    }
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                cet_bar_code.setText("");
+                cet_bar_code.requestFocus();
+                tv_msg.setVisibility(View.VISIBLE);
+                ll_content.setVisibility(View.GONE);
+                tv_msg.setText(failStr);
+                tv_msg.setTextColor(getResources().getColor(R.color.red));
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+}

+ 2 - 2
app/src/main/java/com/uas/xzc_electronic/fragment/IOCOutMakeMaterial.java

@@ -534,7 +534,7 @@ public class IOCOutMakeMaterial extends BaseFragment {
                                 dataBean.setPI_INOUTNO(JsonUtils.optStringNotNull(materialObject, "PI_INOUTNO"));
                                 dataBean.setPI_TITLE(JsonUtils.optStringNotNull(materialObject, "PI_TITLE"));
                                 dataBean.setPI_CARDCODE(JsonUtils.optStringNotNull(materialObject, "PI_CARDCODE"));
-                                dataBean.setPI_ID(JsonUtils.optLongNotNull(materialObject, "PD_WHCODE"));
+                                dataBean.setPI_ID(JsonUtils.optLongNotNull(materialObject, "PI_ID"));
                                 dataBean.setPI_STATUSCODE(JsonUtils.optStringNotNull(materialObject, "PI_STATUSCODE"));
                                 dataBean.setPI_PDASTATUS(JsonUtils.optStringNotNull(materialObject, "PI_PDASTATUS"));
 
@@ -573,7 +573,7 @@ public class IOCOutMakeMaterial extends BaseFragment {
                         }
                     }
                 } catch (Exception e) {
-
+                    e.printStackTrace();
                 }
 
             }

+ 10 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/IndexWareHouseContentFragment.java

@@ -176,6 +176,16 @@ public class IndexWareHouseContentFragment extends BaseFragment implements Adapt
                     getFragmentManager().beginTransaction().addToBackStack(null)
                             .replace(R.id.container_function_fragment, fragment).commit();
                     break;
+                case GloableParams.GRIDNAME_FIND_MATERIALS:     //找料
+                    fragment = new FindMaterialsFragment();
+                    getFragmentManager().beginTransaction().addToBackStack(null)
+                            .replace(R.id.container_function_fragment, fragment).commit();
+                    break;
+                case GloableParams.LIGHT_EMPTY_STORAGE_SPACE:     //点亮空仓位
+                    fragment = new LightEmptyStorageSpaceFragment();
+                    getFragmentManager().beginTransaction().addToBackStack(null)
+                            .replace(R.id.container_function_fragment, fragment).commit();
+                    break;
 
             }
             if (mFragment != null) {

+ 248 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/LightEmptyStorageSpaceFragment.java

@@ -0,0 +1,248 @@
+package com.uas.xzc_electronic.fragment;
+
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.volley.Request;
+import com.uas.xzc_electronic.R;
+import com.uas.xzc_electronic.activity.FunctionActivity;
+import com.uas.xzc_electronic.global.GloableParams;
+import com.uas.xzc_electronic.listener.MyEditorActionListener;
+import com.uas.xzc_electronic.util.CommonUtil;
+import com.uas.xzc_electronic.util.HttpCallback;
+import com.uas.xzc_electronic.util.HttpParams;
+import com.uas.xzc_electronic.util.VolleyRequest;
+import com.uas.xzc_electronic.view.ClearableEditText;
+
+
+public
+        /**
+         * Created by sw on 2024-12-19
+         */
+class LightEmptyStorageSpaceFragment extends BaseFragment{
+
+
+    private ClearableEditText cet_material_rack;
+    private Button bt_light_empty_storage_space,bt_extinguish_empty_storage_space;
+    private TextView tv_result;
+    private LinearLayout ll_result;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fragment_light_empty_storage_space;
+    }
+
+    @Override
+    protected void initViews() {
+        FunctionActivity.setTitle(getResources().getString(R.string.light_empty_storage_space));
+
+        cet_material_rack = root.findViewById(R.id.cet_material_rack);
+        bt_light_empty_storage_space = root.findViewById(R.id.bt_light_empty_storage_space);
+        bt_extinguish_empty_storage_space = root.findViewById(R.id.bt_extinguish_empty_storage_space);
+        tv_result = root.findViewById(R.id.tv_result);
+        ll_result = root.findViewById(R.id.ll_result);
+        cet_material_rack.requestFocus();
+    }
+
+    @Override
+    protected void initEvents() {
+        //料架回车
+        CommonUtil.setEditorActionListener(cet_material_rack, new MyEditorActionListener() {
+            @Override
+            public void MyEditorAction(String text, int actionId, KeyEvent event) {
+                if (!text.isEmpty()&&!cet_material_rack.getText().toString().isEmpty()){
+                    materialRackCode();
+                }
+            }
+        });
+
+        bt_light_empty_storage_space.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getlightEmptyStorage(cet_material_rack.getText().toString().trim());
+            }
+        });
+
+        bt_extinguish_empty_storage_space.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getExtinguishEmptyStorageSpace(cet_material_rack.getText().toString().trim());
+            }
+        });
+
+    }
+
+    private void getExtinguishEmptyStorageSpace(String shcode) {
+        String materialRack = cet_material_rack.getText().toString().trim();
+        if (TextUtils.isEmpty(materialRack)) {
+            CommonUtil.toastNoRepeat(mActivity, getResources().getString(R.string.Please_enter_the_material_rack));
+            cet_material_rack.requestFocus();
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest60(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_SHELF_LIGHT_OFF_EMPTY_LOCATIN)
+                .method(Request.Method.GET)
+                .addParam("shcode",shcode)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    org.json.JSONObject resultObject = new org.json.JSONObject(o.toString());
+                    ll_result.setVisibility(View.VISIBLE);
+                    if (resultObject.optBoolean("success")) {
+                        tv_result.setTextColor(getResources().getColor(R.color.blue));
+                        tv_result.setText(resultObject.getString("data"));
+                        cet_material_rack.setText("");
+                        cet_material_rack.requestFocus();
+                    }else {
+                        tv_result.setTextColor(getResources().getColor(R.color.red));
+                        tv_result.setText(resultObject.getString("message"));
+                    }
+                }catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                CommonUtil.toastNoRepeat(mActivity, failStr);
+                cet_material_rack.setText(null);
+                cet_material_rack.requestFocus();
+                ll_result.setVisibility(View.VISIBLE);
+                tv_result.setTextColor(getResources().getColor(R.color.red));
+                tv_result.setText(failStr);
+            }
+        });
+    }
+
+    private void getlightEmptyStorage(String shcode) {
+        String materialRack = cet_material_rack.getText().toString().trim();
+        if (TextUtils.isEmpty(materialRack)) {
+            CommonUtil.toastNoRepeat(mActivity, getResources().getString(R.string.Please_enter_the_material_rack));
+            cet_material_rack.requestFocus();
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest60(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_SHELF_LIGHT_ON_EMPTY_LOCATION)
+                .method(Request.Method.GET)
+                .addParam("shcode",shcode)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                org.json.JSONObject resultObject = new org.json.JSONObject(o.toString());
+                ll_result.setVisibility(View.VISIBLE);
+                if (resultObject.optBoolean("success")) {
+                    tv_result.setTextColor(getResources().getColor(R.color.blue));
+                    tv_result.setText(resultObject.getString("data"));
+                    cet_material_rack.setText("");
+                    cet_material_rack.requestFocus();
+                }else {
+                    tv_result.setTextColor(getResources().getColor(R.color.red));
+                    tv_result.setText(resultObject.getString("message"));
+                }
+                   }catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                CommonUtil.toastNoRepeat(mActivity, failStr);
+                cet_material_rack.setText(null);
+                cet_material_rack.requestFocus();
+                ll_result.setVisibility(View.VISIBLE);
+                tv_result.setTextColor(getResources().getColor(R.color.red));
+                tv_result.setText(failStr);
+            }
+        });
+    }
+
+    private void materialRackCode() {
+        String materialRack = cet_material_rack.getText().toString().trim();
+        if (TextUtils.isEmpty(materialRack)) {
+            CommonUtil.toastNoRepeat(mActivity, getResources().getString(R.string.Please_enter_the_material_rack));
+            cet_material_rack.requestFocus();
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_GET_SHELF)
+                .method(Request.Method.GET)
+                .addParam("shcode",materialRack)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    org.json.JSONObject resultObject = new org.json.JSONObject(o.toString());
+                    ll_result.setVisibility(View.VISIBLE);
+                    if (resultObject.optBoolean("success")) {
+                        tv_result.setTextColor(getResources().getColor(R.color.blue));
+                        tv_result.setText(getResources().getText(R.string.Shelf_validation_successful));
+                    }else {
+                        tv_result.setTextColor(getResources().getColor(R.color.red));
+                        tv_result.setText(resultObject.getString("message"));
+                    }
+                    cet_material_rack.requestFocus();
+                }catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                CommonUtil.toastNoRepeat(mActivity, failStr);
+                cet_material_rack.setText(null);
+                cet_material_rack.requestFocus();
+                ll_result.setVisibility(View.VISIBLE);
+                tv_result.setTextColor(getResources().getColor(R.color.red));
+                tv_result.setText(failStr);
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+
+    @Override
+    public void onHiddenChanged(boolean hidden) {
+        super.onHiddenChanged(hidden);
+//        if (!hidden) {
+//            FunctionActivity.setTitle(getResources().getString(R.string.free_listing));
+//            ((FunctionActivity) getActivity()).setMoreBtnVisible(true);
+//        }else {
+//            ((FunctionActivity) getActivity()).setMoreBtnVisible(false);
+//        }
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+//        ((FunctionActivity) getActivity()).setMoreBtnVisible(false);
+    }
+
+}

+ 205 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/MaterialVerificationMaterialFra.java

@@ -0,0 +1,205 @@
+package com.uas.xzc_electronic.fragment;
+
+import android.graphics.Color;
+import android.os.Handler;
+import android.support.v4.content.ContextCompat;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.android.volley.Request;
+import com.bin.david.form.core.SmartTable;
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.CellInfo;
+import com.bin.david.form.data.column.Column;
+import com.bin.david.form.data.format.bg.BaseCellBackgroundFormat;
+import com.bin.david.form.data.style.FontStyle;
+import com.bin.david.form.data.table.TableData;
+import com.uas.xzc_electronic.R;
+import com.uas.xzc_electronic.activity.FunctionActivity;
+import com.uas.xzc_electronic.bean.MaterialInquiryBean;
+import com.uas.xzc_electronic.global.GloableParams;
+import com.uas.xzc_electronic.util.CommonUtil;
+import com.uas.xzc_electronic.util.HttpCallback;
+import com.uas.xzc_electronic.util.HttpParams;
+import com.uas.xzc_electronic.util.VolleyRequest;
+import com.uas.xzc_electronic.view.ClearableEditText;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public
+        /**
+         * Created by sw on 2025-03-11
+         */
+class MaterialVerificationMaterialFra extends BaseFragment{
+
+    private ClearableEditText cet_liaojia,cet_liaohao;
+    private Button bt_query;
+    private TextView tv_msg;
+    private TextView tv_total_number_stocks,tv_total_number;
+    private RelativeLayout rl_number_summary;
+
+    private SmartTable mSmartTable;
+    private Column<String> PL_SHELFCODE,BAR_PRODCODE,V_LOCATIONS;
+    private Column<Long> V_TOTALCOUNT,V_BARREMAIN;
+    private TableData mTableData;
+    private List<MaterialInquiryBean> mTabBeans;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fra_material_verification_material;
+    }
+
+    @Override
+    protected void initViews() {
+        FunctionActivity.setTitle(getResources().getString(R.string.material_verification_material_rack));
+        cet_liaojia = root.findViewById(R.id.cet_liaojia);
+        cet_liaohao = root.findViewById(R.id.cet_liaohao);
+        bt_query = root.findViewById(R.id.bt_query);
+        tv_msg = root.findViewById(R.id.tv_msg);
+        tv_total_number_stocks = root.findViewById(R.id.tv_total_number_stocks);
+        tv_total_number = root.findViewById(R.id.tv_total_number);
+        rl_number_summary = root.findViewById(R.id.rl_number_summary);
+
+        mSmartTable = root.findViewById(R.id.st_data);
+    }
+
+    @Override
+    protected void initEvents() {
+        bt_query.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getQueryData();
+            }
+        });
+    }
+
+    private void getQueryData() {
+        String shcode = cet_liaojia.getText().toString().trim();
+        String prodcode = cet_liaohao.getText().toString().trim();
+        if(TextUtils.isEmpty(shcode) && TextUtils.isEmpty(prodcode)){
+            CommonUtil.toastNoRepeat(mActivity, "请输入料架或者料号");
+            return;
+        }
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
+                .url(GloableParams.ADDRESS_CHECK_SHELF_QUERY)
+                .method(Request.Method.GET)
+                .addParam("shcode",shcode)
+                .addParam("prodcode",prodcode)
+                .build(), new HttpCallback() {
+            @Override
+            public void onSuccess(int flag, Object o) throws Exception {
+                progressDialog.dismiss();
+                try {
+                    JSONObject jsonObject = new JSONObject(o.toString());
+                    boolean success = jsonObject.getBoolean("success");
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    if (success) {
+                        tv_msg.setVisibility(View.GONE);
+                        rl_number_summary.setVisibility(View.VISIBLE);
+                        mSmartTable.setVisibility(View.VISIBLE);
+                        tv_total_number_stocks.setText(data.getString("V_TOTALCOUNT"));
+                        tv_total_number.setText(data.getString("V_BARREMAIN"));
+                        mTabBeans.clear();
+                        JSONArray data1 = data.getJSONArray("data");
+                        for (int i = 0; i < data1.length(); i++) {
+                            JSONObject jsonObject1 = data1.getJSONObject(i);
+                            MaterialInquiryBean materialInquiryBean = new MaterialInquiryBean();
+                            materialInquiryBean.setPL_SHELFCODE(jsonObject1.getString("PL_SHELFCODE"));
+                            materialInquiryBean.setBAR_PRODCODE(jsonObject1.getString("BAR_PRODCODE"));
+                            materialInquiryBean.setV_LOCATIONS(jsonObject1.getString("V_LOCATIONS"));
+                            materialInquiryBean.setV_TOTALCOUNT(jsonObject1.getLong("V_TOTALCOUNT"));
+                            materialInquiryBean.setV_BARREMAIN(jsonObject1.getLong("V_BARREMAIN"));
+                            mTabBeans.add(materialInquiryBean);
+                        }
+                        setFilterTableData(mTabBeans);
+                    }
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFail(int flag, String failStr) throws Exception {
+                progressDialog.dismiss();
+                cet_liaojia.setText("");
+                cet_liaojia.requestFocus();
+                tv_msg.setVisibility(View.VISIBLE);
+                tv_msg.setText(failStr);
+                tv_msg.setTextColor(getResources().getColor(R.color.red));
+                rl_number_summary.setVisibility(View.GONE);
+                mSmartTable.setVisibility(View.GONE);
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+        PL_SHELFCODE = new Column<String>("料架", "PL_SHELFCODE");
+        BAR_PRODCODE = new Column<String>("物料编号", "BAR_PRODCODE");
+        V_LOCATIONS = new Column<String>("储位", "V_LOCATIONS");
+        V_LOCATIONS.setWidth(200); // 设置固定列宽为200像素
+//        V_LOCATIONS.setDrawFormat(new LayoutDrawFormat(context, R.layout.cell_text, R.id.cell_text));
+
+        V_TOTALCOUNT = new Column<Long>("盘数", "V_TOTALCOUNT");
+        V_BARREMAIN = new Column<Long>("数量", "V_BARREMAIN");
+        mTabBeans = new ArrayList<>();
+        WindowManager wm = mActivity.getWindowManager();
+        int screenWith = wm.getDefaultDisplay().getWidth();
+        mSmartTable.getConfig().setMinTableWidth(screenWith)
+                .setShowXSequence(false)
+                .setShowYSequence(false)
+                .setShowTableTitle(false)
+                .setFixedTitle(true)
+                .setVerticalPadding(CommonUtil.dip2px(mActivity, 3))
+                .setColumnTitleVerticalPadding(CommonUtil.dip2px(mActivity, 3))
+                .setHorizontalPadding(CommonUtil.dip2px(mActivity, 10))
+                .setSequenceHorizontalPadding(CommonUtil.dip2px(mActivity, 10))
+                .setColumnTitleHorizontalPadding(CommonUtil.dip2px(mActivity, 10))
+                .setColumnTitleStyle(new FontStyle(CommonUtil.sp2px(mActivity, 15), Color.parseColor("#000000")))
+                .setContentCellBackgroundFormat(new BaseCellBackgroundFormat<CellInfo>() {
+                    @Override
+                    public int getBackGroundColor(CellInfo cellInfo) {
+                        if (cellInfo.row % 2 == 0) {
+                            return ContextCompat.getColor(mActivity, R.color.blue_50);
+                        }
+                        return TableConfig.INVALID_COLOR;
+                    }
+                });
+    }
+
+    private void setFilterTableData(List<MaterialInquiryBean> filterTableData) {
+        mTableData = new TableData<MaterialInquiryBean>("物料查询", filterTableData,
+                PL_SHELFCODE, BAR_PRODCODE,V_LOCATIONS,V_TOTALCOUNT,V_BARREMAIN);
+        mSmartTable.setTableData(mTableData);
+        //        mSmartTable.requestLayout();
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                mSmartTable.postInvalidate();
+            }
+        }, 100);
+    }
+
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+
+}

+ 2 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/NewJltStorageInFilterListFragment.java

@@ -152,6 +152,8 @@ public class NewJltStorageInFilterListFragment extends BaseFragment implements O
         mWhcodeDesColumn = new Column<String>("仓库名称", "PI_WHNAME");
         mStateColumn = new Column<String>("状态", "PI_STATUS");
 
+        mSearchCet.requestFocus();
+
     }
 
     @Override

+ 1 - 2
app/src/main/java/com/uas/xzc_electronic/fragment/OutboundLis_Two_fragment.java

@@ -90,12 +90,11 @@ public class OutboundLis_Two_fragment extends BaseFragment implements OnColumnIt
         mScanImageView = (ImageView) mActivity.findViewById(R.id.storage_recharge_scan_iv);
         mMenuButton = (Button) mActivity.findViewById(R.id.btn_actionbar_more);
 
-
+        storage_recharge_collect_et.requestFocus();
     }
 
     @Override
     protected void initEvents() {
-        storage_recharge_collect_et.requestFocus();
         storage_recharge_collect_et.setOnEditorActionListener(new TextView.OnEditorActionListener() {
             @Override
             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

+ 2 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/ReleaseAlarmFragment.java

@@ -42,6 +42,8 @@ class ReleaseAlarmFragment extends BaseFragment{
         bt_release_the_alarm = root.findViewById(R.id.bt_release_the_alarm);
         tv_result = root.findViewById(R.id.tv_result);
         ll_result = root.findViewById(R.id.ll_result);
+
+        cet_material_rack.requestFocus();
     }
 
     @Override

+ 1 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/StockBarcodeListFragment.java

@@ -102,6 +102,7 @@ public class StockBarcodeListFragment extends BaseFragment implements View.OnCli
         mEmptyLayout.setShowEmptyButton(false);
         mEmptyLayout.setShowErrorButton(false);
         mEmptyLayout.setEmptyMessage("数据为空");
+        mSearchEditText.requestFocus();
     }
 
     @Override

+ 1 - 1
app/src/main/java/com/uas/xzc_electronic/fragment/UnpackingFragment.java

@@ -104,7 +104,7 @@ public class UnpackingFragment extends BaseFragment{
                 });
 
 
-
+        storage_recharge_collect_et.requestFocus();
     }
 
     @Override

+ 2 - 1
app/src/main/java/com/uas/xzc_electronic/fragment/WHCheckBarcodeFragment.java

@@ -34,7 +34,8 @@ public class WHCheckBarcodeFragment extends BaseFragment implements View.OnClick
     private static final int SCAN_BARCODE_CODE = 402;
     ClearableEditText etCollect;
     TableLayout tlMsg;
-    TextView tvBarcode, tvBarProcode,tv_type_value,tvPrDetail, tvPrSpec, tvVeShortname, tvBarWhcode, tvBarRemain, tvBarLocation, tvStatus;
+    TextView tvBarcode, tvBarProcode,tv_type_value,tvPrDetail, tvPrSpec, tvVeShortname,
+            tvBarWhcode, tvBarRemain, tvBarLocation, tvStatus;
     private TextView btnSearch;
     private ImageView mScanImageView;
     private int mFocusId;

+ 6 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/WHCheckContentFragment.java

@@ -70,6 +70,12 @@ public class WHCheckContentFragment extends BaseFragment implements AdapterView.
                 getFragmentManager().beginTransaction().addToBackStack(null)
                         .replace(R.id.container_function_fragment,fragment).commit();
                 break;
+            //料架物料核查
+            case GloableParams.MATERIAL_VERIFICATION_OF_MATERIAL_RACK:
+                fragment = new MaterialVerificationMaterialFra();
+                getFragmentManager().beginTransaction().addToBackStack(null)
+                        .replace(R.id.container_function_fragment,fragment).commit();
+                break;
             //包装信息核查
             case GloableParams.LISTNAME_WH_CHECKCONTENT_PACKAGE:
 //                Intent intent = new Intent(getActivity(),BluetoothActivity.class);

+ 2 - 0
app/src/main/java/com/uas/xzc_electronic/fragment/WHTransferLocationFragment.java

@@ -90,6 +90,8 @@ public class WHTransferLocationFragment extends BaseFragment implements Compound
         //List
         adapter = new TransferLocationAdapter(gridData, getActivity());
         lvData.setAdapter(adapter);
+
+        etCode.requestFocus();
     }
 
     @Override

+ 47 - 2
app/src/main/java/com/uas/xzc_electronic/global/GloableParams.java

@@ -274,6 +274,15 @@ public class GloableParams {
 
     public static String ADDRESS_RELEASE_ALARM;    // 解除报警
 
+    public static String ADDRESS_GET_SHELF_PROD_DATA;    // 找料--料号enter
+    public static String ADDRESS_BAR_LIGHT_ON;    // 找料--点亮
+    public static String ADDRESS_BAR_LIGHT_OFF;    // 找料--灭灯
+    public static String ADDRESS_CHECK_SHELF_QUERY;    // 料架物料核查---查询
+
+    public static String ADDRESS_GET_SHELF;    // 点亮空仓位/料架Enter
+    public static String ADDRESS_SHELF_LIGHT_ON_EMPTY_LOCATION;    // 点亮空仓位/点亮空仓位
+    public static String ADDRESS_SHELF_LIGHT_OFF_EMPTY_LOCATIN;    // 点亮空仓位/熄灭空仓位
+
     //连接服务器请求地址
     private static final String ADDRESSTAIL_CONNECT_SERVER = "/api/pda/getAllMasters.action";
     //登录页面请求地址
@@ -776,6 +785,23 @@ public class GloableParams {
     //解除报警
     private static final String ADDRESSAIL_RELEASE_ALARM = "/api/pda/transfer/releaseAlarm.action";
 
+    //找料--料号enter
+    private static final String ADDRESSAIL_GET_SHELF_PROD_DATA = "/api/pda/transfer/getShelfProdData.action";
+    //找料--点亮
+    private static final String ADDRESSAIL_BAR_LIGHT_ON = "/api/pda/transfer/barLightOn.action";
+    //找料--灭灯
+    private static final String ADDRESSAIL_BAR_LIGHT_OFF = "/api/pda/transfer/barLightOff.action";
+
+    //料架物料核查--查询
+    private static final String ADDRESSAIL_CHECK_SHELF_QUERY = "/api/pda/check/checkShelf.action";
+
+    // 点亮空仓位/料架enter
+    private static final String ADDRESSAIL_GET_SHELF = "/api/pda/transfer/getShelf.action";
+    //点亮空仓位/点亮空仓位
+    private static final String ADDRESSAIL_SHELF_LIGHT_ON_EMPTY_LOCATION = "/api/pda/transfer/shelfLightOnEmptyLocation.action";
+    //点亮空仓位/熄灭空仓位
+    private static final String ADDRESSAIL_SHELF_LIGHT_OFF_EMPTY_LOCATIN = "/api/pda/transfer/shelfLightOffEmptyLocatin.action";
+
 
     /***********************************************************************************************/
     /*界面文字和图片资源,控制后续数据一致*/
@@ -833,6 +859,8 @@ public class GloableParams {
     public static final String GRIDNAME_FINISHED_INQUIRE = "箱号查询";
     public static final String GRIDNAME_SMART_SHELVES = "自由上架";
     public static final String LIGHT_RELEASE_THE_ALARM = "解除报警";
+    public static final String GRIDNAME_FIND_MATERIALS = "找料";
+    public static final String LIGHT_EMPTY_STORAGE_SPACE = "点亮空库位";
     public static final String[] storageGridNames = {
             GRIDNAME_GOOD_SEARCH,
             GRIDNAME_BATCH_OPRATION,
@@ -847,7 +875,9 @@ public class GloableParams {
             GRIDNAME_FINISHED_DISMOUNTING,
             GRIDNAME_FINISHED_INQUIRE,
             GRIDNAME_SMART_SHELVES,
-            LIGHT_RELEASE_THE_ALARM
+            LIGHT_RELEASE_THE_ALARM,
+            GRIDNAME_FIND_MATERIALS,
+            LIGHT_EMPTY_STORAGE_SPACE
     };
     public static final int[] storageGridImgs = {
             R.drawable.storage_good_search,
@@ -862,7 +892,9 @@ public class GloableParams {
             R.drawable.ic_dismounting,
             R.drawable.ic_inquire,
             R.drawable.iv_shelves,
-            R.drawable.jiechubaojing
+            R.drawable.jiechubaojing,
+            R.drawable.zhaoliao,
+            R.drawable.dianliangkongkucun
     };
     //DETAIL:搜索备料单号,下拉列表
     public static final String SPINNER_PREPARE_SEARCH = "搜索备料单号";
@@ -948,12 +980,15 @@ public class GloableParams {
     //-->仓库管理:货物核查
     public static final String LISTNAME_WH_CHECKCONTENT_MAKEMATERIAL = "物料库存核查";
     public static final String LISTNAME_WH_CHECKCONTENT_BARCODE = "条码信息核查";
+    public static final String MATERIAL_VERIFICATION_OF_MATERIAL_RACK = "料架物料核查";
     public static final String LISTNAME_WH_CHECKCONTENT_PACKAGE = "包装信息核查";
     public static final String LISTNAME_WH_CHECKCONTENT_MAKEFINISH = "工单完工品核查";
     public static final String LISTNAME_WH_CHECKCONTENT_ORDERFINISH = "订单完工品核查";
+
     public static final String[] mmindexListName = {
             LISTNAME_WH_CHECKCONTENT_MAKEMATERIAL,
             LISTNAME_WH_CHECKCONTENT_BARCODE,
+            MATERIAL_VERIFICATION_OF_MATERIAL_RACK,
 //            LISTNAME_WH_CHECKCONTENT_PACKAGE,
 //            LISTNAME_WH_CHECKCONTENT_MAKEFINISH,
 //            LISTNAME_WH_CHECKCONTENT_ORDERFINISH
@@ -961,6 +996,7 @@ public class GloableParams {
     public static final int[] mmindexListImg = {
             R.drawable.ic_menu_head,
             R.drawable.ic_menu_head,
+            R.drawable.ic_menu_head,
 //            R.drawable.ic_menu_head,
 //            R.drawable.ic_menu_head,
 //            R.drawable.ic_menu_head
@@ -1247,5 +1283,14 @@ public class GloableParams {
 
         GloableParams.ADDRESS_RELEASE_ALARM = uriHead + GloableParams.ADDRESSAIL_RELEASE_ALARM;
 
+        GloableParams.ADDRESS_GET_SHELF_PROD_DATA = uriHead + GloableParams.ADDRESSAIL_GET_SHELF_PROD_DATA;
+        GloableParams.ADDRESS_BAR_LIGHT_ON = uriHead + GloableParams.ADDRESSAIL_BAR_LIGHT_ON;
+        GloableParams.ADDRESS_BAR_LIGHT_OFF = uriHead + GloableParams.ADDRESSAIL_BAR_LIGHT_OFF;
+        GloableParams.ADDRESS_CHECK_SHELF_QUERY = uriHead + GloableParams.ADDRESSAIL_CHECK_SHELF_QUERY;
+
+        GloableParams.ADDRESS_GET_SHELF = uriHead + GloableParams.ADDRESSAIL_GET_SHELF;
+        GloableParams.ADDRESS_SHELF_LIGHT_ON_EMPTY_LOCATION = uriHead + GloableParams.ADDRESSAIL_SHELF_LIGHT_ON_EMPTY_LOCATION;
+        GloableParams.ADDRESS_SHELF_LIGHT_OFF_EMPTY_LOCATIN = uriHead + GloableParams.ADDRESSAIL_SHELF_LIGHT_OFF_EMPTY_LOCATIN;
+
     }
 }

+ 10 - 2
app/src/main/java/com/uas/xzc_electronic/util/CommonUtil.java

@@ -510,7 +510,11 @@ public class CommonUtil {
         if (volleyError != null && volleyError.networkResponse != null && volleyError.networkResponse.data != null) {
             ErrorMsg errorMsg = JsonTools.parseJsonToBean(new String(volleyError.networkResponse.data), ErrorMsg.class);
             if (errorMsg != null && errorMsg.exceptionInfo != null) {
-                errorStr = errorMsg.exceptionInfo;
+                if (errorMsg.exceptionInfo.length() > 300) {
+                    errorStr = errorMsg.exceptionInfo.substring(0, 300);
+                }else {
+                    errorStr = errorMsg.exceptionInfo;
+                }
             } else {
                 errorStr = "系统错误";
             }
@@ -595,7 +599,11 @@ public class CommonUtil {
         if (volleyError != null && volleyError.networkResponse != null && volleyError.networkResponse.data != null) {
             ErrorMsg errorMsg = JsonTools.parseJsonToBean(new String(volleyError.networkResponse.data), ErrorMsg.class);
             if (errorMsg != null && errorMsg.exceptionInfo != null) {
-                errorStr = errorMsg.exceptionInfo;
+                if (errorMsg.exceptionInfo.length() > 300) {
+                    errorStr = errorMsg.exceptionInfo.substring(0, 300);
+                }else {
+                    errorStr = errorMsg.exceptionInfo;
+                }
             } else {
                 errorStr = "系统错误";
             }

+ 4 - 0
app/src/main/java/com/uas/xzc_electronic/util/VolleyRequest.java

@@ -53,6 +53,10 @@ public class VolleyRequest {
         stringRequest(null, httpParams, 10 * 1000, httpCallback);
     }
 
+    public void stringRequest60(final HttpParams httpParams, final HttpCallback httpCallback) {
+        stringRequest(null, httpParams, 60 * 1000, httpCallback);
+    }
+
     public void stringRequest(StringRequest stringRequest, final HttpParams httpParams, final int timeoutMs, final HttpCallback httpCallback) {
         if (httpParams == null) {
             throw new IllegalArgumentException("httpParams can not be NULL");

+ 67 - 0
app/src/main/java/com/uas/xzc_electronic/view/LayoutDrawFormat.java

@@ -0,0 +1,67 @@
+package com.uas.xzc_electronic.view;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.CellInfo;
+import com.bin.david.form.data.column.Column;
+import com.bin.david.form.data.format.draw.IDrawFormat;
+
+public
+        /**
+         * Created by sw on 2025-03-13
+         */
+class LayoutDrawFormat implements IDrawFormat<String> {
+
+    private Context context;
+    private int layoutRes;
+    private int textViewId;
+
+    public LayoutDrawFormat(Context context, int layoutRes, int textViewId) {
+        this.context = context;
+        this.layoutRes = layoutRes;
+        this.textViewId = textViewId;
+    }
+
+    @Override
+    public int measureWidth(Column<String> column, int position, TableConfig config) {
+        return column.getWidth(); // 返回固定列宽
+    }
+
+    @Override
+    public int measureHeight(Column<String> column, int position, TableConfig config) {
+        View view = LayoutInflater.from(context).inflate(layoutRes, null);
+        TextView textView = view.findViewById(textViewId);
+        textView.setText(column.getDatas().get(position));
+        textView.measure(
+                View.MeasureSpec.makeMeasureSpec(column.getWidth(), View.MeasureSpec.EXACTLY),
+                View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
+        );
+        return textView.getMeasuredHeight();
+    }
+
+    @Override
+    public void draw(Canvas canvas, Rect rect, CellInfo<String> cellInfo, TableConfig config) {
+        View view = LayoutInflater.from(context).inflate(layoutRes, null);
+        TextView textView = view.findViewById(textViewId);
+//        textView.setText(cellInfo.getData());
+
+        // 测量并布局View
+        int widthSpec = View.MeasureSpec.makeMeasureSpec(rect.width(), View.MeasureSpec.EXACTLY);
+        int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
+        textView.measure(widthSpec, heightSpec);
+        textView.layout(0, 0, rect.width(), textView.getMeasuredHeight());
+
+        // 绘制到Canvas
+        canvas.save();
+        canvas.translate(rect.left, rect.top);
+        textView.draw(canvas);
+        canvas.restore();
+    }
+
+}

二进制
app/src/main/res/drawable-xhdpi/dianliangkongkucun.png


+ 221 - 0
app/src/main/res/layout/fra_find_materials.xml

@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+
+    <LinearLayout
+        android:layout_marginTop="30dp"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_marginStart="10dp"
+        android:layout_marginEnd="10dp"
+        android:orientation="horizontal"
+        >
+
+        <TextView
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"
+            android:textSize="16sp"
+            android:layout_gravity="center_vertical"
+            android:text="料号/条码"
+            />
+
+        <com.uas.xzc_electronic.view.ClearableEditText
+            android:id="@+id/cet_bar_code"
+            style="@style/EditTextStyle"
+            android:layout_height="match_parent"
+            android:background="@drawable/bg_line_edittext"
+            android:layout_marginStart="5dp"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:hint="请输入料号/条码"
+            android:textColor="@color/black" />
+
+    </LinearLayout>
+
+
+    <LinearLayout
+        android:layout_marginTop="20dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        >
+
+        <Button
+            android:id="@+id/bt_dianliang"
+            style="@style/ButtonStyle"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:layout_margin="12dp"
+            android:layout_marginTop="10dp"
+            android:text="点亮"
+            />
+
+        <Button
+            android:id="@+id/bt_miedeng"
+            style="@style/ButtonStyle"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:layout_margin="12dp"
+            android:layout_marginTop="10dp"
+            android:text="灭灯"
+            />
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tv_msg"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="10dp"
+        android:layout_marginEnd="10dp"
+        android:visibility="gone"
+        tools:visibility="visible"
+        android:layout_marginTop="10dp"
+        android:layout_marginBottom="10dp"
+        android:textColor="@color/blue"
+        />
+
+    <LinearLayout
+        android:id="@+id/ll_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="gone"
+        tools:visibility="visible"
+        android:layout_marginStart="10dp"
+        android:layout_marginEnd="10dp"
+        >
+
+        <LinearLayout
+            android:layout_marginTop="3dp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:textSize="16sp"
+                android:textStyle="bold"
+                android:text="料号: " />
+
+            <TextView
+                android:id="@+id/tv_liaohao"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="7"
+                android:textSize="14sp"
+                />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_marginTop="3dp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:textSize="16sp"
+                android:textStyle="bold"
+                android:text="名称: " />
+
+            <TextView
+                android:id="@+id/tv_name"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="7"
+                android:textSize="14sp"
+                />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_marginTop="3dp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:textSize="16sp"
+                android:textStyle="bold"
+                android:text="规格: " />
+
+            <TextView
+                android:id="@+id/tv_spc"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="7"
+                android:textSize="14sp"
+                />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_marginTop="3dp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:textSize="16sp"
+                android:textStyle="bold"
+                android:text="盘数: " />
+
+            <TextView
+                android:id="@+id/tv_panshu"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="7"
+                android:textSize="14sp"
+                />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_marginTop="3dp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:textSize="16sp"
+                android:textStyle="bold"
+                android:text="数量: " />
+
+            <TextView
+                android:id="@+id/tv_number"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="7"
+                android:textSize="14sp"
+                />
+        </LinearLayout>
+
+
+
+    </LinearLayout>
+
+
+
+</LinearLayout>

+ 183 - 0
app/src/main/res/layout/fra_material_verification_material.xml

@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+
+    <LinearLayout
+        android:layout_marginTop="30dp"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_marginStart="10dp"
+        android:layout_marginEnd="10dp"
+        android:orientation="horizontal"
+        >
+
+        <TextView
+            android:layout_width="50dp"
+            android:layout_height="wrap_content"
+            android:textSize="16sp"
+            android:layout_gravity="center_vertical"
+            android:text="料架"
+            />
+
+        <com.uas.xzc_electronic.view.ClearableEditText
+            android:id="@+id/cet_liaojia"
+            style="@style/EditTextStyle"
+            android:layout_height="match_parent"
+            android:background="@drawable/bg_line_edittext"
+            android:layout_marginStart="5dp"
+            android:layout_marginEnd="10dp"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:hint="请输入料架"
+            android:textColor="@color/black" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_marginTop="30dp"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_marginStart="10dp"
+        android:layout_marginEnd="10dp"
+        android:orientation="horizontal"
+        >
+
+        <TextView
+            android:layout_width="50dp"
+            android:layout_height="wrap_content"
+            android:textSize="16sp"
+            android:layout_gravity="center_vertical"
+            android:text="料号"
+            />
+
+        <com.uas.xzc_electronic.view.ClearableEditText
+            android:id="@+id/cet_liaohao"
+            style="@style/EditTextStyle"
+            android:layout_height="match_parent"
+            android:background="@drawable/bg_line_edittext"
+            android:layout_marginStart="5dp"
+            android:layout_marginEnd="10dp"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:hint="请输入料号"
+            android:textColor="@color/black" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_marginTop="20dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        >
+
+        <Button
+            android:id="@+id/bt_query"
+            style="@style/ButtonStyle"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:layout_margin="12dp"
+            android:layout_marginTop="10dp"
+            android:text="查询"
+            />
+
+    </LinearLayout>
+
+    <android.support.v4.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            >
+
+            <TextView
+                android:id="@+id/tv_msg"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="10dp"
+                android:layout_marginEnd="10dp"
+                android:visibility="gone"
+                tools:visibility="visible"
+                android:layout_marginTop="10dp"
+                android:layout_marginBottom="10dp"
+                android:textColor="@color/blue"
+                />
+
+            <RelativeLayout
+                android:visibility="gone"
+                android:id="@+id/rl_number_summary"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_horizontal"
+                >
+                <LinearLayout
+                    android:id="@+id/ll_panshu"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    >
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="总盘数: "
+                        />
+
+                    <TextView
+                        android:id="@+id/tv_total_number_stocks"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text=""
+                        />
+
+                </LinearLayout>
+
+
+                <LinearLayout
+                    android:layout_toEndOf="@+id/ll_panshu"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:layout_marginStart="50dp"
+                    >
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="总数量: "
+                        />
+
+                    <TextView
+                        android:id="@+id/tv_total_number"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text=""
+                        />
+
+                </LinearLayout>
+
+            </RelativeLayout>
+
+            <com.bin.david.form.core.SmartTable
+                android:layout_marginTop="@dimen/dp_10"
+                android:id="@+id/st_data"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginBottom="@dimen/dp_10"
+                    />
+
+        </LinearLayout>
+
+    </android.support.v4.widget.NestedScrollView>
+
+
+</LinearLayout>

+ 110 - 0
app/src/main/res/layout/fragment_light_empty_storage_space.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+
+    <LinearLayout
+        android:layout_marginTop="35dp"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="30dp"
+        android:layout_marginEnd="30dp"
+        >
+
+        <TextView
+            android:id="@+id/material_in_collect_location_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:padding="10dp"
+            android:text="@string/material_rack"
+            android:textColor="@color/red"
+            android:textSize="16sp"  />
+
+        <com.uas.xzc_electronic.view.ClearableEditText
+            android:id="@+id/cet_material_rack"
+            style="@style/EditTextStyle"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:hint="@string/Please_enter_the_material_rack"
+            android:background="@drawable/shape_msg_block"
+            android:lines="1"
+            android:maxLines="1"
+            android:textColor="@color/black"
+            android:singleLine="true"/>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_marginTop="30dp"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:layout_marginStart="15dp"
+        android:layout_marginEnd="15dp"
+        >
+
+        <Button
+            android:id="@+id/bt_light_empty_storage_space"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:textSize="16sp"
+            android:textColor="@color/white"
+            android:background="@drawable/bg_button"
+            android:text="@string/light_empty_storage_space"
+            android:layout_weight="4"/>
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            />
+
+        <Button
+            android:id="@+id/bt_extinguish_empty_storage_space"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:textSize="16sp"
+            android:textColor="@color/white"
+            android:background="@drawable/bg_button_yellow"
+            android:text="@string/extinguish_empty_storage_space"
+            android:layout_weight="4"/>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/ll_result"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="15dp"
+        android:layout_marginStart="15dp"
+        android:layout_marginEnd="15dp"
+        android:background="@drawable/shape_msg_block"
+        android:visibility="gone"
+        tools:visibility="visible"
+        android:padding="10dp">
+
+        <TextView
+            android:id="@+id/tv_result"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginTop="5dp"
+            android:layout_marginStart="5dp"
+            android:layout_marginEnd="5dp"
+            android:layout_marginBottom="5dp"
+            tools:visibility="visible"
+            />
+
+    </LinearLayout>
+
+
+
+
+
+</LinearLayout>

+ 2 - 2
app/src/main/res/layout/fragment_whcheck_barcode.xml

@@ -80,11 +80,11 @@
                 style="@style/Table_li_right"
                 android:textColor="@color/text_search"/>
         </TableRow>
-        <!--仓库-->
+        <!--出库单-->
         <TableRow>
             <TextView
                 style="@style/Table_li_left"
-                android:text="@string/text_whcheck_bar_whcode"/>
+                android:text="@string/outbound_order"/>
             <TextView
                 android:layout_width="wrap_content"
                 android:id="@+id/tv_bar_whcode"

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

@@ -78,6 +78,7 @@
         android:text="撤销入库"
         android:textSize="@dimen/app_text_size_body_2" />
     <Button
+        android:visibility="gone"
         android:id="@+id/pop_toadoptprompt"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"

+ 8 - 0
app/src/main/res/values/strings.xml

@@ -215,6 +215,7 @@
     <string name="text_whcheck_bar_remain">数量</string>
     <string name="text_whcheck_bar_location">储位</string>
     <string name="hint_whcheck_bar_code">条码号</string>
+    <string name="outbound_order">出库单</string>
     <!--包装信息核查页面-->
     <string name="check_package">包装信息核查</string>
     <string name="hint_fragment_whcheck_package">外箱编号</string>
@@ -447,4 +448,11 @@
     <string name="release_the_alarm">解除警报</string>
     <string name="alarm_successful">报警成功</string>
 
+    <string name="find_materials">找料</string>
+    <string name="material_verification_material_rack">料架物料核查</string>
+
+    <string name="light_empty_storage_space">点亮空库位</string>
+    <string name="extinguish_empty_storage_space">熄灭空库位</string>
+
+
 </resources>

+ 2 - 2
build.gradle

@@ -54,8 +54,8 @@ ext {
             targetSdkVersion : 28,
             compileSdkVersion: 28,
             buildToolsVersion: "28.0.3",
-            versionCode      : 13,
-            versionName      : "v1.0.2"
+            versionCode      : 22,
+            versionName      : "v1.1.1"
     ]
 
     depsVersion = [