Browse Source

1.0.11

master
ml 7 months ago
parent
commit
290372672c
  1. 1
      .idea/misc.xml
  2. 2
      app/build.gradle
  3. 2
      app/release/output.json
  4. 4
      app/src/main/AndroidManifest.xml
  5. 20
      app/src/main/assets/FinshWareHouseUI.json
  6. 14
      app/src/main/assets/MainUIForV.json
  7. 2
      app/src/main/assets/litepal.xml
  8. 14
      app/src/main/java/com/techscan/wk/adapter/DynamicFormAdapter.java
  9. 4
      app/src/main/java/com/techscan/wk/app/AppConst.java
  10. 186
      app/src/main/java/com/techscan/wk/model/FinshWarehouseSaveBean.java
  11. 28
      app/src/main/java/com/techscan/wk/model/FlowReportWorkDetailBean.java
  12. 209
      app/src/main/java/com/techscan/wk/model/ReportWorkBean.java
  13. 8
      app/src/main/java/com/techscan/wk/rxretrofit/ApiService.java
  14. 20
      app/src/main/java/com/techscan/wk/rxretrofit/HttpMethods.java
  15. 12
      app/src/main/java/com/techscan/wk/ui/MainActivity.java
  16. 600
      app/src/main/java/com/techscan/wk/ui/finishedWarehous/FinshWarehouseActivity.java
  17. 38
      app/src/main/java/com/techscan/wk/ui/proreq/ProReqActivity.java
  18. 5
      app/src/main/java/com/techscan/wk/ui/proreq/ProReturnActivity.java
  19. 30
      app/src/main/java/com/techscan/wk/ui/reportwork/ConfigSettingActivity.java
  20. 231
      app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java
  21. 25
      app/src/main/java/com/techscan/wk/utils/BarAnalysisUtils.java
  22. 25
      app/src/main/res/layout/activity_config_setting.xml
  23. 19
      app/src/main/res/layout/activity_flow_order_query.xml
  24. 65
      app/src/main/res/layout/activity_report_work_in.xml
  25. 1
      app/src/main/res/layout/form_item_edit.xml
  26. 3
      app/src/main/res/values-en/strings.xml
  27. 3
      app/src/main/res/values-th-rTH/strings.xml
  28. 3
      app/src/main/res/values/strings.xml

1
.idea/misc.xml

@ -18,6 +18,7 @@
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_pro_return.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_report_work.xml" value="0.1" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_report_work_errlist.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_report_work_in.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_report_work_offse.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_setting.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/cbk_dialog_pick_time.xml" value="0.2246376811594203" />

2
app/build.gradle

@ -9,7 +9,7 @@ android {
//noinspection ExpiredTargetSdkVersion
targetSdkVersion 29
versionCode 1
versionName "1.0.8"
versionName "1.0.11"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk {
abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'

2
app/release/output.json

@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.8","enabled":true,"outputFile":"维科上料报工系统_v1.0.8.apk","fullName":"release","baseName":"release"},"path":"维科上料报工系统_v1.0.8.apk","properties":{}}]
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.11","enabled":true,"outputFile":"维科上料报工系统_v1.0.11.apk","fullName":"release","baseName":"release"},"path":"维科上料报工系统_v1.0.11.apk","properties":{}}]

4
app/src/main/AndroidManifest.xml

@ -59,6 +59,10 @@
android:name="com.techscan.wk.ui.query.FlowOrderQueryActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name=".ui.finishedWarehous.FinshWarehouseActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.proreq.ProReqActivity"
android:exported="false"

20
app/src/main/assets/FinshWareHouseUI.json

@ -0,0 +1,20 @@
[
{
"id": 1,
"type": 2,
"fieldName": "AUFNR",
"name": "工单号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": true,
"language": {
"zh": "工单号",
"en": "Work order number",
"th": "หมายเลขหน้า"
}
}
]

14
app/src/main/assets/MainUIForV.json

@ -101,5 +101,19 @@
"en": "Log out",
"th": "ออกจากการล็อกอิน"
}
},
{
"id": 16,
"name": "完工入库",
"icon": "qtrk",
"to": "com.techscan.wk.ui.finishedWarehous.FinshWarehouseActivity",
"show": "1",
"children": [],
"language": {
"zh": "完工入库",
"en": "Finished warehousing",
"th": "เสร็จแล้วเข้าไปในห้อง"
}
}
]

2
app/src/main/assets/litepal.xml

@ -19,7 +19,7 @@
For example:
<version value="1" />
-->
<version value="21" />
<version value="23" />
<!--
Define your models in the list with mapping tag, LitePal will
create tables for each mapping class. The supported fields

14
app/src/main/java/com/techscan/wk/adapter/DynamicFormAdapter.java

@ -9,12 +9,15 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Switch;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.SPUtils;
import com.blankj.utilcode.util.StringUtils;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
@ -156,6 +159,17 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
break;
case DynamicFormBean.MUL_TEXT:
case DynamicFormBean.EDIT:
RecyclerView.LayoutParams param = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
if (!dynamicFormBean.isShow()) {
param.height = 0;// 这里注意使用自己布局的根布局类型
param.width = 0;// 这里注意使用自己布局的根布局类型
commonViewHolder.getView(R.id.item).setVisibility(View.GONE);
} else {
param.height = commonViewHolder.getView(R.id.item).getLayoutParams().height;
param.width = ViewGroup.LayoutParams.MATCH_PARENT;
commonViewHolder.getView(R.id.item).setVisibility(View.VISIBLE);
}
commonViewHolder.getView(R.id.item).setLayoutParams(param);
// 输入框
// 此处只是设置了是否必填,加*号
DrawableUtils.setDrawable(getContext(), commonViewHolder.getView(R.id.from_item_edit_title), dynamicFormBean.isMast() ? R.mipmap.icon_mast_r : R.mipmap.icon_mast_w);

4
app/src/main/java/com/techscan/wk/app/AppConst.java

@ -18,7 +18,11 @@ public class AppConst {
public static final String KEY_IS_CONTINUOUS = "key_continuous_scan";
public static final String SCAN_ADD_DETAIL = "autoInserDetail";
public static final String HIDE_GW = "hide_gw";
public static final int CAMERA_CODE = 0x11;
public static final int REQUEST_CODE_SCAN_FOR_GROUP = 0X12;
public static final int RESULT_CONFIG = 0X13;
public static final int REQUEST_CONFIG = 0X14;
}

186
app/src/main/java/com/techscan/wk/model/FinshWarehouseSaveBean.java

