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. 40
      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. 26
      app/src/main/java/com/techscan/wk/rxretrofit/HttpMethods.java
  17. 8
      app/src/main/java/com/techscan/wk/ui/MainActivity.java
  18. 10
      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. 173
      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. 206
      app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java
  23. 43
      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. 17
      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. 15
      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"> <component name="DesignSurface">
<option name="filePathToZoomLevelMap"> <option name="filePathToZoomLevelMap">
<map> <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_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/bg_round.xml" value="0.208" />
<entry key="..\:/TechScanProject/vicobar/app/src/main/res/drawable/button_down.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 //noinspection ExpiredTargetSdkVersion
targetSdkVersion 29 targetSdkVersion 29
versionCode 1 versionCode 1
versionName "1.0.5"
versionName "1.0.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk { ndk {
abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
@ -93,7 +93,7 @@ dependencies {
//smartTable //smartTable
implementation 'com.github.huangyanbin:SmartTable:2.2.0' implementation 'com.github.huangyanbin:SmartTable:2.2.0'
// for androidx. // for androidx.
implementation 'com.lxj:xpopup:1.8.10-x'
implementation 'com.lxj:xpopup:1.8.17'
// //
implementation 'com.orhanobut:logger:2.2.0' implementation 'com.orhanobut:logger:2.2.0'
//multidex //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:name="com.techscan.wk.ui.reportwork.ReportWorkOffsetActivity"
android:exported="false" android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" /> android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.query.FlowOrderQueryActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity <activity
android:name="com.techscan.wk.ui.proreq.ProReqActivity" android:name="com.techscan.wk.ui.proreq.ProReqActivity"
android:exported="false" android:exported="false"

20
app/src/main/assets/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, "mast": false,
"canChange": true, "canChange": true,
"isShow": true, "isShow": true,
"isFocus": true,
"isFocus": false,
"language": { "language": {
"zh": "扫描规则", "zh": "扫描规则",
"en": "Scanning rule", "en": "Scanning rule",
@ -20,6 +20,41 @@
{ {
"id": 2, "id": 2,
"type": 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", "fieldName": "FlowOrder",
"name": "流转单号", "name": "流转单号",
"value": "", "value": "",
@ -28,7 +63,7 @@
"mast": false, "mast": false,
"canChange": true, "canChange": true,
"isShow": true, "isShow": true,
"isFocus": true,
"isFocus": false,
"language": { "language": {
"zh": "流转单号", "zh": "流转单号",
"en": "Flow order number", "en": "Flow order number",
@ -36,7 +71,7 @@
} }
}, },
{ {
"id": 3,
"id": 5,
"type": 2, "type": 2,
"fieldName": "PacketBarcode", "fieldName": "PacketBarcode",
"name": "包条码", "name": "包条码",
@ -53,7 +88,7 @@
} }
}, },
{ {
"id": 4,
"id": 6,
"type": 2, "type": 2,
"fieldName": "ZXTPC", "fieldName": "ZXTPC",
"name": "箱号", "name": "箱号",
@ -70,7 +105,7 @@
} }
}, },
{ {
"id": 5,
"id": 7,
"type": 2, "type": 2,
"fieldName": "GMNGA", "fieldName": "GMNGA",
"name": "报工数量", "name": "报工数量",
@ -87,7 +122,7 @@
} }
}, },
{ {
"id": 6,
"id": 8,
"type": 1, "type": 1,
"fieldName": "GRUND", "fieldName": "GRUND",
"name": "原因代码", "name": "原因代码",
@ -104,7 +139,7 @@
} }
}, },
{ {
"id": 7,
"id": 9,
"type": 2, "type": 2,
"fieldName": "XMNGA", "fieldName": "XMNGA",
"name": "报废数量", "name": "报废数量",
@ -120,7 +155,6 @@
"th": "จำนวนการสูญเสีย" "th": "จำนวนการสูญเสีย"
} }
} }
] ]

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

