Browse Source

1.0.1版本

master
ml 2 years ago
parent
commit
1b82700590
  1. 21
      .idea/misc.xml
  2. 4
      app/build.gradle
  3. 2
      app/release/output.json
  4. BIN
      app/release/维科_v1.0.5.apk
  5. 4
      app/src/main/AndroidManifest.xml
  6. 20
      app/src/main/assets/FlowOrderQueryUI.json
  7. 50
      app/src/main/assets/FlowReportWorkUI.json
  8. 26
      app/src/main/assets/MainUIForV.json
  9. 2
      app/src/main/assets/litepal.xml
  10. 72
      app/src/main/java/com/techscan/wk/adapter/DynamicFormAdapter.java
  11. 22
      app/src/main/java/com/techscan/wk/model/FlowOrderQueryBean.java
  12. 27
      app/src/main/java/com/techscan/wk/model/FlowReportWorkDetailBean.java
  13. 6
      app/src/main/java/com/techscan/wk/model/HomeFunctionBean.java
  14. 9
      app/src/main/java/com/techscan/wk/model/ReportWorkDetailBean.java
  15. 3
      app/src/main/java/com/techscan/wk/rxretrofit/ApiService.java
  16. 32
      app/src/main/java/com/techscan/wk/rxretrofit/HttpMethods.java
  17. 8
      app/src/main/java/com/techscan/wk/ui/MainActivity.java
  18. 38
      app/src/main/java/com/techscan/wk/ui/interfaces/DecimalDigitsTextWatcher.java
  19. 22
      app/src/main/java/com/techscan/wk/ui/login/SettingActivity.java
  20. 195
      app/src/main/java/com/techscan/wk/ui/proreq/ProReqActivity.java
  21. 387
      app/src/main/java/com/techscan/wk/ui/query/FlowOrderQueryActivity.java
  22. 246
      app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java
  23. 53
      app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkActivity.java
  24. 8
      app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkErrorListActivity.java
  25. 3
      app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkOffsetActivity.java
  26. 2
      app/src/main/java/com/techscan/wk/utils/update/UpdateUtil.java
  27. 19
      app/src/main/java/com/techscan/wk/widgets/CustomBottomSheet.java
  28. 9
      app/src/main/res/layout/activity_change_pwd.xml
  29. 54
      app/src/main/res/layout/activity_flow_order_query.xml
  30. 7
      app/src/main/res/layout/activity_report_work_errlist.xml
  31. 2
      app/src/main/res/layout/activity_setting.xml
  32. 8
      app/src/main/res/layout/cbk_dialog_pick_time.xml
  33. 1
      app/src/main/res/layout/form_item_edit.xml
  34. 2
      app/src/main/res/layout/layout_bottom_btn.xml
  35. 2
      app/src/main/res/layout/layout_bottom_btn1.xml
  36. 27
      app/src/main/res/layout/layout_bottom_btn2.xml
  37. 73
      app/src/main/res/values-en/strings.xml
  38. 157
      app/src/main/res/values-th-rTH/strings.xml
  39. 97
      app/src/main/res/values/strings.xml
  40. 7
      app/src/main/res/values/styles.xml

21
.idea/misc.xml

@ -8,6 +8,27 @@
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_change_pwd.xml" value="0.1" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_flow_order_query.xml" value="0.1" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_flow_report_work.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_login.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_main.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_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" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/cbk_wheel_picker.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/dialog_task_info.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_edit.xml" value="0.29257246376811596" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_edit_select_scan.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/item_multi_choice_bottom_popup.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/layout_bottom_btn.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/layout_bottom_btn1.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/layout_bottom_btn2.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/layout_bottom_input_btn5.xml" value="0.15817356205852673" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/layout_bottom_input_btn7.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/layout_edit_scan.xml" value="0.1" />
<entry key="..\:/TechScanProject/vicobar/app/src/main/res/drawable/bg_login_btn.xml" value="0.208" />
<entry key="..\:/TechScanProject/vicobar/app/src/main/res/drawable/bg_round.xml" value="0.208" />
<entry key="..\:/TechScanProject/vicobar/app/src/main/res/drawable/button_down.xml" value="0.208" />

4
app/build.gradle

@ -9,7 +9,7 @@ android {
//noinspection ExpiredTargetSdkVersion
targetSdkVersion 29
versionCode 1
versionName "1.0.5"
versionName "1.0.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk {
abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
@ -93,7 +93,7 @@ dependencies {
//smartTable
implementation 'com.github.huangyanbin:SmartTable:2.2.0'
// for androidx.
implementation 'com.lxj:xpopup:1.8.10-x'
implementation 'com.lxj:xpopup:1.8.17'
//
implementation 'com.orhanobut:logger:2.2.0'
//multidex

2
app/release/output.json

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

BIN
app/release/维科_v1.0.5.apk

Binary file not shown.

4
app/src/main/AndroidManifest.xml

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

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

@ -0,0 +1,20 @@
[
{
"id": 1,
"type": 2,
"fieldName": "barcode",
"name": "箱号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": true,
"language": {
"zh": "箱号",
"en": "Case number",
"th": "หมายเลขกล่อง"
}
}
]

50
app/src/main/assets/FlowReportWorkUI.json

@ -10,7 +10,7 @@
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": true,
"isFocus": false,
"language": {
"zh": "扫描规则",
"en": "Scanning rule",
@ -20,6 +20,41 @@
{
"id": 2,
"type": 2,
"fieldName": "AUFNR",
"name": "工单号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": true,
"language": {
"zh": "工单号",
"en": "Production order Work order number",
"th": "หมายเลขหน้า"
}
},
{
"id": 3,
"type": 2,
"fieldName": "VORNR",
"name": "工序号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"language": {
"zh": "工序号",
"en": "Operation number",
"th": "ขนาด"
}
},
{
"id": 4,
"type": 2,
"fieldName": "FlowOrder",
"name": "流转单号",
"value": "",
@ -28,7 +63,7 @@
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": true,
"isFocus": false,
"language": {
"zh": "流转单号",
"en": "Flow order number",
@ -36,7 +71,7 @@
}
},
{
"id": 3,
"id": 5,
"type": 2,
"fieldName": "PacketBarcode",
"name": "包条码",
@ -53,7 +88,7 @@
}
},
{
"id": 4,
"id": 6,
"type": 2,
"fieldName": "ZXTPC",
"name": "箱号",
@ -70,7 +105,7 @@
}
},
{
"id": 5,
"id": 7,
"type": 2,
"fieldName": "GMNGA",
"name": "报工数量",
@ -87,7 +122,7 @@
}
},
{
"id": 6,
"id": 8,
"type": 1,
"fieldName": "GRUND",
"name": "原因代码",
@ -104,7 +139,7 @@
}
},
{
"id": 7,
"id": 9,
"type": 2,
"fieldName": "XMNGA",
"name": "报废数量",
@ -120,7 +155,6 @@
"th": "จำนวนการสูญเสีย"
}
}
]

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