@ -0,0 +1,186 @@
package com.techscan.wk.model;
import java.util.List;
/**
* Description:
* created by MULEI at 2024/10/28
*/
public class FinshWarehouseSaveBean {
private List<ListBean> list;
public void setList(List<ListBean> list) {
this.list = list;
}
public List<ListBean> getList() {
return this.list;
}
public static class ItemBean {
private String aufnr;
private String zgdsl;
public String getAufnr() {
return aufnr;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getZgdsl() {
return zgdsl;
}
public void setZgdsl(String zgdsl) {
this.zgdsl = zgdsl;
}
}
public static class ListBean {
private List<ItemBean> item;
private String matnr;
private String werks;
private String zbzcj;
private String zcj;
private String zcpdw;
private String zcpsl;
private String zgwh;
private String zljrk;
private String zmesdoc;
private String zpc;
private String zrkzt;
private String zxtpc;
private String zzlzt;
public void setItem(List<ItemBean> item) {
this.item = item;
}
public List<ItemBean> getItem() {
return this.item;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMatnr() {
return this.matnr;
}
public void setWerks(String werks) {
this.werks = werks;
}
public String getWerks() {
return this.werks;
}
public void setZbzcj(String zbzcj) {
this.zbzcj = zbzcj;
}
public String getZbzcj() {
return this.zbzcj;
}
public void setZcj(String zcj) {
this.zcj = zcj;
}
public String getZcj() {
return this.zcj;
}
public void setZcpdw(String zcpdw) {
this.zcpdw = zcpdw;
}
public String getZcpdw() {
return this.zcpdw;
}
public void setZcpsl(String zcpsl) {
this.zcpsl = zcpsl;
}
public String getZcpsl() {
return this.zcpsl;
}
public void setZgwh(String zgwh) {
this.zgwh = zgwh;
}
public String getZgwh() {
return this.zgwh;
}
public void setZljrk(String zljrk) {
this.zljrk = zljrk;
}
public String getZljrk() {
return this.zljrk;
}
public void setZmesdoc(String zmesdoc) {
this.zmesdoc = zmesdoc;
}
public String getZmesdoc() {
return this.zmesdoc;
}
public void setZpc(String zpc) {
this.zpc = zpc;
}
public String getZpc() {
return this.zpc;
}
public void setZrkzt(String zrkzt) {
this.zrkzt = zrkzt;
}
public String getZrkzt() {
return this.zrkzt;
}
public void setZxtpc(String zxtpc) {
this.zxtpc = zxtpc;
}
public String getZxtpc() {
return this.zxtpc;
}
public void setZzlzt(String zzlzt) {
this.zzlzt = zzlzt;
}
public String getZzlzt() {
return this.zzlzt;
}
}
}

28
app/src/main/java/com/techscan/wk/model/FlowReportWorkDetailBean.java

@ -17,6 +17,10 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private String matnr;//物料编码
private String zxtpc;//箱号
private String zpc;//批次
private String meinh;//单位
private String psmng;//订单数量
private String ueeto;//容差数量1.0表示1%
private int ism01;
private int ism02;
private int ism03;
@ -24,6 +28,30 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private int ism05;
private int ism06;
public String getMeinh() {
return meinh;
}
public void setMeinh(String meinh) {
this.meinh = meinh;
}
public String getUeeto() {
return ueeto;
}
public void setUeeto(String ueeto) {
this.ueeto = ueeto;
}
public String getPsmng() {
return psmng;
}
public void setPsmng(String psmng) {
this.psmng = psmng;
}
public String getMatnr() {
return matnr;
}

209
app/src/main/java/com/techscan/wk/model/ReportWorkBean.java

@ -0,0 +1,209 @@
package com.techscan.wk.model;
public class ReportWorkBean {
private boolean select;
private String arbpl;
private String aufnr;
private String matnr;
private String budat;
private String createTime;
private int createUser;
private int dr;
private String gmein;
private int gmnga;
private String grund;
private int id;
private int lmnga;
private String meinh;
private String resultRmzhl;
private String resultRueck;
private String rmzhl;
private String rueck;
private int status;
private String vornr;
private String werks;
private int xmnga;
private String zxtpc;
private String zpc;
private String zzt;
public String getMatnr() {
return matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getZpc() {
return zpc;
}
public void setZpc(String zpc) {
this.zpc = zpc;
}
public boolean isSelect() {
return select;
}
public void setSelect(boolean select) {
this.select = select;
}
public void setArbpl(String arbpl) {
this.arbpl = arbpl;
}
public String getArbpl() {
return arbpl;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getAufnr() {
return aufnr;
}
public void setBudat(String budat) {
this.budat = budat;
}
public String getBudat() {
return budat;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getCreateTime() {
return createTime;
}
public void setCreateUser(int createUser) {
this.createUser = createUser;
}
public int getCreateUser() {
return createUser;
}
public void setDr(int dr) {
this.dr = dr;
}
public int getDr() {
return dr;
}
public void setGmein(String gmein) {
this.gmein = gmein;
}
public String getGmein() {
return gmein;
}
public void setGmnga(int gmnga) {
this.gmnga = gmnga;
}
public int getGmnga() {
return gmnga;
}
public void setGrund(String grund) {
this.grund = grund;
}
public String getGrund() {
return grund;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setLmnga(int lmnga) {
this.lmnga = lmnga;
}
public int getLmnga() {
return lmnga;
}
public void setMeinh(String meinh) {
this.meinh = meinh;
}
public String getMeinh() {
return meinh;
}
public void setResultRmzhl(String resultRmzhl) {
this.resultRmzhl = resultRmzhl;
}
public String getResultRmzhl() {
return resultRmzhl;
}
public void setResultRueck(String resultRueck) {
this.resultRueck = resultRueck;
}
public String getResultRueck() {
return resultRueck;
}
public void setRmzhl(String rmzhl) {
this.rmzhl = rmzhl;
}
public String getRmzhl() {
return rmzhl;
}
public void setRueck(String rueck) {
this.rueck = rueck;
}
public String getRueck() {
return rueck;
}
public void setStatus(int status) {
this.status = status;
}
public int getStatus() {
return status;
}
public void setVornr(String vornr) {
this.vornr = vornr;
}
public String getVornr() {
return vornr;
}
public void setWerks(String werks) {
this.werks = werks;
}
public String getWerks() {
return werks;
}
public void setXmnga(int xmnga) {
this.xmnga = xmnga;
}
public int getXmnga() {
return xmnga;
}
public void setZxtpc(String zxtpc) {
this.zxtpc = zxtpc;
}
public String getZxtpc() {
return zxtpc;
}
public void setZzt(String zzt) {
this.zzt = zzt;
}
public String getZzt() {
return zzt;
}
}

8
app/src/main/java/com/techscan/wk/rxretrofit/ApiService.java

@ -53,6 +53,9 @@ public interface ApiService {
@POST("/web/report/saveReport")
Observable<ResponseBody> saveReport(@Body Map<String,Object> requestBean);
@POST("/web/report/saveCheck")
Observable<ResponseBody> saveCheck(@Body Map<String,Object> requestBean);
@POST("/web/report/resubmit")
Observable<ResponseBody> reportResubmit(@Body Map<String,Object> requestBean);
@ -84,11 +87,14 @@ public interface ApiService {
Observable<ResponseBody> getFlowReport(@Query("zxtpc") String zxtpc);
@GET("/web/order/info")
Observable<ResponseBody> getOrderInfo(@Query("id") String order);
Observable<ResponseBody> getOrderInfo(@Query("id") String order, @Query("pickOrder") boolean pickOrder);
@GET("/web/order/getByzboxid")
Observable<ResponseBody> getByzboxid(@Query("zboxid") String zboxid);
@POST("/web/report/storage")
Observable<ResponseBody> storage(@Body String json);
@GET("/web/order/getlgort")
Observable<ResponseBody> getlgort();

20
app/src/main/java/com/techscan/wk/rxretrofit/HttpMethods.java

@ -284,6 +284,14 @@ public class HttpMethods {
.subscribe(observer);
}
public void saveCheck(Map<String, Object> map, Observer<ResponseBody> observer) {
getApiService().saveCheck(map)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void saveCX(Map<String, Object> map, Observer<ResponseBody> observer) {
getApiService().saveCX(map)
.subscribeOn(Schedulers.io())
@ -291,6 +299,14 @@ public class HttpMethods {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void storage(String json, Observer<ResponseBody> observer) {
getApiService().storage(json)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void saveBackPick(String obj, Observer<ResponseBody> observer) {
getApiService().saveBackPick(obj)
.subscribeOn(Schedulers.io())
@ -345,9 +361,9 @@ public class HttpMethods {
.subscribe(observer);
}
public void getOrderInfo(String order,
public void getOrderInfo(String order,boolean pickOrder,
Observer<ResponseBody> observer) {
getApiService().getOrderInfo(order)
getApiService().getOrderInfo(order,pickOrder)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

12
app/src/main/java/com/techscan/wk/ui/MainActivity.java

@ -215,7 +215,7 @@ public class MainActivity extends BaseActivity {
break;
}
}
}else if (homeFunctionBean.getName().equals("流转单查询")) {
} else if (homeFunctionBean.getName().equals("流转单查询")) {
for (int i = 0; i < menus.size(); i++) {
VicoUserBean.MenusBean menusBean = menus.get(i);
if (menusBean.getName().equals("流转单")) {
@ -223,7 +223,7 @@ public class MainActivity extends BaseActivity {
break;
}
}
}else if (homeFunctionBean.getName().equals("生产退料")) {
} else if (homeFunctionBean.getName().equals("生产退料")) {
for (int i = 0; i < menus.size(); i++) {
VicoUserBean.MenusBean menusBean = menus.get(i);
if (menusBean.getName().equals("生产退料")) {
@ -231,6 +231,14 @@ public class MainActivity extends BaseActivity {
break;
}
}
} else if (homeFunctionBean.getName().equals("完工入库")) {
for (int i = 0; i < menus.size(); i++) {
VicoUserBean.MenusBean menusBean = menus.get(i);
if (menusBean.getName().equals("入库")) {
isHas = true;
break;
}
}
} else if (homeFunctionBean.getName().equals("退出登录")) {
isHas = true;
}

600
app/src/main/java/com/techscan/wk/ui/finishedWarehous/FinshWarehouseActivity.java

@ -0,0 +1,600 @@
package com.techscan.wk.ui.finishedWarehous;
import static com.techscan.wk.app.AppConst.CAMERA_CODE;
import static com.techscan.wk.app.AppConst.KEY_IS_CONTINUOUS;
import static com.techscan.wk.app.AppConst.KEY_TITLE;
import static com.techscan.wk.app.AppConst.REQUEST_CODE_SCAN_FOR_GROUP;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
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.BaseBackgroundFormat;
import com.bin.david.form.data.format.bg.BaseCellBackgroundFormat;
import com.bin.david.form.data.format.bg.IBackgroundFormat;
import com.bin.david.form.data.format.draw.ImageResDrawFormat;
import com.bin.david.form.data.style.FontStyle;
import com.bin.david.form.data.table.TableData;
import com.bin.david.form.utils.DensityUtils;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.google.gson.reflect.TypeToken;
import com.king.zxing.Intents;
import com.lxj.xpopup.XPopup;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.techscan.wk.R;
import com.techscan.wk.adapter.DynamicFormAdapter;
import com.techscan.wk.base.CommonFunctionActivity;
import com.techscan.wk.model.DetailShowBean;
import com.techscan.wk.model.DynamicFormBean;
import com.techscan.wk.model.FinshWarehouseSaveBean;
import com.techscan.wk.model.ReportWorkBean;
import com.techscan.wk.model.ReportWorkErrorInfoBean;
import com.techscan.wk.rxbus.Event;
import com.techscan.wk.rxbus.RxBus;
import com.techscan.wk.rxretrofit.BaseObserver;
import com.techscan.wk.rxretrofit.BaseResponseBean;
import com.techscan.wk.rxretrofit.HttpMethods;
import com.techscan.wk.ui.scan.CustomCaptureActivity;
import com.techscan.wk.utils.AntiShakeUtils;
import com.techscan.wk.utils.FindUtils;
import com.techscan.wk.utils.SoundUtils;
import com.techscan.wk.utils.ToastUtil;
import com.techscan.wk.widgets.DetailBottomSheet;
import com.techscan.wk.widgets.MySmartTable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.disposables.Disposable;
import okhttp3.ResponseBody;
import q.rorbin.badgeview.QBadgeView;
/**
* 完工入库
*/
public class FinshWarehouseActivity extends CommonFunctionActivity {
@BindView(R.id.topbar)
QMUITopBar topbar;
@BindView(R.id.et_value)
EditText etValue;
@BindView(R.id.iv_scan)
ImageView ivScan;
@BindView(R.id.ll_scan)
LinearLayout llScan;
@BindView(R.id.rv_ui)
RecyclerView rvUi;
@BindView(R.id.smartTable)
MySmartTable<ReportWorkBean> smartTable;
private Column<Boolean> select;
private Column<String> AUFNR;
private Column<String> GMNGA;
private Column<String> createTime;
private Column<String> zxtpc;
private Column<String> zpc;
QBadgeView qTaskBadgeView, qDetailBadgeView;
private DynamicFormAdapter dynamicFormAdapter;
private List<DynamicFormBean> dynamicFormBeans;
private DynamicFormBean selectDynamicFormBean;
private TableData<ReportWorkBean> mTableData;
private List<ReportWorkBean> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_work_in);
ButterKnife.bind(this);
setBody(true);
Disposable register = RxBus.getInstance().register(Event.class, eventMsg -> {
});
RxBus.getInstance().addSubscription(this, register);
qTaskBadgeView = new QBadgeView(context);
qDetailBadgeView = new QBadgeView(context);
initTopBar();
initListeners();
initRvData();
initTableData();
rvUi.postDelayed(() -> {
setNextFocus("AUFNR");
}, 200);
}
private void initTableData() {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWith = metrics.widthPixels;
TableConfig config = smartTable.getConfig();
FontStyle columnTitleStyle = config.getColumnTitleStyle();
columnTitleStyle.setTextSpSize(this, 16);
config.setMinTableWidth(screenWith);
config.setColumnTitleHorizontalPadding(8);
config.setColumnTitleVerticalPadding(12);
config.setVerticalPadding(12);
IBackgroundFormat backgroundFormat = new BaseBackgroundFormat(getResources().getColor(R.color.white_grey_3));
config.setColumnTitleBackground(backgroundFormat);
config.setShowXSequence(false);
config.setShowYSequence(false);
config.setShowTableTitle(false);
select = new Column<>(getString(R.string.select_all), "select");
AUFNR = new Column<>(getString(R.string.Work_order_number), "aufnr");
GMNGA = new Column<>(getString(R.string.Quantity_reported), "gmnga");
createTime = new Column<>(getString(R.string.Creation_time), "createTime");
zxtpc = new Column<>(getString(R.string.Case_number), "zxtpc");
zpc = new Column<>(getString(R.string.batch), "zpc");
select.setFixed(true);
select.setFast(true);
select.setMinWidth(90);
AUFNR.setFast(true);
GMNGA.setFast(true);
createTime.setFast(true);
zxtpc.setFast(true);
zpc.setFast(true);
//设置单个格子背景颜色
smartTable.getConfig().setContentCellBackgroundFormat(new BaseCellBackgroundFormat<CellInfo>() {
@Override
public int getBackGroundColor(CellInfo cellInfo) {
if ("select".equals(cellInfo.column.getFieldName())) {
return ContextCompat.getColor(FinshWarehouseActivity.this, R.color.white_grey_3);
}
return TableConfig.INVALID_COLOR;
}
//根据背景颜色设置字体颜色
@Override
public int getTextColor(CellInfo cellInfo) {
if ("select".equals(cellInfo.column.getFieldName())) {
return ContextCompat.getColor(FinshWarehouseActivity.this, R.color.app_color_theme_7);
} else {
return super.getTextColor(cellInfo);
}
}
});
final int imgSize = DensityUtils.dp2px(this, 20);
select.setDrawFormat(new ImageResDrawFormat<Boolean>(imgSize, imgSize) {
@Override
protected Context getContext() {
return FinshWarehouseActivity.this;
}
@Override
protected int getResourceID(Boolean val, String value, int position) {
if (list.get(position).isSelect()) {
return R.mipmap.ic_select_check;
} else {
return R.mipmap.ic_unselect_check;
}
}
});
smartTable.setOnColumnClickListener(columnInfo -> {
String columnName = columnInfo.column.getColumnName();
if (columnInfo.column.getFieldName().equals("select")) {
List<ReportWorkBean> beanList = smartTable.getTableData().getT();
if (beanList != null && beanList.size() != 0) {
if (columnName.equals(getString(R.string.select_all))) {
select.setColumnName(getString(R.string.cancel_info));
for (int i = 0; i < beanList.size(); i++) {
beanList.get(i).setSelect(true);
}
} else {
select.setColumnName(getString(R.string.select_all));
for (int i = 0; i < beanList.size(); i++) {
beanList.get(i).setSelect(false);
}
}
smartTable.refreshDrawableState();
smartTable.invalidate();
}
}
});
setTableData();
setTableRowClickListener();
}
private void setTableRowClickListener() {
smartTable.getTableData().setOnRowClickListener((column, reportWorkOffsetBean, coIndex, row) -> {
if (column.getFieldName().equals("select")) {
List<ReportWorkBean> beanList = smartTable.getTableData().getT();
if (beanList.get(row).isSelect()) {
beanList.get(row).setSelect(false);
} else {
beanList.get(row).setSelect(true);
}
int selectCount = 0;
for (int i = 0; i < beanList.size(); i++) {
if (beanList.get(i).isSelect()) {
selectCount++;
}
}
if (beanList.size() > 0 && selectCount == beanList.size()) {
select.setColumnName(getString(R.string.cancel_info));
} else {
select.setColumnName(getString(R.string.select_all));
}
smartTable.refreshDrawableState();
smartTable.invalidate();
} else {
List<DetailShowBean> list = new ArrayList<>();
list.add(new DetailShowBean(getString(R.string.Work_order_number), reportWorkOffsetBean.getAufnr()));
list.add(new DetailShowBean(getString(R.string.Creation_time), reportWorkOffsetBean.getCreateTime()));
list.add(new DetailShowBean(getString(R.string.Process_confirmation_number), reportWorkOffsetBean.getResultRueck()));
list.add(new DetailShowBean(getString(R.string.counter), reportWorkOffsetBean.getResultRmzhl()));
list.add(new DetailShowBean(getString(R.string.Factory), reportWorkOffsetBean.getWerks()));
list.add(new DetailShowBean(getString(R.string.Case_number), reportWorkOffsetBean.getZxtpc()));
list.add(new DetailShowBean(getString(R.string.batch), reportWorkOffsetBean.getZpc()));
list.add(new DetailShowBean(getString(R.string.Quantity_reported), reportWorkOffsetBean.getGmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_reported_quantity), reportWorkOffsetBean.getMeinh() + ""));
list.add(new DetailShowBean(getString(R.string.Basic_number_of_reports), reportWorkOffsetBean.getLmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_basic_quantity_reported), reportWorkOffsetBean.getGmein()));
DetailBottomSheet detailBottomSheet = new DetailBottomSheet<>(context, getResources().getString(R.string.detail_info), list);
new XPopup.Builder(context)
.moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
.isRequestFocus(false)
.autoFocusEditText(false)
.autoOpenSoftInput(true)
.asCustom(detailBottomSheet)
.show();
}
});
}
/**
* 保存数据
*/
private void saveData() {
List<ReportWorkBean> reportWorkBeanList = smartTable.getTableData().getT();
List<FinshWarehouseSaveBean.ListBean> listBeanList = new ArrayList<>();
for (int i = 0; i < reportWorkBeanList.size(); i++) {
ReportWorkBean reportWorkBean = reportWorkBeanList.get(i);
if (reportWorkBean.isSelect()) {
List<FinshWarehouseSaveBean.ItemBean> itemBeanList = new ArrayList<>();
FinshWarehouseSaveBean.ItemBean itemBean = new FinshWarehouseSaveBean.ItemBean();
itemBean.setAufnr(reportWorkBean.getAufnr());
itemBean.setZgdsl(String.valueOf(reportWorkBean.getGmnga()));
itemBeanList.add(itemBean);
FinshWarehouseSaveBean.ListBean listBean = new FinshWarehouseSaveBean.ListBean();
listBean.setMatnr(reportWorkBean.getMatnr());
listBean.setWerks(reportWorkBean.getWerks());
listBean.setZcpdw(reportWorkBean.getMeinh());
listBean.setZcpsl(String.valueOf(reportWorkBean.getGmnga()));
listBean.setZpc(reportWorkBean.getZpc());
listBean.setZxtpc(reportWorkBean.getZxtpc());
listBean.setZzlzt("10");
listBean.setItem(itemBeanList);
listBeanList.add(listBean);
}
}
if (listBeanList.size() == 0) {
ToastUtils.showLong(R.string.Please_select_the_data_you_want_to_save);
return;
}
FinshWarehouseSaveBean bean = new FinshWarehouseSaveBean();
bean.setList(listBeanList);
String json = gson.toJson(bean);
HttpMethods.getInstance().storage(json, new BaseObserver<ResponseBody>(this) {
@Override
protected void onSuccess(ResponseBody responseBody) throws Exception {
String string = responseBody.string();
Type objectType = new TypeToken<BaseResponseBean<String>>() {
}.getType();
BaseResponseBean<String> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
QMUIDialog.MessageDialogBuilder messageDialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
messageDialogBuilder.setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(getString(R.string.Data_saved_successfully))
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
})
.create(R.style.QMUI_Dialog).show();
messageDialogBuilder.show().setOnDismissListener(dialogInterface -> query());
} else {
showError(baseResponseBean.getMsg());
}
}
@Override
protected void onFailure(Throwable e) throws Exception {
CustomErrorDialog(e, FinshWarehouseActivity.this);
}
});
}
private void setTableData() {
mTableData = new TableData<>("", list, select, AUFNR, GMNGA,zxtpc,createTime,zpc);
smartTable.setTableData(mTableData);
smartTable.invalidate();
}
/**
* 初始化顶部标题栏
*/
private void initTopBar() {
topbar.setTitle(getString(R.string.Finished_warehousing));
topbar.addLeftBackImageButton().setOnClickListener(v -> finishActivity());
}
/**
* 界面数据回调监听设置
*/
private void initListeners() {
}
/**
* 重新刷新ui
*/
@SuppressLint("SetTextI18n")
private void reInitUI() {
runOnUiThread(() -> {
dynamicFormAdapter.clearAllValues();
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);
}
setNextFocus("AUFNR");
});
}
/**
* 初始化动态列表数据
*/
private void initRvData() {
// 从资源文件中读取界面数据
String jsonStr = FindUtils.readJsonFromFile(context, "FinshWareHouseUI.json");
// 将读取到的json数据转化为动态表单对象
Type objectType = new TypeToken<List<DynamicFormBean>>() {
}.getType();
//动态表单数据
dynamicFormBeans = gson.fromJson(jsonStr, objectType);
// 动态表单绑定数据并绑定适配器到recycleView中
dynamicFormAdapter = new DynamicFormAdapter(dynamicFormBeans, false, 0);
GridLayoutManager layout = new GridLayoutManager(this, 2);
layout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int i) {
return dynamicFormBeans.get(i).getType() == 8 ? 1 : 2;
}
});
rvUi.setLayoutManager(layout);
rvUi.setAdapter(dynamicFormAdapter);
rvUi.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
// 设置动态表单点击事件
dynamicFormAdapter.setOnFormItemViewClickListener((dynamicFormBean, position, custom) -> {
if (custom.length > 0) {
if (custom[0].equals("scan")) {
selectDynamicFormBean = dynamicFormBean;
if (!hasPermission(Manifest.permission.CAMERA))
requestPermission(CAMERA_CODE, Manifest.permission.CAMERA);
else
startScan(getResources().getString(R.string.scan_title));
}
}
});
dynamicFormAdapter.setOnFormItemViewActionListener((dynamicFormBean, position) -> {
String value = dynamicFormBean.getValue();
switch (dynamicFormBean.getFieldName()) {
case "AUFNR":
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);
}
query();
break;
default:
break;
}
});
}
/**
* 根据工单调用查询接口方法
*/
private void query() {
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
HttpMethods.getInstance().getReport(aufnrItem.getValue(), "", new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();
Type objectType = new TypeToken<BaseResponseBean<List<ReportWorkBean>>>() {
}.getType();
BaseResponseBean<List<ReportWorkBean>> baseResponseBean = gson.fromJson(string, objectType);
select.setColumnName(getString(R.string.select_all));
if (baseResponseBean.getCode() == 200) {
list.clear();
if (baseResponseBean.getData().size() > 0) {
list.addAll(baseResponseBean.getData());
} else {
ToastUtils.showLong(getString(R.string.No_data_was_obtained));
}
} else {
list.clear();
showError(baseResponseBean.getMsg());
}
setTableData();
setTableRowClickListener();
}
@Override
protected void onFailure(Throwable e) throws Exception {
select.setColumnName(getString(R.string.select_all));
list.clear();
setTableData();
setTableRowClickListener();
CustomErrorDialog(e, FinshWarehouseActivity.this);
}
});
}
@OnClick({R.id.iv_scan, R.id.btn_submit})
public void onViewClicked(View view) {
if (AntiShakeUtils.isInvalidClick(view))
return;
switch (view.getId()) {
case R.id.iv_scan:
//扫码
if (!hasPermission(Manifest.permission.CAMERA))
requestPermission(CAMERA_CODE, Manifest.permission.CAMERA);
else
startScan(getResources().getString(R.string.scan_title));
break;
case R.id.btn_submit:
saveData();
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SCAN_FOR_GROUP) {
if (resultCode == RESULT_OK && data != null) {
String scanResult = data.getStringExtra(Intents.Scan.RESULT);
if (StringUtils.isTrimEmpty(scanResult)) {
SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToastCenter(context, getString(R.string.The_bar_code_cannot_be_blank));
return;
}
if (selectDynamicFormBean != null) {
selectDynamicFormBean.setValue(scanResult);
dynamicFormAdapter.setItemByFieldName(selectDynamicFormBean.getFieldName(), selectDynamicFormBean);
}
switch (selectDynamicFormBean.getFieldName()) {
case "AUFNR":
break;
}
}
}
}
private void showError(String msg) {
SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToastCenter(context, msg);
}
/**
* 扫码
*
* @param title 扫码标题
*/
private void startScan(String title) {
Intent intent = new Intent(context, CustomCaptureActivity.class);
intent.putExtra(KEY_TITLE, title);
intent.putExtra(KEY_IS_CONTINUOUS, false);
ActivityCompat.startActivityForResult(context, intent, REQUEST_CODE_SCAN_FOR_GROUP, null);
}
@Override
public void doRequestPermissionsResult(int requestCode, @NonNull int[] grantResults) {
// 读取手机信息权限
if (requestCode == CAMERA_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
// 权限请求成功
startScan(getResources().getString(R.string.scan_title));
else
// 权限请求失败
Toast.makeText(context, getResources().getString(R.string.scan_no_permission), Toast.LENGTH_SHORT).show();
}
}
private void setNextFocus(String name) {
rvUi.postDelayed(() -> {
List<DynamicFormBean> data = dynamicFormAdapter.getData();
for (DynamicFormBean bean :
data) {
if (bean.getFieldName().equals(name)) {
bean.setValue("");
bean.setFocus(true);
} else {
bean.setFocus(false);
}
}
dynamicFormAdapter.notifyDataSetChanged();
}, 200);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finishActivity();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void finishActivity() {
finish();
}
@Override
protected void onDestroy() {
RxBus.getInstance().unRegister(this);
super.onDestroy();
}
}