@ -1,8 +1,8 @@
[ [
{ {
"id": "1",
"id": 1,
"name": "生产上料", "name": "生产上料",
"icon": "tmcx",
"icon": "qtck",
"to": "com.techscan.wk.ui.proreq.ProReqActivity", "to": "com.techscan.wk.ui.proreq.ProReqActivity",
"show": "1", "show": "1",
"children": [], "children": [],
@ -13,7 +13,7 @@
} }
}, },
{ {
"id": "5",
"id": 5,
"name": "生产报工", "name": "生产报工",
"icon": "xsck", "icon": "xsck",
"to": "com.techscan.wk.ui.reportwork.ReportWorkActivity", "to": "com.techscan.wk.ui.reportwork.ReportWorkActivity",
@ -26,7 +26,7 @@
} }
}, },
{ {
"id": "7",
"id": 7,
"name": "冲销", "name": "冲销",
"icon": "wbspxs", "icon": "wbspxs",
"to": "com.techscan.wk.ui.reportwork.ReportWorkOffsetActivity", "to": "com.techscan.wk.ui.reportwork.ReportWorkOffsetActivity",
@ -39,7 +39,7 @@
} }
}, },
{ {
"id": "10",
"id": 10,
"name": "报工异常", "name": "报工异常",
"icon": "xtzk", "icon": "xtzk",
"to": "com.techscan.wk.ui.reportwork.ReportWorkErrorListActivity", "to": "com.techscan.wk.ui.reportwork.ReportWorkErrorListActivity",
@ -52,7 +52,7 @@
} }
}, },
{ {
"id": "11",
"id": 11,
"name": "流转单报工", "name": "流转单报工",
"icon": "zk", "icon": "zk",
"to": "com.techscan.wk.ui.reportwork.FlowReportWorkActivity", "to": "com.techscan.wk.ui.reportwork.FlowReportWorkActivity",
@ -63,9 +63,21 @@
"en": "Flow report work", "en": "Flow report work",
"th": "ผู้ส่งจดหมาย" "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": "退出登录", "name": "退出登录",
"icon": "xitongshezhi", "icon": "xitongshezhi",
"to": "", "to": "",

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

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

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

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 { public class FlowReportWorkDetailBean extends LitePalSupport {
private String gid; private String gid;
private String aufnr;//生产订单号
private String vornr;//工序号
private String gmnga;//报工数量 private String gmnga;//报工数量
private String xmnga;//报废数量 private String xmnga;//报废数量
private String zzt;//动作描述标识 区别是正向报工还是反向报工冲销,动作描述标识=1,正向报工,如果动作描述标识=0,反向报工冲销 private String zzt;//动作描述标识 区别是正向报工还是反向报工冲销,动作描述标识=1,正向报工,如果动作描述标识=0,反向报工冲销
@ -12,6 +14,7 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private String packetBarcode;//包条码 private String packetBarcode;//包条码
private String flowOrders;//流转单号 private String flowOrders;//流转单号
private String flowReport;//流转单号 private String flowReport;//流转单号
private String zxtpc;//箱号
private int ism01; private int ism01;
private int ism02; private int ism02;
private int ism03; private int ism03;
@ -19,6 +22,30 @@ public class FlowReportWorkDetailBean extends LitePalSupport {
private int ism05; private int ism05;
private int ism06; 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() { public String getFlowReport() {
return flowReport; 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":""}] * children : [{"id":"011","name":"常规采购","icon":""},{"id":"012","name":"内部补货(商品采购)","icon":""},{"id":"013","name":"内部直运采购","icon":""}]
*/ */
private String id;
private Integer id;
private String name; private String name;
private String icon; private String icon;
private String to; private String to;
@ -35,11 +35,11 @@ public class HomeFunctionBean {
this.language = language; this.language = language;
} }
public String getId() {
public Integer getId() {
return id; return id;
} }
public void setId(String id) {
public void setId(Integer id) {
this.id = 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 grund;//原因代码
private String lmnga;//报工基本数量 private String lmnga;//报工基本数量
private String packetBarcode;//包条码 private String packetBarcode;//包条码
private String zxtpc;//箱号
private int ism01; private int ism01;
private int ism02; private int ism02;
private int ism03; private int ism03;
@ -19,6 +20,14 @@ public class ReportWorkDetailBean extends LitePalSupport {
private int ism05; private int ism05;
private int ism06; private int ism06;
public String getZxtpc() {
return zxtpc;
}
public void setZxtpc(String zxtpc) {
this.zxtpc = zxtpc;
}
public String getGid() { public String getGid() {
return gid; 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, Observable<ResponseBody> getReport(@Query("aufnr") String aufnr,
@Query("vornr") String vornr); @Query("vornr") String vornr);
@GET("/web/report/getFlowReport")
Observable<ResponseBody> getFlowReport(@Query("zxtpc") String zxtpc);
@GET("/web/order/info") @GET("/web/order/info")
Observable<ResponseBody> getOrderInfo(@Query("id") String order); Observable<ResponseBody> getOrderInfo(@Query("id") String order);

26
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); String currentLanguage = SPUtils.getInstance().getString(MultiLanguageUtils.CURRENT_LANGUAGE, MultiLanguageUtils.SIMPLIFIED_CHINESE);
if (currentLanguage.equals(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)) { } else if (currentLanguage.equals(MultiLanguageUtils.ENGLISH)) {
builder.addHeader("Accept-Language","en-US");
builder.addHeader("Accept-Language", "en-US");
} }
return chain.proceed(builder.build()); return chain.proceed(builder.build());
} }
@ -142,6 +142,7 @@ public class HttpMethods {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(observer); .subscribe(observer);
} }
public static void newVersion(Observer<ResponseBody> observer) { public static void newVersion(Observer<ResponseBody> observer) {
getApiService().newVersion() getApiService().newVersion()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
@ -275,7 +276,7 @@ public class HttpMethods {
.subscribe(observer); .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) getApiService().saveReport(map)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
@ -296,14 +297,14 @@ public class HttpMethods {
int current, int size, int current, int size,
String startDate, String endDate, String startDate, String endDate,
Observer<ResponseBody> observer) { Observer<ResponseBody> observer) {
getApiService().getError(aufnr,vornr,current,size,startDate,endDate)
getApiService().getError(aufnr, vornr, current, size, startDate, endDate)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(observer); .subscribe(observer);
} }
public void badReasons(String code,Observer<ResponseBody> observer) {
public void badReasons(String code, Observer<ResponseBody> observer) {
getApiService().badReasons(code) getApiService().badReasons(code)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
@ -311,14 +312,23 @@ public class HttpMethods {
.subscribe(observer); .subscribe(observer);
} }
public void getReport(String aufnr,String vornr,
public void getReport(String aufnr, String vornr,
Observer<ResponseBody> observer) { Observer<ResponseBody> observer) {
getApiService().getReport(aufnr,vornr)
getApiService().getReport(aufnr, vornr)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void getFlowReport(String zxtpc, Observer<ResponseBody> observer) {
getApiService().getFlowReport(zxtpc)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(observer); .subscribe(observer);
} }
public void getOrderInfo(String order, public void getOrderInfo(String order,
Observer<ResponseBody> observer) { Observer<ResponseBody> observer) {
getApiService().getOrderInfo(order) getApiService().getOrderInfo(order)
@ -327,6 +337,7 @@ public class HttpMethods {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(observer); .subscribe(observer);
} }
public void getlgort(Observer<ResponseBody> observer) { public void getlgort(Observer<ResponseBody> observer) {
getApiService().getlgort() getApiService().getlgort()
.subscribeOn(Schedulers.io()) .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; break;
} }
} }
}else if (homeFunctionBean.getName().equals("流转单查询")) {
for (int i = 0; i < menus.size(); i++) {
VicoUserBean.MenusBean menusBean = menus.get(i);
if (menusBean.getName().equals("流转单")) {
isHas = true;
break;
}
}
} else if (homeFunctionBean.getName().equals("退出登录")) { } else if (homeFunctionBean.getName().equals("退出登录")) {
isHas = true; isHas = true;
} }

10
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 { public class DecimalDigitsTextWatcher implements TextWatcher {
private WeakReference<EditText> editWeakReference; private WeakReference<EditText> editWeakReference;
private DynamicFormBean dynamicFormBean; private DynamicFormBean dynamicFormBean;
private boolean inputRestriction;
public DecimalDigitsTextWatcher() { public DecimalDigitsTextWatcher() {
} }
public DecimalDigitsTextWatcher(EditText currentEditText, DynamicFormBean dynamicFormBean) { public DecimalDigitsTextWatcher(EditText currentEditText, DynamicFormBean dynamicFormBean) {
this.editWeakReference = new WeakReference<>(currentEditText); this.editWeakReference = new WeakReference<>(currentEditText);
this.dynamicFormBean = dynamicFormBean; this.dynamicFormBean = dynamicFormBean;
} }
public DecimalDigitsTextWatcher(EditText currentEditText, DynamicFormBean dynamicFormBean,boolean inputRestriction) {
this.editWeakReference = new WeakReference<>(currentEditText);
this.dynamicFormBean = dynamicFormBean;
this.inputRestriction = inputRestriction;
}
@Override @Override
public void beforeTextChanged(CharSequence charSequence, int start, int before, int count) { public void beforeTextChanged(CharSequence charSequence, int start, int before, int count) {
@ -33,6 +38,7 @@ public class DecimalDigitsTextWatcher implements TextWatcher {
@Override @Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) { public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if (inputRestriction) {
if (editWeakReference.get() == null) return; if (editWeakReference.get() == null) return;
EditText editText = editWeakReference.get(); EditText editText = editWeakReference.get();
// 文本正在变化时执行 // 文本正在变化时执行
@ -50,6 +56,8 @@ public class DecimalDigitsTextWatcher implements TextWatcher {
} }
} }
}
@Override @Override
public void afterTextChanged(Editable editable) { public void afterTextChanged(Editable editable) {
// 文本变化后执行 // 文本变化后执行

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

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

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

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

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

43
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) @BindView(R.id.ll_bottom)
LinearLayout llBottom; LinearLayout llBottom;
QBadgeView qTaskBadgeView, qDetailBadgeView;
QBadgeView qDetailBadgeView;
private DynamicFormAdapter dynamicFormAdapter; private DynamicFormAdapter dynamicFormAdapter;
private List<DynamicFormBean> dynamicFormBeans; private List<DynamicFormBean> dynamicFormBeans;
@ -127,17 +127,18 @@ public class ReportWorkActivity extends CommonFunctionActivity {
} else { } else {
scanBarcodeListMap.remove(removeKey); scanBarcodeListMap.remove(removeKey);
} }
showDetailBadgeNum();
} }
}); });
RxBus.getInstance().addSubscription(this, register); RxBus.getInstance().addSubscription(this, register);
qTaskBadgeView = new QBadgeView(context);
qDetailBadgeView = new QBadgeView(context); qDetailBadgeView = new QBadgeView(context);
qDetailBadgeView.bindTarget(btnDetail);
initTopBar(); initTopBar();
initListeners(); initListeners();
initRvData(); initRvData();
rvUi.postDelayed(() -> { rvUi.postDelayed(() -> {
setNextFocus("AUFNR"); setNextFocus("AUFNR");
}, 300);
}, 100);
} }
@ -174,6 +175,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
} }
dynamicFormBean.setValue(""); dynamicFormBean.setValue("");
} }
showDetailBadgeNum();
if (isReportWork) { if (isReportWork) {
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
} else { } 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); boolean checkBarcode = BarAnalysisUtils.checkBarcodePresuffix(value);
if (!checkBarcode) { if (!checkBarcode) {
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
showError(getString(R.string.The_barcode_format_is_incorrect) + value); showError(getString(R.string.The_barcode_format_is_incorrect) + value);
return; return;
} }
@ -276,7 +292,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
if (isInBarcodeList(scanBarcodeListMap, value)) { if (isInBarcodeList(scanBarcodeListMap, value)) {
SoundUtils.playSound(context, R.raw.warning); SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToastCenter(context, getString(R.string.Do_not_scan_the_barcode_again)); ToastUtil.showShortToastCenter(context, getString(R.string.Do_not_scan_the_barcode_again));
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return; return;
} }
getBarcodeInfo(value); getBarcodeInfo(value);
@ -304,6 +320,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
DynamicFormBean gmngaItem = dynamicFormAdapter.getItemByFieldName("GMNGA");//报工数量 DynamicFormBean gmngaItem = dynamicFormAdapter.getItemByFieldName("GMNGA");//报工数量
DynamicFormBean xmngaItem = dynamicFormAdapter.getItemByFieldName("XMNGA");//报废数量 DynamicFormBean xmngaItem = dynamicFormAdapter.getItemByFieldName("XMNGA");//报废数量
DynamicFormBean grundItem = dynamicFormAdapter.getItemByFieldName("GRUND");//原因代码 DynamicFormBean grundItem = dynamicFormAdapter.getItemByFieldName("GRUND");//原因代码
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
if (TextUtils.isEmpty(aufnrItem.getValue())) { if (TextUtils.isEmpty(aufnrItem.getValue())) {
setNextFocus("AUFNR"); setNextFocus("AUFNR");
showError(getString(R.string.The_work_order_number_cannot_be_empty));; showError(getString(R.string.The_work_order_number_cannot_be_empty));;
@ -356,6 +373,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
bean.setGid(gid); bean.setGid(gid);
bean.setAufnr(aufnrItem.getValue()); bean.setAufnr(aufnrItem.getValue());
bean.setVornr(vornrItem.getValue()); bean.setVornr(vornrItem.getValue());
bean.setZxtpc(ZXTPCItem.getValue());
if (isReportWork) { if (isReportWork) {
bean.setPacketBarcode(barcode); bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue()); bean.setGmnga(gmngaItem.getValue());
@ -370,13 +388,18 @@ public class ReportWorkActivity extends CommonFunctionActivity {
bean.setGrund(split[0]); bean.setGrund(split[0]);
} }
} }
bean.save();
boolean save = bean.save();
if(save){
//将当前条码存入对应的条码扫描明细中 //将当前条码存入对应的条码扫描明细中
List<String> keyBarcodes = new ArrayList<>(); List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode); keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes); scanBarcodeListMap.put(gid, keyBarcodes);
reInitUI(isReportWork); reInitUI(isReportWork);
} else {
showError(getString(R.string.Failed_to_join_details));
}
} }
@ -425,7 +448,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
} }
} }
dynamicFormAdapter.notifyDataSetChanged(); dynamicFormAdapter.notifyDataSetChanged();
}, 200);
}, 100);
} }
@ -492,7 +515,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
if (baseResponseBean.getCode() == 200) { if (baseResponseBean.getCode() == 200) {
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title)) new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false) .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.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> { .addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss(); dialog.dismiss();
@ -500,6 +523,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
.create(R.style.QMUI_Dialog).show(); .create(R.style.QMUI_Dialog).show();
initRvData(); initRvData();
clearAllData(); clearAllData();
showDetailBadgeNum();
scanBarcodeListMap = new HashMap<>(); scanBarcodeListMap = new HashMap<>();
setNextFocus("AUFNR"); setNextFocus("AUFNR");
} else { } else {
@ -537,6 +561,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
} }
dynamicFormAdapter.setItemByFieldName("GRUND", GRUNDItem); dynamicFormAdapter.setItemByFieldName("GRUND", GRUNDItem);
dynamicFormAdapter.notifyDataSetChanged(); dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("XMNGA");
} }
} else if (requestCode == REQUEST_CODE_SCAN_FOR_GROUP) { } else if (requestCode == REQUEST_CODE_SCAN_FOR_GROUP) {
@ -617,7 +642,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
dialog.dismiss(); dialog.dismiss();
LitePal.deleteAllAsync(ReportWorkDetailBean.class).listen(i -> finish()); LitePal.deleteAllAsync(ReportWorkDetailBean.class).listen(i -> finish());
}) })
.create(R.style.CUSTOM_QMUI);
.create(R.style.QMUI_Dialog);
qmuiDialog.show(); qmuiDialog.show();
return; 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; private DatePickDialog dialog;
List<ReportWorkErrorInfoBean> list = new ArrayList<>(); List<ReportWorkErrorInfoBean> list = new ArrayList<>();
private int currentPage = 1; private int currentPage = 1;
int pageSize = 20;
int pageSize = 30;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -360,6 +360,8 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
String value = dynamicFormBean.getValue(); String value = dynamicFormBean.getValue();
switch (dynamicFormBean.getFieldName()) { switch (dynamicFormBean.getFieldName()) {
case "AUFNR": case "AUFNR":
setNextFocus("VORNR");
break;
case "VORNR": case "VORNR":
query(currentPage = 1, false); query(currentPage = 1, false);
break; break;
@ -414,7 +416,7 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
return; return;
} }
if (list.size() == data.getTotal()) { if (list.size() == data.getTotal()) {
ToastUtils.showLong(R.string.No_more_data);
ToastUtils.showLong(getString(R.string.No_more_data));
return; return;
} }
select.setColumnName(getString(R.string.select_all)); select.setColumnName(getString(R.string.select_all));
@ -574,7 +576,7 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
} }
} }
dynamicFormAdapter.notifyDataSetChanged(); 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 @Override
protected void onFailure(Throwable e) throws Exception { protected void onFailure(Throwable e) throws Exception {
list.clear();
setTableData();
CustomErrorDialog(e, ReportWorkOffsetActivity.this); 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() { public void onDenied() {
//弹出弹框提醒用户 //弹出弹框提醒用户
AlertDialog alertDialog = new AlertDialog.Builder(activity) 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)) .setMessage(activity.getString(R.string.allowtoinstall))
.setNegativeButton(activity.getString(R.string.update_version_false), null) .setNegativeButton(activity.getString(R.string.update_version_false), null)
.setPositiveButton(activity.getString(R.string.setting), (dialog, which) -> { .setPositiveButton(activity.getString(R.string.setting), (dialog, which) -> {

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

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

@ -16,16 +16,16 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/qmui_config_color_white" android:background="@color/qmui_config_color_white"
android:orientation="vertical" android:orientation="vertical"
android:padding="8dp">
android:padding="12dp">
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:visibility="gone"
android:layout_marginBottom="8dp"> android:layout_marginBottom="8dp">
<EditText <EditText
android:visibility="gone"
android:id="@+id/et_account" android:id="@+id/et_account"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -46,6 +46,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="请输入原密码" android:hint="请输入原密码"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:textSize="@dimen/sp_16"
android:inputType="textPassword" android:inputType="textPassword"
tools:ignore="Autofill,TextFields" /> tools:ignore="Autofill,TextFields" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -61,6 +62,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="请输入新密码" android:hint="请输入新密码"
android:textSize="@dimen/sp_16"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="textPassword" android:inputType="textPassword"
tools:ignore="Autofill,TextFields" /> tools:ignore="Autofill,TextFields" />
@ -72,6 +74,7 @@
android:layout_marginBottom="8dp"> android:layout_marginBottom="8dp">
<EditText <EditText
android:textSize="@dimen/sp_16"
android:id="@+id/et_new_pwd2" android:id="@+id/et_new_pwd2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -84,7 +87,7 @@
<Button <Button
android:id="@+id/btn_bottom_submit" android:id="@+id/btn_bottom_submit"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="55dp"
android:layout_margin="20dp" android:layout_margin="20dp"
android:background="@drawable/bg_login_btn" android:background="@drawable/bg_login_btn"
android:focusable="false" 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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginBottom="@dimen/dp_10"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/btn_submit" app:layout_constraintBottom_toTopOf="@id/btn_submit"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_scan"> app:layout_constraintTop_toBottomOf="@id/ll_scan">
@ -46,7 +46,8 @@
<com.scwang.smartrefresh.layout.SmartRefreshLayout <com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refresh" android:id="@+id/refresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.techscan.wk.widgets.MySmartTable <com.techscan.wk.widgets.MySmartTable
android:id="@+id/smartTable" android:id="@+id/smartTable"
@ -61,6 +62,8 @@
<Button <Button
android:id="@+id/btn_submit" android:id="@+id/btn_submit"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_scan_btn_selector" android:background="@drawable/bg_scan_btn_selector"
android:text="@string/save_info" android:text="@string/save_info"

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -23,25 +23,6 @@
<string name="input_title">Please Input</string> <string name="input_title">Please Input</string>
<string name="rate_title">Conversion Rate</string> <string name="rate_title">Conversion Rate</string>
<string name="barcode_scan_title">Barcode Scanning</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="tips_title">Warm Prompt</string>
<string name="confirm_exit_current_page">Whether to exit the current interface?</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> <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="isdown">Downloading</string>
<string name="waiting">Please wait...</string> <string name="waiting">Please wait...</string>
<string name="notice">Notice</string> <string name="notice">Notice</string>
<string name="help">Warm Prompt</string>
<string name="setting">Setting</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="allowtoinstall">The APK must be authorized to be installed. Please set to allow installation</string>
<string name="download_failed">Download Failed</string> <string name="download_failed">Download Failed</string>
@ -83,53 +63,6 @@
<string name="main_current_org">Current Organization: %1s</string> <string name="main_current_org">Current Organization: %1s</string>
<string name="please_choose_group">Please select the organization first</string> <string name="please_choose_group">Please select the organization first</string>
<string name="confirm_logout">Confirm to log out?</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_title">Bill Filtering</string>
<string name="bill_filter_date_title">Date Filtering</string> <string name="bill_filter_date_title">Date Filtering</string>
@ -221,4 +154,10 @@
<string name="Claim_time">Claim time</string> <string name="Claim_time">Claim time</string>
<string name="Stock_location">Stock location</string> <string name="Stock_location">Stock location</string>
<string name="Shop_coding">Shop coding</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> </resources>

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

@ -24,25 +24,6 @@
<string name="input_title">กรุณาป้อน</string> <string name="input_title">กรุณาป้อน</string>
<string name="rate_title">อัตราการแปลง</string> <string name="rate_title">อัตราการแปลง</string>
<string name="barcode_scan_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="tips_title">คำเตือนอุ่นใจ</string>
<string name="confirm_exit_current_page">คุณต้องการออกจากหน้าในปัจจุบันหรือไม่?</string> <string name="confirm_exit_current_page">คุณต้องการออกจากหน้าในปัจจุบันหรือไม่?</string>
<string name="tips_scan_code">วางบาร์โค้ด/คิวอาร์โค้ดในกรอบ เพื่อทำการสแกนอัตโนมัติ</string> <string name="tips_scan_code">วางบาร์โค้ด/คิวอาร์โค้ดในกรอบ เพื่อทำการสแกนอัตโนมัติ</string>
@ -69,7 +50,6 @@
<string name="isdown">กำลังดาวน์โหลด</string> <string name="isdown">กำลังดาวน์โหลด</string>
<string name="waiting">โปรดรอสักครู่...</string> <string name="waiting">โปรดรอสักครู่...</string>
<string name="notice">ประกาศ</string> <string name="notice">ประกาศ</string>
<string name="help">คำแนะนำอุ่นใจ</string>
<string name="setting">การตั้งค่า</string> <string name="setting">การตั้งค่า</string>
<string name="allowtoinstall">ต้องได้รับอนุญาตเพื่อติดตั้ง APK โปรดตั้งค่าให้สามารถติดตั้งได้</string> <string name="allowtoinstall">ต้องได้รับอนุญาตเพื่อติดตั้ง APK โปรดตั้งค่าให้สามารถติดตั้งได้</string>
<string name="download_failed">การดาวน์โหลดล้มเหลว</string> <string name="download_failed">การดาวน์โหลดล้มเหลว</string>
@ -86,53 +66,6 @@
<string name="main_current_org">องค์กรปัจจุบัน: %1s</string> <string name="main_current_org">องค์กรปัจจุบัน: %1s</string>
<string name="please_choose_group">โปรดเลือกองค์กรก่อน</string> <string name="please_choose_group">โปรดเลือกองค์กรก่อน</string>
<string name="confirm_logout">คุณต้องการออกจากระบบหรือไม่?</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_title">การคัดกรองใบเอกสาร</string>
<string name="bill_filter_date_title">การคัดกรองตามวันที่</string> <string name="bill_filter_date_title">การคัดกรองตามวันที่</string>
<string name="Please_enter_password">กรุณาป้อนรหัสผ่าน</string> <string name="Please_enter_password">กรุณาป้อนรหัสผ่าน</string>
@ -177,48 +110,54 @@
<string name="Scrap_quantity">จำนวนการสูญเสีย</string> <string name="Scrap_quantity">จำนวนการสูญเสีย</string>
<string name="Operation_number">ขนาด</string> <string name="Operation_number">ขนาด</string>
<string name="Back">กลับมา</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="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="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> </resources>

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

@ -25,25 +25,6 @@
<string name="input_title">请输入</string> <string name="input_title">请输入</string>
<string name="rate_title">换算率</string> <string name="rate_title">换算率</string>
<string name="barcode_scan_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="tips_title">温馨提示</string>
<string name="confirm_exit_current_page">是否退出当前界面?</string> <string name="confirm_exit_current_page">是否退出当前界面?</string>
<string name="tips_scan_code">将二维码/条形码放入框内,即可自动扫描</string> <string name="tips_scan_code">将二维码/条形码放入框内,即可自动扫描</string>
@ -72,7 +53,7 @@
<string name="isdown">正在下载</string> <string name="isdown">正在下载</string>
<string name="waiting">请稍候...</string> <string name="waiting">请稍候...</string>
<string name="notice">提示</string> <string name="notice">提示</string>
<string name="help">温馨提示</string>
<string name="setting">设置</string> <string name="setting">设置</string>
<string name="allowtoinstall">必须授权才能安装APK,请设置允许安装</string> <string name="allowtoinstall">必须授权才能安装APK,请设置允许安装</string>
<string name="download_failed">下载失败</string> <string name="download_failed">下载失败</string>
@ -95,76 +76,6 @@
<string name="please_choose_group">请先选择组织</string> <string name="please_choose_group">请先选择组织</string>
<string name="confirm_logout">确认退出登录吗?</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_title">单据筛选</string>
<string name="bill_filter_date_title">日期筛选</string> <string name="bill_filter_date_title">日期筛选</string>
@ -254,5 +165,11 @@
<string name="Claim_time">领用时间</string> <string name="Claim_time">领用时间</string>
<string name="Stock_location">库存地点</string> <string name="Stock_location">库存地点</string>
<string name="Shop_coding">车间编码</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> </resources>

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

@ -5,18 +5,17 @@
<!-- 配置Android提供的theme --> <!-- 配置Android提供的theme -->
<!-- 配置qmui提供的theme --> <!-- 配置qmui提供的theme -->
<item name="qmui_config_color_blue">@color/app_color_blue</item> <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_spacing_horizontal">20dp</item>
<item name="qmui_content_padding_horizontal">@dimen/qmui_content_spacing_horizontal</item> <item name="qmui_content_padding_horizontal">@dimen/qmui_content_spacing_horizontal</item>
<item name="QMUITopBarStyle">@style/QDTopBar</item> <item name="QMUITopBarStyle">@style/QDTopBar</item>
<!-- 配置app自己的theme --> <!-- 配置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> <item name="app_content_bg_color">@color/qmui_config_color_white</item>
</style> </style>
<style name="CUSTOM_QMUI" parent="QMUI.Dialog"/>
<style name="QDCommonTitle"> <style name="QDCommonTitle">
<item name="android:textColor">@color/textColor</item> <item name="android:textColor">@color/textColor</item>
<item name="android:textSize">16sp</item> <item name="android:textSize">16sp</item>

Loading…
Cancel
Save