wuhb 1 год назад
Родитель
Сommit
7be33833be

+ 211 - 17
app/src/main/java/com/ygtx/emcs/activity/StockChangeActivity.java

@@ -8,6 +8,7 @@ import static com.ygtx.emcs.util.Constant.HAND_KEY;
 import android.content.Context;
 import android.content.IntentFilter;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageView;
@@ -15,7 +16,10 @@ import android.widget.ImageView;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.ygtx.emcs.R;
+import com.ygtx.emcs.activity.adapter.StockChangeItemViewAdapter;
 import com.ygtx.emcs.activity.adapter.StockItemViewAdapter;
+import com.ygtx.emcs.activity.model.BoxCodeModel;
+import com.ygtx.emcs.activity.model.EventMessage;
 import com.ygtx.emcs.activity.model.MaterialStockModel;
 import com.ygtx.emcs.comm.BaseActivity;
 import com.ygtx.emcs.comm.CacheService;
@@ -28,6 +32,7 @@ import com.ygtx.emcs.util.StringUtils;
 import com.ygtx.emcs.util.ToastUtils;
 
 import org.apache.log4j.Logger;
+import org.greenrobot.eventbus.EventBus;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.xutils.common.Callback;
@@ -37,6 +42,7 @@ import org.xutils.x;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 
 public class StockChangeActivity extends BaseActivity {
@@ -44,10 +50,12 @@ public class StockChangeActivity extends BaseActivity {
 
     private YgtxStockChangeBinding binding;
     private Context context;
-    private StockItemViewAdapter stockItemViewAdapter;
+    private StockChangeItemViewAdapter stockChangeItemViewAdapter;
     private ArrayList<MaterialStockModel> materialStockModels = new ArrayList<>();
-    private String areaCode;
     private String box_flag;
+    private MaterialStockModel materialStockModel;
+    private String boxCode;
+    private Button submit;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -62,13 +70,29 @@ public class StockChangeActivity extends BaseActivity {
     }
 
     private void initData(){
-        areaCode = getParamString("areaCode");
-        if(!StringUtils.isEmpty(areaCode)){
-            binding.tvSrcCode.setText(areaCode);
-            loadErpTask(areaCode);
+        boxCode = getParamString("boxCode");
+        if(!StringUtils.isEmpty(boxCode)){
+            binding.tvSrcCode.setText(boxCode);
+            loadErpTask(boxCode);
         }
-        stockItemViewAdapter = new StockItemViewAdapter(materialStockModels, context);
-        binding.lvProduct.setAdapter(stockItemViewAdapter);
+        stockChangeItemViewAdapter = new StockChangeItemViewAdapter(materialStockModels, context);
+        binding.lvProduct.setAdapter(stockChangeItemViewAdapter);
+        binding.lvProduct.setOnItemClickListener((parent, view, position, id) -> {
+            materialStockModel = materialStockModels.get(position);
+            Long selId = materialStockModel.getMaterialStockId();
+            if("1".equals(materialStockModel.getSel())){
+                materialStockModel.setSel("0");
+                materialStockModel = null;
+            }else{
+                materialStockModel.setSel("1");
+            }
+            materialStockModels.forEach(item->{
+                if(!item.getMaterialStockId().equals(selId)){
+                    item.setSel("0");
+                }
+            });
+            stockChangeItemViewAdapter.notifyDataSetChanged();
+        });
         box_flag = CacheService.getInstance(context).getCache(CACHE_BIND_CONFIG, "box_flag");
         if(StringUtils.isEmpty(box_flag)){
             ToastUtils.showToast(context, "请设置料框码的标识");
@@ -88,21 +112,29 @@ public class StockChangeActivity extends BaseActivity {
         back.setOnClickListener(view -> {
             finish();
         });
-        Button submit = findViewById(R.id.c_iv_common_submit);
+        submit = findViewById(R.id.c_iv_common_submit);
         submit.setBackgroundColor(Res.getColor("transparent"));
         submit.setTextColor(Res.getColor("white"));
         submit.setVisibility(View.VISIBLE);
         submit.setText("转移");
         submit.setOnClickListener(view -> {
+            sendChange();
+        });
+        binding.btnFrom.setOnClickListener(v->{
             String srcCode = binding.tvSrcCode.getText().toString();
-            String tarCode = binding.tvTargetCode.getText().toString();
-            if(StringUtils.isEmpty(srcCode)){
-                ToastUtils.showToast(context, "来源位置不能为空");
-                return;
+            if(!StringUtils.isEmpty(srcCode)){
+                loadErpTask(srcCode);
             }
-            if(StringUtils.isEmpty(tarCode)){
-                ToastUtils.showToast(context, "目标位置不能为空");
-                return;
+        });
+        binding.btnTo.setOnClickListener(v->{
+            String tarCode = binding.tvTargetCode.getText().toString();
+            if(!StringUtils.isEmpty(tarCode)){
+                if(tarCode.startsWith(box_flag)){
+                    binding.llTargetArea.setVisibility(View.VISIBLE);
+                    loadBox(tarCode);
+                }else{
+                    binding.llTargetArea.setVisibility(View.GONE);
+                }
             }
         });
     }
@@ -127,12 +159,28 @@ public class StockChangeActivity extends BaseActivity {
                 && !barcode.startsWith(HAND_KEY)){
             return;
         }
+        if(binding.llTargetArea.getVisibility()==View.VISIBLE
+                &&!StringUtils.isEmpty(srcCode)
+                &&!StringUtils.isEmpty(tarCode)){
+            if(barcode.startsWith(AUTO_KEY) || barcode.startsWith(HAND_KEY)){
+                binding.tvTargetArea.setText(barcode);
+                return;
+            }
+        }
+
         if(StringUtils.isEmpty(srcCode)
                 ||!StringUtils.isEmpty(tarCode)){
             binding.tvSrcCode.setText(barcode);
             loadErpTask(barcode);
         }else if(StringUtils.isEmpty(tarCode)){
             binding.tvTargetCode.setText(barcode);
+            if(barcode.startsWith(box_flag)){
+                binding.llTargetArea.setVisibility(View.VISIBLE);
+                loadBox(barcode);
+            }else{
+                binding.tvTargetArea.setText("");
+                binding.llTargetArea.setVisibility(View.GONE);
+            }
         }
     }
 
@@ -161,7 +209,65 @@ public class StockChangeActivity extends BaseActivity {
                         Type rds = new TypeToken<List<MaterialStockModel>>() {}.getType();
                         List<MaterialStockModel> stockModels = new Gson().fromJson(rs.get("data").toString(), rds);
                         materialStockModels.addAll(stockModels);
-                        stockItemViewAdapter.notifyDataSetChanged();
+                        stockChangeItemViewAdapter.notifyDataSetChanged();
+                    }else if(rs.getInt("code") == 401){
+                        ToastUtils.showToast(context, "会话过期");
+                        logoutAuth(rs.getInt("code"));
+                    }else{
+                        ToastUtils.showToast(context, rs.getString("msg"));
+                    }
+                    if(materialStockModels.size() == 0){
+                        binding.lvProduct.setVisibility(View.GONE);
+                        binding.tvEmpty.setVisibility(View.VISIBLE);
+                    }else{
+                        binding.lvProduct.setVisibility(View.VISIBLE);
+                        binding.tvEmpty.setVisibility(View.GONE);
+                    }
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onError(Throwable ex, boolean isOnCallback) {
+                ex.printStackTrace();
+                HttpsUtil.parserError(StockChangeActivity.this, ex);
+                mylog.error("请求异常:", ex);
+            }
+
+            @Override
+            public void onFinished() {
+                myProgress.close();
+            }
+
+            @Override
+            public void onCancelled(CancelledException arg0) {
+                mylog.error("onRead:", arg0);
+            }
+        });
+    }
+
+    public void loadBox(String boxCode){
+        if(StringUtils.isEmpty(boxCode)){
+            ToastUtils.showToast(context, "料框号不能为空");
+            return;
+        }
+        if(Constant.user==null || Constant.user.getUserId() == null){
+            return;
+        }
+        MyProgress myProgress = MyProgress.getInstance();
+        myProgress.show(context, "提示", "正在加载");
+        RequestParams params = httParams(Constant.BOX_INFO);
+        params.addBodyParameter("boxCode", boxCode);
+        x.http().get(params, new Callback.CommonCallback<JSONObject>() {
+            @Override
+            public void onSuccess(JSONObject rs) {
+                mylog.info(rs.toString());
+                try {
+                    if (rs.getInt("code") == 200) {
+                        BoxCodeModel boxCodeModel = new Gson().fromJson(rs.get("data").toString(), BoxCodeModel.class);
+                        binding.tvTargetArea.setText(boxCodeModel.getAreaCode());
+                        stockChangeItemViewAdapter.notifyDataSetChanged();
                     }else if(rs.getInt("code") == 401){
                         ToastUtils.showToast(context, "会话过期");
                         logoutAuth(rs.getInt("code"));
@@ -192,6 +298,94 @@ public class StockChangeActivity extends BaseActivity {
         });
     }
 
+    public void sendChange(){
+        String srcCode = binding.tvSrcCode.getText().toString();
+        String tarCode = binding.tvTargetCode.getText().toString();
+        String tarArea = binding.tvTargetArea.getText().toString();
+        if(StringUtils.isEmpty(srcCode)){
+            ToastUtils.showToast(context, "来源位置不能为空");
+            return;
+        }
+        if(StringUtils.isEmpty(tarCode)){
+            ToastUtils.showToast(context, "目标位置不能为空");
+            return;
+        }
+        if(tarCode.startsWith(box_flag) && StringUtils.isEmpty(tarArea)){
+            loadBox(tarCode);
+            ToastUtils.showToast(context, "目标库位不能为空");
+            return;
+        }
+        Optional<MaterialStockModel> optional = materialStockModels.stream().filter(item->"1".equals(item.getSel())).findFirst();
+        optional.ifPresent(stockModel -> materialStockModel = stockModel);
+//        if(materialStockModel == null){
+//            ToastUtils.showToast(context, "选择需要转移的物料");
+//            return;
+//        }
+//        if(materialStockModel.getMaterialStockId()==null){
+//            ToastUtils.showToast(context, "无效的库存ID");
+//            return;
+//        }
+        submit.setEnabled(false);
+        MyProgress myProgress = MyProgress.getInstance();
+        myProgress.show(context, "提示", "正在提交数据");
+        RequestParams params = httParams(Constant.CHANGE_BOX_AREA);
+        if(srcCode.startsWith(box_flag)){
+            params.addBodyParameter("boxCodeOld", srcCode);
+        }else{
+            params.addBodyParameter("areaCodeOld", srcCode);
+        }
+        if(tarCode.startsWith(box_flag)){
+            params.addBodyParameter("boxCodeNew", tarCode);
+        }
+        params.addBodyParameter("areaCodeNew", tarArea);
+        if(materialStockModel!=null){
+            params.addBodyParameter("materialStockId", materialStockModel.getMaterialStockId().toString());
+        }
+        params.addBodyParameter("updateBy", Constant.user.getLoginName());
+        x.http().post(params, new Callback.CommonCallback<JSONObject>() {
+            @Override
+            public void onSuccess(JSONObject rs) {
+                mylog.info(rs.toString());
+                try {
+                    if (rs.getInt("code") == 200) {
+                        loadErpTask(null);
+                        new Handler().postDelayed(()->{
+                            EventMessage message = new EventMessage(4, "刷新出库单明细");
+                            EventBus.getDefault().post(message);
+                        }, 100);
+                        ToastUtils.showToast(context, "转移成功");
+                    }else if(rs.getInt("code") == 401){
+                        ToastUtils.showToast(context, "会话过期");
+                        logoutAuth(rs.getInt("code"));
+                    }else{
+                        ToastUtils.showToast(context, rs.getString("msg"));
+                    }
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }finally {
+                    myProgress.close();
+                }
+            }
+            @Override
+            public void onError(Throwable ex, boolean isOnCallback) {
+                ex.printStackTrace();
+                HttpsUtil.parserError(StockChangeActivity.this, ex);
+                mylog.error("请求异常:", ex);
+            }
+
+            @Override
+            public void onFinished() {
+                myProgress.close();
+                submit.setEnabled(true);
+            }
+
+            @Override
+            public void onCancelled(CancelledException arg0) {
+                mylog.error("onRead:", arg0);
+            }
+        });
+    }
+
     @Override
     protected String getCommonTopTitle() {
         return "物料整理";

+ 33 - 0
app/src/main/java/com/ygtx/emcs/activity/StockOutBindActivity.java

@@ -22,6 +22,7 @@ import android.widget.ArrayAdapter;
 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.SimpleAdapter;
@@ -48,6 +49,8 @@ import com.ygtx.emcs.util.ToastUtils;
 
 import org.apache.log4j.Logger;
 import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.xutils.common.Callback;
@@ -86,6 +89,7 @@ public class StockOutBindActivity extends BaseActivity {
         super.onCreate(savedInstanceState);
         binding = YgtxBindOutItemBinding.inflate(getLayoutInflater());
         setContentView(binding.getRoot());
+        EventBus.getDefault().register(this);
         context = this;
         if(Constant.user == null){
             ToastUtils.showToast(context, "请先登录");
@@ -111,6 +115,11 @@ public class StockOutBindActivity extends BaseActivity {
         if("2".equals(lineModel.getStatus())){
             submit.setVisibility(View.GONE);
             binding.btAdd.setVisibility(View.GONE);
+            if(("1".equals(lineModel.getOutCheck())
+                    &&"1".equals(lineModel.getAutomatic()))
+                    || "0".equals(lineModel.getAutomatic())){
+                binding.btnChange.setVisibility(View.VISIBLE);
+            }
             searchLineTask(lineModel.getLineId());
         }else{
             searchStock(lineModel.getItemCode());
@@ -165,6 +174,12 @@ public class StockOutBindActivity extends BaseActivity {
             addAreaItem();
         });
 
+        binding.btnChange.setOnClickListener(v->{
+            Bundle bundle = new Bundle();
+            bundle.putString("boxCode", lineModel.getBoxCode());
+            toActivity(StockChangeActivity.class, bundle);
+        });
+
         submit = findViewById(R.id.c_iv_common_submit);
         submit.setBackgroundColor(Res.getColor("transparent"));
         submit.setTextColor(Res.getColor("white"));
@@ -233,10 +248,19 @@ public class StockOutBindActivity extends BaseActivity {
         TextView total = areaView.findViewById(R.id.tv_total);
         TextView stockTitle = areaView.findViewById(R.id.tv_stock_title);
         TextView tv_boxCode = areaView.findViewById(R.id.tv_box_code);
+        LinearLayout ll_change = areaView.findViewById(R.id.ll_change);
+        Button btn_change = areaView.findViewById(R.id.btn_change);
+        btn_change.setOnClickListener(v->{
+            Bundle bundle = new Bundle();
+            bundle.putString("boxCode", lineAreaModel.getAreaCode());
+            toActivity(StockChangeActivity.class, bundle);
+        });
         if("2".equals(lineModel.getStatus())){
             qty.setEnabled(false);
+            ll_change.setVisibility(View.VISIBLE);
             stockTitle.setText("原库存:");
         }else{
+            ll_change.setVisibility(View.GONE);
             stockTitle.setText("库存:");
         }
         total.setText(lineAreaModel.getStockQuantity());
@@ -253,10 +277,13 @@ public class StockOutBindActivity extends BaseActivity {
         TextView total = areaView.findViewById(R.id.tv_total);
         TextView stockTitle = areaView.findViewById(R.id.tv_stock_title);
         TextView boxCodeTv = areaView.findViewById(R.id.tv_box_code);
+        LinearLayout ll_change = areaView.findViewById(R.id.ll_change);
         if("2".equals(lineModel.getStatus())){
             qty.setEnabled(false);
+            ll_change.setVisibility(View.VISIBLE);
             stockTitle.setText("原库存:");
         }else{
+            ll_change.setVisibility(View.GONE);
             stockTitle.setText("库存:");
         }
         String quantity = stockModel.getQuantityOnhand().toString();
@@ -997,4 +1024,10 @@ public class StockOutBindActivity extends BaseActivity {
         return 0;
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true, priority = 1)
+    public void onReceiveMsg(EventMessage message){
+        if(message.getType() == 4){
+            searchLineTask(lineModel.getLineId());
+        }
+    }
 }

+ 4 - 3
app/src/main/java/com/ygtx/emcs/activity/StockOutNewActivity.java

@@ -129,9 +129,9 @@ public class StockOutNewActivity extends BaseActivity {
         }
         reloadData();
 // ========================test========================
-//        binding.tvScanTips.setOnClickListener(view->{
-//            receiverTask("CK_20250416002");
-//        });
+        binding.tvScanTips.setOnClickListener(view->{
+            receiverTask("CK_20250415010");
+        });
 //        binding.tvOutCode.setOnClickListener(view->{
 //            receiverTask("BOX000008");
 //        });
@@ -162,6 +162,7 @@ public class StockOutNewActivity extends BaseActivity {
         });
         if("1".equals(from)){
             binding.tvScanTips.setVisibility(View.GONE);
+            binding.btnOk.setVisibility(View.GONE);
             Button submit = findViewById(R.id.c_iv_common_submit);
             submit.setBackgroundColor(Res.getColor("transparent"));
             submit.setTextColor(Res.getColor("white"));

+ 114 - 0
app/src/main/java/com/ygtx/emcs/activity/adapter/StockChangeItemViewAdapter.java

@@ -0,0 +1,114 @@
+package com.ygtx.emcs.activity.adapter;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.ygtx.emcs.R;
+import com.ygtx.emcs.activity.model.MaterialStockModel;
+import com.ygtx.emcs.util.Constant;
+import com.ygtx.emcs.util.StringUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+
+public class StockChangeItemViewAdapter extends BaseAdapter {
+    private ArrayList<MaterialStockModel> mList;
+    private Context mContext;
+    private LayoutInflater mLayoutInflater;
+
+    public StockChangeItemViewAdapter(ArrayList<MaterialStockModel> list, Context context) {
+        this.mList=list;
+        this.mContext=context;
+        this.mLayoutInflater=LayoutInflater.from(context);
+    }
+
+    @Override
+    public int getCount() {
+        return mList.size();
+    }
+
+    @Override
+    public Object getItem(int i) {
+        return mList.get(i);
+    }
+
+    @Override
+    public long getItemId(int i) {
+        return i;
+    }
+
+
+    @Override
+    public View getView(int position, View view, ViewGroup parent) {
+        MainHolder mainHolder = null;
+        final MaterialStockModel materialStockModel = mList.get(position);
+        if (view == null) {
+            view=mLayoutInflater.inflate(R.layout.ygtx_material_product_item,null);
+            mainHolder = new MainHolder();
+            mainHolder.tv_item_spec = view.findViewById(R.id.tv_item_spec);
+            mainHolder.tv_product_code = view.findViewById(R.id.tv_product_code);
+            mainHolder.qty = view.findViewById(R.id.tv_qty);
+            mainHolder.tv_product_name = view.findViewById(R.id.tv_product_name);
+            mainHolder.tv_stock_status = view.findViewById(R.id.tv_stock_status);
+            mainHolder.tv_lock_qty = view.findViewById(R.id.tv_lock_qty);
+            mainHolder.tv_box_code = view.findViewById(R.id.tv_box_code);
+            mainHolder.tv_area_code = view.findViewById(R.id.tv_area_code);
+            mainHolder.tv_batch_code = view.findViewById(R.id.tv_batch_code);
+            mainHolder.ll_item = view.findViewById(R.id.ll_item);
+            view.setTag(mainHolder);
+        }else{
+            mainHolder= (MainHolder) view.getTag();
+        }
+        mainHolder.tv_item_spec.setVisibility(View.VISIBLE);
+        mainHolder.tv_item_spec.setText(materialStockModel.getSpecification());
+        mainHolder.tv_product_code.setText(materialStockModel.getItemCode());
+        if(materialStockModel.getQuantityOnhand() == null){
+            materialStockModel.setLockQuantity(BigDecimal.ZERO);
+        }
+        mainHolder.qty.setText(materialStockModel.getQuantityOnhand().toString());
+        mainHolder.tv_product_name.setText(materialStockModel.getItemName());
+        if(materialStockModel.getLockQuantity() == null){
+            materialStockModel.setLockQuantity(BigDecimal.ZERO);
+        }
+        mainHolder.tv_lock_qty.setText(materialStockModel.getLockQuantity().toString());
+        mainHolder.tv_stock_status.setVisibility(View.GONE);
+        mainHolder.tv_box_code.setText(materialStockModel.getAttr1());
+        mainHolder.tv_batch_code.setText(materialStockModel.getBatchCode());
+        if(StringUtils.isEmpty(materialStockModel.getAreaCode())){
+            mainHolder.tv_area_code.setText("不在库位上");
+            mainHolder.tv_area_code.setTextColor(Color.RED);
+        }else if(Constant.XBK.equals(materialStockModel.getAreaCode())){
+            mainHolder.tv_area_code.setText("在线边库");
+            mainHolder.tv_area_code.setTextColor(Color.GREEN);
+        }else{
+            mainHolder.tv_area_code.setText(materialStockModel.getAreaCode());
+            mainHolder.tv_area_code.setTextColor(Color.GRAY);
+        }
+        if("1".equals(materialStockModel.getSel())){
+            mainHolder.ll_item.setBackgroundColor(Color.LTGRAY);
+        }else{
+            mainHolder.ll_item.setBackgroundColor(Color.WHITE);
+        }
+        return view;
+    }
+
+    static class MainHolder {
+        public TextView tv_product_code;
+        public TextView qty;
+        public TextView tv_item_spec;
+        public TextView tv_product_name;
+        public TextView tv_stock_status;
+        public TextView tv_lock_qty;
+        public TextView tv_box_code;
+        public TextView tv_area_code;
+        public TextView tv_batch_code;
+        public LinearLayout ll_item;
+    }
+
+}

+ 76 - 0
app/src/main/java/com/ygtx/emcs/activity/model/BoxCodeModel.java

@@ -0,0 +1,76 @@
+package com.ygtx.emcs.activity.model;
+
+public class BoxCodeModel {
+    private Long boxId;
+    private String boxCode;
+    private String itemReceptCode;
+    private String itemOutCode;
+    private Long areaId;
+    private String areaCode;
+    private String status;
+    private String itemCode;
+
+    public Long getBoxId() {
+        return boxId;
+    }
+
+    public void setBoxId(Long boxId) {
+        this.boxId = boxId;
+    }
+
+    public String getBoxCode() {
+        return boxCode;
+    }
+
+    public void setBoxCode(String boxCode) {
+        this.boxCode = boxCode;
+    }
+
+    public String getItemReceptCode() {
+        return itemReceptCode;
+    }
+
+    public void setItemReceptCode(String itemReceptCode) {
+        this.itemReceptCode = itemReceptCode;
+    }
+
+    public String getItemOutCode() {
+        return itemOutCode;
+    }
+
+    public void setItemOutCode(String itemOutCode) {
+        this.itemOutCode = itemOutCode;
+    }
+
+    public Long getAreaId() {
+        return areaId;
+    }
+
+    public void setAreaId(Long areaId) {
+        this.areaId = areaId;
+    }
+
+    public String getAreaCode() {
+        return areaCode;
+    }
+
+    public void setAreaCode(String areaCode) {
+        this.areaCode = areaCode;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getItemCode() {
+        return itemCode;
+    }
+
+    public void setItemCode(String itemCode) {
+        this.itemCode = itemCode;
+    }
+}

+ 2 - 1
app/src/main/java/com/ygtx/emcs/util/DataUtil.java

@@ -1,5 +1,6 @@
 package com.ygtx.emcs.util;
 
+import com.ygtx.emcs.activity.StockChangeActivity;
 import com.ygtx.emcs.activity.StockInActivity;
 import com.ygtx.emcs.activity.StockInNewActivity;
 import com.ygtx.emcs.activity.StockItemActivity;
@@ -18,7 +19,7 @@ public class DataUtil {
         addMenu(shops,getMenu(StockOutNewActivity.class,"b4","出库单","",0),key);
         addMenu(shops,getMenu(StockPackageActivity.class,"b7","打包区","",0),key);
         addMenu(shops,getMenu(StockItemActivity.class,"b10","库位信息","",0),key);
-//        addMenu(shops,getMenu(BoxCheckActivity.class,"b10","料框检验","",0),key);
+        addMenu(shops,getMenu(StockChangeActivity.class,"b8","物料整理","",0),key);
         return shops;
     }
 

+ 8 - 1
app/src/main/res/layout/ygtx_bind_out_item.xml

@@ -119,10 +119,17 @@
             <TextView
                 android:id="@+id/tv_box_code"
                 android:layout_width="match_parent"
-                android:textSize="18sp"
                 android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:textSize="18sp"
                 android:padding="5dp"
                 android:gravity="start"/>
+            <Button
+                android:id="@+id/btn_change"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="逆向分拣"/>
         </LinearLayout>
         <TextView
             android:layout_width="match_parent"

+ 28 - 0
app/src/main/res/layout/ygtx_bind_out_item_area.xml

@@ -11,6 +11,12 @@
         android:layout_height="wrap_content"
         android:background="@drawable/light_gray"
         android:orientation="horizontal">
+        <TextView
+            android:layout_width="60dp"
+            android:layout_height="wrap_content"
+            android:paddingStart="10dp"
+            android:textSize="16sp"
+            android:text="库位:"/>
         <TextView
             android:id="@+id/et_areaCode"
             android:layout_width="wrap_content"
@@ -23,6 +29,12 @@
             android:layout_weight="1"
             android:hint="没有绑库位"
             android:textSize="16sp"/>
+        <TextView
+            android:layout_width="60dp"
+            android:layout_height="wrap_content"
+            android:paddingStart="10dp"
+            android:textSize="16sp"
+            android:text="料框:"/>
         <TextView
             android:id="@+id/tv_box_code"
             android:paddingTop="5dp"
@@ -97,4 +109,20 @@
             android:textSize="16sp"
             android:hint="请输入数量" />
     </LinearLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/light_gray"
+        android:gravity="end"
+        android:visibility="gone"
+        android:id="@+id/ll_change"
+        android:orientation="horizontal">
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="16sp"
+            android:layout_marginEnd="10dp"
+            android:id="@+id/btn_change"
+            android:text="逆向分拣"/>
+    </LinearLayout>
 </LinearLayout>

+ 176 - 206
app/src/main/res/layout/ygtx_material_product_item.xml

@@ -8,227 +8,197 @@
     android:background="@drawable/gray"
     tools:context=".activity.StockInActivity">
     <LinearLayout
-        android:id="@+id/ll_box_code"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/ll_item"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
         android:background="@color/white"
-        android:orientation="horizontal">
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            android:text="库位:"
-            />
-        <TextView
+        android:orientation="vertical">
+        <LinearLayout
+            android:id="@+id/ll_box_code"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:id="@+id/tv_area_code"
-            android:layout_weight="1"
-            android:gravity="start"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            />
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            android:text="料框:"
-            />
-        <TextView
+            android:orientation="horizontal">
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="库位:"
+                />
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_area_code"
+                android:layout_weight="1"
+                android:gravity="start"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                />
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="料框:"
+                />
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_box_code"
+                android:gravity="start"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:layout_weight="1"
+                />
+        </LinearLayout>
+        <LinearLayout
+            android:id="@+id/ll_item_spec"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:id="@+id/tv_box_code"
-            android:gravity="start"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:layout_weight="1"
-            android:background="@color/white"
-            />
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/ll_item_spec"
-        app:layout_constraintTop_toBottomOf="@+id/ll_box_code"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/white"
-        android:orientation="horizontal">
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            android:text="型号:"
-            />
-        <TextView
+            android:orientation="horizontal">
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="型号:"
+                />
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_item_spec"
+                android:layout_weight="1"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                />
+            <TextView
+                android:id="@+id/tv_stock_status"
+                android:layout_width="60dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:gravity="center"
+                android:textColor="@drawable/blue"
+                android:text=""/>
+        </LinearLayout>
+        <LinearLayout
+            android:id="@+id/ll_product_name"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:id="@+id/tv_item_spec"
-            android:layout_weight="1"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintRight_toRightOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_box_code"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            />
-        <TextView
-            android:id="@+id/tv_stock_status"
-            android:layout_width="60dp"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:gravity="center"
-            android:textColor="@drawable/blue"
-            android:text=""/>
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/ll_product_name"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/ll_item_spec"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/white"
-        android:orientation="horizontal">
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            android:text="品名:"
-            />
-        <TextView
+            android:orientation="horizontal">
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="品名:"
+                />
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_product_name"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                />
+        </LinearLayout>
+        <LinearLayout
+            android:id="@+id/ll_product_code"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:id="@+id/tv_product_name"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            />
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/ll_product_code"
-        app:layout_constraintTop_toBottomOf="@+id/ll_product_name"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:background="@color/white"
-        android:orientation="horizontal">
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            android:text="编号:"/>
-        <TextView
+            android:orientation="horizontal">
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="编号:"/>
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_product_code"
+                android:gravity="start"
+                android:textSize="18dp"
+                />
+        </LinearLayout>
+        <LinearLayout
+            android:id="@+id/ll_batch_code"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:id="@+id/tv_product_code"
-            android:gravity="start"
-            android:textSize="18dp"
-            android:background="@color/white"
-            />
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/ll_batch_code"
-        app:layout_constraintTop_toBottomOf="@+id/ll_product_code"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:background="@color/white"
-        android:orientation="horizontal">
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:background="@color/white"
-            android:text="批号:"/>
-        <TextView
+            android:orientation="horizontal">
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="批号:"/>
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_batch_code"
+                android:gravity="start"
+                android:textSize="18dp"
+                />
+        </LinearLayout>
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:id="@+id/tv_batch_code"
-            android:gravity="start"
-            android:textSize="18dp"
-            android:background="@color/white"
-            />
-    </LinearLayout>
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/white"
-        android:id="@+id/ll_printer"
-        android:gravity="start"
-        app:layout_constraintTop_toBottomOf="@+id/ll_batch_code"
-        app:layout_constraintRight_toRightOf="parent">
-        <TextView
-            android:layout_width="80dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:text="数量:"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/ll_product_name"
-            app:layout_constraintRight_toRightOf="parent"
-            android:id="@+id/tv_qty"
-            android:hint="0"
-            android:gravity="center"
-            android:layout_weight="1"
-            android:textSize="18dp"
-            android:textColor="@color/red"
-            android:paddingBottom="5dp"
-            android:background="@color/white"
-            />
-        <TextView
-            android:layout_width="120dp"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:textSize="18dp"
-            android:text="锁定数量:"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:paddingTop="5dp"
-            android:paddingStart="5dp"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/ll_product_name"
-            app:layout_constraintRight_toRightOf="parent"
-            android:id="@+id/tv_lock_qty"
-            android:layout_weight="1"
-            android:hint="0"
-            android:gravity="center"
-            android:textSize="18dp"
-            android:textColor="@color/red"
-            android:paddingBottom="5dp"
-            android:background="@color/white"
-            />
+            android:id="@+id/ll_printer"
+            android:gravity="start">
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="数量:"/>
+            <TextView
+                android:layout_width="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:layout_height="wrap_content"
+                app:layout_constraintTop_toBottomOf="@+id/ll_product_name"
+                app:layout_constraintRight_toRightOf="parent"
+                android:id="@+id/tv_qty"
+                android:hint="0"
+                android:gravity="center"
+                android:layout_weight="1"
+                android:textSize="18dp"
+                android:textColor="@color/red"
+                android:paddingBottom="5dp"
+                />
+            <TextView
+                android:layout_width="120dp"
+                android:layout_height="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:textSize="18dp"
+                android:text="锁定数量:"/>
+            <TextView
+                android:layout_width="wrap_content"
+                android:paddingTop="5dp"
+                android:paddingStart="5dp"
+                android:layout_height="wrap_content"
+                app:layout_constraintTop_toBottomOf="@+id/ll_product_name"
+                app:layout_constraintRight_toRightOf="parent"
+                android:id="@+id/tv_lock_qty"
+                android:layout_weight="1"
+                android:hint="0"
+                android:gravity="center"
+                android:textSize="18dp"
+                android:textColor="@color/red"
+                android:paddingBottom="5dp"
+                />
+        </LinearLayout>
     </LinearLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 53 - 10
app/src/main/res/layout/ygtx_stock_change.xml

@@ -11,18 +11,16 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:paddingBottom="10dp"
-        android:paddingTop="10dp">
+        android:orientation="horizontal">
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:paddingStart="10dp"
             android:textSize="18dp"
             android:gravity="left"
-            android:text="来源位置:"
+            android:text="来源:"
             />
-        <TextView
+        <EditText
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
@@ -31,22 +29,25 @@
             android:hint="扫料框码或库位码"
             android:gravity="left"
             />
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/btn_from"
+            android:text="查询"/>
     </LinearLayout>
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:paddingBottom="10dp"
-        android:paddingTop="10dp">
+        android:orientation="horizontal">
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:paddingStart="10dp"
             android:textSize="18dp"
             android:gravity="left"
-            android:text="目标位置:"
+            android:text="目标:"
             />
-        <TextView
+        <EditText
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
@@ -55,9 +56,40 @@
             android:hint="扫料框码或库位码"
             android:gravity="left"
             />
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/btn_to"
+            android:text="查询"/>
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:visibility="gone"
+        android:id="@+id/ll_target_area">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingStart="10dp"
+            android:textSize="18dp"
+            android:gravity="left"
+            android:text="目标库位:"
+            />
+        <EditText
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:id="@+id/tv_target_area"
+            android:textSize="18dp"
+            android:hint="扫库位码"
+            android:gravity="left"
+            />
     </LinearLayout>
 
     <ListView android:id="@+id/lv_product"
+        android:layout_marginTop="5dp"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:divider="#00000000"
@@ -66,4 +98,15 @@
         android:listSelector="@color/white"
         android:layout_weight="1"
         />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/tv_empty"
+        android:visibility="gone"
+        android:text="没有物料"
+        android:textColor="@color/red"
+        android:textSize="25dp"
+        android:gravity="center"
+        />
 </LinearLayout>