@ -1,8 +1,8 @@
[
{
"id": "1",
"id": 1,
"name": "生产上料",
"icon": "tmcx",
"icon": "qtck",
"to": "com.techscan.wk.ui.proreq.ProReqActivity",
"show": "1",
"children": [],
@ -13,7 +13,7 @@
}
},
{
"id": "5",
"id": 5,
"name": "生产报工",
"icon": "xsck",
"to": "com.techscan.wk.ui.reportwork.ReportWorkActivity",
@ -26,7 +26,7 @@
}
},
{
"id": "7",
"id": 7,
"name": "冲销",
"icon": "wbspxs",
"to": "com.techscan.wk.ui.reportwork.ReportWorkOffsetActivity",
@ -39,7 +39,7 @@
}
},
{
"id": "10",
"id": 10,
"name": "报工异常",
"icon": "xtzk",
"to": "com.techscan.wk.ui.reportwork.ReportWorkErrorListActivity",
@ -52,7 +52,7 @@
}
},
{
"id": "11",
"id": 11,
"name": "流转单报工",
"icon": "zk",
"to": "com.techscan.wk.ui.reportwork.FlowReportWorkActivity",
@ -63,9 +63,21 @@
"en": "Flow report work",
"th": "ผู้ส่งจดหมาย"
}
},{
"id": 12,
"name": "流转单查询",
"icon": "pd",
"to": "com.techscan.wk.ui.query.FlowOrderQueryActivity",
"show": "1",
"children": [],
"language": {
"zh": "流转单查询",
"en": "Flow order query",
"th": "ตรวจสอบการส่งจดหมาย"
}
},
{
"id": "15",
"id": 15,
"name": "退出登录",
"icon": "xitongshezhi",
"to": "",

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

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

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

@ -7,7 +7,9 @@ import android.text.Layout;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Switch;
@ -167,6 +169,7 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
if (color != 0) {
editText.setTextColor(color);
}
boolean limits = false;
// 根据预设的输入限制调整输入模式
switch (dynamicFormBean.getEditExp()) {
case 1:
@ -174,6 +177,7 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
break;
case 2:
limits = true;
// 设置小数点后几位小数
DecimalDigitsInputFilter decimalDigitsInputFilter = new DecimalDigitsInputFilter(3);
InputFilter[] filters = new InputFilter[]{decimalDigitsInputFilter};
@ -191,8 +195,7 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
} else
editText.setText("");
DecimalDigitsTextWatcher decimalDigitsTextWatcher = new DecimalDigitsTextWatcher(editText, dynamicFormBean);
DecimalDigitsTextWatcher decimalDigitsTextWatcher = new DecimalDigitsTextWatcher(editText, dynamicFormBean, limits);
// 判断是否允许修改,如果允许修改则在输入值后直接赋值
if (dynamicFormBean.isCanChange()) {
//editText.setBackgroundResource(R.drawable.edittext_style);
@ -231,11 +234,20 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
}
});
editText.setOnEditorActionListener((v, actionId, event) -> {
if (Perms <= CheckMenuPermsUtil.HAS_ONLY_SELECT_PERMS) {//用户该模块拥有搜索权限
if (onFormItemViewActionListener != null)
onFormItemViewActionListener.onViewOnAction(dynamicFormBean, getItemPosition(dynamicFormBean));
} else {
ToastUtil.showShortToast(getContext(), getContext().getResources().getString(R.string.operate_perms_error));
if (actionId == EditorInfo.IME_ACTION_SEND ||
(event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
if (Perms <= CheckMenuPermsUtil.HAS_ONLY_SELECT_PERMS) {//用户该模块拥有搜索权限
if (onFormItemViewActionListener != null)
onFormItemViewActionListener.onViewOnAction(dynamicFormBean, getItemPosition(dynamicFormBean));
} else {
ToastUtil.showShortToast(getContext(), getContext().getResources().getString(R.string.operate_perms_error));
}
return true;
default:
return true;
}
}
return false;
});
@ -315,7 +327,7 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
textView.requestFocus();
} else
textView.setFocusable(false);
textView.clearFocus();
textView.clearFocus();
break;
case DynamicFormBean.DATE:
// 时间选择
@ -339,9 +351,9 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
dateTv.setFocusable(true);
dateTv.setFocusableInTouchMode(true);
dateTv.requestFocus();
} else{
dateTv.setFocusable(false);
dateTv.clearFocus();
} else {
dateTv.setFocusable(false);
dateTv.clearFocus();
}
break;
case DynamicFormBean.TIME:
@ -366,7 +378,7 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
time.setFocusable(true);
time.setFocusableInTouchMode(true);
time.requestFocus();
} else{
} else {
time.setFocusable(false);
time.clearFocus();
}
@ -441,10 +453,20 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
}
});
editText1.setOnEditorActionListener((v, actionId, event) -> {
if (Perms <= CheckMenuPermsUtil.HAS_ONLY_SELECT_PERMS) {//用户该模块拥有搜索权限
onFormItemViewActionListener.onViewOnAction(dynamicFormBean, getItemPosition(dynamicFormBean));
} else {
ToastUtil.showShortToast(getContext(), getContext().getResources().getString(R.string.operate_perms_error));
if (actionId == EditorInfo.IME_ACTION_SEND ||
(event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
if (Perms <= CheckMenuPermsUtil.HAS_ONLY_SELECT_PERMS) {//用户该模块拥有搜索权限
if (onFormItemViewActionListener != null)
onFormItemViewActionListener.onViewOnAction(dynamicFormBean, getItemPosition(dynamicFormBean));
} else {
ToastUtil.showShortToast(getContext(), getContext().getResources().getString(R.string.operate_perms_error));
}
return true;
default:
return true;
}
}
return false;
});
@ -518,10 +540,20 @@ public class DynamicFormAdapter extends BaseMultiItemQuickAdapter<DynamicFormBea
}
});
editText2.setOnEditorActionListener((v, actionId, event) -> {
if (Perms <= CheckMenuPermsUtil.HAS_ONLY_SELECT_PERMS) {//用户该模块拥有搜索权限
onFormItemViewActionListener.onViewOnAction(dynamicFormBean, getItemPosition(dynamicFormBean));
} else {
ToastUtil.showShortToast(getContext(), getContext().getResources().getString(R.string.operate_perms_error));
if (actionId == EditorInfo.IME_ACTION_SEND ||
(event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
if (Perms <= CheckMenuPermsUtil.HAS_ONLY_SELECT_PERMS) {//用户该模块拥有搜索权限
if (onFormItemViewActionListener != null)
onFormItemViewActionListener.onViewOnAction(dynamicFormBean, getItemPosition(dynamicFormBean));
} else {
ToastUtil.showShortToast(getContext(), getContext().getResources().getString(R.string.operate_perms_error));
}
return true;
default:
return true;
}
}
return false;
});

22
app/src/main/java/com/techscan/wk/model/FlowOrderQueryBean.java

@ -0,0 +1,22 @@
package com.techscan.wk.model;
public class FlowOrderQueryBean {
private String flowReport;
private String zxtpc;
public String getFlowReport() {
return flowReport;
}
public void setFlowReport(String flowReport) {
this.flowReport = flowReport;
}
public String getZxtpc() {
return zxtpc;
}
public void setZxtpc(String zxtpc) {
this.zxtpc = zxtpc;
}
}

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

@ -4,6 +4,8 @@ import org.litepal.crud.LitePalSupport;
public class FlowReportWorkDetailBean extends LitePalSupport {
private String gid;
private String aufnr;//生产订单号
private String vornr;//工序号
private String gmnga;//报工数量
private String xmnga;//报废数量
private String zzt;//动作描述标识 区别是正向报工还是反向报工冲销,动作描述标识=1,正向报工,如果动作描述标识=0,反向报工冲销
@ -12,6 +14,7 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private String packetBarcode;//包条码
private String flowOrders;//流转单号
private String flowReport;//流转单号
private String zxtpc;//箱号
private int ism01;
private int ism02;
private int ism03;
@ -19,6 +22,30 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private int ism05;
private int ism06;
public String getZxtpc() {
return zxtpc;
}
public void setZxtpc(String zxtpc) {
this.zxtpc = zxtpc;
}
public String getAufnr() {
return aufnr;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getVornr() {
return vornr;
}
public void setVornr(String vornr) {
this.vornr = vornr;
}
public String getFlowReport() {
return flowReport;
}

6
app/src/main/java/com/techscan/wk/model/HomeFunctionBean.java

@ -19,7 +19,7 @@ public class HomeFunctionBean {
* children : [{"id":"011","name":"常规采购","icon":""},{"id":"012","name":"内部补货(商品采购)","icon":""},{"id":"013","name":"内部直运采购","icon":""}]
*/
private String id;
private Integer id;
private String name;
private String icon;
private String to;
@ -35,11 +35,11 @@ public class HomeFunctionBean {
this.language = language;
}
public String getId() {
public Integer getId() {
return id;
}
public void setId(String id) {
public void setId(Integer id) {
this.id = id;
}

9
app/src/main/java/com/techscan/wk/model/ReportWorkDetailBean.java

@ -12,6 +12,7 @@ public class ReportWorkDetailBean extends LitePalSupport {
private String grund;//原因代码
private String lmnga;//报工基本数量
private String packetBarcode;//包条码
private String zxtpc;//箱号
private int ism01;
private int ism02;
private int ism03;
@ -19,6 +20,14 @@ public class ReportWorkDetailBean extends LitePalSupport {
private int ism05;
private int ism06;
public String getZxtpc() {
return zxtpc;
}
public void setZxtpc(String zxtpc) {
this.zxtpc = zxtpc;
}
public String getGid() {
return gid;
}

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

@ -74,6 +74,9 @@ public interface ApiService {
Observable<ResponseBody> getReport(@Query("aufnr") String aufnr,
@Query("vornr") String vornr);
@GET("/web/report/getFlowReport")
Observable<ResponseBody> getFlowReport(@Query("zxtpc") String zxtpc);
@GET("/web/order/info")
Observable<ResponseBody> getOrderInfo(@Query("id") String order);

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

@ -94,9 +94,9 @@ public class HttpMethods {
}
String currentLanguage = SPUtils.getInstance().getString(MultiLanguageUtils.CURRENT_LANGUAGE, MultiLanguageUtils.SIMPLIFIED_CHINESE);
if (currentLanguage.equals(MultiLanguageUtils.SIMPLIFIED_CHINESE)) {
builder.addHeader("Accept-Language","zh-CN");
builder.addHeader("Accept-Language", "zh-CN");
} else if (currentLanguage.equals(MultiLanguageUtils.ENGLISH)) {
builder.addHeader("Accept-Language","en-US");
builder.addHeader("Accept-Language", "en-US");
}
return chain.proceed(builder.build());
}
@ -142,6 +142,7 @@ public class HttpMethods {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public static void newVersion(Observer<ResponseBody> observer) {
getApiService().newVersion()
.subscribeOn(Schedulers.io())
@ -275,7 +276,7 @@ public class HttpMethods {
.subscribe(observer);
}
public void saveReport(Map<String,Object> map, Observer<ResponseBody> observer) {
public void saveReport(Map<String, Object> map, Observer<ResponseBody> observer) {
getApiService().saveReport(map)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
@ -296,14 +297,14 @@ public class HttpMethods {
int current, int size,
String startDate, String endDate,
Observer<ResponseBody> observer) {
getApiService().getError(aufnr,vornr,current,size,startDate,endDate)
getApiService().getError(aufnr, vornr, current, size, startDate, endDate)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void badReasons(String code,Observer<ResponseBody> observer) {
public void badReasons(String code, Observer<ResponseBody> observer) {
getApiService().badReasons(code)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
@ -311,22 +312,32 @@ public class HttpMethods {
.subscribe(observer);
}
public void getReport(String aufnr,String vornr,
Observer<ResponseBody> observer) {
getApiService().getReport(aufnr,vornr)
public void getReport(String aufnr, String vornr,
Observer<ResponseBody> observer) {
getApiService().getReport(aufnr, vornr)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void getOrderInfo(String order,
Observer<ResponseBody> observer) {
public void getFlowReport(String zxtpc, Observer<ResponseBody> observer) {
getApiService().getFlowReport(zxtpc)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void getOrderInfo(String order,
Observer<ResponseBody> observer) {
getApiService().getOrderInfo(order)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void getlgort(Observer<ResponseBody> observer) {
getApiService().getlgort()
.subscribeOn(Schedulers.io())
@ -352,5 +363,4 @@ public class HttpMethods {
}
}

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

@ -215,6 +215,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;
}

38
app/src/main/java/com/techscan/wk/ui/interfaces/DecimalDigitsTextWatcher.java

@ -17,14 +17,19 @@ import java.lang.ref.WeakReference;
public class DecimalDigitsTextWatcher implements TextWatcher {
private WeakReference<EditText> editWeakReference;
private DynamicFormBean dynamicFormBean;
private boolean inputRestriction;
public DecimalDigitsTextWatcher() {
}
public DecimalDigitsTextWatcher(EditText currentEditText, DynamicFormBean dynamicFormBean) {
this.editWeakReference = new WeakReference<>(currentEditText);
this.dynamicFormBean = dynamicFormBean;
}
public DecimalDigitsTextWatcher(EditText currentEditText, DynamicFormBean dynamicFormBean,boolean inputRestriction) {
this.editWeakReference = new WeakReference<>(currentEditText);
this.dynamicFormBean = dynamicFormBean;
this.inputRestriction = inputRestriction;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int before, int count) {
@ -33,21 +38,24 @@ public class DecimalDigitsTextWatcher implements TextWatcher {
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if (editWeakReference.get() == null) return;
EditText editText = editWeakReference.get();
// 文本正在变化时执行
// 检查用户输入的第一个字符是否为小数点
if (charSequence.length() > 0 && charSequence.charAt(0) == '.') {
// 如果是小数点,移除开头的小数点
editText.setText(charSequence.subSequence(1, charSequence.length()));
// 将光标移至末尾
editText.setSelection(editText.getText().length());
} else if (charSequence.length() > 1 && charSequence.charAt(0) == '0' && charSequence.charAt(1) != '.') {
//首位是0,后面必须是小数点,否则清除输入
editText.setText(charSequence.subSequence(1, charSequence.length()));
// 将光标移至末尾
editText.setSelection(editText.getText().length());
if (inputRestriction) {
if (editWeakReference.get() == null) return;
EditText editText = editWeakReference.get();
// 文本正在变化时执行
// 检查用户输入的第一个字符是否为小数点
if (charSequence.length() > 0 && charSequence.charAt(0) == '.') {
// 如果是小数点,移除开头的小数点
editText.setText(charSequence.subSequence(1, charSequence.length()));
// 将光标移至末尾
editText.setSelection(editText.getText().length());
} else if (charSequence.length() > 1 && charSequence.charAt(0) == '0' && charSequence.charAt(1) != '.') {
//首位是0,后面必须是小数点,否则清除输入
editText.setText(charSequence.subSequence(1, charSequence.length()));
// 将光标移至末尾
editText.setSelection(editText.getText().length());
}
}
}
@Override

22
app/src/main/java/com/techscan/wk/ui/login/SettingActivity.java

@ -1,5 +1,6 @@
package com.techscan.wk.ui.login;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
@ -96,12 +97,12 @@ public class SettingActivity extends BaseActivity {
String releaseUrl = etReleaseUrl.getText().toString();
String updateUrl = etUpdateUrl.getText().toString();
if (TextUtils.isEmpty(testUrl)) {
etTestUrl.setError("不能为空");
etTestUrl.setError(getString(R.string.Cannot_be_empty));
return;
}
if (TextUtils.isEmpty(releaseUrl)) {
etReleaseUrl.setError("不能为空");
etReleaseUrl.setError(getString(R.string.Cannot_be_empty));
return;
}
// if (TextUtils.isEmpty(updateUrl)) {
@ -114,8 +115,23 @@ public class SettingActivity extends BaseActivity {
PreferencesUtil.putBoolean(context, "isHttps", isHttps);
PreferencesUtil.putString(context, "test_url", isHttps ? "https://" + testUrl : "http://" + testUrl);
PreferencesUtil.putString(context, "release_url", isHttps ? "https://" + releaseUrl : "http://" + releaseUrl);
if (testUrl.trim().startsWith("https://") || testUrl.trim().startsWith("http://")) {
PreferencesUtil.putString(context, "test_url", releaseUrl);
}
if (releaseUrl.trim().startsWith("https://") || releaseUrl.trim().startsWith("http://")) {
PreferencesUtil.putString(context, "release_url", releaseUrl);
}
// PreferencesUtil.putString(context, "update_url", isHttps ? "https://" + updateUrl : "http://" + updateUrl);
ToastUtil.showShortToastCenter(context, "保存成功");
ToastUtil.showShortToastCenter(context, getString(R.string.Data_saved_successfully));
finish();
}
public static boolean isUrlValid(String url) {
try {
Uri uri = Uri.parse(url);
return uri.getScheme().equals("http") || uri.getScheme().equals("https");
} catch (Exception e) {
return false;
}
}
}

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

@ -4,7 +4,6 @@ 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 static com.techscan.wk.app.BaseApplication.getContext;
import android.Manifest;
import android.annotation.SuppressLint;
@ -12,7 +11,6 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
@ -46,7 +44,6 @@ import com.techscan.wk.adapter.DynamicFormAdapter;
import com.techscan.wk.base.CommonFunctionActivity;
import com.techscan.wk.model.AnalysisBarBean;
import com.techscan.wk.model.DynamicFormBean;
import com.techscan.wk.model.LgortBean;
import com.techscan.wk.model.ProReqDetailBean;
import com.techscan.wk.model.ProReqOrdeTaskBean;
import com.techscan.wk.model.ProReqOrderBean;
@ -55,17 +52,12 @@ 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.rxretrofit.exception.ApiException;
import com.techscan.wk.rxretrofit.exception.CustomException;
import com.techscan.wk.ui.baseAct.BasicDataListActivity;
import com.techscan.wk.ui.baseAct.LgortListActivity;
import com.techscan.wk.ui.scan.CustomCaptureActivity;
import com.techscan.wk.utils.AntiShakeUtils;
import com.techscan.wk.utils.BarAnalysisUtils;
import com.techscan.wk.utils.DateUtils;
import com.techscan.wk.utils.DialogUtil;
import com.techscan.wk.utils.FindUtils;
import com.techscan.wk.utils.MultiLanguageUtils;
import com.techscan.wk.utils.PreferencesUtil;
import com.techscan.wk.utils.SoundUtils;
import com.techscan.wk.utils.ToastUtil;
@ -149,17 +141,20 @@ public class ProReqActivity extends CommonFunctionActivity {
} else {
scanBarcodeListMap.remove(removeKey);
}
showTaskDetailBadgeNum();
}
});
RxBus.getInstance().addSubscription(this, register);
qTaskBadgeView = new QBadgeView(context);
qTaskBadgeView.bindTarget(btnTask);
qDetailBadgeView = new QBadgeView(context);
qDetailBadgeView.bindTarget(btnDetail);
initTopBar();
initListeners();
initRvData();
rvUi.postDelayed(() -> {
setNextFocus("AUFNR");
}, 200);
}, 100);
}
/**
@ -177,6 +172,12 @@ public class ProReqActivity extends CommonFunctionActivity {
}
@Override
protected void onResume() {
super.onResume();
showTaskDetailBadgeNum();
}
/**
* 初始化动态列表数据
*/
@ -263,25 +264,31 @@ public class ProReqActivity extends CommonFunctionActivity {
String value = dynamicFormBean.getValue();
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.Data_cannot_be_empty));
setNextFocus(dynamicFormBean.getFieldName());
return;
}
switch (dynamicFormBean.getFieldName()) {
case "ZCJBM":
setNextFocus("ZGWH");
break;
case "ZGWH":
setNextFocus("AUFNR");
break;
case "AUFNR":
DynamicFormBean ZYWLXItem = dynamicFormAdapter.getItemByFieldName("ZYWLX");
if (TextUtils.isEmpty(ZYWLXItem.getValue())) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.Please_select_a_business_type));
setNextFocus(dynamicFormBean.getFieldName());
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
DynamicFormBean lgortItem = dynamicFormAdapter.getItemByFieldName("lgort");
if (TextUtils.isEmpty(lgortItem.getValue())) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.Please_select_a_stock_location));
setNextFocus(dynamicFormBean.getFieldName());
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
if (LitePal.count(ProReqOrdeTaskBean.class) > 0) {
@ -293,7 +300,19 @@ public class ProReqActivity extends CommonFunctionActivity {
dialog.dismiss();
LitePal.deleteAllAsync(ProReqOrdeTaskBean.class).listen(i -> {
LitePal.deleteAll(ProReqDetailBean.class);
initRvData();
for (int j = 0; j < dynamicFormBeans.size(); j++) {
DynamicFormBean bean = dynamicFormBeans.get(j);
if (bean.getFieldName().equals("ZCJBM") ||
bean.getFieldName().equals("ZGWH") ||
bean.getFieldName().equals("lgort") ||
bean.getFieldName().equals("ZYWLX") ||
bean.getFieldName().equals("AUFNR") ||
bean.getFieldName().equals("ZLYSJ")) {
continue;
} else {
bean.setValue("");
}
}
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
scanBarcodeListMap = new HashMap<>();
query(value);
@ -306,8 +325,6 @@ public class ProReqActivity extends CommonFunctionActivity {
break;
case "barcode":
if (LitePal.count(ProReqOrdeTaskBean.class) == 0) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.Please_scan_the_ticket_number_first));
setNextFocus("AUFNR");
return;
@ -321,24 +338,28 @@ public class ProReqActivity extends CommonFunctionActivity {
//判断条码是否已经被扫描
if (isInBarcodeList(scanBarcodeListMap, value)) {
showError(getString(R.string.Do_not_scan_the_barcode_again));
setNextFocus("barcode");
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
AnalysisBarBean analysisBarBean = BarAnalysisUtils.analysisBarcode(value);
String batch = analysisBarBean.getBatch();
String materiel = analysisBarBean.getMateriel();
String quantity1 = analysisBarBean.getQuantity();
if (TextUtils.isEmpty(materiel)) {
setNextFocus("barcode");
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm));
return;
}
DynamicFormBean MATNR = dynamicFormAdapter.getItemByFieldName("MATNR");
DynamicFormBean ZPC = dynamicFormAdapter.getItemByFieldName("ZPC");
DynamicFormBean quantity = dynamicFormAdapter.getItemByFieldName("quantity");
MATNR.setValue(materiel);
ZPC.setValue(batch);
quantity.setValue(quantity1);
dynamicFormAdapter.setItemByFieldName("MATNR", MATNR);
dynamicFormAdapter.setItemByFieldName("ZPC", ZPC);
dynamicFormAdapter.setItemByFieldName("quantity", quantity);
LitePal
//.where("matnr = ? and complete = ?", materiel, "0")
.where("matnr = ?", materiel)
@ -350,55 +371,17 @@ public class ProReqActivity extends CommonFunctionActivity {
showError(getString(R.string.There_is_no_data_of_the_same_dimension_in_the_task_list));
return;
}
setNextFocus("quantity");
});
if (TextUtils.isEmpty(quantity1)) {
setNextFocus("quantity");
} else {
addDetail();
}
});
break;
case "quantity":
if (LitePal.count(ProReqOrdeTaskBean.class) == 0) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.Please_scan_the_ticket_number_first));
setNextFocus("AUFNR");
return;
}
DynamicFormBean barcode = dynamicFormAdapter.getItemByFieldName("barcode");
if (TextUtils.isEmpty(barcode.getValue())) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.The_bar_code_cannot_be_blank));
setNextFocus("barcode");
return;
}
ZYWLXItem = dynamicFormAdapter.getItemByFieldName("ZYWLX");
if (TextUtils.isEmpty(ZYWLXItem.getValue())) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.Please_select_a_business_type));
setNextFocus("quantity");
return;
}
lgortItem = dynamicFormAdapter.getItemByFieldName("lgort");
if (TextUtils.isEmpty(lgortItem.getValue())) {
dynamicFormBean.setValue("");
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
showError(getString(R.string.Please_select_a_stock_location));
setNextFocus("quantity");
return;
}
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_quantity_cannot_be_empty));
return;
}
if (Double.parseDouble(value) <= 0) {
showError(getString(R.string.The_number_of_scanned_codes_must_be_greater_than_0));
return;
}
addDetail(Double.parseDouble(value), barcode.getValue());
addDetail();
break;
default:
break;
@ -429,17 +412,22 @@ public class ProReqActivity extends CommonFunctionActivity {
if (data.size() > 0) {
proReqOrderBean = data.get(0);
List<ProReqOrdeTaskBean> item = proReqOrderBean.getItem();
QMUITipDialog qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING).create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
setNextFocus("barcode");
for (int i = 0; i < item.size(); i++) {
ProReqOrdeTaskBean taskBean = item.get(i);
taskBean.setRowid(System.currentTimeMillis());
taskBean.save();
if (item.size() > 0) {
QMUITipDialog qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING).create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
setNextFocus("barcode");
for (int i = 0; i < item.size(); i++) {
ProReqOrdeTaskBean taskBean = item.get(i);
taskBean.setRowid(System.currentTimeMillis());
taskBean.save();
}
qmuiTipDialog.dismiss();
} else {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR");
}
qmuiTipDialog.dismiss();
} else {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR");
@ -449,6 +437,7 @@ public class ProReqActivity extends CommonFunctionActivity {
showError(baseResponseBean.getMsg());
setNextFocus("AUFNR");
}
showTaskDetailBadgeNum();
}
@Override
@ -460,7 +449,7 @@ public class ProReqActivity extends CommonFunctionActivity {
});
}
private void addDetail(double quantity, String barcode) {
private void addDetail() {
DynamicFormBean ZPCItem = dynamicFormAdapter.getItemByFieldName("ZPC");//批次
DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料编码
DynamicFormBean ZLYSJItem = dynamicFormAdapter.getItemByFieldName("ZLYSJ");//领用时间
@ -468,6 +457,41 @@ public class ProReqActivity extends CommonFunctionActivity {
DynamicFormBean ZCJBMItem = dynamicFormAdapter.getItemByFieldName("ZCJBM");//车间编码
DynamicFormBean lgortItem = dynamicFormAdapter.getItemByFieldName("lgort");//库存地点
DynamicFormBean lZYWLXItem = dynamicFormAdapter.getItemByFieldName("ZYWLX");//业务类型
DynamicFormBean quantityItem = dynamicFormAdapter.getItemByFieldName("quantity");//业务类型
if (LitePal.count(ProReqOrdeTaskBean.class) == 0) {
showError(getString(R.string.Please_scan_the_ticket_number_first));
setNextFocus("AUFNR");
return;
}
DynamicFormBean barcodeItem = dynamicFormAdapter.getItemByFieldName("barcode");
String barcode = barcodeItem.getValue();
if (TextUtils.isEmpty(barcode)) {
showError(getString(R.string.The_bar_code_cannot_be_blank));
setNextFocus("barcode");
return;
}
if (TextUtils.isEmpty(lZYWLXItem.getValue())) {
showError(getString(R.string.Please_select_a_business_type));
return;
}
if (TextUtils.isEmpty(lgortItem.getValue())) {
showError(getString(R.string.Please_select_a_stock_location));
return;
}
String value = quantityItem.getValue();
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_quantity_cannot_be_empty));
return;
}
double num = Double.parseDouble(value);
if (Double.parseDouble(value) <= 0) {
showError(getString(R.string.The_number_of_scanned_codes_must_be_greater_than_0));
return;
}
LitePal
//.where("matnr = ? and complete = ?", MATNRItem.getValue(), "0")
.where("matnr = ?", MATNRItem.getValue())
@ -479,7 +503,7 @@ public class ProReqActivity extends CommonFunctionActivity {
return;
}
double scanQuantity = quantity;
double scanQuantity = num;
String gid = System.currentTimeMillis() + "";
//加入明细,并且可以超量,每次只匹配任务一行
for (ProReqOrdeTaskBean bean : proReqOrdeTaskBeans) {
@ -544,6 +568,7 @@ public class ProReqActivity extends CommonFunctionActivity {
}
dynamicFormBean.setValue("");
}
showTaskDetailBadgeNum();
setNextFocus("barcode");
});
@ -594,6 +619,16 @@ public class ProReqActivity extends CommonFunctionActivity {
}
/**
* 显示任务和明细角标
*/
private void showTaskDetailBadgeNum() {
int taskCount = LitePal.count(ProReqOrdeTaskBean.class);
int count = LitePal.count(ProReqDetailBean.class);
qTaskBadgeView.setBadgeNumber(taskCount);
qDetailBadgeView.setBadgeNumber(count);
}
/**
* 重新刷新ui
@ -604,6 +639,7 @@ public class ProReqActivity extends CommonFunctionActivity {
scanBarcodeListMap = new HashMap<>();
clearAllData();
clearRvData();
showTaskDetailBadgeNum();
setNextFocus("AUFNR");
});
}
@ -864,6 +900,7 @@ public class ProReqActivity extends CommonFunctionActivity {
int count = LitePal.count(ProReqDetailBean.class);
if (count > 0) {
new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(getString(R.string.Are_you_sure_to_exit))
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())

387
app/src/main/java/com/techscan/wk/ui/query/FlowOrderQueryActivity.java

@ -0,0 +1,387 @@
package com.techscan.wk.ui.query;
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.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.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.column.Column;
import com.bin.david.form.data.format.bg.BaseBackgroundFormat;
import com.bin.david.form.data.format.bg.IBackgroundFormat;
import com.bin.david.form.data.style.FontStyle;
import com.bin.david.form.data.table.TableData;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.ScreenUtils;
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.qmuiteam.qmui.widget.QMUITopBar;
import com.techscan.wk.R;
import com.techscan.wk.adapter.DynamicFormAdapter;
import com.techscan.wk.base.CommonFunctionActivity;
import com.techscan.wk.model.DynamicFormBean;
import com.techscan.wk.model.FlowOrderQueryBean;
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.MySmartTable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.disposables.Disposable;
import okhttp3.ResponseBody;
import q.rorbin.badgeview.QBadgeView;
/**
* 流转单查询
*/
public class FlowOrderQueryActivity 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<FlowOrderQueryBean> smartTable;
private Column<String> flowReport;
private Column<String> zxtpc;
QBadgeView qTaskBadgeView, qDetailBadgeView;
private DynamicFormAdapter dynamicFormAdapter;
private List<DynamicFormBean> dynamicFormBeans;
private DynamicFormBean selectDynamicFormBean;
private TableData<FlowOrderQueryBean> mTableData;
private List<FlowOrderQueryBean> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flow_order_query);
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("barcode");
}, 100);
}
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);
int screenWidth = ScreenUtils.getScreenWidth();
int i = screenWidth / 2;
config.setMinTableWidth(screenWith);
config.setColumnTitleHorizontalPadding(2);
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);
flowReport = new Column<>(getString(R.string.Flow_order_number), "flowReport");
zxtpc = new Column<>(getString(R.string.Case_number), "zxtpc");
flowReport.setFast(true);
flowReport.setMinWidth(i);
zxtpc.setFast(true);
zxtpc.setMinWidth(i);
setTableData();
}
private void setTableData() {
mTableData = new TableData<>("", list, zxtpc, flowReport);
smartTable.setTableData(mTableData);
smartTable.invalidate();
}
/**
* 初始化顶部标题栏
*/
private void initTopBar() {
topbar.setTitle(getString(R.string.Flow_order_query));
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("barcode");
});
}
/**
* 初始化动态列表数据
*/
private void initRvData() {
// 从资源文件中读取界面数据
String jsonStr = FindUtils.readJsonFromFile(context, "FlowOrderQueryUI.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 "barcode":
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.Data_cannot_be_empty));
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
query(value);
break;
default:
break;
}
});
}
private void query(String value) {
HttpMethods.getInstance().getFlowReport(value, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();
Type objectType = new TypeToken<BaseResponseBean<List<FlowOrderQueryBean>>>() {
}.getType();
BaseResponseBean<List<FlowOrderQueryBean>> baseResponseBean = gson.fromJson(string, objectType);
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));
}
setTableData();
} else {
list.clear();
setTableData();
showError(baseResponseBean.getMsg());
}
}
@Override
protected void onFailure(Throwable e) throws Exception {
list.clear();
setTableData();
CustomErrorDialog(e, FlowOrderQueryActivity.this);
}
});
}
@OnClick({R.id.iv_scan})
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;
}
}
@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 "invcode":
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();
}
}

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