38
app/src/main/java/com/techscan/wk/ui/proreq/ProReqActivity.java

@ -126,6 +126,7 @@ public class ProReqActivity extends CommonFunctionActivity {
private boolean isSave = false;
private AnalysisBarBean barDataBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -171,7 +172,7 @@ public class ProReqActivity extends CommonFunctionActivity {
private void initTopBar() {
topbar.setTitle(getString(R.string.Production_loading));
topbar.addLeftBackImageButton().setOnClickListener(v -> finishActivity());
topbar.addRightTextButton(getString(R.string.configuration), 0).setOnClickListener(view -> Router.newIntent(context).to(ConfigSettingActivity.class).launch());
topbar.addRightTextButton(getString(R.string.configuration), 0).setOnClickListener(view -> Router.newIntent(context).to(ConfigSettingActivity.class).requestCode(AppConst.REQUEST_CONFIG).launch());
}
/**
@ -198,6 +199,13 @@ public class ProReqActivity extends CommonFunctionActivity {
}.getType();
//动态表单数据
dynamicFormBeans = gson.fromJson(jsonStr, objectType);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean bean = dynamicFormBeans.get(i);
if(bean.getFieldName().equals("ZCJBM") || bean.getFieldName().equals("ZGWH")){
bean.setShow(!isHIDE_GW);
}
}
// 动态表单绑定数据并绑定适配器到recycleView中
dynamicFormAdapter = new DynamicFormAdapter(dynamicFormBeans, false, 0);
@ -427,6 +435,12 @@ public class ProReqActivity extends CommonFunctionActivity {
showError(getString(R.string.The_quantity_cannot_be_empty));
return;
}
if(!checkNumber(quantity)){
showError(getString(R.string.The_quantity_is_not_correct));
setNextFocus("quantity");
return;
}
//当前加入明细的数量
double currenScanNum = Double.parseDouble(quantity);
if (currenScanNum <= 0) {
@ -597,7 +611,7 @@ public class ProReqActivity extends CommonFunctionActivity {
* @param id 工单号
*/
private void query(String id) {
HttpMethods.getInstance().getOrderInfo(id, new BaseObserver<ResponseBody>(context) {
HttpMethods.getInstance().getOrderInfo(id,true, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();
@ -639,9 +653,12 @@ public class ProReqActivity extends CommonFunctionActivity {
}
showTaskDetailBadgeNum();
qmuiTipDialog.dismiss();
setNextFocus("ZCJBM");
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
if (!isHIDE_GW) {
setNextFocus("ZCJBM");
} else {
setNextFocus("barcode");
}
}
@Override
@ -892,6 +909,17 @@ public class ProReqActivity extends CommonFunctionActivity {
break;
}
}
} else if (requestCode == AppConst.REQUEST_CONFIG) {
if (resultCode == AppConst.RESULT_CONFIG) {
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean bean = dynamicFormBeans.get(i);
if(bean.getFieldName().equals("ZCJBM") || bean.getFieldName().equals("ZGWH")){
bean.setShow(!isHIDE_GW);
}
}
dynamicFormAdapter.notifyDataSetChanged();
}
}
}

5
app/src/main/java/com/techscan/wk/ui/proreq/ProReturnActivity.java

@ -100,6 +100,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
MySmartTable<ProReturnBean> smartTable;
private Column<String> select;
private Column<String> AUFNR;
private Column<String> zboxid;
private Column<String> matnr;
private Column<String> erfmg;
private Column<String> zpc;
@ -154,6 +155,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
select = new Column<>(getString(R.string.choice), "select");
AUFNR = new Column<>(getString(R.string.Work_order_number), "aufnr");
zboxid = new Column<>(getString(R.string.Case_number), "zboxid");
matnr = new Column<>(getString(R.string.Material_number), "matnr");
erfmg = new Column<>(getString(R.string.num_title), "erfmg");
zpc = new Column<>(getString(R.string.batch), "zpc");
@ -164,6 +166,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
select.setFast(true);
select.setMinWidth(110);
AUFNR.setFast(true);
zboxid.setFast(true);
matnr.setFast(true);
erfmg.setFast(true);
zpc.setFast(true);
@ -236,7 +239,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
for (int i = 0; i < list.size(); i++) {
list.get(i).setSelect(getString(R.string.return_of_material));
}
mTableData = new TableData<>("", list, select, AUFNR, matnr, erfmg, zpc, zlysj);
mTableData = new TableData<>("", list, select, AUFNR,zboxid, matnr, erfmg, zpc, zlysj);
smartTable.setTableData(mTableData);
smartTable.invalidate();
smartTable.getTableData().setOnRowClickListener((column, proReturnBean, i, row) -> {

30
app/src/main/java/com/techscan/wk/ui/reportwork/ConfigSettingActivity.java

@ -1,15 +1,19 @@
package com.techscan.wk.ui.reportwork;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
import androidx.core.content.ContextCompat;
import com.king.zxing.Intents;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.techscan.wk.R;
import com.techscan.wk.app.AppConst;
@ -33,6 +37,8 @@ public class ConfigSettingActivity extends BaseActivity {
QMUITopBar topbar;
@BindView(R.id.swAutoInsertDetail)
Switch swAutoInsertDetail;
@BindView(R.id.swHideGw)
Switch swHideGw;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -41,7 +47,9 @@ public class ConfigSettingActivity extends BaseActivity {
ButterKnife.bind(this);
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
swAutoInsertDetail.setChecked(aBoolean);
swHideGw.setChecked(isHIDE_GW);
initTopBar();
@ -53,13 +61,33 @@ public class ConfigSettingActivity extends BaseActivity {
*/
private void initTopBar() {
topbar.setTitle(getString(R.string.configuration));
topbar.addLeftBackImageButton().setOnClickListener(v -> finish());
topbar.addLeftBackImageButton().setOnClickListener(v -> close());
}
private void initSwitch() {
swAutoInsertDetail.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.SCAN_ADD_DETAIL, isChecked);
});
swHideGw.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.HIDE_GW, isChecked);
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
close();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void close(){
Intent intent = new Intent();
setResult(AppConst.RESULT_CONFIG, intent);
finish();
}
}

231
app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java

@ -79,8 +79,8 @@ import q.rorbin.badgeview.QBadgeView;
/**
* Description:流转单报工
* 按规则解析条码 [)>@06@QRPART@10V101010@1P31107550@3SX1000019400001@1T20240724001@Q934@14D20240724@@
* 流转单号 T10000194000001
* 按规则解析条码 [)>@06@QRPART@10V101010@1P33602100@3SX1000043500001@1T20240724001@Q10@14D20240724@@
* 流转单号 T10000435000001
*
* @author MULEI
* @date 2024/9/11
@ -422,6 +422,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
break;
case "PacketBarcode":
barDataBean = null;
if (TextUtils.isEmpty(value)) {
setNextFocus("PacketBarcode");
showError(getString(R.string.The_packet_barcode_cannot_be_empty));
@ -498,15 +499,22 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
* @param dynamicFormBean 当前条码栏目
*/
private void getBarcodeInfo(String value, DynamicFormBean dynamicFormBean) {
barDataBean = BarAnalysisUtils.analysisBarcode(value);
String materiel = barDataBean.getMateriel();
AnalysisBarBean barBean = BarAnalysisUtils.analysisBarcode(value);
String materiel = barBean.getMateriel();
if (TextUtils.isEmpty(materiel)) {
setNextFocus("PacketBarcode");
showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm));
return;
}
String packageNumber = barBean.getPackageNumber();
int count = LitePal.where("zxtpc =?", packageNumber).count(FlowReportWorkDetailBean.class);
if (count > 0) {
showError(getString(R.string.The_case_number_cannot_be_scanned_repeatedly));
setNextFocus("PacketBarcode");
return;
}
String packageNumber = barDataBean.getPackageNumber();
if (!TextUtils.isEmpty(packageNumber) && packageNumber.length() > 9) {
String order = packageNumber.substring(1, 9);
//工单栏目
@ -517,6 +525,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
barDataBean = barBean;
//先根据条码物料信息比对工单产品信息
LitePal
.where("matnr = ?", barDataBean.getMateriel())
@ -570,75 +579,82 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
setNextFocus("PacketBarcode");
return;
}
int count = LitePal.where("zxtpc =?", barDataBean.getPackageNumber()).count(FlowReportWorkDetailBean.class);
if (count > 0) {
showError(getString(R.string.The_case_number_cannot_be_scanned_repeatedly));
return;
}
if (TextUtils.isEmpty(quantity)) {
showError(getString(R.string.The_number_of_reports_cannot_be_empty));
setNextFocus("GMNGA");
return;
}
if (Double.parseDouble(quantity) <= 0) {
showError(getString(R.string.The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0));
setNextFocus("GMNGA");
return;
}
// String ueeto = "0";
// if (!TextUtils.isEmpty(workProOrderBean.getUeeto())) {
// ueeto = workProOrderBean.getUeeto();
// }
// String psmng = "0";
// if (!TextUtils.isEmpty(workProOrderBean.getPsmng())) {
// psmng = workProOrderBean.getPsmng();
// }
// String gwemg = "0";
// if (!TextUtils.isEmpty(workProOrderBean.getGwemg())) {
// gwemg = workProOrderBean.getGwemg();
// }
// BigDecimal ueetodecimal = new BigDecimal(ueeto);//容差数量1.0表示1%
// BigDecimal psmngdecimal = new BigDecimal(psmng);//订单数量
// BigDecimal gwemgdecimal = new BigDecimal(gwemg);//已交货数量
//
// BigDecimal gmnga = new BigDecimal(quantity);//当前扫描的报工数量
//
// //统计明细里已报工的数量
// Double sum = LitePal.sum(FlowReportWorkDetailBean.class, "gmnga", double.class);
// //当扫描总数>工单数量*(1+过量交货容差)-已交货数量,系统不允许继续扫描。
// if (gmnga.doubleValue() + sum > psmngdecimal.doubleValue() * (1 + (ueetodecimal.doubleValue() / 100)) - gwemgdecimal.doubleValue()) {
// String msg = "当前数量" + gmnga.doubleValue() + ",已扫数量" + sum + ",超过订单数量(" + psmngdecimal.doubleValue()
// + ") * (1 + 过量交货容差(" + (ueetodecimal.doubleValue() / 100) + ")) - 已交货数量(" + gwemgdecimal.doubleValue() + ")";
// QMUIDialog qmuiDialog = new QMUIDialog.MessageDialogBuilder(context)
// .setTitle(getResources().getString(R.string.tips_title))
// .setMessage(msg)
// .addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
// dialog.dismiss();
// })
// .create(R.style.QMUI_Dialog);
// qmuiDialog.show();
// return;
// }
//
// //如果扫描总数>工单数量-已交货数量 系统给出提示,当前数量已超过订单总数,但允许继续操作。
// if (gmnga.doubleValue() + sum > psmngdecimal.doubleValue() - gwemgdecimal.doubleValue()) {
// String msg = "当前数量" + gmnga.doubleValue() + ",已扫数量" + sum + ",超过订单数量(" + psmngdecimal.doubleValue() + ") - 已交货数量(" + gwemgdecimal.doubleValue() + "),是否继续操作?";
// QMUIDialog qmuiDialog = new QMUIDialog.MessageDialogBuilder(context)
// .setTitle(getResources().getString(R.string.tips_title))
// .setMessage(msg)
// .addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
// .addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
// dialog.dismiss();
// addDetail();
// })
// .create(R.style.QMUI_Dialog);
// qmuiDialog.show();
// } else {
addDetail();
// }
String ueeto = "0";
if (!TextUtils.isEmpty(workProOrderBean.getUeeto())) {
ueeto = workProOrderBean.getUeeto();
}
String psmng = "0";
if (!TextUtils.isEmpty(workProOrderBean.getPsmng())) {
psmng = workProOrderBean.getPsmng();
}
String gwemg = "0";
if (!TextUtils.isEmpty(workProOrderBean.getGwemg())) {
gwemg = workProOrderBean.getGwemg();
}
BigDecimal ueetodecimal = new BigDecimal(ueeto);//容差数量1.0表示1%
BigDecimal psmngdecimal = new BigDecimal(psmng);//订单数量
BigDecimal gwemgdecimal = new BigDecimal(gwemg);//已交货数量
BigDecimal gmnga = new BigDecimal(quantity);//当前扫描的报工数量
//统计明细里已报工的数量
Double sum = LitePal.sum(FlowReportWorkDetailBean.class, "gmnga", double.class);
//当扫描总数>工单数量*(1+过量交货容差)-已交货数量,系统不允许继续扫描。
if (gmnga.doubleValue() + sum > psmngdecimal.doubleValue() * (1 + (ueetodecimal.doubleValue() / 100)) - gwemgdecimal.doubleValue()) {
String msg = "当前数量" + gmnga.doubleValue() + ",已扫数量" + sum + ",超过订单数量(" + psmngdecimal.doubleValue()
+ ") * (1 + 过量交货容差(" + (ueetodecimal.doubleValue() / 100) + ")) - 已交货数量(" + gwemgdecimal.doubleValue() + ")";
QMUIDialog qmuiDialog = new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(msg)
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
})
.create(R.style.QMUI_Dialog);
qmuiDialog.show();
return;
}
//如果扫描总数>工单数量-已交货数量 系统给出提示,当前数量已超过订单总数,但允许继续操作。
if (gmnga.doubleValue() + sum > psmngdecimal.doubleValue() - gwemgdecimal.doubleValue()) {
String msg = "当前数量" + gmnga.doubleValue() + ",已扫数量" + sum + ",超过订单数量(" + psmngdecimal.doubleValue() + ") - 已交货数量(" + gwemgdecimal.doubleValue() + "),是否继续操作?";
QMUIDialog qmuiDialog = new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(msg)
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
addDetail(workProOrderBean);
})
.create(R.style.QMUI_Dialog);
qmuiDialog.show();
} else {
addDetail(workProOrderBean);
}
}
/**
* 加入明细列表
*/
private void addDetail() {
private void addDetail(FlowReportWorkProOrderBean workProOrderBean) {
DynamicFormBean ScanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");//扫描规则
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单
@ -686,10 +702,13 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setVornr("");
bean.setZxtpc(ZXTPCItem.getValue());
bean.setZpc(ZPCItem.getValue());
bean.setMeinh(workProOrderBean.getAmein());
bean.setFlowOrders(flowOrderItem.getValue());
bean.setFlowOrders(flowOrderSb.substring(0, flowOrderSb.length() - 1));
bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue());
bean.setUeeto(workProOrderBean.getUeeto());
bean.setPsmng(workProOrderBean.getPsmng());
bean.setXmnga("");
bean.setGrund("");
boolean save = bean.save();
@ -723,9 +742,12 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setVornr("");
bean.setZxtpc(ZXTPCItem.getValue());
bean.setZpc(ZPCItem.getValue());
bean.setMeinh(workProOrderBean.getAmein());
bean.setFlowOrders(flowOrderItem.getValue());
bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue());
bean.setUeeto(workProOrderBean.getUeeto());
bean.setPsmng(workProOrderBean.getPsmng());
bean.setXmnga("");
bean.setGrund("");
boolean save = bean.save();
@ -754,7 +776,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
* @param dynamicFormBean 当前栏目也就是流转单号栏目
*/
private void query(String workOrder, String flowOrder, DynamicFormBean scanRuleItem, DynamicFormBean AUFNRItem, DynamicFormBean dynamicFormBean) {
HttpMethods.getInstance().getOrderInfo(workOrder, new BaseObserver<ResponseBody>(context) {
HttpMethods.getInstance().getOrderInfo(workOrder, false, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();
@ -901,7 +923,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
break;
case R.id.btn_submit:
if (isSave) return;
saveData();
saveCheck();
break;
}
}
@ -909,46 +931,50 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
/**
* 保存数据
*/
private void saveData() {
private void saveCheck() {
LitePal.findAllAsync(FlowReportWorkDetailBean.class).listen(items -> {
if (items.size() == 0) {
ToastUtils.showLong(getString(R.string.No_data_can_be_saved));
return;
}
isSave = true;
BigDecimal gmnga = new BigDecimal("0.0");//报工数量 扫描数量
for (int i = 0; i < items.size(); i++) {
FlowReportWorkDetailBean flowReportWorkDetailBean = items.get(i);
items.get(i).setPacketBarcode("");
items.get(i).setFlowReport(items.get(i).getFlowOrders());
gmnga = new BigDecimal(flowReportWorkDetailBean.getGmnga()).add(gmnga);
}
Map<String, Object> saveItemRequestBean = new HashMap<>();
saveItemRequestBean.put("psmng", items.get(0).getPsmng());
saveItemRequestBean.put("ueeto", items.get(0).getUeeto());
saveItemRequestBean.put("imports", items);
HttpMethods.getInstance().saveReport(saveItemRequestBean, new BaseObserver<ResponseBody>(this) {
HttpMethods.getInstance().saveCheck(saveItemRequestBean, new BaseObserver<ResponseBody>(this) {
@Override
protected void onSuccess(ResponseBody responseBody) throws Exception {
isSave = false;
String string = responseBody.string();
Type objectType = new TypeToken<BaseResponseBean<String>>() {
}.getType();
BaseResponseBean<String> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
if (baseResponseBean.getCode() == 580) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(baseResponseBean.getMsg())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
})
.create(R.style.QMUI_Dialog).show();
return;
} else if (baseResponseBean.getCode() == 581) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(baseResponseBean.getData())
.setMessage(baseResponseBean.getMsg())
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
saveData(saveItemRequestBean);
})
.create(R.style.QMUI_Dialog).show();
initRvData();
clearAllData();
llflowOrderDetail.setVisibility(View.GONE);
showDetailBadgeNum();
showOrderDetailBadgeNum();
scanBarcodeListMap = new HashMap<>();
setNextFocus("FlowOrder");
return;
} else if (baseResponseBean.getCode() == 200) {
saveData(saveItemRequestBean);
} else {
showError(baseResponseBean.getMsg());
}
@ -956,11 +982,51 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
@Override
protected void onFailure(Throwable e) throws Exception {
isSave = false;
CustomErrorDialog(e, FlowReportWorkActivity.this);
}
});
});
}
protected void saveData(Map<String, Object> saveItemRequestBean) {
isSave = true;
HttpMethods.getInstance().saveReport(saveItemRequestBean, new BaseObserver<ResponseBody>(this) {
@Override
protected void onSuccess(ResponseBody responseBody) throws Exception {
isSave = false;
String string = responseBody.string();
Type objectType = new TypeToken<BaseResponseBean<String>>() {
}.getType();
BaseResponseBean<String> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(baseResponseBean.getData())
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
})
.create(R.style.QMUI_Dialog).show();
initRvData();
clearAllData();
llflowOrderDetail.setVisibility(View.GONE);
showDetailBadgeNum();
showOrderDetailBadgeNum();
scanBarcodeListMap = new HashMap<>();
setNextFocus("FlowOrder");
} else {
showError(baseResponseBean.getMsg());
}
}
@Override
protected void onFailure(Throwable e) throws Exception {
isSave = false;
CustomErrorDialog(e, FlowReportWorkActivity.this);
}
});
}
@ -1083,7 +1149,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
private void finishActivity() {
int count = LitePal.count(ReportWorkDetailBean.class);
int count = LitePal.count(FlowReportWorkDetailBean.class);
int flowOrderCount = LitePal.count(FlowOrderDetailBean.class);
if (count > 0 || flowOrderCount > 0) {
QMUIDialog qmuiDialog = new QMUIDialog.MessageDialogBuilder(context)
@ -1092,7 +1158,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
LitePal.deleteAllAsync(ReportWorkDetailBean.class).listen(i -> {
LitePal.deleteAllAsync(FlowReportWorkDetailBean.class).listen(i -> {
LitePal.deleteAllAsync(FlowOrderDetailBean.class).listen(i1 -> finish());
});
})
@ -1111,4 +1177,13 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
//数字验证(包含小数点)
public static boolean checkNumber(String str) {
String regex = "-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?";
if (str == null || !str.matches(regex)) {
return false;
}
return true;
}
}

25
app/src/main/java/com/techscan/wk/utils/BarAnalysisUtils.java

@ -2,6 +2,7 @@ package com.techscan.wk.utils;
import android.text.TextUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.techscan.wk.model.AnalysisBarBean;
/**
@ -41,7 +42,9 @@ public class BarAnalysisUtils {
String content10V = "";
if (startIndex10V >= 0) {
int endIndex10V = barcode.indexOf("@", startIndex10V + 4);
content10V = barcode.substring(startIndex10V + 4, endIndex10V);
if (endIndex10V >= startIndex10V + 4)
content10V = barcode.substring(startIndex10V + 4, endIndex10V);
}
//物料
// 查找@1P到下一个@之间的内容
@ -49,6 +52,7 @@ public class BarAnalysisUtils {
String content1P = "";
if (startIndex1P >= 0) {
int endIndex1P = barcode.indexOf("@", startIndex1P + 3);
if (endIndex1P >= startIndex1P + 3)
content1P = barcode.substring(startIndex1P + 3, endIndex1P);
}
@ -58,7 +62,8 @@ public class BarAnalysisUtils {
String content2P = "";
if (startIndex2P >= 0) {
int endIndex2P = barcode.indexOf("@", startIndex2P + 3);
content2P = barcode.substring(startIndex2P + 3, endIndex2P);
if (endIndex2P >= startIndex2P + 3)
content2P = barcode.substring(startIndex2P + 3, endIndex2P);
}
//包装容器号
@ -67,6 +72,7 @@ public class BarAnalysisUtils {
String content3S = "";
if (startIndex3S >= 0) {
int endIndex3S = barcode.indexOf("@", startIndex3S + 3);
if (endIndex3S >= startIndex3S + 3)
content3S = barcode.substring(startIndex3S + 3, endIndex3S);
}
@ -76,6 +82,7 @@ public class BarAnalysisUtils {
String content1T = "";
if (startIndex1T >= 0) {
int endIndex1T = barcode.indexOf("@", startIndex1T + 3);
if (endIndex1T >= startIndex1T + 3)
content1T = barcode.substring(startIndex1T + 3, endIndex1T);
}
@ -85,7 +92,11 @@ public class BarAnalysisUtils {
String contentQ = "";
if (startIndexQ >= 0) {
int endIndexQ = barcode.indexOf("@", startIndexQ + 2);
if (endIndexQ >= startIndexQ + 2)
contentQ = barcode.substring(startIndexQ + 2, endIndexQ);
if (!checkNumber(contentQ)) {
contentQ = "";
}
}
//EXT
@ -94,6 +105,7 @@ public class BarAnalysisUtils {
String content14D = "";
if (startIndex14D >= 0) {
int endIndex14D = barcode.indexOf("@", startIndex14D + 4);
if (endIndex14D >= startIndex14D + 4)
content14D = barcode.substring(startIndex14D + 4, endIndex14D);
}
@ -107,4 +119,13 @@ public class BarAnalysisUtils {
return bean;
}
//数字验证(包含小数点)
public static boolean checkNumber(String str) {
String regex = "-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?";
if (str == null || !str.matches(regex)) {
return false;
}
return true;
}
}

25
app/src/main/res/layout/activity_config_setting.xml

@ -43,6 +43,31 @@
android:layout_weight="0.2"
android:gravity="right" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:orientation="horizontal"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_weight="0.8"
android:text="隐藏车间和工位栏目"
android:textSize="@dimen/sp_15" />
<Switch
android:id="@+id/swHideGw"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.2"
android:gravity="right" />
</LinearLayout>
</LinearLayout>

19
app/src/main/res/layout/activity_flow_order_query.xml

@ -32,7 +32,7 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/btn_submit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_scan">
@ -44,11 +44,22 @@
<com.techscan.wk.widgets.MySmartTable
android:id="@+id/smartTable"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
android:layout_marginTop="5dp" />
</LinearLayout>
<Button
android:id="@+id/btn_submit"
android:layout_width="0dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_scan_btn_selector"
android:text="@string/save_info"
android:textColor="@color/qmui_config_color_white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

65
app/src/main/res/layout/activity_report_work_in.xml

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/qmui_config_color_white"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/ll_scan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/topbar"
android:orientation="vertical"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/topbar">
<include layout="@layout/layout_edit_scan" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/btn_submit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_scan">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_ui"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.techscan.wk.widgets.MySmartTable
android:id="@+id/smartTable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp" />
</LinearLayout>
<Button
android:id="@+id/btn_submit"
android:layout_width="0dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_scan_btn_selector"
android:text="@string/save_info"
android:textColor="@color/qmui_config_color_white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

1
app/src/main/res/layout/form_item_edit.xml

@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/item"
android:layout_height="42dp"
android:gravity="center_vertical"
android:orientation="horizontal">

3
app/src/main/res/values-en/strings.xml

@ -176,4 +176,7 @@
<string name="Please_confirm_the_new_password">Please confirm the new password</string>
<string name="The_order_number_is_inconsistent_please_confirm">The order number is inconsistent, please confirm</string>
<string name="Please_scan_the_package_barcode_first">Please scan the package barcode first</string>
<string name="The_case_number_cannot_be_scanned_repeatedly">The case number cannot be scanned repeatedly</string>
<string name="The_quantity_is_not_correct">The quantity is not correct!</string>
<string name="Finished_warehousing">Finished warehousing</string>
</resources>

3
app/src/main/res/values-th-rTH/strings.xml

@ -176,4 +176,7 @@
<string name="Please_confirm_the_new_password">กรุณายืนยันรหัสใหม่</string>
<string name="The_order_number_is_inconsistent_please_confirm">The order number is inconsistent, please confirm</string>
<string name="Please_scan_the_package_barcode_first">สแกนบาร์โค้ดก่อน</string>
<string name="The_case_number_cannot_be_scanned_repeatedly">ไม่สามารถสแกนหมายเลขกล่องซ้ำ</string>
<string name="The_quantity_is_not_correct">จำนวนไม่ถูกต้อง!</string>
<string name="Finished_warehousing">เสร็จแล้วเข้าไปในห้อง</string>
</resources>

3
app/src/main/res/values/strings.xml

@ -187,5 +187,8 @@
<string name="Please_confirm_the_new_password">请确认新密码</string>
<string name="The_order_number_is_inconsistent_please_confirm">箱码订单号不一致,请确认</string>
<string name="Please_scan_the_package_barcode_first">请先扫描包条码</string>
<string name="The_case_number_cannot_be_scanned_repeatedly">箱号不能重复扫描</string>
<string name="The_quantity_is_not_correct">数量不正确!</string>
<string name="Finished_warehousing">完工入库</string>
</resources>

Loading…
Cancel
Save