From 709c63fc30fcf5b23d6a046bf096d987502744a6 Mon Sep 17 00:00:00 2001 From: wangh <123456> Date: Tue, 27 Feb 2024 17:59:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 + .../jingyuan_mes/HomePageActivity.java | 3 + .../adapter/ProductOutConfirmAdapter.java | 71 +++++++ .../adapter/ProductOutInfoAdapter.java | 67 +++++++ .../jingyuan_mes/base/BaseActivity.java | 2 +- .../jingyuan_mes/entity/ProductConfirm.java | 91 +++++++++ .../jingyuan_mes/entity/ProductOutSubmit.java | 42 ++++ .../entity/ProductOutstockDetail.java | 116 ++++++++++++ .../store/MaterialPassActivity.java | 36 ++-- .../store/ProductOutActivity.java | 58 +++++- .../store/ProductOutInfoActivity.java | 85 +++++++++ .../jingyuan_mes/store/SemiActivity.java | 16 ++ .../main/res/layout/activity_product_out.xml | 2 +- .../res/layout/activity_product_out_info.xml | 179 ++++++++++++++++++ app/src/main/res/layout/activity_semi.xml | 103 ++++++++++ .../res/layout/item_product_out_confirm.xml | 116 ++++++++++++ app/src/main/res/layout/item_return_info.xml | 16 +- 17 files changed, 982 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutConfirmAdapter.java create mode 100644 app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutInfoAdapter.java create mode 100644 app/src/main/java/com/example/jingyuan_mes/entity/ProductConfirm.java create mode 100644 app/src/main/java/com/example/jingyuan_mes/entity/ProductOutSubmit.java create mode 100644 app/src/main/java/com/example/jingyuan_mes/entity/ProductOutstockDetail.java create mode 100644 app/src/main/java/com/example/jingyuan_mes/store/ProductOutInfoActivity.java create mode 100644 app/src/main/java/com/example/jingyuan_mes/store/SemiActivity.java create mode 100644 app/src/main/res/layout/activity_product_out_info.xml create mode 100644 app/src/main/res/layout/activity_semi.xml create mode 100644 app/src/main/res/layout/item_product_out_confirm.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8d34eb2..b15cf42 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,12 @@ android:theme="@style/Theme.Jingyuanmes" android:usesCleartextTraffic="true" tools:targetApi="31"> + <activity + android:name=".store.SemiActivity" + android:exported="false" /> + <activity + android:name=".store.ProductOutInfoActivity" + android:exported="false" /> <activity android:name=".store.ProductOutActivity" android:exported="false" /> diff --git a/app/src/main/java/com/example/jingyuan_mes/HomePageActivity.java b/app/src/main/java/com/example/jingyuan_mes/HomePageActivity.java index 686f5e3..ea5a625 100644 --- a/app/src/main/java/com/example/jingyuan_mes/HomePageActivity.java +++ b/app/src/main/java/com/example/jingyuan_mes/HomePageActivity.java @@ -20,6 +20,7 @@ import com.example.jingyuan_mes.store.MaterialInActivity; import com.example.jingyuan_mes.store.MaterialOutListActivity; import com.example.jingyuan_mes.store.MaterialPassActivity; import com.example.jingyuan_mes.store.ProductInActivity; +import com.example.jingyuan_mes.store.ProductOutActivity; import com.example.jingyuan_mes.store.ProductOutApplyActivity; import com.example.jingyuan_mes.store.ProductOutConfirmActivity; import com.example.jingyuan_mes.store.StockreturnActivity; @@ -60,7 +61,9 @@ public class HomePageActivity extends BaseActivity implements ItemClickCall { map.put("原材料退库", StockreturnConfirmActivity.class); map.put("成品入库", ProductInActivity.class); map.put("成品出库申请", ProductOutApplyActivity.class); + map.put("成品出库", ProductOutActivity.class); map.put("成品出库确认", ProductOutConfirmActivity.class); + map.put("半成品入成品库", ProductOutConfirmActivity.class); } private void initRequest() { diff --git a/app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutConfirmAdapter.java b/app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutConfirmAdapter.java new file mode 100644 index 0000000..75350fc --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutConfirmAdapter.java @@ -0,0 +1,71 @@ +package com.example.jingyuan_mes.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.jingyuan_mes.BR; +import com.example.jingyuan_mes.R; +import com.example.jingyuan_mes.databinding.ItemProductOutConfirmBinding; +import com.example.jingyuan_mes.databinding.ItemReturnConfirmBinding; +import com.example.jingyuan_mes.entity.Outstock; +import com.example.jingyuan_mes.entity.ProductConfirm; +import com.example.jingyuan_mes.entity.ProductStock; +import com.example.jingyuan_mes.entity.RawReturn; + +import java.util.List; + +/** + * @author wanghao + * @date 2024/1/31 15:18 + */ +public class ProductOutConfirmAdapter extends RecyclerView.Adapter<ProductOutConfirmAdapter.ItemtViewHolder> { + private List<ProductConfirm> list; + private Context context; + private LayoutInflater inflater; + private ItemClickCall clickCall; + public ProductOutConfirmAdapter(Context context, ItemClickCall clickCall) { + this.context = context; + this.clickCall = clickCall; + inflater = LayoutInflater.from(context); + } + + public void setList(List<ProductConfirm> list) { + this.list = list; + } + + @NonNull + @Override + public ItemtViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemProductOutConfirmBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_product_out_confirm, parent, false); + return new ItemtViewHolder(binding); + } + + @Override + public void onBindViewHolder(@NonNull ItemtViewHolder holder, int position) { + var rawReturn = list.get(position); + var binding = holder.binding; + binding.setVariable(BR.vm,rawReturn); + binding.productOutConfirmLayout.setOnClickListener(v -> clickCall.onClick(position)); + } + + @Override + public int getItemCount() { + return list==null?0:list.size(); + } + + class ItemtViewHolder extends RecyclerView.ViewHolder { + private ItemProductOutConfirmBinding binding; + + public ItemtViewHolder(ItemProductOutConfirmBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + + } +} diff --git a/app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutInfoAdapter.java b/app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutInfoAdapter.java new file mode 100644 index 0000000..802b0ba --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/adapter/ProductOutInfoAdapter.java @@ -0,0 +1,67 @@ +package com.example.jingyuan_mes.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.jingyuan_mes.BR; +import com.example.jingyuan_mes.R; +import com.example.jingyuan_mes.databinding.ItemReturnInfoBinding; +import com.example.jingyuan_mes.entity.ProductOutstockDetail; +import com.example.jingyuan_mes.entity.RawReturnDetail; +import com.example.jingyuan_mes.store.ProductOutInfoActivity; + +import java.util.List; + +/** + * @author wanghao + * @date 2024/1/31 15:18 + */ +public class ProductOutInfoAdapter extends RecyclerView.Adapter<ProductOutInfoAdapter.MyViewHolder> { + private List<ProductOutstockDetail> list; + private Context context; + private LayoutInflater inflater; + public ProductOutInfoAdapter(Context context) { + this.context = context; + inflater = LayoutInflater.from(context); + } + + public void setList(List<ProductOutstockDetail> list) { + this.list = list; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemReturnInfoBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_return_info, parent, false); + return new MyViewHolder(binding); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + var item = list.get(position); + item.setIndex(position+1); + var binding = holder.binding; + binding.setVariable(BR.vm,item); + } + + @Override + public int getItemCount() { + return list==null?0:list.size(); + } + + class MyViewHolder extends RecyclerView.ViewHolder { + private ItemReturnInfoBinding binding; + + public MyViewHolder(ItemReturnInfoBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + + } +} diff --git a/app/src/main/java/com/example/jingyuan_mes/base/BaseActivity.java b/app/src/main/java/com/example/jingyuan_mes/base/BaseActivity.java index ba53790..ecaba2f 100644 --- a/app/src/main/java/com/example/jingyuan_mes/base/BaseActivity.java +++ b/app/src/main/java/com/example/jingyuan_mes/base/BaseActivity.java @@ -30,7 +30,7 @@ public class BaseActivity extends AppCompatActivity { public Gson gson; public MediaType JSON = MediaType.parse("application/json; charset=utf-8"); private MyReceiver myReceiver; - public String handle = "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjczZTJhYjFjLTc5ZDAtNDg5NS04MzE5LWZlYjdlYjAxZmIzMiIsInVzZXJuYW1lIjoiYWRtaW4ifQ.veofmW5UgF7f2qFVuTKMM0qOIvEbAoQ9V0Etf9xJXWHJmOfkTWxGgPlBibXKk-GXBvWGd-CgSM6ljhRu2Pz9xA"; + public String handle = "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6ImVjNTExZWRmLTFhZmUtNGM3NC1hYzY0LWE0NDAzNGYyNjViZCIsInVzZXJuYW1lIjoiYWRtaW4ifQ.o5gRcCOrE9xBzwgy5-emClML29gWyuS9sYW12Nd9XvJrUVBEcrDvemHGIsUm_SVsGuZYPAWjMPN0zSARQ5UHvw"; public Context context; @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/com/example/jingyuan_mes/entity/ProductConfirm.java b/app/src/main/java/com/example/jingyuan_mes/entity/ProductConfirm.java new file mode 100644 index 0000000..9674b69 --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/entity/ProductConfirm.java @@ -0,0 +1,91 @@ +package com.example.jingyuan_mes.entity; + + +import androidx.databinding.BaseObservable; + +import java.util.List; + +/** + * 成品出库 + * + * @author wanghao + * @date 2024/2/22 16:31 + */ +public class ProductConfirm extends BaseObservable { + private int productOutstockId; + private String planDetailCode; + private String materialName; + private String warehouseName; + /** + * 销售订单编号 + */ + private String saleorderCode; + private int applyQty; + private int outstockQty; + + private List<ProductOutstockDetail> wmsProductOutstockDetailList; + + public int getOutstockQty() { + return outstockQty; + } + + public void setOutstockQty(int outstockQty) { + this.outstockQty = outstockQty; + } + + public List<ProductOutstockDetail> getWmsProductOutstockDetailList() { + return wmsProductOutstockDetailList; + } + + public void setWmsProductOutstockDetailList(List<ProductOutstockDetail> wmsProductOutstockDetailList) { + this.wmsProductOutstockDetailList = wmsProductOutstockDetailList; + } + + public int getProductOutstockId() { + return productOutstockId; + } + + public void setProductOutstockId(int productOutstockId) { + this.productOutstockId = productOutstockId; + } + + public String getPlanDetailCode() { + return planDetailCode; + } + + public void setPlanDetailCode(String planDetailCode) { + this.planDetailCode = planDetailCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getWarehouseName() { + return warehouseName; + } + + public void setWarehouseName(String warehouseName) { + this.warehouseName = warehouseName; + } + + public String getSaleorderCode() { + return saleorderCode; + } + + public void setSaleorderCode(String saleorderCode) { + this.saleorderCode = saleorderCode; + } + + public int getApplyQty() { + return applyQty; + } + + public void setApplyQty(int applyQty) { + this.applyQty = applyQty; + } +} diff --git a/app/src/main/java/com/example/jingyuan_mes/entity/ProductOutSubmit.java b/app/src/main/java/com/example/jingyuan_mes/entity/ProductOutSubmit.java new file mode 100644 index 0000000..b8ace82 --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/entity/ProductOutSubmit.java @@ -0,0 +1,42 @@ +package com.example.jingyuan_mes.entity; + +/** + * @author wanghao + * @date 2024/2/27 15:42 + */ +public class ProductOutSubmit { + + /** + * productOutstockId : 1 + * locationCode : 123 + * productBarcode : 12 + */ + + private int productOutstockId; + private String locationCode; + private String productBarcode; + + public int getProductOutstockId() { + return productOutstockId; + } + + public void setProductOutstockId(int productOutstockId) { + this.productOutstockId = productOutstockId; + } + + public String getLocationCode() { + return locationCode; + } + + public void setLocationCode(String locationCode) { + this.locationCode = locationCode; + } + + public String getProductBarcode() { + return productBarcode; + } + + public void setProductBarcode(String productBarcode) { + this.productBarcode = productBarcode; + } +} diff --git a/app/src/main/java/com/example/jingyuan_mes/entity/ProductOutstockDetail.java b/app/src/main/java/com/example/jingyuan_mes/entity/ProductOutstockDetail.java new file mode 100644 index 0000000..00a3f87 --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/entity/ProductOutstockDetail.java @@ -0,0 +1,116 @@ +package com.example.jingyuan_mes.entity; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 成品出库记录明细对象 wms_product_outstock_detail + + */ +public class ProductOutstockDetail { + private int index; + /** + * 成品出库记录明细ID + */ + private Long productOutstockDetailId; + /** + * 成品出库记录ID + */ + private Long productOutstockId; + /** + * 库位编码 + */ + private String locationCode; + /** + * 成品条码 + */ + private String productBarcode; + /** + * 成品批次 + */ + private String productBatch; + /** + * 成品ID + */ + private Long productId; + /** + * 计划数量 + */ + private int planAmount; + /** + * 出库数量 + */ + private int outstockAmount; + + public Long getProductOutstockDetailId() { + return productOutstockDetailId; + } + + public void setProductOutstockDetailId(Long productOutstockDetailId) { + this.productOutstockDetailId = productOutstockDetailId; + } + + public Long getProductOutstockId() { + return productOutstockId; + } + + public void setProductOutstockId(Long productOutstockId) { + this.productOutstockId = productOutstockId; + } + + public String getLocationCode() { + return locationCode; + } + + public void setLocationCode(String locationCode) { + this.locationCode = locationCode; + } + + public String getProductBarcode() { + return productBarcode; + } + + public void setProductBarcode(String productBarcode) { + this.productBarcode = productBarcode; + } + + public String getProductBatch() { + return productBatch; + } + + public void setProductBatch(String productBatch) { + this.productBatch = productBatch; + } + + public Long getProductId() { + return productId; + } + + public void setProductId(Long productId) { + this.productId = productId; + } + + public int getPlanAmount() { + return planAmount; + } + + public void setPlanAmount(int planAmount) { + this.planAmount = planAmount; + } + + public int getOutstockAmount() { + return outstockAmount; + } + + public void setOutstockAmount(int outstockAmount) { + this.outstockAmount = outstockAmount; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } +} diff --git a/app/src/main/java/com/example/jingyuan_mes/store/MaterialPassActivity.java b/app/src/main/java/com/example/jingyuan_mes/store/MaterialPassActivity.java index cb272c8..db5cd30 100644 --- a/app/src/main/java/com/example/jingyuan_mes/store/MaterialPassActivity.java +++ b/app/src/main/java/com/example/jingyuan_mes/store/MaterialPassActivity.java @@ -46,25 +46,21 @@ public class MaterialPassActivity extends BaseActivity { public void onSuccess(Response<MyResult> response) { super.onSuccess(response); var body = response.body(); - if (body.getCode() == 200) { - if (body.getRows() == null) { - Toast.makeText(MaterialPassActivity.this, "暂无审批完成数据", Toast.LENGTH_SHORT).show(); - if (list != null) { - list.clear(); - passAdapter.notifyDataSetChanged(); - } - return; + if (body.getRows() == null) { + Toast.makeText(context, body.getCode() == 200 ? "暂无审批数据" : body.getMsg(), Toast.LENGTH_SHORT).show(); + if (list != null) { + list.clear(); + passAdapter.notifyDataSetChanged(); } - list = gson.fromJson(gson.toJson(body.getRows()), new TypeToken<List<OutstockDetail>>() { - }.getType()); - passAdapter.setList(list); - passAdapter.notifyDataSetChanged(); - } else { - Toast.makeText(MaterialPassActivity.this, body.getMsg(), Toast.LENGTH_SHORT).show(); + return; } - } - }); - } + list = gson.fromJson(gson.toJson(body.getRows()), new TypeToken<List<OutstockDetail>>() {}.getType()); + passAdapter.setList(list); + passAdapter.notifyDataSetChanged(); + + } + }); +} public void outPassSearch(View view) { var searchText = vm.getSearchText(); @@ -76,11 +72,11 @@ public class MaterialPassActivity extends BaseActivity { public void outPassSubmit(View view) { var instockBatch = vm.getInstockBatch(); var locationCode = vm.getLocationCode(); - var tag=new OutstockDetail(); + var tag = new OutstockDetail(); tag.setLocationCode(locationCode); tag.setMaterialBarcode(instockBatch); var index = list.indexOf(tag); - if (index==-1) { + if (index == -1) { Toast.makeText(this, "扫描错误", Toast.LENGTH_SHORT).show(); return; } @@ -92,7 +88,7 @@ public class MaterialPassActivity extends BaseActivity { @Override public void onSuccess(Response<MyResult> response) { var body = response.body(); - if (body.getCode()==200){ + if (body.getCode() == 200) { vm.subClear(); } Toast.makeText(MaterialPassActivity.this, body.getMsg(), Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/example/jingyuan_mes/store/ProductOutActivity.java b/app/src/main/java/com/example/jingyuan_mes/store/ProductOutActivity.java index 38ec6f1..3cbd5a9 100644 --- a/app/src/main/java/com/example/jingyuan_mes/store/ProductOutActivity.java +++ b/app/src/main/java/com/example/jingyuan_mes/store/ProductOutActivity.java @@ -3,17 +3,71 @@ package com.example.jingyuan_mes.store; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; +import android.content.Intent; import android.os.Bundle; +import android.widget.Toast; import com.example.jingyuan_mes.R; +import com.example.jingyuan_mes.adapter.ItemClickCall; +import com.example.jingyuan_mes.adapter.ProductOutConfirmAdapter; +import com.example.jingyuan_mes.adapter.RawReturnConfirmAdapter; +import com.example.jingyuan_mes.base.BaseActivity; +import com.example.jingyuan_mes.base.MyRecultCall; +import com.example.jingyuan_mes.base.MyResult; import com.example.jingyuan_mes.databinding.ActivityProductOutBinding; +import com.example.jingyuan_mes.entity.OutstockDetail; +import com.example.jingyuan_mes.entity.ProductConfirm; +import com.example.jingyuan_mes.entity.RawReturn; +import com.example.jingyuan_mes.uitls.SharedPreferencesUtils; +import com.google.gson.reflect.TypeToken; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; -public class ProductOutActivity extends AppCompatActivity { +import java.util.List; + +public class ProductOutActivity extends BaseActivity implements ItemClickCall { + private ProductOutConfirmAdapter adapter; + private List<ProductConfirm> list; + private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityProductOutBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_product_out); - binding.setAdapter(); + adapter = new ProductOutConfirmAdapter(this, this); + binding.setAdapter(adapter); + intent = new Intent(this, ProductOutInfoActivity.class); + } + + @Override + protected void onResume() { + super.onResume(); + OkGo.<MyResult>get(url + "/wms/mobile/getProductOutStocks").tag(this) + .headers("Authorization", SharedPreferencesUtils.getstring("access_token", "")) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response<MyResult> response) { + super.onSuccess(response); + var body = response.body(); + if (body.getTotal() == 0) { + if (list != null) { + list.clear(); + adapter.notifyDataSetChanged(); + } + Toast.makeText(context, body.getCode()==200?"暂无审批完成数据":body.getMsg(), Toast.LENGTH_SHORT).show(); + return; + } + list = gson.fromJson(gson.toJson(body.getRows()), new TypeToken<List<ProductConfirm>>() { }.getType()); + adapter.setList(list); + adapter.notifyDataSetChanged(); + + } + }); + } + + @Override + public void onClick(int position) { + intent.putExtra("id", list.get(position).getProductOutstockId()); + startActivity(intent); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/jingyuan_mes/store/ProductOutInfoActivity.java b/app/src/main/java/com/example/jingyuan_mes/store/ProductOutInfoActivity.java new file mode 100644 index 0000000..9bf0a2e --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/store/ProductOutInfoActivity.java @@ -0,0 +1,85 @@ +package com.example.jingyuan_mes.store; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + +import android.os.Bundle; +import android.view.View; +import android.widget.Toast; + +import com.example.jingyuan_mes.R; +import com.example.jingyuan_mes.adapter.ProductOutInfoAdapter; +import com.example.jingyuan_mes.base.BaseActivity; +import com.example.jingyuan_mes.base.MyRecultCall; +import com.example.jingyuan_mes.base.MyResult; +import com.example.jingyuan_mes.databinding.ActivityProductOutInfoBinding; +import com.example.jingyuan_mes.entity.ProductConfirm; +import com.example.jingyuan_mes.entity.ProductOutSubmit; +import com.example.jingyuan_mes.entity.ProductOutstockDetail; +import com.example.jingyuan_mes.entity.RawReturn; +import com.example.jingyuan_mes.uitls.SharedPreferencesUtils; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.model.Response; + +import java.util.List; + +import okhttp3.RequestBody; + +public class ProductOutInfoActivity extends BaseActivity { + private ProductOutSubmit submit; + private ActivityProductOutInfoBinding binding; + private ProductOutInfoAdapter adapter; + private int id; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = DataBindingUtil.setContentView(this, R.layout.activity_product_out_info); + id = getIntent().getIntExtra("id", 0); + submit = new ProductOutSubmit(); + submit.setProductOutstockId(id); + binding.setSub(submit); + adapter=new ProductOutInfoAdapter(this); + binding.setAdapter(adapter); + initRequest(id); + + } + + private void initRequest(int id) { + OkGo.<MyResult>get(url + "/wms/mobile/getProductOutStockWithDetails").tag(this) + .headers("Authorization", SharedPreferencesUtils.getstring("access_token", "")) + .params("productOutstockId",id) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response<MyResult> response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + ProductConfirm rawReturn = gson.fromJson(body.getData().toString(), ProductConfirm.class); + binding.setVm(rawReturn); + var wmsProductOutstockDetailList = rawReturn.getWmsProductOutstockDetailList(); + adapter.setList(wmsProductOutstockDetailList); + adapter.notifyDataSetChanged(); + } + Toast.makeText(context, body.getMsg(), Toast.LENGTH_SHORT).show(); + } + }); + } + + + public void productOutConfirmSubmit(View view) { + OkGo.<MyResult>post(url + "/wms/mobile/confirmProductOutstockDetail") + .headers("Authorization", SharedPreferencesUtils.getstring("access_token", "")) + .upRequestBody(RequestBody.create(JSON, gson.toJson(submit))) + .execute(new MyRecultCall(dialog, this) { + @Override + public void onSuccess(Response<MyResult> response) { + super.onSuccess(response); + var body = response.body(); + if (body.getCode() == 200) { + initRequest(id); + } + Toast.makeText(context, body.getMsg(), Toast.LENGTH_SHORT).show(); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/jingyuan_mes/store/SemiActivity.java b/app/src/main/java/com/example/jingyuan_mes/store/SemiActivity.java new file mode 100644 index 0000000..8e3efbd --- /dev/null +++ b/app/src/main/java/com/example/jingyuan_mes/store/SemiActivity.java @@ -0,0 +1,16 @@ +package com.example.jingyuan_mes.store; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import com.example.jingyuan_mes.R; + +public class SemiActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_semi); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_product_out.xml b/app/src/main/res/layout/activity_product_out.xml index 2ab7998..e740add 100644 --- a/app/src/main/res/layout/activity_product_out.xml +++ b/app/src/main/res/layout/activity_product_out.xml @@ -9,7 +9,7 @@ type="String" /> <variable name="adapter" - type="com.example.jingyuan_mes.adapter.RawReturnAdapter" /> + type="com.example.jingyuan_mes.adapter.ProductOutConfirmAdapter" /> </data> diff --git a/app/src/main/res/layout/activity_product_out_info.xml b/app/src/main/res/layout/activity_product_out_info.xml new file mode 100644 index 0000000..290f414 --- /dev/null +++ b/app/src/main/res/layout/activity_product_out_info.xml @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="title" + type="String" /> + + <variable + name="adapter" + type="com.example.jingyuan_mes.adapter.ProductOutInfoAdapter" /> + <variable + name="vm" + type="com.example.jingyuan_mes.entity.ProductConfirm" /> + <variable + name="sub" + type="com.example.jingyuan_mes.entity.ProductOutSubmit" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".store.ProductOutInfoActivity"> + + <include + layout="@layout/toolbar" + app:title='@{title??"成品出库确认"}' /> + + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_marginTop="5dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="90dp" + android:layout_height="match_parent" + android:text="成品名称:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="@{vm.materialName}" /> + </LinearLayout> + + + + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_marginTop="5dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="190dp" + android:layout_height="match_parent" + android:text="申请数量/已出数量:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text='@{vm.applyQty+"/"+vm.outstockQty}' /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="38dp" + android:layout_marginTop="10dp" + android:background="@color/white" + android:paddingLeft="10dp" + android:paddingRight="10dp"> + + <TextView + style="@style/item_title" + android:layout_width="35dp" + android:layout_height="match_parent" + android:text="" /> + + <TextView + style="@style/item_title" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="2" + android:text="物料编码" /> + + <TextView + style="@style/item_title" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="3" + android:text="库位" /> + + <TextView + style="@style/item_title" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="3" + android:text="数量" /> + + <TextView + style="@style/item_title" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="3" + android:text="出库数量" /> + + </LinearLayout> + + <androidx.recyclerview.widget.RecyclerView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + android:adapter="@{adapter}" + android:background="@color/white" + android:padding="5dp" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="90dp" + android:layout_height="match_parent" + android:text="扫描库位:" /> + + <EditText + style="@style/text_san" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="@={sub.locationCode}" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="90dp" + android:layout_height="match_parent" + android:text="扫描成品:" /> + + <EditText + style="@style/text_san" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="45dp" + android:text="@={sub.productBarcode}" /> + + </LinearLayout> + + + <Button + style="@style/button_style" + android:layout_width="match_parent" + android:layout_height="55dp" + android:layout_margin="12dp" + android:onClick="productOutConfirmSubmit" + android:text="提交" /> + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_semi.xml b/app/src/main/res/layout/activity_semi.xml new file mode 100644 index 0000000..fc8406e --- /dev/null +++ b/app/src/main/res/layout/activity_semi.xml @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="title" + type="String" /> + <variable + name="vm" + type="com.example.jingyuan_mes.entity.OutStoreSubmit" /> + <variable + name="adapter" + type="com.example.jingyuan_mes.adapter.MaterialOutPassAdapter" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".store.SemiActivity"> + <include layout="@layout/toolbar" + app:title='@{title??"出半成品库入成品库"}'/> + <androidx.recyclerview.widget.RecyclerView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + android:padding="5dp" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + android:adapter="@{adapter}" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="90dp" + android:layout_height="match_parent" + android:text="扫描物料:" /> + + <EditText + style="@style/text_san" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="@={vm.instockBatch}" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="90dp" + android:layout_height="match_parent" + android:text="扫描库位:" /> + <!-- --> + <EditText + style="@style/text_san" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="45dp" + android:text="@={vm.locationCode}" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp"> + + <TextView + style="@style/text_title" + android:layout_width="90dp" + android:layout_height="match_parent" + android:text="输入数量:" /> + + <EditText + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:inputType="numberDecimal" + android:text='@={vm.outstockAmount + ""}' /> + + </LinearLayout> + + <Button + style="@style/button_style" + android:layout_width="match_parent" + android:layout_height="55dp" + android:layout_margin="20dp" + android:onClick="outPassSubmit" + android:text="提交" /> + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_product_out_confirm.xml b/app/src/main/res/layout/item_product_out_confirm.xml new file mode 100644 index 0000000..23a744b --- /dev/null +++ b/app/src/main/res/layout/item_product_out_confirm.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + <data> + + <variable + name="vm" + type="com.example.jingyuan_mes.entity.ProductConfirm" /> + + </data> + + <LinearLayout + android:id="@+id/product_out_confirm_layout" + android:orientation="vertical" + android:background="@drawable/san_text_bg" + android:layout_width="match_parent" + android:layout_height="182dp" + android:layout_marginTop="5dp" + android:padding="4dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="35dp"> + + <TextView + style="@style/item_title_left" + android:layout_width="110dp" + android:layout_height="match_parent" + android:text="任务编号:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + + android:text='@{vm.planDetailCode}' /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="35dp"> + + <TextView + style="@style/item_title_left" + android:layout_width="110dp" + android:layout_height="match_parent" + android:text="成品名称:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + + android:text="@{vm.materialName}" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="35dp"> + + <TextView + style="@style/item_title_left" + android:layout_width="110dp" + android:layout_height="match_parent" + android:text="销售订单编号:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + + android:text="@{vm.saleorderCode }"/> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="35dp"> + + <TextView + style="@style/item_title_left" + android:layout_width="110dp" + android:layout_height="match_parent" + android:text="仓库:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + + android:text="@{vm.warehouseName}" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="35dp"> + + <TextView + style="@style/item_title_left" + android:layout_width="110dp" + android:layout_height="match_parent" + android:text="申请数量:" /> + + <TextView + style="@style/text_info" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text='@{vm.applyQty+""}' /> + + </LinearLayout> + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_return_info.xml b/app/src/main/res/layout/item_return_info.xml index 7a0fbd6..2e5c68a 100644 --- a/app/src/main/res/layout/item_return_info.xml +++ b/app/src/main/res/layout/item_return_info.xml @@ -4,7 +4,7 @@ <data> <variable name="vm" - type="com.example.jingyuan_mes.entity.RawReturnDetail" /> + type="com.example.jingyuan_mes.entity.ProductOutstockDetail" /> </data> <LinearLayout @@ -29,7 +29,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="2" - android:text="@{vm.materialBarcode}" /> + android:text="@{vm.productBarcode}" /> <View android:layout_width="1dp" android:layout_height="match_parent" @@ -49,6 +49,16 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3" - android:text="@{String.valueOf(vm.returnAmount)}" /> + android:text="@{String.valueOf(vm.planAmount)}" /> + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@color/white"/> + <TextView + style="@style/item_title" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="3" + android:text="@{String.valueOf(vm.outstockAmount)}" /> </LinearLayout> </layout> \ No newline at end of file