@ -92,6 +92,8 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
RecyclerView rvUi;
@BindView(R.id.llflowOrderDetail)
LinearLayout llflowOrderDetail;
@BindView(R.id.btn_flowOrderDetail)
Button btnFlowOrderDetail;
@BindView(R.id.btn_detail)
@ -101,7 +103,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
@BindView(R.id.ll_bottom)
LinearLayout llBottom;
QBadgeView qTaskBadgeView, qDetailBadgeView;
QBadgeView qFlowOrderDetailBadgeView, qDetailBadgeView;
private DynamicFormAdapter dynamicFormAdapter;
private List<DynamicFormBean> dynamicFormBeans;
@ -135,17 +137,22 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} else {
scanBarcodeListMap.remove(removeKey);
}
showDetailBadgeNum();
} else if (eventMsg.getCode() == 1001) {
showOrderDetailBadgeNum();
}
});
RxBus.getInstance().addSubscription(this, register);
qTaskBadgeView = new QBadgeView(context);
qFlowOrderDetailBadgeView = new QBadgeView(context);
qFlowOrderDetailBadgeView.bindTarget(btnFlowOrderDetail);
qDetailBadgeView = new QBadgeView(context);
qDetailBadgeView.bindTarget(btnDetail);
initTopBar();
initListeners();
initRvData();
rvUi.postDelayed(() -> {
setNextFocus("FlowOrder");
}, 300);
setNextFocus("AUFNR");
}, 100);
}
@ -168,29 +175,32 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
* 重新刷新ui
*/
@SuppressLint("SetTextI18n")
private void reInitUI(boolean isReportWork) {
private void reInitUI(boolean isReportWork, String scanRule) {
runOnUiThread(() -> {
SoundUtils.playSound(this, R.raw.ok);
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);
}
String ScanRuleValue = "";
for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean dynamicFormBean = dynamicFormBeans.get(i);
if (dynamicFormBean.getFieldName().equals("ScanRule")) {
ScanRuleValue = dynamicFormBean.getValue();
if (dynamicFormBean.getFieldName().equals("AUFNR") ||
dynamicFormBean.getFieldName().equals("ScanRule") ||
dynamicFormBean.getFieldName().equals("VORNR")) {
continue;
} else if (dynamicFormBean.getFieldName().equals("FlowOrder")) {
if (!TextUtils.isEmpty(ScanRuleValue)) {
if (ScanRuleValue.equals(items[0])) {
continue;
}
if (!TextUtils.isEmpty(scanRule) && scanRule.equals(items[0])) {
continue;
}
}
dynamicFormBean.setValue("");
}
showDetailBadgeNum();
if (isReportWork) {
setNextFocus("PacketBarcode");
if (scanRule.equals(items[1])) {
setNextFocus("FlowOrder");
} else {
setNextFocus("PacketBarcode");
}
} else {
setNextFocus("XMNGA");
}
@ -198,6 +208,31 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
});
}
@Override
protected void onResume() {
super.onResume();
showDetailBadgeNum();
showOrderDetailBadgeNum();
}
/**
* 显示明细角标
*/
private void showDetailBadgeNum() {
int count = LitePal.count(FlowReportWorkDetailBean.class);
qDetailBadgeView.setBadgeNumber(count);
}
/**
* 显示流转单明细角标
*/
private void showOrderDetailBadgeNum() {
int orderDetailCount = LitePal.count(FlowOrderDetailBean.class);
qFlowOrderDetailBadgeView.setBadgeNumber(orderDetailCount);
}
/**
* 初始化动态列表数据
*/
@ -250,34 +285,51 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
QMUIDialog.CheckableDialogBuilder menuDialogBuilder = new QMUIDialog.CheckableDialogBuilder(this);
menuDialogBuilder.setTitle(dynamicFormBean.getName());
menuDialogBuilder.setTitle(dynamicFormAdapter.getCurrentLanguage(dynamicFormBean));
int finalSelectIndex = selectIndex;
menuDialogBuilder.addItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (finalSelectIndex != -1 && which != finalSelectIndex) {
dialog.dismiss();
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage("是否切换扫描规则?(切换规则将清空之前所有扫描明细数据)")
.addAction(getResources().getString(R.string.cancel_info), (dialog1, index) -> dialog1.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog1, index) -> {
dialog1.dismiss();
scanBarcodeListMap = new HashMap<>();
initRvData();
LitePal.deleteAll(FlowOrderDetailBean.class);
LitePal.deleteAll(FlowReportWorkDetailBean.class);
String item = items[which];
dynamicFormBean.setValue(item);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
btnFlowOrderDetail.setVisibility(View.VISIBLE);
} else {
btnFlowOrderDetail.setVisibility(View.GONE);
}
})
.create(R.style.QMUI_Dialog).show();
int count = LitePal.count(FlowOrderDetailBean.class);
int detailCount = LitePal.count(FlowReportWorkDetailBean.class);
if (rvUiHaveData() || count > 0 || detailCount > 0) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage("是否切换扫描规则?(切换将清空界面和所有扫描明细内容)")
.addAction(getResources().getString(R.string.cancel_info), (dialog1, index) -> dialog1.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog1, index) -> {
dialog1.dismiss();
initRvData();
scanBarcodeListMap = new HashMap<>();
LitePal.deleteAll(FlowOrderDetailBean.class);
LitePal.deleteAll(FlowReportWorkDetailBean.class);
showDetailBadgeNum();
showOrderDetailBadgeNum();
String item = items[which];
dynamicFormBean.setValue(item);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
llflowOrderDetail.setVisibility(View.VISIBLE);
} else {
llflowOrderDetail.setVisibility(View.GONE);
}
})
.create(R.style.QMUI_Dialog).show();
} else {
String item = items[which];
dynamicFormBean.setValue(item);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
llflowOrderDetail.setVisibility(View.VISIBLE);
} else {
llflowOrderDetail.setVisibility(View.GONE);
}
}
} else {
dialog.dismiss();
@ -286,9 +338,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
btnFlowOrderDetail.setVisibility(View.VISIBLE);
llflowOrderDetail.setVisibility(View.VISIBLE);
} else {
btnFlowOrderDetail.setVisibility(View.GONE);
llflowOrderDetail.setVisibility(View.GONE);
}
}
}
@ -299,31 +351,68 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
});
dynamicFormAdapter.setOnFormItemViewActionListener((dynamicFormBean, position) -> {
String value = dynamicFormBean.getValue();
switch (dynamicFormBean.getFieldName()) {
case "FlowOrder":
case "AUFNR":
DynamicFormBean scanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");
String value1 = scanRuleItem.getValue();
if (TextUtils.isEmpty(value1)) {
setNextFocus("FlowOrder");
SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToast(FlowReportWorkActivity.this, "请先选择扫描规则");
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
showError(getString(R.string.Select_a_scan_rule_first));
return;
}
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
return;
}
dynamicFormBean.setCanChange(false);
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("VORNR");
break;
case "VORNR":
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_process_number_cannot_be_empty));
return;
}
dynamicFormBean.setCanChange(false);
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("FlowOrder");
break;
case "FlowOrder":
DynamicFormBean AUFNRItem = dynamicFormAdapter.getItemByFieldName("AUFNR");
if (TextUtils.isEmpty(AUFNRItem.getValue())) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
return;
}
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_flow_order_number_cannot_be_empty));
return;
}
if (value.startsWith("T") && value.length() > 9) {
int t = value.indexOf("T");
String substring = value.substring(t + 1, 9);
String aufnrItemValue = AUFNRItem.getValue();
if (!substring.equals(aufnrItemValue)) {
ToastUtils.showLong(R.string.order_number_in_the_flow_order_is_inconsistent);
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
}
scanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");
if (TextUtils.isEmpty(scanRuleItem.getValue())) {
setNextFocus(dynamicFormBean.getFieldName());
showError(getString(R.string.The_flow_order_number_cannot_be_empty));;
showError(getString(R.string.Select_a_scan_rule_first));
return;
}
if (value1.equals(items[1])) {
if (scanRuleItem.getValue().equals(items[1])) {
LitePal
.where("flowOrder = ?", value)
.findAsync(FlowOrderDetailBean.class)
.listen(reportWorkDetailBean -> {
if (reportWorkDetailBean.size() > 0) {
SoundUtils.playSound(context, R.raw.warning);
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
ToastUtil.showShortToast(FlowReportWorkActivity.this, getString(R.string.The_current_flow_order_number_has_been_scanned));
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
showError(getString(R.string.The_current_flow_order_number_has_been_scanned));
return;
}
String gid = System.currentTimeMillis() + "";
@ -331,19 +420,20 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setGid(gid);
bean.setFlowOrder(value);
bean.save();
showOrderDetailBadgeNum();
SoundUtils.playSound(this, R.raw.ok);
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
});
} else {
dynamicFormBean.setCanChange(false);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("PacketBarcode");
}
break;
case "PacketBarcode":
if (TextUtils.isEmpty(value)) {
setNextFocus(dynamicFormBean.getFieldName());
showError(getString(R.string.The_packet_barcode_cannot_be_empty));;
setNextFocus("PacketBarcode");
showError(getString(R.string.The_packet_barcode_cannot_be_empty));
return;
}
scanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");
@ -373,8 +463,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
//判断条码是否已经被扫描
if (isInBarcodeList(scanBarcodeListMap, value)) {
SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToastCenter(context, getString(R.string.Do_not_scan_the_barcode_again));
showError(getString(R.string.Do_not_scan_the_barcode_again));
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
@ -398,13 +487,20 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
private void addDetail(boolean isReportWork) {
DynamicFormBean ScanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");//扫描规则
String gid = System.currentTimeMillis() + "";
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
DynamicFormBean vornrItem = dynamicFormAdapter.getItemByFieldName("VORNR");//工序
DynamicFormBean PacketBarcodeItem = dynamicFormAdapter.getItemByFieldName("PacketBarcode");//包条码
DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单
DynamicFormBean gmngaItem = dynamicFormAdapter.getItemByFieldName("GMNGA");//报工数量
DynamicFormBean xmngaItem = dynamicFormAdapter.getItemByFieldName("XMNGA");//报废数量
DynamicFormBean grundItem = dynamicFormAdapter.getItemByFieldName("GRUND");//原因代码
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
String barcode = PacketBarcodeItem.getValue();
if (TextUtils.isEmpty(aufnrItem.getValue())) {
setNextFocus("AUFNR");
showError(getString(R.string.The_work_order_number_cannot_be_empty));
return;
}
if (isReportWork) {
if (TextUtils.isEmpty(gmngaItem.getValue())) {
showError(getString(R.string.The_number_of_reports_cannot_be_empty));
@ -468,6 +564,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
//否则是一个流转单多个箱码
FlowReportWorkDetailBean bean = new FlowReportWorkDetailBean();
bean.setGid(gid);
bean.setAufnr(aufnrItem.getValue());
bean.setVornr(vornrItem.getValue());
bean.setZxtpc(ZXTPCItem.getValue());
bean.setFlowOrders(flowOrderItem.getValue());
bean.setFlowOrders(flowOrderSb.substring(0, flowOrderSb.length() - 1));
if (isReportWork) {
@ -487,12 +586,15 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
boolean save = bean.save();
if (save) {
LitePal.deleteAll(FlowOrderDetailBean.class);
showOrderDetailBadgeNum();
//将当前条码存入对应的条码扫描明细中
List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes);
reInitUI(isReportWork);
reInitUI(isReportWork, ScanRuleItem.getValue());
} else {
showError(getString(R.string.Failed_to_join_details));
}
});
@ -506,6 +608,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
//否则是一个流转单多个箱码
FlowReportWorkDetailBean bean = new FlowReportWorkDetailBean();
bean.setGid(gid);
bean.setAufnr(aufnrItem.getValue());
bean.setVornr(vornrItem.getValue());
bean.setZxtpc(ZXTPCItem.getValue());
bean.setFlowOrders(flowOrderItem.getValue());
if (isReportWork) {
bean.setPacketBarcode(barcode);
@ -528,7 +633,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes);
reInitUI(isReportWork);
reInitUI(isReportWork, ScanRuleItem.getValue());
} else {
showError(getString(R.string.Failed_to_join_details));
}
}
@ -554,6 +661,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
dynamicFormAdapter.setList(dynamicFormBeans);
dynamicFormAdapter.notifyDataSetChanged();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
@ -580,7 +688,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
dynamicFormAdapter.notifyDataSetChanged();
}, 200);
}, 100);
}
@ -667,17 +775,19 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
if (baseResponseBean.getCode() == 200) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(getString(R.string.Data_saved_successfully))
.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();
btnFlowOrderDetail.setVisibility(View.GONE);
clearAllData();
llflowOrderDetail.setVisibility(View.GONE);
showDetailBadgeNum();
showOrderDetailBadgeNum();
scanBarcodeListMap = new HashMap<>();
setNextFocus("FlowOrder");
setNextFocus("AUFNR");
} else {
showError(baseResponseBean.getMsg());
}
@ -713,6 +823,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
dynamicFormAdapter.setItemByFieldName("GRUND", GRUNDItem);
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("XMNGA");
}
} else if (requestCode == REQUEST_CODE_SCAN_FOR_GROUP) {
@ -785,6 +896,21 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
return super.onKeyDown(keyCode, event);
}
private boolean rvUiHaveData() {
boolean isExist = false;
for (DynamicFormBean bean : dynamicFormBeans) {
if (bean.getFieldName().equals("ScanRule")) {
continue;
}
if (!TextUtils.isEmpty(bean.getValue())) {
isExist = true;
}
}
return isExist;
}
private void finishActivity() {
int count = LitePal.count(ReportWorkDetailBean.class);
int flowOrderCount = LitePal.count(FlowOrderDetailBean.class);
@ -799,7 +925,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
LitePal.deleteAllAsync(FlowOrderDetailBean.class).listen(i1 -> finish());
});
})
.create(R.style.CUSTOM_QMUI);
.create(R.style.QMUI_Dialog);
qmuiDialog.show();
return;
}

