Browse Source

1.0.11

master
ml 1 year 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. 8
      app/src/main/java/com/techscan/wk/ui/MainActivity.java
  16. 600
      app/src/main/java/com/techscan/wk/ui/finishedWarehous/FinshWarehouseActivity.java
  17. 36
      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. 211
      app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java
  21. 21
      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_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.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_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_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/activity_setting.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/cbk_dialog_pick_time.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 //noinspection ExpiredTargetSdkVersion
targetSdkVersion 29 targetSdkVersion 29
versionCode 1 versionCode 1
versionName "1.0.8"
versionName "1.0.11"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk { ndk {
abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' 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:name="com.techscan.wk.ui.query.FlowOrderQueryActivity"
android:exported="false" android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" /> android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name=".ui.finishedWarehous.FinshWarehouseActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity <activity
android:name="com.techscan.wk.ui.proreq.ProReqActivity" android:name="com.techscan.wk.ui.proreq.ProReqActivity"
android:exported="false" 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", "en": "Log out",
"th": "ออกจากการล็อกอิน" "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: For example:
<version value="1" /> <version value="1" />
--> -->
<version value="21" />
<version value="23" />
<!-- <!--
Define your models in the list with mapping tag, LitePal will Define your models in the list with mapping tag, LitePal will
create tables for each mapping class. The supported fields 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.text.TextWatcher;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Switch; import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.SPUtils; import com.blankj.utilcode.util.SPUtils;
import com.blankj.utilcode.util.StringUtils; import com.blankj.utilcode.util.StringUtils;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
@ -156,6 +159,17 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
break; break;
case DynamicFormBean.MUL_TEXT: case DynamicFormBean.MUL_TEXT:
case DynamicFormBean.EDIT: 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); 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 KEY_IS_CONTINUOUS = "key_continuous_scan";
public static final String SCAN_ADD_DETAIL = "autoInserDetail"; 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 CAMERA_CODE = 0x11;
public static final int REQUEST_CODE_SCAN_FOR_GROUP = 0X12; 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 matnr;//物料编码
private String zxtpc;//箱号 private String zxtpc;//箱号
private String zpc;//批次 private String zpc;//批次
private String meinh;//单位
private String psmng;//订单数量
private String ueeto;//容差数量1.0表示1%
private int ism01; private int ism01;
private int ism02; private int ism02;
private int ism03; private int ism03;
@ -24,6 +28,30 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private int ism05; private int ism05;
private int ism06; 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() { public String getMatnr() {
return matnr; 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") @POST("/web/report/saveReport")
Observable<ResponseBody> saveReport(@Body Map<String,Object> requestBean); Observable<ResponseBody> saveReport(@Body Map<String,Object> requestBean);
@POST("/web/report/saveCheck")
Observable<ResponseBody> saveCheck(@Body Map<String,Object> requestBean);
@POST("/web/report/resubmit") @POST("/web/report/resubmit")
Observable<ResponseBody> reportResubmit(@Body Map<String,Object> requestBean); Observable<ResponseBody> reportResubmit(@Body Map<String,Object> requestBean);
@ -84,11 +87,14 @@ public interface ApiService {
Observable<ResponseBody> getFlowReport(@Query("zxtpc") String zxtpc); Observable<ResponseBody> getFlowReport(@Query("zxtpc") String zxtpc);
@GET("/web/order/info") @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") @GET("/web/order/getByzboxid")
Observable<ResponseBody> getByzboxid(@Query("zboxid") String zboxid); Observable<ResponseBody> getByzboxid(@Query("zboxid") String zboxid);
@POST("/web/report/storage")
Observable<ResponseBody> storage(@Body String json);
@GET("/web/order/getlgort") @GET("/web/order/getlgort")
Observable<ResponseBody> getlgort(); Observable<ResponseBody> getlgort();

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

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

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

@ -231,6 +231,14 @@ public class MainActivity extends BaseActivity {
break; 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("退出登录")) { } else if (homeFunctionBean.getName().equals("退出登录")) {
isHas = true; 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();
}
}

36
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 boolean isSave = false;
private AnalysisBarBean barDataBean; private AnalysisBarBean barDataBean;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -171,7 +172,7 @@ public class ProReqActivity extends CommonFunctionActivity {
private void initTopBar() { private void initTopBar() {
topbar.setTitle(getString(R.string.Production_loading)); topbar.setTitle(getString(R.string.Production_loading));
topbar.addLeftBackImageButton().setOnClickListener(v -> finishActivity()); 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(); }.getType();
//动态表单数据 //动态表单数据
dynamicFormBeans = gson.fromJson(jsonStr, objectType); 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中 // 动态表单绑定数据并绑定适配器到recycleView中
dynamicFormAdapter = new DynamicFormAdapter(dynamicFormBeans, false, 0); dynamicFormAdapter = new DynamicFormAdapter(dynamicFormBeans, false, 0);
@ -427,6 +435,12 @@ public class ProReqActivity extends CommonFunctionActivity {
showError(getString(R.string.The_quantity_cannot_be_empty)); showError(getString(R.string.The_quantity_cannot_be_empty));
return; return;
} }
if(!checkNumber(quantity)){
showError(getString(R.string.The_quantity_is_not_correct));
setNextFocus("quantity");
return;
}
//当前加入明细的数量 //当前加入明细的数量
double currenScanNum = Double.parseDouble(quantity); double currenScanNum = Double.parseDouble(quantity);
if (currenScanNum <= 0) { if (currenScanNum <= 0) {
@ -597,7 +611,7 @@ public class ProReqActivity extends CommonFunctionActivity {
* @param id 工单号 * @param id 工单号
*/ */
private void query(String id) { private void query(String id) {
HttpMethods.getInstance().getOrderInfo(id, new BaseObserver<ResponseBody>(context) {
HttpMethods.getInstance().getOrderInfo(id,true, new BaseObserver<ResponseBody>(context) {
@Override @Override
protected void onSuccess(ResponseBody body) throws Exception { protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string(); String string = body.string();
@ -639,9 +653,12 @@ public class ProReqActivity extends CommonFunctionActivity {
} }
showTaskDetailBadgeNum(); showTaskDetailBadgeNum();
qmuiTipDialog.dismiss(); qmuiTipDialog.dismiss();
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
if (!isHIDE_GW) {
setNextFocus("ZCJBM"); setNextFocus("ZCJBM");
} else {
setNextFocus("barcode");
}
} }
@Override @Override
@ -892,6 +909,17 @@ public class ProReqActivity extends CommonFunctionActivity {
break; 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; MySmartTable<ProReturnBean> smartTable;
private Column<String> select; private Column<String> select;
private Column<String> AUFNR; private Column<String> AUFNR;
private Column<String> zboxid;
private Column<String> matnr; private Column<String> matnr;
private Column<String> erfmg; private Column<String> erfmg;
private Column<String> zpc; private Column<String> zpc;
@ -154,6 +155,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
select = new Column<>(getString(R.string.choice), "select"); select = new Column<>(getString(R.string.choice), "select");
AUFNR = new Column<>(getString(R.string.Work_order_number), "aufnr"); 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"); matnr = new Column<>(getString(R.string.Material_number), "matnr");
erfmg = new Column<>(getString(R.string.num_title), "erfmg"); erfmg = new Column<>(getString(R.string.num_title), "erfmg");
zpc = new Column<>(getString(R.string.batch), "zpc"); zpc = new Column<>(getString(R.string.batch), "zpc");
@ -164,6 +166,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
select.setFast(true); select.setFast(true);
select.setMinWidth(110); select.setMinWidth(110);
AUFNR.setFast(true); AUFNR.setFast(true);
zboxid.setFast(true);
matnr.setFast(true); matnr.setFast(true);
erfmg.setFast(true); erfmg.setFast(true);
zpc.setFast(true); zpc.setFast(true);
@ -236,7 +239,7 @@ public class ProReturnActivity extends CommonFunctionActivity {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
list.get(i).setSelect(getString(R.string.return_of_material)); 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.setTableData(mTableData);
smartTable.invalidate(); smartTable.invalidate();
smartTable.getTableData().setOnRowClickListener((column, proReturnBean, i, row) -> { 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; package com.techscan.wk.ui.reportwork;
import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Switch; import android.widget.Switch;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.king.zxing.Intents;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.techscan.wk.R; import com.techscan.wk.R;
import com.techscan.wk.app.AppConst; import com.techscan.wk.app.AppConst;
@ -33,6 +37,8 @@ public class ConfigSettingActivity extends BaseActivity {
QMUITopBar topbar; QMUITopBar topbar;
@BindView(R.id.swAutoInsertDetail) @BindView(R.id.swAutoInsertDetail)
Switch swAutoInsertDetail; Switch swAutoInsertDetail;
@BindView(R.id.swHideGw)
Switch swHideGw;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -41,7 +47,9 @@ public class ConfigSettingActivity extends BaseActivity {
ButterKnife.bind(this); ButterKnife.bind(this);
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true); boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
swAutoInsertDetail.setChecked(aBoolean); swAutoInsertDetail.setChecked(aBoolean);
swHideGw.setChecked(isHIDE_GW);
initTopBar(); initTopBar();
@ -53,13 +61,33 @@ public class ConfigSettingActivity extends BaseActivity {
*/ */
private void initTopBar() { private void initTopBar() {
topbar.setTitle(getString(R.string.configuration)); topbar.setTitle(getString(R.string.configuration));
topbar.addLeftBackImageButton().setOnClickListener(v -> finish());
topbar.addLeftBackImageButton().setOnClickListener(v -> close());
} }
private void initSwitch() { private void initSwitch() {
swAutoInsertDetail.setOnCheckedChangeListener((buttonView, isChecked) -> { swAutoInsertDetail.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.SCAN_ADD_DETAIL, 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();
} }
} }

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

@ -79,8 +79,8 @@ import q.rorbin.badgeview.QBadgeView;
/** /**
* Description:流转单报工 * Description:流转单报工
* 按规则解析条码 [)>@06@QRPART@10V101010@1P31107550@3SX1000019400001@1T20240724001@Q934@14D20240724@@
* 流转单号 T10000194000001
* 按规则解析条码 [)>@06@QRPART@10V101010@1P33602100@3SX1000043500001@1T20240724001@Q10@14D20240724@@
* 流转单号 T10000435000001
* *
* @author MULEI * @author MULEI
* @date 2024/9/11 * @date 2024/9/11
@ -422,6 +422,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
break; break;
case "PacketBarcode": case "PacketBarcode":
barDataBean = null;
if (TextUtils.isEmpty(value)) { if (TextUtils.isEmpty(value)) {
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
showError(getString(R.string.The_packet_barcode_cannot_be_empty)); showError(getString(R.string.The_packet_barcode_cannot_be_empty));
@ -498,15 +499,22 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
* @param dynamicFormBean 当前条码栏目 * @param dynamicFormBean 当前条码栏目
*/ */
private void getBarcodeInfo(String value, DynamicFormBean 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)) { if (TextUtils.isEmpty(materiel)) {
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm)); showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm));
return; 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) { if (!TextUtils.isEmpty(packageNumber) && packageNumber.length() > 9) {
String order = packageNumber.substring(1, 9); String order = packageNumber.substring(1, 9);
//工单栏目 //工单栏目
@ -517,6 +525,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} }
} }
barDataBean = barBean;
//先根据条码物料信息比对工单产品信息 //先根据条码物料信息比对工单产品信息
LitePal LitePal
.where("matnr = ?", barDataBean.getMateriel()) .where("matnr = ?", barDataBean.getMateriel())
@ -570,75 +579,82 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
return; 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)) { if (TextUtils.isEmpty(quantity)) {
showError(getString(R.string.The_number_of_reports_cannot_be_empty)); showError(getString(R.string.The_number_of_reports_cannot_be_empty));
setNextFocus("GMNGA"); setNextFocus("GMNGA");
return; return;
} }
if (Double.parseDouble(quantity) <= 0) { if (Double.parseDouble(quantity) <= 0) {
showError(getString(R.string.The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0)); showError(getString(R.string.The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0));
setNextFocus("GMNGA"); setNextFocus("GMNGA");
return; 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 ScanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");//扫描规则
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单 DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单 DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单
@ -686,10 +702,13 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setVornr(""); bean.setVornr("");
bean.setZxtpc(ZXTPCItem.getValue()); bean.setZxtpc(ZXTPCItem.getValue());
bean.setZpc(ZPCItem.getValue()); bean.setZpc(ZPCItem.getValue());
bean.setMeinh(workProOrderBean.getAmein());
bean.setFlowOrders(flowOrderItem.getValue()); bean.setFlowOrders(flowOrderItem.getValue());
bean.setFlowOrders(flowOrderSb.substring(0, flowOrderSb.length() - 1)); bean.setFlowOrders(flowOrderSb.substring(0, flowOrderSb.length() - 1));
bean.setPacketBarcode(barcode); bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue()); bean.setGmnga(gmngaItem.getValue());
bean.setUeeto(workProOrderBean.getUeeto());
bean.setPsmng(workProOrderBean.getPsmng());
bean.setXmnga(""); bean.setXmnga("");
bean.setGrund(""); bean.setGrund("");
boolean save = bean.save(); boolean save = bean.save();
@ -723,9 +742,12 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setVornr(""); bean.setVornr("");
bean.setZxtpc(ZXTPCItem.getValue()); bean.setZxtpc(ZXTPCItem.getValue());
bean.setZpc(ZPCItem.getValue()); bean.setZpc(ZPCItem.getValue());
bean.setMeinh(workProOrderBean.getAmein());
bean.setFlowOrders(flowOrderItem.getValue()); bean.setFlowOrders(flowOrderItem.getValue());
bean.setPacketBarcode(barcode); bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue()); bean.setGmnga(gmngaItem.getValue());
bean.setUeeto(workProOrderBean.getUeeto());
bean.setPsmng(workProOrderBean.getPsmng());
bean.setXmnga(""); bean.setXmnga("");
bean.setGrund(""); bean.setGrund("");
boolean save = bean.save(); boolean save = bean.save();
@ -754,7 +776,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
* @param dynamicFormBean 当前栏目也就是流转单号栏目 * @param dynamicFormBean 当前栏目也就是流转单号栏目
*/ */
private void query(String workOrder, String flowOrder, DynamicFormBean scanRuleItem, DynamicFormBean AUFNRItem, DynamicFormBean 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 @Override
protected void onSuccess(ResponseBody body) throws Exception { protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string(); String string = body.string();
@ -901,7 +923,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
break; break;
case R.id.btn_submit: case R.id.btn_submit:
if (isSave) return; if (isSave) return;
saveData();
saveCheck();
break; break;
} }
} }
@ -909,22 +931,68 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
/** /**
* 保存数据 * 保存数据
*/ */
private void saveData() {
private void saveCheck() {
LitePal.findAllAsync(FlowReportWorkDetailBean.class).listen(items -> { LitePal.findAllAsync(FlowReportWorkDetailBean.class).listen(items -> {
if (items.size() == 0) { if (items.size() == 0) {
ToastUtils.showLong(getString(R.string.No_data_can_be_saved)); ToastUtils.showLong(getString(R.string.No_data_can_be_saved));
return; return;
} }
isSave = true;
BigDecimal gmnga = new BigDecimal("0.0");//报工数量 扫描数量
for (int i = 0; i < items.size(); i++) { for (int i = 0; i < items.size(); i++) {
FlowReportWorkDetailBean flowReportWorkDetailBean = items.get(i);
items.get(i).setPacketBarcode(""); items.get(i).setPacketBarcode("");
items.get(i).setFlowReport(items.get(i).getFlowOrders()); items.get(i).setFlowReport(items.get(i).getFlowOrders());
gmnga = new BigDecimal(flowReportWorkDetailBean.getGmnga()).add(gmnga);
} }
Map<String, Object> saveItemRequestBean = new HashMap<>(); Map<String, Object> saveItemRequestBean = new HashMap<>();
saveItemRequestBean.put("psmng", items.get(0).getPsmng());
saveItemRequestBean.put("ueeto", items.get(0).getUeeto());
saveItemRequestBean.put("imports", items); saveItemRequestBean.put("imports", items);
HttpMethods.getInstance().saveCheck(saveItemRequestBean, 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() == 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.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();
return;
} else if (baseResponseBean.getCode() == 200) {
saveData(saveItemRequestBean);
} else {
showError(baseResponseBean.getMsg());
}
}
@Override
protected void onFailure(Throwable e) throws Exception {
CustomErrorDialog(e, FlowReportWorkActivity.this);
}
});
});
}
protected void saveData(Map<String, Object> saveItemRequestBean) {
isSave = true;
HttpMethods.getInstance().saveReport(saveItemRequestBean, new BaseObserver<ResponseBody>(this) { HttpMethods.getInstance().saveReport(saveItemRequestBean, new BaseObserver<ResponseBody>(this) {
@Override @Override
protected void onSuccess(ResponseBody responseBody) throws Exception { protected void onSuccess(ResponseBody responseBody) throws Exception {
@ -960,8 +1028,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
CustomErrorDialog(e, FlowReportWorkActivity.this); CustomErrorDialog(e, FlowReportWorkActivity.this);
} }
}); });
});
} }
@Override @Override
@ -1083,7 +1149,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
private void finishActivity() { private void finishActivity() {
int count = LitePal.count(ReportWorkDetailBean.class);
int count = LitePal.count(FlowReportWorkDetailBean.class);
int flowOrderCount = LitePal.count(FlowOrderDetailBean.class); int flowOrderCount = LitePal.count(FlowOrderDetailBean.class);
if (count > 0 || flowOrderCount > 0) { if (count > 0 || flowOrderCount > 0) {
QMUIDialog qmuiDialog = new QMUIDialog.MessageDialogBuilder(context) 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.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> { .addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss(); dialog.dismiss();
LitePal.deleteAllAsync(ReportWorkDetailBean.class).listen(i -> {
LitePal.deleteAllAsync(FlowReportWorkDetailBean.class).listen(i -> {
LitePal.deleteAllAsync(FlowOrderDetailBean.class).listen(i1 -> finish()); 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;
}
} }

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

@ -2,6 +2,7 @@ package com.techscan.wk.utils;
import android.text.TextUtils; import android.text.TextUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.techscan.wk.model.AnalysisBarBean; import com.techscan.wk.model.AnalysisBarBean;
/** /**
@ -41,7 +42,9 @@ public class BarAnalysisUtils {
String content10V = ""; String content10V = "";
if (startIndex10V >= 0) { if (startIndex10V >= 0) {
int endIndex10V = barcode.indexOf("@", startIndex10V + 4); int endIndex10V = barcode.indexOf("@", startIndex10V + 4);
if (endIndex10V >= startIndex10V + 4)
content10V = barcode.substring(startIndex10V + 4, endIndex10V); content10V = barcode.substring(startIndex10V + 4, endIndex10V);
} }
//物料 //物料
// 查找@1P到下一个@之间的内容 // 查找@1P到下一个@之间的内容
@ -49,6 +52,7 @@ public class BarAnalysisUtils {
String content1P = ""; String content1P = "";
if (startIndex1P >= 0) { if (startIndex1P >= 0) {
int endIndex1P = barcode.indexOf("@", startIndex1P + 3); int endIndex1P = barcode.indexOf("@", startIndex1P + 3);
if (endIndex1P >= startIndex1P + 3)
content1P = barcode.substring(startIndex1P + 3, endIndex1P); content1P = barcode.substring(startIndex1P + 3, endIndex1P);
} }
@ -58,6 +62,7 @@ public class BarAnalysisUtils {
String content2P = ""; String content2P = "";
if (startIndex2P >= 0) { if (startIndex2P >= 0) {
int endIndex2P = barcode.indexOf("@", startIndex2P + 3); int endIndex2P = barcode.indexOf("@", startIndex2P + 3);
if (endIndex2P >= startIndex2P + 3)
content2P = barcode.substring(startIndex2P + 3, endIndex2P); content2P = barcode.substring(startIndex2P + 3, endIndex2P);
} }
@ -67,6 +72,7 @@ public class BarAnalysisUtils {
String content3S = ""; String content3S = "";
if (startIndex3S >= 0) { if (startIndex3S >= 0) {
int endIndex3S = barcode.indexOf("@", startIndex3S + 3); int endIndex3S = barcode.indexOf("@", startIndex3S + 3);
if (endIndex3S >= startIndex3S + 3)
content3S = barcode.substring(startIndex3S + 3, endIndex3S); content3S = barcode.substring(startIndex3S + 3, endIndex3S);
} }
@ -76,6 +82,7 @@ public class BarAnalysisUtils {
String content1T = ""; String content1T = "";
if (startIndex1T >= 0) { if (startIndex1T >= 0) {
int endIndex1T = barcode.indexOf("@", startIndex1T + 3); int endIndex1T = barcode.indexOf("@", startIndex1T + 3);
if (endIndex1T >= startIndex1T + 3)
content1T = barcode.substring(startIndex1T + 3, endIndex1T); content1T = barcode.substring(startIndex1T + 3, endIndex1T);
} }
@ -85,7 +92,11 @@ public class BarAnalysisUtils {
String contentQ = ""; String contentQ = "";
if (startIndexQ >= 0) { if (startIndexQ >= 0) {
int endIndexQ = barcode.indexOf("@", startIndexQ + 2); int endIndexQ = barcode.indexOf("@", startIndexQ + 2);
if (endIndexQ >= startIndexQ + 2)
contentQ = barcode.substring(startIndexQ + 2, endIndexQ); contentQ = barcode.substring(startIndexQ + 2, endIndexQ);
if (!checkNumber(contentQ)) {
contentQ = "";
}
} }
//EXT //EXT
@ -94,6 +105,7 @@ public class BarAnalysisUtils {
String content14D = ""; String content14D = "";
if (startIndex14D >= 0) { if (startIndex14D >= 0) {
int endIndex14D = barcode.indexOf("@", startIndex14D + 4); int endIndex14D = barcode.indexOf("@", startIndex14D + 4);
if (endIndex14D >= startIndex14D + 4)
content14D = barcode.substring(startIndex14D + 4, endIndex14D); content14D = barcode.substring(startIndex14D + 4, endIndex14D);
} }
@ -107,4 +119,13 @@ public class BarAnalysisUtils {
return bean; 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:layout_weight="0.2"
android:gravity="right" /> android:gravity="right" />
</LinearLayout> </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> </LinearLayout>

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

@ -32,7 +32,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/btn_submit"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_scan"> app:layout_constraintTop_toBottomOf="@id/ll_scan">
@ -44,11 +44,22 @@
<com.techscan.wk.widgets.MySmartTable <com.techscan.wk.widgets.MySmartTable
android:id="@+id/smartTable" android:id="@+id/smartTable"
android:layout_marginTop="5dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
android:layout_marginTop="5dp" />
</LinearLayout> </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> </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:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/item"
android:layout_height="42dp" android:layout_height="42dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> 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="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="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="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> </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="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="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="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> </resources>

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

@ -187,5 +187,8 @@
<string name="Please_confirm_the_new_password">请确认新密码</string> <string name="Please_confirm_the_new_password">请确认新密码</string>
<string name="The_order_number_is_inconsistent_please_confirm">箱码订单号不一致,请确认</string> <string name="The_order_number_is_inconsistent_please_confirm">箱码订单号不一致,请确认</string>
<string name="Please_scan_the_package_barcode_first">请先扫描包条码</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> </resources>

Loading…
Cancel
Save