53
app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkActivity.java

@ -96,7 +96,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
@BindView(R.id.ll_bottom)
LinearLayout llBottom;
QBadgeView qTaskBadgeView, qDetailBadgeView;
QBadgeView qDetailBadgeView;
private DynamicFormAdapter dynamicFormAdapter;
private List<DynamicFormBean> dynamicFormBeans;
@ -127,17 +127,18 @@ public class ReportWorkActivity extends CommonFunctionActivity {
} else {
scanBarcodeListMap.remove(removeKey);
}
showDetailBadgeNum();
}
});
RxBus.getInstance().addSubscription(this, register);
qTaskBadgeView = new QBadgeView(context);
qDetailBadgeView = new QBadgeView(context);
qDetailBadgeView.bindTarget(btnDetail);
initTopBar();
initListeners();
initRvData();
rvUi.postDelayed(() -> {
setNextFocus("AUFNR");
}, 300);
}, 100);
}
@ -174,6 +175,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
dynamicFormBean.setValue("");
}
showDetailBadgeNum();
if (isReportWork) {
setNextFocus("PacketBarcode");
} else {
@ -183,6 +185,20 @@ public class ReportWorkActivity extends CommonFunctionActivity {
});
}
@Override
protected void onResume() {
super.onResume();
showDetailBadgeNum();
}
/**
* 显示明细角标
*/
private void showDetailBadgeNum() {
int count = LitePal.count(ReportWorkDetailBean.class);
qDetailBadgeView.setBadgeNumber(count);
}
/**
* 初始化动态列表数据
*/
@ -268,7 +284,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
boolean checkBarcode = BarAnalysisUtils.checkBarcodePresuffix(value);
if (!checkBarcode) {
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
showError(getString(R.string.The_barcode_format_is_incorrect) + value);
return;
}
@ -276,7 +292,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
if (isInBarcodeList(scanBarcodeListMap, value)) {
SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToastCenter(context, getString(R.string.Do_not_scan_the_barcode_again));
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
getBarcodeInfo(value);
@ -304,6 +320,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
DynamicFormBean gmngaItem = dynamicFormAdapter.getItemByFieldName("GMNGA");//报工数量
DynamicFormBean xmngaItem = dynamicFormAdapter.getItemByFieldName("XMNGA");//报废数量
DynamicFormBean grundItem = dynamicFormAdapter.getItemByFieldName("GRUND");//原因代码
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
if (TextUtils.isEmpty(aufnrItem.getValue())) {
setNextFocus("AUFNR");
showError(getString(R.string.The_work_order_number_cannot_be_empty));;
@ -356,6 +373,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
bean.setGid(gid);
bean.setAufnr(aufnrItem.getValue());
bean.setVornr(vornrItem.getValue());
bean.setZxtpc(ZXTPCItem.getValue());
if (isReportWork) {
bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue());
@ -370,13 +388,18 @@ public class ReportWorkActivity extends CommonFunctionActivity {
bean.setGrund(split[0]);
}
}
bean.save();
//将当前条码存入对应的条码扫描明细中
List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes);
boolean save = bean.save();
if(save){
//将当前条码存入对应的条码扫描明细中
List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes);
reInitUI(isReportWork);
} else {
showError(getString(R.string.Failed_to_join_details));
}
reInitUI(isReportWork);
}
@ -425,7 +448,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
}
dynamicFormAdapter.notifyDataSetChanged();
}, 200);
}, 100);
}
@ -492,7 +515,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
if (baseResponseBean.getCode() == 200) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(getString(R.string.Data_saved_successfully))
.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();
@ -500,6 +523,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
.create(R.style.QMUI_Dialog).show();
initRvData();
clearAllData();
showDetailBadgeNum();
scanBarcodeListMap = new HashMap<>();
setNextFocus("AUFNR");
} else {
@ -537,6 +561,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
dynamicFormAdapter.setItemByFieldName("GRUND", GRUNDItem);
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("XMNGA");
}
} else if (requestCode == REQUEST_CODE_SCAN_FOR_GROUP) {
@ -617,7 +642,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
dialog.dismiss();
LitePal.deleteAllAsync(ReportWorkDetailBean.class).listen(i -> finish());
})
.create(R.style.CUSTOM_QMUI);
.create(R.style.QMUI_Dialog);
qmuiDialog.show();
return;
}

8
app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkErrorListActivity.java

@ -123,7 +123,7 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
private DatePickDialog dialog;
List<ReportWorkErrorInfoBean> list = new ArrayList<>();
private int currentPage = 1;
int pageSize = 20;
int pageSize = 30;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -360,6 +360,8 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
String value = dynamicFormBean.getValue();
switch (dynamicFormBean.getFieldName()) {
case "AUFNR":
setNextFocus("VORNR");
break;
case "VORNR":
query(currentPage = 1, false);
break;
@ -414,7 +416,7 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
return;
}
if (list.size() == data.getTotal()) {
ToastUtils.showLong(R.string.No_more_data);
ToastUtils.showLong(getString(R.string.No_more_data));
return;
}
select.setColumnName(getString(R.string.select_all));
@ -574,7 +576,7 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
}
}
dynamicFormAdapter.notifyDataSetChanged();
}, 200);
}, 100);
}
/**

3
app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkOffsetActivity.java

@ -395,8 +395,9 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
@Override
protected void onFailure(Throwable e) throws Exception {
list.clear();
setTableData();
CustomErrorDialog(e, ReportWorkOffsetActivity.this);
}
});
}

2
app/src/main/java/com/techscan/wk/utils/update/UpdateUtil.java

@ -94,7 +94,7 @@ public class UpdateUtil {
public void onDenied() {
//弹出弹框提醒用户
AlertDialog alertDialog = new AlertDialog.Builder(activity)
.setTitle(activity.getString(R.string.help))
.setTitle(activity.getString(R.string.tips_title))
.setMessage(activity.getString(R.string.allowtoinstall))
.setNegativeButton(activity.getString(R.string.update_version_false), null)
.setPositiveButton(activity.getString(R.string.setting), (dialog, which) -> {

19
app/src/main/java/com/techscan/wk/widgets/CustomBottomSheet.java

@ -119,16 +119,22 @@ public class CustomBottomSheet<T> extends BottomPopupView {
holder.setText(R.id.detail,
getContext().getString(R.string.Operation_number) + getContext().getString(R.string.semicolon) + ((ReportWorkDetailBean) infoBean).getVornr() + "\n" +
getContext().getString(R.string.Packet_barcode) + getContext().getString(R.string.semicolon) + ((ReportWorkDetailBean) infoBean).getPacketBarcode() + "\n" +
getContext().getString(R.string.Case_number) + getContext().getString(R.string.semicolon) + ((ReportWorkDetailBean) infoBean).getZxtpc() + "\n" +
getContext().getString(R.string.Quantity_reported) + getContext().getString(R.string.semicolon) + ((ReportWorkDetailBean) infoBean).getGmnga() + "\n" +
getContext().getString(R.string.Reason_code) + getContext().getString(R.string.semicolon) + ((ReportWorkDetailBean) infoBean).getGrund() + "\n" +
getContext().getString(R.string.Scrap_quantity) + getContext().getString(R.string.semicolon) + ((ReportWorkDetailBean) infoBean).getXmnga() + "\n"
);
} else if (infoBean instanceof FlowReportWorkDetailBean) {
holder.getView(R.id.name).setVisibility(GONE);
//holder.setText(R.id.name, ((FlowReportWorkDetailBean) infoBean).getFlowOrders());
holder.setText(R.id.detail,
getContext().getString(R.string.Flow_order_number) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getFlowOrders() + "\n" +
getContext().getString(R.string.Work_order_number) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getAufnr() + "\n" +
getContext().getString(R.string.Operation_number) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getVornr() + "\n" +
getContext().getString(R.string.Flow_order_number) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getFlowOrders() + "\n" +
getContext().getString(R.string.Packet_barcode) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getPacketBarcode() + "\n" +
getContext().getString(R.string.Case_number) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getZxtpc() + "\n" +
getContext().getString(R.string.Quantity_reported) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getGmnga() + "\n" +
getContext().getString(R.string.Reason_code) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getGrund() + "\n" +
getContext().getString(R.string.Scrap_quantity) + getContext().getString(R.string.semicolon) + ((FlowReportWorkDetailBean) infoBean).getXmnga() + "\n"
);
} else if (infoBean instanceof FlowOrderDetailBean) {
@ -247,13 +253,12 @@ public class CustomBottomSheet<T> extends BottomPopupView {
//删除
List<T> newList = commonAdapter.getData();
String gid = ((ReportWorkDetailBean) newList.get(position)).getGid();
String packetBarcode = ((ReportWorkDetailBean) newList.get(position)).getPacketBarcode();
StringBuilder gidStringBuilder = new StringBuilder();
LitePal.deleteAllAsync(ReportWorkDetailBean.class, "gid = ?", gid).listen(i1 -> {
Iterator<T> iterator = newList.iterator();
while (iterator.hasNext()) {
T next = iterator.next();
if (((ReportWorkDetailBean) next).getPacketBarcode().equals(((ReportWorkDetailBean) newList.get(position)).getPacketBarcode())) {
if (((ReportWorkDetailBean) next).getGid().equals(gid)) {
gidStringBuilder.append(((ReportWorkDetailBean) next).getGid()).append(",");
iterator.remove();
}
@ -291,7 +296,7 @@ public class CustomBottomSheet<T> extends BottomPopupView {
Iterator<T> iterator = newList.iterator();
while (iterator.hasNext()) {
T next = iterator.next();
if (((FlowReportWorkDetailBean) next).getGid().equals(((FlowReportWorkDetailBean) newList.get(position)).getGid())) {
if (((FlowReportWorkDetailBean) next).getGid().equals(gid)) {
gidStringBuilder.append(((FlowReportWorkDetailBean) next).getGid()).append(",");
iterator.remove();
}
@ -336,6 +341,12 @@ public class CustomBottomSheet<T> extends BottomPopupView {
if (commonAdapter.getData().size() < 1)
CustomBottomSheet.this.dismiss();
topBar.removeAllLeftViews();
Event<List<T>> event = new Event<>();
event.setCode(1001);
event.setMessage("detail is changed");
RxBus.getInstance().post(event);
dialog.dismiss();
});

9
app/src/main/res/layout/activity_change_pwd.xml

@ -16,16 +16,16 @@
android:layout_height="wrap_content"
android:background="@color/qmui_config_color_white"
android:orientation="vertical"
android:padding="8dp">
android:padding="12dp">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:visibility="gone"
android:layout_marginBottom="8dp">
<EditText
android:visibility="gone"
android:id="@+id/et_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -46,6 +46,7 @@
android:layout_height="wrap_content"
android:hint="请输入原密码"
android:imeOptions="actionDone"
android:textSize="@dimen/sp_16"
android:inputType="textPassword"
tools:ignore="Autofill,TextFields" />
</com.google.android.material.textfield.TextInputLayout>
@ -61,6 +62,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入新密码"
android:textSize="@dimen/sp_16"
android:imeOptions="actionDone"
android:inputType="textPassword"
tools:ignore="Autofill,TextFields" />
@ -72,6 +74,7 @@
android:layout_marginBottom="8dp">
<EditText
android:textSize="@dimen/sp_16"
android:id="@+id/et_new_pwd2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -84,7 +87,7 @@
<Button
android:id="@+id/btn_bottom_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="55dp"
android:layout_margin="20dp"
android:background="@drawable/bg_login_btn"
android:focusable="false"

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

@ -0,0 +1,54 @@
<?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_toBottomOf="parent"
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_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

7
app/src/main/res/layout/activity_report_work_errlist.xml

@ -31,10 +31,10 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/btn_submit"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_scan">
@ -46,7 +46,8 @@
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.techscan.wk.widgets.MySmartTable
android:id="@+id/smartTable"
@ -61,6 +62,8 @@
<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"

2
app/src/main/res/layout/activity_setting.xml

@ -126,7 +126,7 @@
<Button
android:id="@+id/btn_bottom_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="55dp"
android:layout_margin="20dp"
android:background="@drawable/bg_login_btn"
android:focusable="false"

8
app/src/main/res/layout/cbk_dialog_pick_time.xml

@ -60,9 +60,9 @@
android:layout_weight="1"
android:background="@drawable/abc_list_selector_holo_light"
android:gravity="center"
android:text="@string/cancel"
android:text="@string/cancel_info"
android:textColor="#444444"
android:textSize="15sp" />
android:textSize="16sp" />
<ImageView
android:layout_width="1px"
@ -78,9 +78,9 @@
android:layout_weight="1"
android:background="@drawable/abc_list_selector_holo_light"
android:gravity="center"
android:text="@string/ok"
android:text="@string/confirm_info"
android:textColor="#444444"
android:textSize="15sp" />
android:textSize="16sp" />
</LinearLayout>

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

@ -37,6 +37,7 @@
android:drawablePadding="6dp"
android:gravity="center_vertical"
android:hint="@string/input_title"
android:imeOptions="actionGo"
android:inputType="text"
android:maxLines="1"
android:textColorHint="#cccccc"

2
app/src/main/res/layout/layout_bottom_btn.xml

@ -3,6 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:orientation="horizontal">
<Button

2
app/src/main/res/layout/layout_bottom_btn1.xml

@ -3,6 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:orientation="horizontal">
<Button

27
app/src/main/res/layout/layout_bottom_btn2.xml

@ -3,19 +3,28 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_flowOrderDetail"
android:layout_width="0dp"
android:layout_height="match_parent"
<LinearLayout
android:id="@+id/llflowOrderDetail"
android:layout_weight="1"
android:background="@drawable/bg_scan_btn"
android:text="@string/Flow_order_detail"
android:textColor="@color/qmui_config_color_white"
android:layout_width="0dp"
android:visibility="gone"
tools:ignore="ButtonStyle" />
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_flowOrderDetail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_scan_btn"
android:text="@string/Flow_order_detail"
android:textColor="@color/qmui_config_color_white"
tools:ignore="ButtonStyle" />
</LinearLayout>
<Button
android:id="@+id/btn_detail"

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

@ -23,25 +23,6 @@
<string name="input_title">Please Input</string>
<string name="rate_title">Conversion Rate</string>
<string name="barcode_scan_title">Barcode Scanning</string>
<string name="choose_material">Choose Material</string>
<string name="choose_material_class">Choose Material Classification</string>
<string name="choose_batch">Choose Batch</string>
<string name="choose_rack">Choose Location</string>
<string name="choose_group">Choose Organization</string>
<string name="choose_storage">Choose Warehouse</string>
<string name="choose_supplier">Choose Supplier</string>
<string name="choose_customer">Choose Customer</string>
<string name="choose_dept">Choose Department</string>
<string name="choose_pns">Choose Operator</string>
<string name="choose_whsmanager">Choose Warehouse Keeper</string>
<string name="no_material">There is no relevant material for the moment</string>
<string name="no_material_class">There is no relevant material classification for the moment</string>
<string name="no_batch">There is no relevant batch for the moment</string>
<string name="no_rack">There is no relevant location for the moment</string>
<string name="no_group">There is no relevant organization for the moment</string>
<string name="no_storage">There is no relevant warehouse for the moment</string>
<string name="no_dept">There is no relevant department for the moment</string>
<string name="no_pns">There is no relevant person for the moment</string>
<string name="tips_title">Warm Prompt</string>
<string name="confirm_exit_current_page">Whether to exit the current interface?</string>
<string name="tips_scan_code">Put the QR code/barcode into the frame and it can be scanned automatically</string>
@ -66,7 +47,6 @@
<string name="isdown">Downloading</string>
<string name="waiting">Please wait...</string>
<string name="notice">Notice</string>
<string name="help">Warm Prompt</string>
<string name="setting">Setting</string>
<string name="allowtoinstall">The APK must be authorized to be installed. Please set to allow installation</string>
<string name="download_failed">Download Failed</string>
@ -83,53 +63,6 @@
<string name="main_current_org">Current Organization: %1s</string>
<string name="please_choose_group">Please select the organization first</string>
<string name="confirm_logout">Confirm to log out?</string>
<string name="f_product_in_head_title">Finished Product Storage Table Header</string>
<string name="f_product_in_body_title">Finished Product Storage Table Body</string>
<string name="f_product_in_detail_title">Finished Product Storage Order Details</string>
<string name="choose_fin_in_order">Choose the Finished Product Storage Order</string>
<string name="choose_prod_order">Choose the Production Order</string>
<string name="no_prod_order">There is no relevant production order for the moment</string>
<string name="no_fin_in_order">There is no relevant finished product storage order for the moment</string>
<string name="please_choose_f_product_in_order">Please select the finished product storage order first</string>
<string name="changing_info">Entering the modification interface. Multiple modifications are subject to the data of the last modification</string>
<string name="please_checking_and_submit">Are you sure to submit and save after the modification is completed?</string>
<string name="please_submit_to_finish">Are you sure to exit the current page? The detailed information will be cleared after exiting</string>
<string name="please_submit_to_change_bill">Are you sure to clear the detailed information and re-select %s?</string>
<string name="please_choose_batch">Please select the batch first</string>
<string name="please_choose_position">Please select the location first</string>
<string name="batch_error">The batches are inconsistent</string>
<string name="material_error">The materials are inconsistent</string>
<string name="should_num_is_empty">The receivable quantity is empty. Please return to the detailed interface to re-select or contact the person who made the bill!</string>
<string name="num_is_too_large">The received quantity exceeds the receivable quantity. Please reconfirm the quantity</string>
<string name="other_in_head_title">Other Storage Table Header</string>
<string name="other_in_body_title">Other Storage Table Body</string>
<string name="other_out_head_title">Other Outbound Table Header</string>
<string name="other_out_body_title">Other Outbound Table Body</string>
<string name="transfer_head_title">Transfer Table Header</string>
<string name="transfer_body_title">Transfer Table Body</string>
<string name="choose_transfer_order">Choose the Transfer Order</string>
<string name="no_transfer_order">There is no relevant transfer order for the moment</string>
<string name="no_transfer_order_task">There is no relevant transfer order task for the moment</string>
<string name="sale_out_head_title">Sales Outbound Table Header</string>
<string name="sale_out_body_title">Sales Outbound Table Body</string>
<string name="sale_out_choose_task_info_title">Damage Check</string>
<string name="choose_send_product_order">Choose the Shipping Order</string>
<string name="no_send_product_order">There is no relevant shipping order for the moment</string>
<string name="no_send_product_order_task">There is no relevant shipping order task for the moment</string>
<string name="form_change_head_title">Form Conversion Table Header</string>
<string name="form_change_body_title">Form Conversion Table Body</string>
<string name="choose_form_change_order">Choose the Form Conversion Order</string>
<string name="no_form_change_order">There is no relevant form conversion order for the moment</string>
<string name="no_form_change_order_task">There is no relevant form conversion order task for the moment</string>
<string name="outside_purchase_in_head_title">Purchase Storage Table Header</string>
<string name="outside_purchase_in_body_title">Purchase Storage Table Body</string>
<string name="choose_arrival_product_order">Choose the Arrival Order</string>
<string name="no_arrival_product_order">There is no relevant arrival order for the moment</string>
<string name="no_arrival_product_order_task">There is no relevant arrival order task for the moment</string>
<string name="inside_purchase_in_head_title">Internal Purchase Table Header</string>
<string name="inside_purchase_in_body_title">Internal Purchase Table Body</string>
<string name="position_change_head_title">Location Adjustment Table Header</string>
<string name="position_change_body_title">Location Adjustment Table Body</string>
<string name="bill_filter_title">Bill Filtering</string>
<string name="bill_filter_date_title">Date Filtering</string>
@ -221,4 +154,10 @@
<string name="Claim_time">Claim time</string>
<string name="Stock_location">Stock location</string>
<string name="Shop_coding">Shop coding</string>
<string name="Failed_to_join_details">Failed to join details</string>
<string name="Flow_order_query">Flow order query</string>
<string name="Reason_code">Reason code</string>
<string name="Select_a_scan_rule_first">Select a scan rule first</string>
<string name="order_number_in_the_flow_order_is_inconsistent">The order number in the flow order is inconsistent with the work order number, please confirm!</string>
<string name="Cannot_be_empty">Cannot be empty</string>
</resources>

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

@ -24,25 +24,6 @@
<string name="input_title">กรุณาป้อน</string>
<string name="rate_title">อัตราการแปลง</string>
<string name="barcode_scan_title">การสแกนบาร์โค้ด</string>
<string name="choose_material">เลือกวัสดุ</string>
<string name="choose_material_class">เลือกประเภทวัสดุ</string>
<string name="choose_batch">เลือกล็อต</string>
<string name="choose_rack">เลือกที่วางสินค้า</string>
<string name="choose_group">เลือกองค์กร</string>
<string name="choose_storage">เลือกคลังสินค้า</string>
<string name="choose_supplier">เลือกผู้จัดหา</string>
<string name="choose_customer">เลือกลูกค้า</string>
<string name="choose_dept">เลือกแผนก</string>
<string name="choose_pns">เลือกผู้ปฏิบัติงาน</string>
<string name="choose_whsmanager">เลือกผู้จัดการคลังสินค้า</string>
<string name="no_material">ไม่มีวัสดุที่เกี่ยวข้องในขณะนี้</string>
<string name="no_material_class">ไม่มีประเภทวัสดุที่เกี่ยวข้องในขณะนี้</string>
<string name="no_batch">ไม่มีล็อตที่เกี่ยวข้องในขณะนี้</string>
<string name="no_rack">ไม่มีที่วางสินค้าที่เกี่ยวข้องในขณะนี้</string>
<string name="no_group">ไม่มีองค์กรที่เกี่ยวข้องในขณะนี้</string>
<string name="no_storage">ไม่มีคลังสินค้าที่เกี่ยวข้องในขณะนี้</string>
<string name="no_dept">ไม่มีแผนกที่เกี่ยวข้องในขณะนี้</string>
<string name="no_pns">ไม่มีบุคลากรที่เกี่ยวข้องในขณะนี้</string>
<string name="tips_title">คำเตือนอุ่นใจ</string>
<string name="confirm_exit_current_page">คุณต้องการออกจากหน้าในปัจจุบันหรือไม่?</string>
<string name="tips_scan_code">วางบาร์โค้ด/คิวอาร์โค้ดในกรอบ เพื่อทำการสแกนอัตโนมัติ</string>
@ -69,7 +50,6 @@
<string name="isdown">กำลังดาวน์โหลด</string>
<string name="waiting">โปรดรอสักครู่...</string>
<string name="notice">ประกาศ</string>
<string name="help">คำแนะนำอุ่นใจ</string>
<string name="setting">การตั้งค่า</string>
<string name="allowtoinstall">ต้องได้รับอนุญาตเพื่อติดตั้ง APK โปรดตั้งค่าให้สามารถติดตั้งได้</string>
<string name="download_failed">การดาวน์โหลดล้มเหลว</string>
@ -86,53 +66,6 @@
<string name="main_current_org">องค์กรปัจจุบัน: %1s</string>
<string name="please_choose_group">โปรดเลือกองค์กรก่อน</string>
<string name="confirm_logout">คุณต้องการออกจากระบบหรือไม่?</string>
<string name="f_product_in_head_title">หัวข้อใบนำเข้าผลิตภัณฑ์สำเร็จรูป</string>
<string name="f_product_in_body_title">เนื้อหาใบนำเข้าผลิตภัณฑ์สำเร็จรูป</string>
<string name="f_product_in_detail_title">รายละเอียดใบนำเข้าผลิตภัณฑ์สำเร็จรูป</string>
<string name="choose_fin_in_order">เลือกใบนำเข้าผลิตภัณฑ์สำเร็จรูป</string>
<string name="choose_prod_order">เลือกใบสั่งผลิต</string>
<string name="no_prod_order">ยังไม่มีใบสั่งผลิตที่เกี่ยวข้อง</string>
<string name="no_fin_in_order">ยังไม่มีใบนำเข้าผลิตภัณฑ์สำเร็จรูปที่เกี่ยวข้อง</string>
<string name="please_choose_f_product_in_order">โปรดเลือกใบนำเข้าผลิตภัณฑ์สำเร็จรูปก่อน</string>
<string name="changing_info">กำลังเข้าสู่หน้าแก้ไข หลายครั้งในการแก้ไขข้อมูลจะเป็นไปตามข้อมูลที่แก้ไขล่าสุด</string>
<string name="please_checking_and_submit">คุณแน่ใจว่าได้แก้ไขเสร็จสิ้นและส่งบันทึกหรือไม่?</string>
<string name="please_submit_to_finish">คุณแน่ใจว่าจะออกจากหน้าในปัจจุบันหรือไม่? เมื่อออกจากหน้านี้ จะล้างข้อมูลรายละเอียด</string>
<string name="please_submit_to_change_bill">คุณแน่ใจว่าจะล้างข้อมูลรายละเอียดและเลือก %s ใหม่หรือไม่?</string>
<string name="please_choose_batch">โปรดเลือกล็อตก่อน</string>
<string name="please_choose_position">โปรดเลือกที่วางสินค้าก่อน</string>
<string name="batch_error">ล็อตไม่ตรงกัน</string>
<string name="material_error">วัสดุไม่ตรงกัน</string>
<string name="should_num_is_empty">จำนวนที่ควรรับเป็นค่าว่าง โปรดกลับไปหน้าแสดงรายละเอียดเพื่อเลือกใหม่หรือติดต่อผู้ทำใบสั่ง!</string>
<string name="num_is_too_large">จำนวนที่รับเกินจำนวนที่ควรรับ โปรดยืนยันจำนวนใหม่</string>
<string name="other_in_head_title">หัวข้อใบนำเข้าอื่นๆ</string>
<string name="other_in_body_title">เนื้อหาใบนำเข้าอื่นๆ</string>
<string name="other_out_head_title">หัวข้อใบนำออกอื่นๆ</string>
<string name="other_out_body_title">เนื้อหาใบนำออกอื่นๆ</string>
<string name="transfer_head_title">หัวข้อใบโอนคลัง</string>
<string name="transfer_body_title">เนื้อหาใบโอนคลัง</string>
<string name="choose_transfer_order">เลือกใบโอนคลัง</string>
<string name="no_transfer_order">ยังไม่มีใบโอนคลังที่เกี่ยวข้อง</string>
<string name="no_transfer_order_task">ยังไม่มีงานใบโอนคลังที่เกี่ยวข้อง</string>
<string name="sale_out_head_title">หัวข้อใบนำออกเพื่อขาย</string>
<string name="sale_out_body_title">เนื้อหาใบนำออกเพื่อขาย</string>
<string name="sale_out_choose_task_info_title">การตรวจสอบความเสียหาย</string>
<string name="choose_send_product_order">เลือกใบส่งสินค้า</string>
<string name="no_send_product_order">ยังไม่มีใบส่งสินค้าที่เกี่ยวข้อง</string>
<string name="no_send_product_order_task">ยังไม่มีงานใบส่งสินค้าที่เกี่ยวข้อง</string>
<string name="form_change_head_title">หัวข้อใบเปลี่ยนรูปแบบ</string>
<string name="form_change_body_title">เนื้อหาใบเปลี่ยนรูปแบบ</string>
<string name="choose_form_change_order">เลือกใบเปลี่ยนรูปแบบ</string>
<string name="no_form_change_order">ยังไม่มีใบเปลี่ยนรูปแบบที่เกี่ยวข้อง</string>
<string name="no_form_change_order_task">ยังไม่มีงานใบเปลี่ยนรูปแบบที่เกี่ยวข้อง</string>
<string name="outside_purchase_in_head_title">หัวข้อใบนำเข้าสินค้าจัดซื้อจากภายนอก</string>
<string name="outside_purchase_in_body_title">เนื้อหาใบนำเข้าสินค้าจัดซื้อจากภายนอก</string>
<string name="choose_arrival_product_order">เลือกใบนำเข้าสินค้าที่มาถึง</string>
<string name="no_arrival_product_order">ยังไม่มีใบนำเข้าสินค้าที่มาถึงที่เกี่ยวข้อง</string>
<string name="no_arrival_product_order_task">ยังไม่มีงานใบนำเข้าสินค้าที่มาถึงที่เกี่ยวข้อง</string>
<string name="inside_purchase_in_head_title">หัวข้อใบนำเข้าสินค้าจัดซื้อภายใน</string>
<string name="inside_purchase_in_body_title">เนื้อหาใบนำเข้าสินค้าจัดซื้อภายใน</string>
<string name="position_change_head_title">หัวข้อใบปรับเปลี่ยนที่วางสินค้า</string>
<string name="position_change_body_title">เนื้อหาใบปรับเปลี่ยนที่วางสินค้า</string>
<string name="bill_filter_title">การคัดกรองใบเอกสาร</string>
<string name="bill_filter_date_title">การคัดกรองตามวันที่</string>
<string name="Please_enter_password">กรุณาป้อนรหัสผ่าน</string>
@ -177,48 +110,54 @@
<string name="Scrap_quantity">จำนวนการสูญเสีย</string>
<string name="Operation_number">ขนาด</string>
<string name="Back">กลับมา</string>
<string name="There_is_no_data_of_the_same_dimension_in_the_task_list">任务列表中没有相同维度的数据</string>
<string name="The_quantity_cannot_be_empty">数量不能为空</string>
<string name="The_number_of_scanned_codes_must_be_greater_than_0">扫码数量需大于0</string>
<string name="Please_scan_the_ticket_number_first">请先扫描工单号</string>
<string name="Loading">正在加载</string>
<string name="No_task_please_scan_the_ticket_number_first">暂无任务,请先扫描工单号</string>
<string name="The_barcode_format_is_incorrect">条码格式不正确</string>
<string name="There_is_no_data_of_the_same_dimension_in_the_task_list">ไม่มีข้อมูลเกี่ยวกับมิติเดียวกันในรายการงาน</string>
<string name="The_quantity_cannot_be_empty">จำนวนไม่สามารถว่า ง</string>
<string name="The_number_of_scanned_codes_must_be_greater_than_0">จำนวนของรหัสจะต้องมากกว่า ศูนย์</string>
<string name="Please_scan_the_ticket_number_first">กรุณาสแกนหมายเลขหน้า</string>
<string name="Loading">กำลังโหลด</string>
<string name="No_task_please_scan_the_ticket_number_first">ยังไม่มีงานใด ๆ สแกนหมายเลขรายการของงานก่อน</string>
<string name="The_barcode_format_is_incorrect">รูปแบบบาร์โค้ดไม่ถูกต้อง</string>
<string name="Do_you_want_to_rescan_the_work_order">ตรวจสอบหมายเลขรายการของผู้ใช้งานปัจจุบัน หรือไม่?(การสแกนซ้ำจะทำให้รายละเอียด ที่ถูกสแกนไปก่อนหน้านี้ )</string>
<string name="Please_select_the_data_you_want_to_save">请选择需要保存的数据</string>
<string name="No_data_was_obtained">没有获取到数据</string>
<string name="delete">删除</string>
<string name="Total">总数:</string>
<string name="Are_you_sure_to_delete_it">确定删除吗?</string>
<string name="Query_is_not_supported">暂不支持查询</string>
<string name="There_is_no_aterial_information_in_the_barcode_please_confirm">条码中没有物料信息,请确认</string>
<string name="No_data_was_queried">没有查询到数据</string>
<string name="Data_saved_successfully">数据保存成功</string>
<string name="Network_access_exception">网络访问异常</string>
<string name="Flow_order_detail">流转单明细</string>
<string name="Flow_report_work">流转单报工</string>
<string name="Multiple_box_codes_for_one_flow_order">一个流转单多个箱码</string>
<string name="Multiple_flows_a_single_box_code">多个流转单一个箱码</string>
<string name="Please_scan_the_transfer_slip_first">请先扫描流转单</string>
<string name="The_number_of_reports_cannot_be_empty">报工数量不可为空</string>
<string name="The_packet_barcode_cannot_be_empty">包条码不可为空</string>
<string name="The_cause_code_cannot_be_empty">原因代码不可为空</string>
<string name="The_scrap_number_cannot_be_empty">报废数量不可为空</string>
<string name="The_current_flow_order_number_has_been_scanned">当前流转单号已扫描</string>
<string name="The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0">报工数量不能为0或小于0</string>
<string name="The_scrap_quantity_cannot_be_0_or_less">报废数量不能为0或小于0</string>
<string name="The_flow_order_number_cannot_be_empty">流转单号不能为空</string>
<string name="The_work_order_number_cannot_be_empty">工单号不可为空</string>
<string name="The_process_number_cannot_be_empty">工序号不可为空</string>
<string name="Please_select_a_business_type">请选择业务类型</string>
<string name="Please_select_a_stock_location">请选择库存地点</string>
<string name="Please_select_the_data_you_want_to_save">โปรดเลือกข้อมูล ที่ต้องการบันทึก</string>
<string name="No_data_was_obtained">ไม่ได้รับข้อมูล</string>
<string name="delete">ลบ</string>
<string name="Total">รวมทั้งหมด:</string>
<string name="Are_you_sure_to_delete_it">แน่ใจเกี่ยวกับการลบ?</string>
<string name="Query_is_not_supported">ไม่รองรับการค้นหาในขณะนี้</string>
<string name="There_is_no_aterial_information_in_the_barcode_please_confirm">ไม่มีข้อมูลวัสดุในรหัสบาร์โค้ด กรุณายืนยัน</string>
<string name="No_data_was_queried">ไม่มีข้อมูลที่ค้นพบ</string>
<string name="Data_saved_successfully">บันทึกข้อมูลสำเร็จ</string>
<string name="Network_access_exception">ขัดข้องในการเข้าถึงเครือข่าย</string>
<string name="Flow_order_detail">รายละเอียดใบสั่งซื้อแบบไหลเวียน</string>
<string name="Flow_report_work">รายงานงานใบสั่งซื้อแบบไหลเวียน</string>
<string name="Multiple_box_codes_for_one_flow_order">หลายรหัสกล่องสำหรับใบสั่งซื้อแบบไหลเวียนเดียว</string>
<string name="Multiple_flows_a_single_box_code">หลายใบสั่งซื้อแบบไหลเวียนสำหรับรหัสกล่องเดียว</string>
<string name="Please_scan_the_transfer_slip_first">กรุณสแกนใบโอนก่อน</string>
<string name="The_number_of_reports_cannot_be_empty">จำนวนการรายงานไม่สามารถเป็นค่าว่างได้</string>
<string name="The_packet_barcode_cannot_be_empty">รหัสบาร์โค้ดแพ็คเกจไม่สามารถเป็นค่าว่างได้</string>
<string name="The_cause_code_cannot_be_empty">รหัสเหตุผลไม่สามารถเป็นค่าว่างได้</string>
<string name="The_scrap_number_cannot_be_empty">จำนวนของเสียไม่สามารถเป็นค่าว่างได้</string>
<string name="The_current_flow_order_number_has_been_scanned">หมายเลขใบสั่งซื้อแบบไหลเวียนปัจจุบันได้รับการสแกนแล้ว</string>
<string name="The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0">จำนวนงานที่รายงานไม่สามารถเป็น 0 หรือน้อยกว่า 0 ได้</string>
<string name="The_scrap_quantity_cannot_be_0_or_less">จำนวนของเสียไม่สามารถเป็น 0 หรือน้อยกว่าได้</string>
<string name="The_flow_order_number_cannot_be_empty">หมายเลขใบสั่งซื้อแบบไหลเวียนไม่สามารถเป็นค่าว่างได้</string>
<string name="The_work_order_number_cannot_be_empty">หมายเลขใบสั่งงานไม่สามารถเป็นค่าว่างได้</string>
<string name="The_process_number_cannot_be_empty">หมายเลขกระบวนการไม่สามารถเป็นค่าว่างได้</string>
<string name="Please_select_a_business_type">กรุณาเลือกประเภทธุรกิจ</string>
<string name="Please_select_a_stock_location">กรุณาเลือกสถานที่เก็บสินค้า</string>
<string name="semicolon">:</string>
<string name="Packet_barcode">包条码</string>
<string name="Flow_order_number">流转单号</string>
<string name="Quantity_swept">已扫数量</string>
<string name="batch">批次</string>
<string name="Station_number">工位号</string>
<string name="Claim_time">领用时间</string>
<string name="Stock_location">库存地点</string>
<string name="Shop_coding">车间编码</string>
<string name="Packet_barcode">รหัสบาร์โค้ดแพ็คเกจ</string>
<string name="Flow_order_number">หมายเลขใบสั่งซื้อแบบไหลเวียน</string>
<string name="Quantity_swept">จำนวนที่สแกนแล้ว</string>
<string name="batch">ล็อต</string>
<string name="Station_number">หมายเลขสถานี</string>
<string name="Claim_time">เวลารับ</string>
<string name="Stock_location">สถานที่เก็บสินค้า</string>
<string name="Shop_coding">รหัสร้านค้า</string>
<string name="Failed_to_join_details">ล้มเหลวในการเพิ่มรายละเอียด</string>
<string name="Flow_order_query">ตรวจสอบการส่งจดหมาย</string>
<string name="Reason_code">รหัสเหตุผล</string>
<string name="Select_a_scan_rule_first">โปรดเลือกกฎการสแกนก่อน</string>
<string name="order_number_in_the_flow_order_is_inconsistent">หมายเลขการสั่งซื้อในโรเตอร์ไม่สอดคล้องกับหมายเลขใบประกอบกรุณายืนยัน!</string>
<string name="Cannot_be_empty">ไม่สามารถว่า งได้</string>
</resources>

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

@ -25,25 +25,6 @@
<string name="input_title">请输入</string>
<string name="rate_title">换算率</string>
<string name="barcode_scan_title">条码扫描</string>
<string name="choose_material">选择物料</string>
<string name="choose_material_class">选择物料分类</string>
<string name="choose_batch">选择批次</string>
<string name="choose_rack">选择货位</string>
<string name="choose_group">选择组织</string>
<string name="choose_storage">选择仓库</string>
<string name="choose_supplier">选择供应商</string>
<string name="choose_customer">选择客户</string>
<string name="choose_dept">选择部门</string>
<string name="choose_pns">选择操作员</string>
<string name="choose_whsmanager">选择库管员</string>
<string name="no_material">暂无相关物料</string>
<string name="no_material_class">暂无相关物料分类</string>
<string name="no_batch">暂无相关批次</string>
<string name="no_rack">暂无相关货位</string>
<string name="no_group">暂无相关组织</string>
<string name="no_storage">暂无相关仓库</string>
<string name="no_dept">暂无相关部门</string>
<string name="no_pns">暂无相关人员</string>
<string name="tips_title">温馨提示</string>
<string name="confirm_exit_current_page">是否退出当前界面?</string>
<string name="tips_scan_code">将二维码/条形码放入框内,即可自动扫描</string>
@ -72,7 +53,7 @@
<string name="isdown">正在下载</string>
<string name="waiting">请稍候...</string>
<string name="notice">提示</string>
<string name="help">温馨提示</string>
<string name="setting">设置</string>
<string name="allowtoinstall">必须授权才能安装APK,请设置允许安装</string>
<string name="download_failed">下载失败</string>
@ -95,76 +76,6 @@
<string name="please_choose_group">请先选择组织</string>
<string name="confirm_logout">确认退出登录吗?</string>
<!-- 产成品入库 -->
<string name="f_product_in_head_title">产成品入库表头</string>
<string name="f_product_in_body_title">产成品入库表体</string>
<string name="f_product_in_detail_title">产成品入库单明细</string>
<string name="choose_fin_in_order">选择产成品入库单</string>
<string name="choose_prod_order">选择生产订单</string>
<string name="no_prod_order">暂无相关生产订单</string>
<string name="no_fin_in_order">暂无相关产成品入库单</string>
<string name="please_choose_f_product_in_order">请先选择产成品入库单</string>
<string name="changing_info">正在进入修改界面,多次修改以最后一次修改的数据为准</string>
<string name="please_checking_and_submit">确定修改完毕提交保存吗?</string>
<string name="please_submit_to_finish">确定退出当前页面吗?退出后将清除明细信息</string>
<string name="please_submit_to_change_bill">确定清除明细信息并重新选择%s吗?</string>
<string name="please_choose_batch">请先选择批次</string>
<string name="please_choose_position">请先选择货位</string>
<string name="batch_error">批次不一致</string>
<string name="material_error">物料不一致</string>
<string name="should_num_is_empty">应收数量为空,请返回明细界面重新选择或联系制单人!</string>
<string name="num_is_too_large">实收数量超过应收数量,请重新确认数量</string>
<!-- 其他入库 -->
<string name="other_in_head_title">其他入库表头</string>
<string name="other_in_body_title">其他入库表体</string>
<!-- 其他出库 -->
<string name="other_out_head_title">其他出库表头</string>
<string name="other_out_body_title">其他出库表体</string>
<!-- 转库 -->
<string name="transfer_head_title">转库表头</string>
<string name="transfer_body_title">转库表体</string>
<string name="choose_transfer_order">选择转库单</string>
<string name="no_transfer_order">暂无相关产转库单</string>
<string name="no_transfer_order_task">暂无相关产转库单任务</string>
<!-- 销售出库 -->
<string name="sale_out_head_title">销售出库表头</string>
<string name="sale_out_body_title">销售出库表体</string>
<string name="sale_out_choose_task_info_title">破损校验</string>
<string name="choose_send_product_order">选择发货单</string>
<string name="no_send_product_order">暂无相关发货单</string>
<string name="no_send_product_order_task">暂无相关发货单任务</string>
<!-- 形态转换 -->
<string name="form_change_head_title">形态转换表头</string>
<string name="form_change_body_title">形态转换表体</string>
<string name="choose_form_change_order">选择形态转换单</string>
<string name="no_form_change_order">暂无相关形态转换单</string>
<string name="no_form_change_order_task">暂无相关形态转换单任务</string>
<!-- 外部采购 -->
<string name="outside_purchase_in_head_title">采购入库表头</string>
<string name="outside_purchase_in_body_title">采购入库表体</string>
<string name="choose_arrival_product_order">选择到货单</string>
<string name="no_arrival_product_order">暂无相关到货单</string>
<string name="no_arrival_product_order_task">暂无相关到货单任务</string>
<!-- 内部采购 -->
<string name="inside_purchase_in_head_title">内部采购表头</string>
<string name="inside_purchase_in_body_title">内部采购表体</string>
<!-- 货位调整 -->
<string name="position_change_head_title">货位调整表头</string>
<string name="position_change_body_title">货位调整表体</string>
<!-- 单据筛选 -->
<string name="bill_filter_title">单据筛选</string>
<string name="bill_filter_date_title">日期筛选</string>
@ -254,5 +165,11 @@
<string name="Claim_time">领用时间</string>
<string name="Stock_location">库存地点</string>
<string name="Shop_coding">车间编码</string>
<string name="Failed_to_join_details">加入明细失败</string>
<string name="Flow_order_query">流转单查询</string>
<string name="Reason_code">原因代码</string>
<string name="Select_a_scan_rule_first">请先选择扫描规则</string>
<string name="order_number_in_the_flow_order_is_inconsistent">流转单中订单号与工单号不一致,请确认!</string>
<string name="Cannot_be_empty">不能为空</string>
</resources>

7
app/src/main/res/values/styles.xml

@ -5,18 +5,17 @@
<!-- 配置Android提供的theme -->
<!-- 配置qmui提供的theme -->
<item name="qmui_config_color_blue">@color/app_color_blue</item>
<item name="qmui_dialog_min_width">280dp</item>
<item name="qmui_dialog_radius">8dp</item>
<item name="qmui_content_spacing_horizontal">20dp</item>
<item name="qmui_content_padding_horizontal">@dimen/qmui_content_spacing_horizontal</item>
<item name="QMUITopBarStyle">@style/QDTopBar</item>
<!-- 配置app自己的theme -->
<item name="app_primary_color">?attr/qmui_config_color_blue</item>
<item name="app_primary_color">@color/app_color_blue</item>
<item name="app_content_bg_color">@color/qmui_config_color_white</item>
</style>
<style name="CUSTOM_QMUI" parent="QMUI.Dialog"/>
<style name="QDCommonTitle">
<item name="android:textColor">@color/textColor</item>
<item name="android:textSize">16sp</item>

Loading…
Cancel
Save