Browse Source

1.0.15

master
ml 1 year ago
parent
commit
2d4cafabcc
  1. 17
      .idea/deploymentTargetDropDown.xml
  2. 5
      .idea/misc.xml
  3. 2
      app/build.gradle
  4. 2
      app/release/output.json
  5. 13
      app/src/main/AndroidManifest.xml
  6. 13
      app/src/main/assets/MainUIForV.json
  7. 158
      app/src/main/assets/ProFeedUI.json
  8. 6
      app/src/main/assets/litepal.xml
  9. 3
      app/src/main/java/com/techscan/wk/app/AppConst.java
  10. 141
      app/src/main/java/com/techscan/wk/model/MaterialAdjustmentDetailBean.java
  11. 207
      app/src/main/java/com/techscan/wk/model/ProOrde1TaskBean.java
  12. 207
      app/src/main/java/com/techscan/wk/model/ProOrde2TaskBean.java
  13. 208
      app/src/main/java/com/techscan/wk/model/ProOrder1Bean.java
  14. 198
      app/src/main/java/com/techscan/wk/model/ProOrder2Bean.java
  15. 3
      app/src/main/java/com/techscan/wk/rxretrofit/ApiService.java
  16. 4
      app/src/main/java/com/techscan/wk/rxretrofit/BaseResponseBean.java
  17. 7
      app/src/main/java/com/techscan/wk/rxretrofit/HttpMethods.java
  18. 8
      app/src/main/java/com/techscan/wk/ui/MainActivity.java
  19. 79
      app/src/main/java/com/techscan/wk/ui/proreq/MaterialAdjustSettingActivity.java
  20. 987
      app/src/main/java/com/techscan/wk/ui/proreq/MaterialAdjustmentActivity.java
  21. 24
      app/src/main/java/com/techscan/wk/ui/proreq/ProReqActivity.java
  22. 7
      app/src/main/java/com/techscan/wk/ui/reportwork/ConfigSettingActivity.java
  23. 58
      app/src/main/java/com/techscan/wk/widgets/CustomBottomSheet.java
  24. 28
      app/src/main/res/layout/activity_config_setting.xml
  25. 76
      app/src/main/res/layout/activity_mater_adjust_setting.xml
  26. 53
      app/src/main/res/layout/activity_pro_feed.xml

17
.idea/deploymentTargetDropDown.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\MULEI\.android\avd\Nexus_5X_API_35.avd" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-11-26T02:31:07.996443500Z" />
</component>
</project>

5
.idea/misc.xml

@ -14,6 +14,8 @@
<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_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_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_main.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_mater_adjust_setting.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_pro_feed.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_pro_req_body.xml" value="0.23278985507246377" /> <entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_pro_req_body.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_pro_return.xml" value="0.23278985507246377" /> <entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_pro_return.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_report_work.xml" value="0.1" /> <entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/activity_report_work.xml" value="0.1" />
@ -27,8 +29,11 @@
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/detail_bottom_popup.xml" value="0.23278985507246377" /> <entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/detail_bottom_popup.xml" value="0.23278985507246377" />
<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/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.xml" value="0.29257246376811596" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_edit_select.xml" value="0.15817356205852673" />
<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/form_item_edit_select_scan.xml" value="0.2246376811594203" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_text.xml" value="0.23278985507246377" /> <entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_text.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_time_quantum.xml" value="0.23278985507246377" />
<entry key="..\:/TechScanProject/VicoFeedReport/app/src/main/res/layout/form_item_title.xml" value="0.23278985507246377" />
<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/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_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_btn1.xml" value="0.2246376811594203" />

2
app/build.gradle

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

2
app/release/output.json

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

13
app/src/main/AndroidManifest.xml

@ -67,6 +67,18 @@
android:name="com.techscan.wk.ui.proreq.ProReqActivity" android:name="com.techscan.wk.ui.proreq.ProReqActivity"
android:exported="false" android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" /> android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.proreq.MaterialAdjustmentActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
</activity> <activity
android:name="com.techscan.wk.ui.proreq.MaterialAdjustSettingActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
</activity>
<activity <activity
android:name="com.techscan.wk.ui.proreq.ProReturnActivity" android:name="com.techscan.wk.ui.proreq.ProReturnActivity"
android:exported="false" android:exported="false"
@ -94,6 +106,7 @@
<activity <activity
android:name="com.techscan.wk.ui.login.LoginActivity" android:name="com.techscan.wk.ui.login.LoginActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:exported="true"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"> android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

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

@ -114,6 +114,19 @@
"en": "Finished warehousing", "en": "Finished warehousing",
"th": "เสร็จแล้วเข้าไปในห้อง" "th": "เสร็จแล้วเข้าไปในห้อง"
} }
} ,
{
"id": 17,
"name": "领料调整",
"icon": "xtzk",
"to": "com.techscan.wk.ui.proreq.MaterialAdjustmentActivity",
"show": "1",
"children": [],
"language": {
"zh": "领料调整",
"en": "Material requisition adjustment",
"th": "ปรับขนาดวัสดุ"
}
} }
] ]

158
app/src/main/assets/ProFeedUI.json

@ -0,0 +1,158 @@
[
{
"id": 1,
"type": 2,
"fieldName": "ZGWH",
"name": "工位号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"language": {
"zh": "工位号",
"en": "working location number",
"th": "จำนวนคนงาน"
}
},
{
"id": 2,
"type": 2,
"fieldName": "AUFNR1",
"name": "来源工单号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": false,
"language": {
"zh": "来源工单号",
"en": "Source work order number",
"th": "ชื่อต้น"
}
},
{
"id": 3,
"type": 2,
"fieldName": "AUFNR2",
"name": "目标工单号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"isFocus": false,
"language": {
"zh": "目标工单号",
"en": "Target work order number",
"th": "หมายเลขรายการเป้าหมาย"
}
},
{
"id": 4,
"type": 2,
"fieldName": "barcode",
"name": "条码",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"language": {
"zh": "条码",
"en": "barcode",
"th": "บาร์โค้ด"
}
},
{
"id": 5,
"type": 2,
"fieldName": "lgort",
"name": "库存地点",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": false,
"isShow": true,
"language": {
"zh": "库存地点",
"en": "Stock location",
"th": "สถาน ที่เก็บสินค้า"
}
},
{
"id": 6,
"type": 2,
"fieldName": "MATNR",
"name": "物料号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": false,
"isShow": true,
"language": {
"zh": "物料号",
"en": "Material number",
"th": "หมายเลขวัสดุ"
}
},
{
"id": 7,
"type": 2,
"fieldName": "erfme",
"name": "单位",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": false,
"isShow": true,
"language": {
"zh": "单位",
"en": "unit",
"th": "หน่วย"
}
},
{
"id": 8,
"type": 2,
"fieldName": "ZXTPC",
"name": "箱号",
"value": "",
"editExp": 0,
"values": [],
"mast": false,
"canChange": false,
"isShow": false,
"language": {
"zh": "箱号",
"en": "Case number",
"th": "หมายเลขกล่อง"
}
},
{
"id": 9,
"type": 2,
"fieldName": "quantity",
"name": "数量",
"value": "",
"editExp": 2,
"values": [],
"mast": false,
"canChange": true,
"isShow": true,
"language": {
"zh": "数量",
"en": "quantity",
"th": "จำนวน"
}
}
]

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

@ -19,7 +19,7 @@
For example: For example:
<version value="1" /> <version value="1" />
--> -->
<version value="24" />
<version value="32" />
<!-- <!--
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
@ -38,6 +38,10 @@
<mapping class="com.techscan.wk.model.FlowOrderDetailBean" /> <mapping class="com.techscan.wk.model.FlowOrderDetailBean" />
<mapping class="com.techscan.wk.model.FlowReportWorkDetailBean" /> <mapping class="com.techscan.wk.model.FlowReportWorkDetailBean" />
<mapping class="com.techscan.wk.model.FlowReportWorkProOrderBean" /> <mapping class="com.techscan.wk.model.FlowReportWorkProOrderBean" />
<mapping class="com.techscan.wk.model.MaterialAdjustmentDetailBean" />
<mapping class="com.techscan.wk.model.ProOrde1TaskBean" />
<mapping class="com.techscan.wk.model.ProOrde2TaskBean" />
</list> </list>
<!-- <!--

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

@ -18,7 +18,10 @@ public class AppConst {
public static final String KEY_IS_CONTINUOUS = "key_continuous_scan"; public static final String KEY_IS_CONTINUOUS = "key_continuous_scan";
public static final String SCAN_ADD_DETAIL = "autoInserDetail"; public static final String SCAN_ADD_DETAIL = "autoInserDetail";
public static final String SCAN_ADD_DETAIL2 = "autoInserDetail2";
public static final String HIDE_CJ = "hide_cj";
public static final String HIDE_GW = "hide_gw"; public static final String HIDE_GW = "hide_gw";
public static final String HIDE_GW2 = "hide_gw2";
public static final int CAMERA_CODE = 0x11; public static final int CAMERA_CODE = 0x11;
public static final int REQUEST_CODE_SCAN_FOR_GROUP = 0X12; public static final int REQUEST_CODE_SCAN_FOR_GROUP = 0X12;

141
app/src/main/java/com/techscan/wk/model/MaterialAdjustmentDetailBean.java

@ -0,0 +1,141 @@
package com.techscan.wk.model;
import org.litepal.crud.LitePalSupport;
public class MaterialAdjustmentDetailBean extends LitePalSupport {
private String gid;
private long taskRowId;
private String barcode;
private String aufnr1;//来源工单号
private String aufnr2;//目标工单号
private String erfme;//单位
private double erfmg;//物料数量
private String matnr;//物料编码
private String werks;//工厂代码
private String zcjbm;//车间编码
private String zgw;//工位号
private String zboxid;//箱号
private String zpc;//批次
private String lgort;//库存地点
private String lgortName;//库存地点
public String getLgort() {
return lgort;
}
public void setLgort(String lgort) {
this.lgort = lgort;
}
public String getLgortName() {
return lgortName;
}
public void setLgortName(String lgortName) {
this.lgortName = lgortName;
}
public String getGid() {
return gid;
}
public void setGid(String gid) {
this.gid = gid;
}
public long getTaskRowId() {
return taskRowId;
}
public void setTaskRowId(long taskRowId) {
this.taskRowId = taskRowId;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getAufnr1() {
return aufnr1;
}
public void setAufnr1(String aufnr1) {
this.aufnr1 = aufnr1;
}
public String getAufnr2() {
return aufnr2;
}
public void setAufnr2(String aufnr2) {
this.aufnr2 = aufnr2;
}
public String getErfme() {
return erfme;
}
public void setErfme(String erfme) {
this.erfme = erfme;
}
public double getErfmg() {
return erfmg;
}
public void setErfmg(double erfmg) {
this.erfmg = erfmg;
}
public String getMatnr() {
return matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getWerks() {
return werks;
}
public void setWerks(String werks) {
this.werks = werks;
}
public String getZcjbm() {
return zcjbm;
}
public void setZcjbm(String zcjbm) {
this.zcjbm = zcjbm;
}
public String getZgw() {
return zgw;
}
public void setZgw(String zgw) {
this.zgw = zgw;
}
public String getZboxid() {
return zboxid;
}
public void setZboxid(String zboxid) {
this.zboxid = zboxid;
}
public String getZpc() {
return zpc;
}
public void setZpc(String zpc) {
this.zpc = zpc;
}
}

207
app/src/main/java/com/techscan/wk/model/ProOrde1TaskBean.java

@ -0,0 +1,207 @@
package com.techscan.wk.model;
import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
public class ProOrde1TaskBean extends LitePalSupport {
private long id;
@Column(defaultValue = "0")
private Boolean complete; //是否完成
@Column(defaultValue = "0.00")
private double completeNum; //已完成数量
private long rowid; //自定义行id
private String aufnr;//订单号
private String ausch;//部件废品百分数
private double bdmng;//组件用量 //任务数量
private double bmeng;//基本数量
private double enmng;//提货数
private String erfme;//组件单位
private double erfmg;//组件用量(BOM单位)
private String lgort;//库存地点
private String lgortName;//库存地点名称
private String matnr;//组件物料编码
private String meins;//组件单位 //任务数量用到的单位
private double menge;//单位用量
private String posnr;//行项目
private String rgekz;//反冲
private String rsnum;//预留号
private String rspos;//预留行项目号
private String vornr;//工序编码
private String xloek;//删除标记
public String getLgortName() {
return lgortName;
}
public void setLgortName(String lgortName) {
this.lgortName = lgortName;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getRowid() {
return rowid;
}
public void setRowid(long rowid) {
this.rowid = rowid;
}
public Boolean getComplete() {
return complete;
}
public void setComplete(Boolean complete) {
this.complete = complete;
}
public double getCompleteNum() {
return completeNum;
}
public void setCompleteNum(double completeNum) {
this.completeNum = completeNum;
}
public String getAufnr() {
return aufnr;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getAusch() {
return ausch;
}
public void setAusch(String ausch) {
this.ausch = ausch;
}
public double getBdmng() {
return bdmng;
}
public void setBdmng(double bdmng) {
this.bdmng = bdmng;
}
public double getBmeng() {
return bmeng;
}
public void setBmeng(double bmeng) {
this.bmeng = bmeng;
}
public double getEnmng() {
return enmng;
}
public void setEnmng(double enmng) {
this.enmng = enmng;
}
public String getErfme() {
return erfme;
}
public void setErfme(String erfme) {
this.erfme = erfme;
}
public double getErfmg() {
return erfmg;
}
public void setErfmg(double erfmg) {
this.erfmg = erfmg;
}
public String getLgort() {
return lgort;
}
public void setLgort(String lgort) {
this.lgort = lgort;
}
public String getMatnr() {
return matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMeins() {
return meins;
}
public void setMeins(String meins) {
this.meins = meins;
}
public double getMenge() {
return menge;
}
public void setMenge(double menge) {
this.menge = menge;
}
public String getPosnr() {
return posnr;
}
public void setPosnr(String posnr) {
this.posnr = posnr;
}
public String getRgekz() {
return rgekz;
}
public void setRgekz(String rgekz) {
this.rgekz = rgekz;
}
public String getRsnum() {
return rsnum;
}
public void setRsnum(String rsnum) {
this.rsnum = rsnum;
}
public String getRspos() {
return rspos;
}
public void setRspos(String rspos) {
this.rspos = rspos;
}
public String getVornr() {
return vornr;
}
public void setVornr(String vornr) {
this.vornr = vornr;
}
public String getXloek() {
return xloek;
}
public void setXloek(String xloek) {
this.xloek = xloek;
}
}

207
app/src/main/java/com/techscan/wk/model/ProOrde2TaskBean.java

@ -0,0 +1,207 @@
package com.techscan.wk.model;
import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
public class ProOrde2TaskBean extends LitePalSupport {
private long id;
@Column(defaultValue = "0")
private Boolean complete; //是否完成
@Column(defaultValue = "0.00")
private double completeNum; //已完成数量
private long rowid; //自定义行id
private String aufnr;//订单号
private String ausch;//部件废品百分数
private double bdmng;//组件用量 //任务数量
private double bmeng;//基本数量
private double enmng;//提货数
private String erfme;//组件单位
private double erfmg;//组件用量(BOM单位)
private String lgort;//库存地点
private String lgortName;//库存地点名称
private String matnr;//组件物料编码
private String meins;//组件单位 //任务数量用到的单位
private double menge;//单位用量
private String posnr;//行项目
private String rgekz;//反冲
private String rsnum;//预留号
private String rspos;//预留行项目号
private String vornr;//工序编码
private String xloek;//删除标记
public String getLgortName() {
return lgortName;
}
public void setLgortName(String lgortName) {
this.lgortName = lgortName;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getRowid() {
return rowid;
}
public void setRowid(long rowid) {
this.rowid = rowid;
}
public Boolean getComplete() {
return complete;
}
public void setComplete(Boolean complete) {
this.complete = complete;
}
public double getCompleteNum() {
return completeNum;
}
public void setCompleteNum(double completeNum) {
this.completeNum = completeNum;
}
public String getAufnr() {
return aufnr;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getAusch() {
return ausch;
}
public void setAusch(String ausch) {
this.ausch = ausch;
}
public double getBdmng() {
return bdmng;
}
public void setBdmng(double bdmng) {
this.bdmng = bdmng;
}
public double getBmeng() {
return bmeng;
}
public void setBmeng(double bmeng) {
this.bmeng = bmeng;
}
public double getEnmng() {
return enmng;
}
public void setEnmng(double enmng) {
this.enmng = enmng;
}
public String getErfme() {
return erfme;
}
public void setErfme(String erfme) {
this.erfme = erfme;
}
public double getErfmg() {
return erfmg;
}
public void setErfmg(double erfmg) {
this.erfmg = erfmg;
}
public String getLgort() {
return lgort;
}
public void setLgort(String lgort) {
this.lgort = lgort;
}
public String getMatnr() {
return matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMeins() {
return meins;
}
public void setMeins(String meins) {
this.meins = meins;
}
public double getMenge() {
return menge;
}
public void setMenge(double menge) {
this.menge = menge;
}
public String getPosnr() {
return posnr;
}
public void setPosnr(String posnr) {
this.posnr = posnr;
}
public String getRgekz() {
return rgekz;
}
public void setRgekz(String rgekz) {
this.rgekz = rgekz;
}
public String getRsnum() {
return rsnum;
}
public void setRsnum(String rsnum) {
this.rsnum = rsnum;
}
public String getRspos() {
return rspos;
}
public void setRspos(String rspos) {
this.rspos = rspos;
}
public String getVornr() {
return vornr;
}
public void setVornr(String vornr) {
this.vornr = vornr;
}
public String getXloek() {
return xloek;
}
public void setXloek(String xloek) {
this.xloek = xloek;
}
}

208
app/src/main/java/com/techscan/wk/model/ProOrder1Bean.java

@ -0,0 +1,208 @@
package com.techscan.wk.model;
import java.util.List;
public class ProOrder1Bean {
private String amein;
private String aufnr;
private String bmeng;
private String dauat;
private String dispo;
private String dwerk;
private String fevor;
private String gltrp;
private String gstrp;
private List<ProOrde1TaskBean> item;
private String lgort;
private String lgortName;
private String matnr;
private String plnal;
private String plnnr;
private String projn;
private String psmng;
private String stlal;
private String ueeto;
private String ybzq;
private String zremark;
private String zszjd;
private String zwlbc;
private String zzt;
private String zzy;
public String getLgortName() {
return lgortName;
}
public void setLgortName(String lgortName) {
this.lgortName = lgortName;
}
public void setAmein(String amein) {
this.amein = amein;
}
public String getAmein() {
return amein;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getAufnr() {
return aufnr;
}
public void setBmeng(String bmeng) {
this.bmeng = bmeng;
}
public String getBmeng() {
return bmeng;
}
public void setDauat(String dauat) {
this.dauat = dauat;
}
public String getDauat() {
return dauat;
}
public void setDispo(String dispo) {
this.dispo = dispo;
}
public String getDispo() {
return dispo;
}
public void setDwerk(String dwerk) {
this.dwerk = dwerk;
}
public String getDwerk() {
return dwerk;
}
public void setFevor(String fevor) {
this.fevor = fevor;
}
public String getFevor() {
return fevor;
}
public void setGltrp(String gltrp) {
this.gltrp = gltrp;
}
public String getGltrp() {
return gltrp;
}
public void setGstrp(String gstrp) {
this.gstrp = gstrp;
}
public String getGstrp() {
return gstrp;
}
public void setItem(List<ProOrde1TaskBean> item) {
this.item = item;
}
public List<ProOrde1TaskBean> getItem() {
return item;
}
public void setLgort(String lgort) {
this.lgort = lgort;
}
public String getLgort() {
return lgort;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMatnr() {
return matnr;
}
public void setPlnal(String plnal) {
this.plnal = plnal;
}
public String getPlnal() {
return plnal;
}
public void setPlnnr(String plnnr) {
this.plnnr = plnnr;
}
public String getPlnnr() {
return plnnr;
}
public void setProjn(String projn) {
this.projn = projn;
}
public String getProjn() {
return projn;
}
public void setPsmng(String psmng) {
this.psmng = psmng;
}
public String getPsmng() {
return psmng;
}
public void setStlal(String stlal) {
this.stlal = stlal;
}
public String getStlal() {
return stlal;
}
public void setUeeto(String ueeto) {
this.ueeto = ueeto;
}
public String getUeeto() {
return ueeto;
}
public void setYbzq(String ybzq) {
this.ybzq = ybzq;
}
public String getYbzq() {
return ybzq;
}
public void setZremark(String zremark) {
this.zremark = zremark;
}
public String getZremark() {
return zremark;
}
public void setZszjd(String zszjd) {
this.zszjd = zszjd;
}
public String getZszjd() {
return zszjd;
}
public void setZwlbc(String zwlbc) {
this.zwlbc = zwlbc;
}
public String getZwlbc() {
return zwlbc;
}
public void setZzt(String zzt) {
this.zzt = zzt;
}
public String getZzt() {
return zzt;
}
public void setZzy(String zzy) {
this.zzy = zzy;
}
public String getZzy() {
return zzy;
}
}

198
app/src/main/java/com/techscan/wk/model/ProOrder2Bean.java

@ -0,0 +1,198 @@
package com.techscan.wk.model;
import java.util.List;
public class ProOrder2Bean {
private String amein;
private String aufnr;
private String bmeng;
private String dauat;
private String dispo;
private String dwerk;
private String fevor;
private String gltrp;
private String gstrp;
private List<ProOrde2TaskBean> item;
private String lgort;
private String matnr;
private String plnal;
private String plnnr;
private String projn;
private String psmng;
private String stlal;
private String ueeto;
private String ybzq;
private String zremark;
private String zszjd;
private String zwlbc;
private String zzt;
private String zzy;
public void setAmein(String amein) {
this.amein = amein;
}
public String getAmein() {
return amein;
}
public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
public String getAufnr() {
return aufnr;
}
public void setBmeng(String bmeng) {
this.bmeng = bmeng;
}
public String getBmeng() {
return bmeng;
}
public void setDauat(String dauat) {
this.dauat = dauat;
}
public String getDauat() {
return dauat;
}
public void setDispo(String dispo) {
this.dispo = dispo;
}
public String getDispo() {
return dispo;
}
public void setDwerk(String dwerk) {
this.dwerk = dwerk;
}
public String getDwerk() {
return dwerk;
}
public void setFevor(String fevor) {
this.fevor = fevor;
}
public String getFevor() {
return fevor;
}
public void setGltrp(String gltrp) {
this.gltrp = gltrp;
}
public String getGltrp() {
return gltrp;
}
public void setGstrp(String gstrp) {
this.gstrp = gstrp;
}
public String getGstrp() {
return gstrp;
}
public void setItem(List<ProOrde2TaskBean> item) {
this.item = item;
}
public List<ProOrde2TaskBean> getItem() {
return item;
}
public void setLgort(String lgort) {
this.lgort = lgort;
}
public String getLgort() {
return lgort;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMatnr() {
return matnr;
}
public void setPlnal(String plnal) {
this.plnal = plnal;
}
public String getPlnal() {
return plnal;
}
public void setPlnnr(String plnnr) {
this.plnnr = plnnr;
}
public String getPlnnr() {
return plnnr;
}
public void setProjn(String projn) {
this.projn = projn;
}
public String getProjn() {
return projn;
}
public void setPsmng(String psmng) {
this.psmng = psmng;
}
public String getPsmng() {
return psmng;
}
public void setStlal(String stlal) {
this.stlal = stlal;
}
public String getStlal() {
return stlal;
}
public void setUeeto(String ueeto) {
this.ueeto = ueeto;
}
public String getUeeto() {
return ueeto;
}
public void setYbzq(String ybzq) {
this.ybzq = ybzq;
}
public String getYbzq() {
return ybzq;
}
public void setZremark(String zremark) {
this.zremark = zremark;
}
public String getZremark() {
return zremark;
}
public void setZszjd(String zszjd) {
this.zszjd = zszjd;
}
public String getZszjd() {
return zszjd;
}
public void setZwlbc(String zwlbc) {
this.zwlbc = zwlbc;
}
public String getZwlbc() {
return zwlbc;
}
public void setZzt(String zzt) {
this.zzt = zzt;
}
public String getZzt() {
return zzt;
}
public void setZzy(String zzy) {
this.zzy = zzy;
}
public String getZzy() {
return zzy;
}
}

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

@ -107,4 +107,7 @@ public interface ApiService {
@POST("/web/order/savePick") @POST("/web/order/savePick")
Observable<ResponseBody> savePick(@Body Map<String,Object> name); Observable<ResponseBody> savePick(@Body Map<String,Object> name);
@POST("/web/adjustPick/saveAdjust")
Observable<ResponseBody> saveAdjust(@Body Map<String,Object> name);
} }

4
app/src/main/java/com/techscan/wk/rxretrofit/BaseResponseBean.java

@ -1,5 +1,9 @@
package com.techscan.wk.rxretrofit; package com.techscan.wk.rxretrofit;
import com.techscan.wk.model.ProReqOrderBean;
import java.util.List;
/** /**
* @author created by FWS86 * @author created by FWS86
* 版本1.0 * 版本1.0

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

@ -394,6 +394,13 @@ public class HttpMethods {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(observer); .subscribe(observer);
} }
public void saveAdjust(HashMap<String, Object> map, Observer<ResponseBody> observer) {
getApiService().saveAdjust(map)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void reportResubmit(Map<String, Object> map, Observer<ResponseBody> observer) { public void reportResubmit(Map<String, Object> map, Observer<ResponseBody> observer) {
getApiService().reportResubmit(map) getApiService().reportResubmit(map)

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

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

79
app/src/main/java/com/techscan/wk/ui/proreq/MaterialAdjustSettingActivity.java

@ -0,0 +1,79 @@
package com.techscan.wk.ui.proreq;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Switch;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.techscan.wk.R;
import com.techscan.wk.app.AppConst;
import com.techscan.wk.base.BaseActivity;
import com.techscan.wk.utils.PreferencesUtil;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* 设置
*/
public class MaterialAdjustSettingActivity extends BaseActivity {
@BindView(R.id.topbar)
QMUITopBar topbar;
@BindView(R.id.swAutoInsertDetail)
Switch swAutoInsertDetail;
@BindView(R.id.swHideGw)
Switch swHideGw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mater_adjust_setting);
ButterKnife.bind(this);
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL2, true);
//boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW2, false);
swAutoInsertDetail.setChecked(aBoolean);
//swHideGw.setChecked(isHIDE_GW);
initTopBar();
initSwitch();
}
/**
* 初始化标题栏
*/
private void initTopBar() {
topbar.setTitle(getString(R.string.configuration));
topbar.addLeftBackImageButton().setOnClickListener(v -> close());
}
private void initSwitch() {
swAutoInsertDetail.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.SCAN_ADD_DETAIL2, isChecked);
});
swHideGw.setOnCheckedChangeListener((buttonView, isChecked) -> {
//PreferencesUtil.putBoolean(this, AppConst.HIDE_GW2, isChecked);
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
close();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void close(){
Intent intent = new Intent();
setResult(AppConst.RESULT_CONFIG, intent);
finish();
}
}

987
app/src/main/java/com/techscan/wk/ui/proreq/MaterialAdjustmentActivity.java

@ -0,0 +1,987 @@
package com.techscan.wk.ui.proreq;
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.os.Handler;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.google.gson.reflect.TypeToken;
import com.king.zxing.Intents;
import com.lxj.xpopup.XPopup;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.techscan.wk.R;
import com.techscan.wk.adapter.DynamicFormAdapter;
import com.techscan.wk.app.AppConst;
import com.techscan.wk.base.CommonFunctionActivity;
import com.techscan.wk.model.AnalysisBarBean;
import com.techscan.wk.model.DynamicFormBean;
import com.techscan.wk.model.MaterialAdjustmentDetailBean;
import com.techscan.wk.model.ProOrde1TaskBean;
import com.techscan.wk.model.ProOrde2TaskBean;
import com.techscan.wk.model.ProOrder1Bean;
import com.techscan.wk.model.ProOrder2Bean;
import com.techscan.wk.model.ProReqOrdeTaskBean;
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.BarAnalysisUtils;
import com.techscan.wk.utils.FindUtils;
import com.techscan.wk.utils.PreferencesUtil;
import com.techscan.wk.utils.SoundUtils;
import com.techscan.wk.utils.ToastUtil;
import com.techscan.wk.utils.route.Router;
import com.techscan.wk.utils.statusbar.StatusBarUtil;
import com.techscan.wk.widgets.CustomBottomSheet;
import org.litepal.LitePal;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.disposables.Disposable;
import okhttp3.ResponseBody;
import q.rorbin.badgeview.QBadgeView;
/**
* Description:领料调整
* [)>@06@QRPART@10V101010@1P11002177@3SX1000019400001@1T20240724001@Q20@14D20240724@@
*
* @author MULEI
* @date 2024/11/19
*/
public class MaterialAdjustmentActivity 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.btn_task)
// Button btnTask;
@BindView(R.id.btn_detail)
Button btnDetail;
@BindView(R.id.btn_revoke)
Button btnRevoke;
@BindView(R.id.btn_submit)
Button btnSubmit;
@BindView(R.id.ll_bottom)
LinearLayout llBottom;
QBadgeView qTaskBadgeView, qDetailBadgeView;
private DynamicFormAdapter dynamicFormAdapter;
private List<DynamicFormBean> dynamicFormBeans;
private DynamicFormBean selectDynamicFormBean;
private Map<String, List<String>> scanBarcodeListMap;//存放条码扫描明细
private boolean isSave = false;
private List<ProOrder1Bean> proOrder1Beans;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pro_feed);
if (savedInstanceState == null) {
clearAllData();
}
StatusBarUtil.setStatusBarColor(this, ContextCompat.getColor(this, R.color.app_color_blue));
ButterKnife.bind(this);
setBody(true);
scanBarcodeListMap = new HashMap<>();
Disposable register = RxBus.getInstance().register(Event.class, eventMsg -> {
/*这个地方获取到数据。并执行相应的操作*/
if (eventMsg.getCode() == 0) {
String removeKey = eventMsg.getRemoveKey();
if (removeKey.contains(",")) {
String[] removeKeys = removeKey.split(",");
for (String s : removeKeys) {
scanBarcodeListMap.remove(s);
}
} else {
scanBarcodeListMap.remove(removeKey);
}
showTaskDetailBadgeNum();
}
});
RxBus.getInstance().addSubscription(this, register);
qTaskBadgeView = new QBadgeView(context);
//qTaskBadgeView.bindTarget(btnTask);
qDetailBadgeView = new QBadgeView(context);
qDetailBadgeView.bindTarget(btnDetail);
initTopBar();
initListeners();
initRvData();
rvUi.postDelayed(() -> {
setNextFocus("ZGWH");
}, 100);
}
/**
* 初始化顶部标题栏
*/
private void initTopBar() {
topbar.setTitle("领料调整");
topbar.addLeftBackImageButton().setOnClickListener(v -> finishActivity());
topbar.addRightTextButton(getString(R.string.configuration), 0).setOnClickListener(view -> Router.newIntent(context).to(MaterialAdjustSettingActivity.class).requestCode(AppConst.REQUEST_CONFIG).launch());
}
/**
* 界面数据回调监听设置
*/
private void initListeners() {
}
@Override
protected void onResume() {
super.onResume();
showTaskDetailBadgeNum();
}
/**
* 初始化动态列表数据
*/
private void initRvData() {
// 从资源文件中读取界面数据
String jsonStr = FindUtils.readJsonFromFile(context, "ProFeedUI.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();
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.Data_cannot_be_empty));
return;
}
switch (dynamicFormBean.getFieldName()) {
// case "ZCJBM":
// setNextFocus("ZGWH");
// break;
case "ZGWH":
setNextFocus("AUFNR1");
break;
case "AUFNR1":
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
if (LitePal.count(MaterialAdjustmentDetailBean.class) > 0) {
new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(getString(R.string.Do_you_want_to_rescan_the_work_order))
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
LitePal.deleteAllAsync(MaterialAdjustmentDetailBean.class).listen(i -> {
LitePal.deleteAll(ProOrde1TaskBean.class);
for (int j = 0; j < dynamicFormBeans.size(); j++) {
DynamicFormBean bean = dynamicFormBeans.get(j);
if (bean.getFieldName().equals("AUFNR1") ||
bean.getFieldName().equals("AUFNR2") ||
bean.getFieldName().equals("ZGWH")) {
continue;
} else {
bean.setValue("");
}
}
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
scanBarcodeListMap = new HashMap<>();
query(value, dynamicFormBean.getFieldName());
});
})
.create(R.style.QMUI_Dialog).show();
} else {
LitePal.deleteAll(ProOrde1TaskBean.class);
query(value, dynamicFormBean.getFieldName());
}
break;
case "AUFNR2":
if (LitePal.count(ProOrde1TaskBean.class) == 0) {
showError("请先扫码来源工单号");
setNextFocus("AUFNR1");
return;
}
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
if (LitePal.count(MaterialAdjustmentDetailBean.class) > 0) {
new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(getString(R.string.Do_you_want_to_rescan_the_work_order))
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
LitePal.deleteAllAsync(MaterialAdjustmentDetailBean.class).listen(i -> {
LitePal.deleteAll(ProOrde2TaskBean.class);
for (int j = 0; j < dynamicFormBeans.size(); j++) {
DynamicFormBean bean = dynamicFormBeans.get(j);
if (bean.getFieldName().equals("AUFNR1") ||
bean.getFieldName().equals("AUFNR2") ||
bean.getFieldName().equals("ZGWH")) {
continue;
} else {
bean.setValue("");
}
}
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
scanBarcodeListMap = new HashMap<>();
query(value, dynamicFormBean.getFieldName());
});
})
.create(R.style.QMUI_Dialog).show();
} else {
LitePal.deleteAll(ProOrde2TaskBean.class);
query(value, dynamicFormBean.getFieldName());
}
break;
case "barcode":
if (LitePal.count(ProOrde1TaskBean.class) == 0) {
showError("请先扫码来源工单号");
setNextFocus("AUFNR1");
return;
}
if (LitePal.count(ProOrde2TaskBean.class) == 0) {
showError("请先扫码目标工单号");
setNextFocus("AUFNR2");
return;
}
boolean checkBarcode = BarAnalysisUtils.checkBarcodePresuffix(value);
if (!checkBarcode) {
showError(getString(R.string.The_barcode_format_is_incorrect) + value);
return;
}
// //判断条码是否已经被扫描
// if (isInBarcodeList(scanBarcodeListMap, value)) {
// showError(getString(R.string.Do_not_scan_the_barcode_again));
// dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
// return;
// }
getBarcodeInfo(value);
break;
case "quantity":
DynamicFormBean barcodeItem = dynamicFormAdapter.getItemByFieldName("barcode");//条码
String barcodeItemValue = barcodeItem.getValue();
checkBarcode = BarAnalysisUtils.checkBarcodePresuffix(barcodeItemValue);
if (!checkBarcode) {
setNextFocus("barcode");
showError(getString(R.string.The_barcode_format_is_incorrect) + value);
return;
}
AnalysisBarBean barDataBean = BarAnalysisUtils.analysisBarcode(barcodeItemValue);
barDataBean.setQuantity(value);
String materiel = barDataBean.getMateriel();
if (TextUtils.isEmpty(materiel)) {
setNextFocus("barcode");
showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm));
return;
}
addDetailCheck(barDataBean);
break;
default:
break;
}
});
}
/**
* 解析条码信息并比对工单产品信息
*
* @param value 条码内容
*/
private void getBarcodeInfo(String value) {
AnalysisBarBean barDataBean = BarAnalysisUtils.analysisBarcode(value);
String materiel = barDataBean.getMateriel();
if (TextUtils.isEmpty(materiel)) {
setNextFocus("barcode");
showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm));
return;
}
//来源工单任务数据
List<ProOrde1TaskBean> proFeedOrde1TaskBeans = LitePal.where("matnr = ?", barDataBean.getMateriel()).find(ProOrde1TaskBean.class);
//目标工单任务数据
List<ProOrde2TaskBean> proFeedOrde2TaskBeans = LitePal.where("matnr = ?", barDataBean.getMateriel()).find(ProOrde2TaskBean.class);
if (proFeedOrde1TaskBeans.size() == 0) {
setNextFocus("barcode");
//未找到相同维度数据,报错
showError("来源工单没有该物料信息");
return;
}
if (proFeedOrde2TaskBeans.size() == 0) {
setNextFocus("barcode");
//未找到相同维度数据,报错
showError("目标工单没有该物料信息");
return;
}
//判断目标工单中是否有来源工单中库存地点信息
String lgort = proFeedOrde1TaskBeans.get(0).getLgort();
String lgortName = proFeedOrde1TaskBeans.get(0).getLgortName();
List<ProOrde2TaskBean> proFeedOrde2TaskBeans1 = LitePal.where("matnr = ? and lgort = ?",
barDataBean.getMateriel(), lgort).find(ProOrde2TaskBean.class);
if (proFeedOrde2TaskBeans1.size() == 0) {
showError("目标工单物料中没有与来源工单相同物料和库存地点");
setNextFocus("barcode");
return;
}
for (DynamicFormBean d : dynamicFormBeans) {
switch (d.getFieldName()) {
case "lgort"://库存地点
String showValue = lgort + " " + lgortName;
d.setValue(showValue);
break;
case "MATNR"://物料号
d.setValue(barDataBean.getMateriel());
d.setFocus(false);
break;
case "ZXTPC"://包装容器号 --箱号
d.setValue(barDataBean.getPackageNumber());
d.setFocus(false);
break;
case "quantity"://数量
d.setValue(barDataBean.getQuantity());
d.setFocus(true);
break;
case "erfme"://单位
d.setValue(proFeedOrde1TaskBeans.get(0).getMeins());
d.setFocus(true);
break;
default:
d.setFocus(false);
break;
}
}
dynamicFormAdapter.setList(dynamicFormBeans);
dynamicFormAdapter.notifyDataSetChanged();
//判断是否开启 扫描自动加入明细
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL2, true);
if (aBoolean) {
new Handler().postDelayed(() -> addDetailCheck(barDataBean), 200);
}
}
/**
* 加入明细前校验
*/
private void addDetailCheck(AnalysisBarBean barDataBean) {
if (LitePal.count(ProOrde1TaskBean.class) == 0) {
showError("请先扫描来源工单号");
setNextFocus("AUFNR1");
return;
}
if (LitePal.count(ProOrde2TaskBean.class) == 0) {
showError("请先扫描目标工单号");
setNextFocus("AUFNR2");
return;
}
if (barDataBean == null) {
showError(getString(R.string.The_bar_code_cannot_be_blank));
setNextFocus("barcode");
return;
}
String quantity = barDataBean.getQuantity();
if (TextUtils.isEmpty(quantity)) {
setNextFocus("quantity");
showError(getString(R.string.The_quantity_cannot_be_empty));
return;
}
if (!checkNumber(quantity)) {
showError(getString(R.string.The_quantity_is_not_correct));
setNextFocus("quantity");
return;
}
BigDecimal quantityBD = new BigDecimal(quantity);
//当前加入明细的数量
double currenScanNum = quantityBD.doubleValue();
if (currenScanNum <= 0) {
showError(getString(R.string.The_number_of_scanned_codes_must_be_greater_than_0));
return;
}
addDetail(barDataBean, currenScanNum);
}
/**
* 加入明细方法
*/
private void addDetail(AnalysisBarBean barDataBean, double currenScanNum) {
DynamicFormBean lgortItem = dynamicFormAdapter.getItemByFieldName("lgort");//库存地点
DynamicFormBean ZGWHItem = dynamicFormAdapter.getItemByFieldName("ZGWH");//工位号
DynamicFormBean barcodeItem = dynamicFormAdapter.getItemByFieldName("barcode");//条码
DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料编码
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
DynamicFormBean erfmeItem = dynamicFormAdapter.getItemByFieldName("erfme");//单位
DynamicFormBean AUFNR1Item = dynamicFormAdapter.getItemByFieldName("AUFNR1");//来源工单号
DynamicFormBean AUFNR2Item = dynamicFormAdapter.getItemByFieldName("AUFNR2");//目标工单号
if (TextUtils.isEmpty(AUFNR1Item.getValue())) {
showError("请先扫描来源工单号");
setNextFocus("AUFNR1");
return;
}
if (TextUtils.isEmpty(AUFNR1Item.getValue())) {
showError("请先扫描目标工单号");
setNextFocus("AUFNR2");
return;
}
String barcode = barDataBean.getBarcode();
if (TextUtils.isEmpty(barcode)) {
showError(getString(R.string.The_bar_code_cannot_be_blank));
setNextFocus("barcode");
return;
}
LitePal
.where("matnr = ?", MATNRItem.getValue())
.findAsync(ProOrde1TaskBean.class)
.listen(proFeedOrde1TaskBeans -> {
if (proFeedOrde1TaskBeans.size() == 0) {
//未找到相同维度数据,报错
showError("来源工单没有该物料信息");
return;
}
double scanQuantity = currenScanNum;
String gid = System.currentTimeMillis() + "";
//加入明细,并且可以超量,每次只匹配任务一行
for (ProOrde1TaskBean bean : proFeedOrde1TaskBeans) {
double taskNum = bean.getBdmng();
double completeNum = bean.getCompleteNum();
bean.setCompleteNum(scanQuantity + completeNum);
if (scanQuantity + completeNum >= taskNum) {
bean.setComplete(true);
} else {
bean.setComplete(false);
}
bean.save();
MaterialAdjustmentDetailBean detailBean = new MaterialAdjustmentDetailBean();
detailBean.setBarcode(barcode);
detailBean.setTaskRowId(bean.getRowid());
detailBean.setGid(gid);
detailBean.setAufnr1(AUFNR1Item.getValue());
detailBean.setAufnr2(AUFNR2Item.getValue());
detailBean.setErfme(bean.getMeins());
detailBean.setErfmg(scanQuantity);
detailBean.setMatnr(bean.getMatnr());
detailBean.setZgw(ZGWHItem.getValue());
detailBean.setZboxid(ZXTPCItem.getValue());
if (!TextUtils.isEmpty(lgortItem.getValue())) {
if (lgortItem.getValue().contains(" ")) {
String[] split = lgortItem.getValue().split(" ");
detailBean.setLgort(split[0]);
detailBean.setLgortName(split[1]);
} else {
detailBean.setLgort(lgortItem.getValue());
}
}
detailBean.save();
break;
}
//将当前条码存入对应的条码扫描明细中
List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes);
runOnUiThread(() -> {
SoundUtils.playSound(this, R.raw.ok);
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);
}
for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean dynamicFormBean = dynamicFormBeans.get(i);
if (dynamicFormBean.getFieldName().equals("AUFNR1") ||
dynamicFormBean.getFieldName().equals("AUFNR2") ||
dynamicFormBean.getFieldName().equals("ZGWH")) {
continue;
}
dynamicFormBean.setValue("");
}
showTaskDetailBadgeNum();
setNextFocus("barcode");
});
});
}
/**
* 根据工单获取工单物料信息
*
* @param id 工单号
*/
private void query(String id, String fieldName) {
if (fieldName.equals("AUFNR1")) {
HttpMethods.getInstance().getOrderInfo(id, true, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();
Type objectType = new TypeToken<BaseResponseBean<List<ProOrder1Bean>>>() {
}.getType();
BaseResponseBean<List<ProOrder1Bean>> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() != 200) {
showError(baseResponseBean.getMsg());
setNextFocus("AUFNR1");
return;
}
proOrder1Beans = baseResponseBean.getData();
if (proOrder1Beans == null || proOrder1Beans.size() == 0) {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR1");
return;
}
ProOrder1Bean proOrder1Bean = proOrder1Beans.get(0);
List<ProOrde1TaskBean> item = proOrder1Bean.getItem();
if (item.size() == 0) {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR1");
return;
}
// String lgort = proOrder1Bean.getLgort();
// for (int i = 0; i < dynamicFormBeans.size(); i++) {
// DynamicFormBean dynamicFormBean = dynamicFormBeans.get(i);
// if (dynamicFormBean.getFieldName().equals("lgort")) {
// dynamicFormBean.setValue(lgort);
// break;
// }
// }
// dynamicFormAdapter.notifyDataSetChanged();
QMUITipDialog qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING).create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
for (int i = 0; i < item.size(); i++) {
ProOrde1TaskBean taskBean = item.get(i);
taskBean.setRowid(System.currentTimeMillis());
taskBean.save();
}
qmuiTipDialog.dismiss();
setNextFocus("AUFNR2");
}
@Override
protected void onFailure(Throwable e) throws Exception {
showTaskDetailBadgeNum();
setNextFocus("AUFNR1");
SoundUtils.playSound(MaterialAdjustmentActivity.this, R.raw.warning);
CustomErrorDialog(e, MaterialAdjustmentActivity.this);
}
});
} else if (fieldName.equals("AUFNR2")) {
HttpMethods.getInstance().getOrderInfo(id, true, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();
Type objectType = new TypeToken<BaseResponseBean<List<ProOrder2Bean>>>() {
}.getType();
BaseResponseBean<List<ProOrder2Bean>> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() != 200) {
showError(baseResponseBean.getMsg());
setNextFocus("AUFNR2");
return;
}
List<ProOrder2Bean> data = baseResponseBean.getData();
if (data == null || data.size() == 0) {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR2");
return;
}
ProOrder2Bean proOrder2Bean = data.get(0);
List<ProOrde2TaskBean> item = proOrder2Bean.getItem();
if (item.size() == 0) {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR2");
return;
}
QMUITipDialog qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING).create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
for (int i = 0; i < item.size(); i++) {
ProOrde2TaskBean taskBean = item.get(i);
taskBean.setRowid(System.currentTimeMillis());
taskBean.save();
}
qmuiTipDialog.dismiss();
setNextFocus("barcode");
}
@Override
protected void onFailure(Throwable e) throws Exception {
showTaskDetailBadgeNum();
setNextFocus("AUFNR2");
SoundUtils.playSound(MaterialAdjustmentActivity.this, R.raw.warning);
CustomErrorDialog(e, MaterialAdjustmentActivity.this);
}
});
}
}
/**
* 显示任务和明细角标
*/
private void showTaskDetailBadgeNum() {
//int taskCount = LitePal.count(ProOrde1TaskBean.class);
int count = LitePal.count(MaterialAdjustmentDetailBean.class);
//qTaskBadgeView.setBadgeNumber(taskCount);
qDetailBadgeView.setBadgeNumber(count);
}
/**
* 重新刷新ui
*/
@SuppressLint("SetTextI18n")
private void reInitUI() {
runOnUiThread(() -> {
scanBarcodeListMap = new HashMap<>();
clearAllData();
clearRvData();
showTaskDetailBadgeNum();
setNextFocus("AUFNR1");
});
}
@OnClick({R.id.iv_scan, R.id.btn_detail, R.id.btn_submit, R.id.btn_revoke})
public void onViewClicked(View view) {
if (AntiShakeUtils.isInvalidClick(view))
return;
switch (view.getId()) {
case R.id.iv_scan:
//扫码
if (!hasPermission(Manifest.permission.CAMERA))
requestPermission(CAMERA_CODE, Manifest.permission.CAMERA);
else
startScan(getResources().getString(R.string.scan_title));
break;
case R.id.btn_detail:
LitePal
.findAllAsync(MaterialAdjustmentDetailBean.class)
.listen(materialAdjustmentDetailBeans -> {
if (materialAdjustmentDetailBeans.size() == 0) {
showError(getString(R.string.No_details_are_available));
return;
}
customBottomSheet = new CustomBottomSheet<>(context, getResources().getString(R.string.detail_info), materialAdjustmentDetailBeans, 1);
new XPopup.Builder(context)
.moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
.isRequestFocus(false)
.autoFocusEditText(false)
.autoOpenSoftInput(false)
.asCustom(customBottomSheet)
.show();
});
break;
// case R.id.btn_task:
// LitePal.findAllAsync(ProReqOrdeTaskBean.class).listen(list -> {
// if (list.size() == 0) {
// showError(getString(R.string.No_task_please_scan_the_ticket_number_first));
// return;
// }
// customBottomSheet = new CustomBottomSheet<>(context, getResources().getString(R.string.task_info), list, 1);
// new XPopup.Builder(context)
// .moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
// .isRequestFocus(false)
// .autoFocusEditText(false)
// .autoOpenSoftInput(false)
// .asCustom(customBottomSheet)
// .show();
// });
// break;
case R.id.btn_submit:
if (isSave) return;
saveData();
break;
}
}
/**
* 保存数据
*/
private void saveData() {
LitePal.findAllAsync(MaterialAdjustmentDetailBean.class).listen(items -> {
if (items.size() == 0) {
ToastUtils.showLong(getString(R.string.No_data_can_be_saved));
return;
}
isSave = true;
HashMap<String, Object> map = new HashMap<>();
map.put("list", items);
HttpMethods.getInstance().saveAdjust(map, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody responseBody) throws Exception {
isSave = false;
String string = responseBody.string();
Type objectType = new TypeToken<BaseResponseBean<String>>() {
}.getType();
BaseResponseBean<String> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() != 200) {
showError(baseResponseBean.getMsg());
return;
}
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(getString(R.string.Data_saved_successfully))
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
})
.create(R.style.QMUI_Dialog).show();
reInitUI();
}
@Override
protected void onFailure(Throwable e) throws Exception {
isSave = false;
CustomErrorDialog(e, MaterialAdjustmentActivity.this);
}
});
});
}
/**
* 初始化adapter数据
*/
public void clearRvData() {
for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean dynamicFormBean = dynamicFormBeans.get(i);
dynamicFormBean.setValue("");
if (dynamicFormBean.getType() == DynamicFormBean.TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
//获取当前时间
Date date = new Date(System.currentTimeMillis());
dynamicFormBean.setValue(simpleDateFormat.format(date));
}
}
dynamicFormAdapter.notifyDataSetChanged();
}
/**
* 扫码
*
* @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();
}
}
@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)) {
showError(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 "barcode":
break;
}
}
}
}
private void setNextFocus(String name) {
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);
}
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();
}, 100);
}
private void showError(String msg) {
SoundUtils.playSound(context, R.raw.warning);
ToastUtil.showShortToastCenter(context, msg);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finishActivity();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void finishActivity() {
int count = LitePal.count(MaterialAdjustmentDetailBean.class);
if (count > 0) {
new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(getString(R.string.Are_you_sure_to_exit))
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss();
LitePal.deleteAllAsync(MaterialAdjustmentDetailBean.class).listen(i -> {
LitePal.deleteAll(ProOrde1TaskBean.class);
LitePal.deleteAll(ProOrde2TaskBean.class);
});
})
.create(R.style.QMUI_Dialog).show();
} else {
finish();
}
}
//数字验证(包含小数点)
public static boolean checkNumber(String str) {
String regex = "-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?";
if (str == null || !str.matches(regex)) {
return false;
}
return true;
}
public void clearAllData() {
if (LitePal.count(MaterialAdjustmentDetailBean.class) > 0) {
LitePal.deleteAll(MaterialAdjustmentDetailBean.class);
}
if (LitePal.count(ProOrde1TaskBean.class) > 0) {
LitePal.deleteAll(ProOrde1TaskBean.class);
}
if (LitePal.count(ProOrde2TaskBean.class) > 0) {
LitePal.deleteAll(ProOrde2TaskBean.class);
}
}
@Override
protected void onDestroy() {
clearAllData();
RxBus.getInstance().unRegister(this);
super.onDestroy();
}
}

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

@ -198,10 +198,14 @@ public class ProReqActivity extends CommonFunctionActivity {
}.getType(); }.getType();
//动态表单数据 //动态表单数据
dynamicFormBeans = gson.fromJson(jsonStr, objectType); dynamicFormBeans = gson.fromJson(jsonStr, objectType);
boolean isHIDE_CJ = PreferencesUtil.getBoolean(context, AppConst.HIDE_CJ, false);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false); boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
for (int i = 0; i < dynamicFormBeans.size(); i++) { for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean bean = dynamicFormBeans.get(i); DynamicFormBean bean = dynamicFormBeans.get(i);
if(bean.getFieldName().equals("ZCJBM") || bean.getFieldName().equals("ZGWH")){
if(bean.getFieldName().equals("ZCJBM")){
bean.setShow(!isHIDE_CJ);
}
if(bean.getFieldName().equals("ZGWH")){
bean.setShow(!isHIDE_GW); bean.setShow(!isHIDE_GW);
} }
} }
@ -670,12 +674,18 @@ public class ProReqActivity extends CommonFunctionActivity {
} }
showTaskDetailBadgeNum(); showTaskDetailBadgeNum();
qmuiTipDialog.dismiss(); qmuiTipDialog.dismiss();
boolean isHIDE_CJ = PreferencesUtil.getBoolean(context, AppConst.HIDE_CJ, false);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false); boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
if (!isHIDE_GW) {
setNextFocus("ZCJBM");
} else {
if (isHIDE_CJ && isHIDE_GW) {
setNextFocus("barcode"); setNextFocus("barcode");
} else {
if (!isHIDE_CJ) {
setNextFocus("ZCJBM");
} else if (!isHIDE_GW) {
setNextFocus("ZGWH");
}
} }
} }
@Override @Override
@ -928,10 +938,14 @@ public class ProReqActivity extends CommonFunctionActivity {
} }
} else if (requestCode == AppConst.REQUEST_CONFIG) { } else if (requestCode == AppConst.REQUEST_CONFIG) {
if (resultCode == AppConst.RESULT_CONFIG) { if (resultCode == AppConst.RESULT_CONFIG) {
boolean isHIDE_CJ = PreferencesUtil.getBoolean(context, AppConst.HIDE_CJ, false);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false); boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
for (int i = 0; i < dynamicFormBeans.size(); i++) { for (int i = 0; i < dynamicFormBeans.size(); i++) {
DynamicFormBean bean = dynamicFormBeans.get(i); DynamicFormBean bean = dynamicFormBeans.get(i);
if(bean.getFieldName().equals("ZCJBM") || bean.getFieldName().equals("ZGWH")){
if(bean.getFieldName().equals("ZCJBM") ){
bean.setShow(!isHIDE_CJ);
}
if(bean.getFieldName().equals("ZGWH")){
bean.setShow(!isHIDE_GW); bean.setShow(!isHIDE_GW);
} }
} }

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

@ -37,6 +37,8 @@ public class ConfigSettingActivity extends BaseActivity {
QMUITopBar topbar; QMUITopBar topbar;
@BindView(R.id.swAutoInsertDetail) @BindView(R.id.swAutoInsertDetail)
Switch swAutoInsertDetail; Switch swAutoInsertDetail;
@BindView(R.id.swHideCj)
Switch swHideCj;
@BindView(R.id.swHideGw) @BindView(R.id.swHideGw)
Switch swHideGw; Switch swHideGw;
@ -47,8 +49,10 @@ public class ConfigSettingActivity extends BaseActivity {
ButterKnife.bind(this); ButterKnife.bind(this);
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true); boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true);
boolean isHIDE_CJ = PreferencesUtil.getBoolean(context, AppConst.HIDE_CJ, false);
boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false); boolean isHIDE_GW = PreferencesUtil.getBoolean(context, AppConst.HIDE_GW, false);
swAutoInsertDetail.setChecked(aBoolean); swAutoInsertDetail.setChecked(aBoolean);
swHideCj.setChecked(isHIDE_CJ);
swHideGw.setChecked(isHIDE_GW); swHideGw.setChecked(isHIDE_GW);
initTopBar(); initTopBar();
@ -68,6 +72,9 @@ public class ConfigSettingActivity extends BaseActivity {
swAutoInsertDetail.setOnCheckedChangeListener((buttonView, isChecked) -> { swAutoInsertDetail.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.SCAN_ADD_DETAIL, isChecked); PreferencesUtil.putBoolean(this, AppConst.SCAN_ADD_DETAIL, isChecked);
}); });
swHideCj.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.HIDE_CJ, isChecked);
});
swHideGw.setOnCheckedChangeListener((buttonView, isChecked) -> { swHideGw.setOnCheckedChangeListener((buttonView, isChecked) -> {
PreferencesUtil.putBoolean(this, AppConst.HIDE_GW, isChecked); PreferencesUtil.putBoolean(this, AppConst.HIDE_GW, isChecked);
}); });

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

@ -29,6 +29,8 @@ import com.techscan.wk.model.BaseOptionsResponseBean;
import com.techscan.wk.model.DetailItemBean; import com.techscan.wk.model.DetailItemBean;
import com.techscan.wk.model.FlowOrderDetailBean; import com.techscan.wk.model.FlowOrderDetailBean;
import com.techscan.wk.model.FlowReportWorkDetailBean; import com.techscan.wk.model.FlowReportWorkDetailBean;
import com.techscan.wk.model.MaterialAdjustmentDetailBean;
import com.techscan.wk.model.ProOrde1TaskBean;
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.ProductOrderResponseBean; import com.techscan.wk.model.ProductOrderResponseBean;
@ -39,7 +41,6 @@ import com.techscan.wk.utils.statusbar.SystemBarTintManager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.litepal.LitePal; import org.litepal.LitePal;
import org.litepal.crud.callback.UpdateOrDeleteCallback;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
@ -160,6 +161,15 @@ public class CustomBottomSheet<T> extends BottomPopupView {
getContext().getString(R.string.unit_title) + getContext().getString(R.string.semicolon) + ((ProReqDetailBean) infoBean).getErfme() + "\n" getContext().getString(R.string.unit_title) + getContext().getString(R.string.semicolon) + ((ProReqDetailBean) infoBean).getErfme() + "\n"
);
} else if (infoBean instanceof MaterialAdjustmentDetailBean) {
holder.setText(R.id.name, ((MaterialAdjustmentDetailBean) infoBean).getMatnr());
holder.setText(R.id.detail,
getContext().getString(R.string.Case_number) + getContext().getString(R.string.semicolon) + ((MaterialAdjustmentDetailBean) infoBean).getZboxid() + "\n" +
getContext().getString(R.string.num_title) + getContext().getString(R.string.semicolon) + ((MaterialAdjustmentDetailBean) infoBean).getErfmg() + "\n" +
getContext().getString(R.string.unit_title) + getContext().getString(R.string.semicolon) + ((MaterialAdjustmentDetailBean) infoBean).getErfme() + "\n"
); );
} else { //其他只需要展示code和name的通用处理 } else { //其他只需要展示code和name的通用处理
holder.setText(R.id.name, ((BaseOptionsResponseBean) infoBean).getCode()); holder.setText(R.id.name, ((BaseOptionsResponseBean) infoBean).getCode());
@ -397,6 +407,52 @@ public class CustomBottomSheet<T> extends BottomPopupView {
}); });
messageDialogBuilder.show(); messageDialogBuilder.show();
return; return;
}else if (item instanceof MaterialAdjustmentDetailBean) {
//如果是明细,则显示删除
QMUIDialog.MessageDialogBuilder messageDialogBuilder = new QMUIDialog.MessageDialogBuilder(getContext());
messageDialogBuilder.setMessage(getContext().getString(R.string.Are_you_sure_to_delete_it));
messageDialogBuilder.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
//删除
List<T> newList = commonAdapter.getData();
String gid = ((MaterialAdjustmentDetailBean) newList.get(position)).getGid();
long taskRowId = ((MaterialAdjustmentDetailBean) newList.get(position)).getTaskRowId();
double quantity = ((MaterialAdjustmentDetailBean) newList.get(position)).getErfmg();
StringBuilder gidStringBuilder = new StringBuilder();
LitePal.deleteAllAsync(MaterialAdjustmentDetailBean.class, "gid = ?", gid).listen(i1 -> {
ProOrde1TaskBean taskBean = LitePal.where("rowid = ?", String.valueOf(taskRowId)).findFirst(ProOrde1TaskBean.class);
double newQty = taskBean.getCompleteNum() - quantity;
ContentValues contentValues = new ContentValues();
contentValues.put("completeNum", newQty);
contentValues.put("complete", false);
LitePal.updateAsync(ProOrde1TaskBean.class, contentValues, taskBean.getId()).listen(rowsAffected -> {
Iterator<T> iterator = newList.iterator();
while (iterator.hasNext()) {
T next = iterator.next();
if (((MaterialAdjustmentDetailBean) next).getGid().equals(gid)) {
gidStringBuilder.append(((MaterialAdjustmentDetailBean) next).getGid()).append(",");
iterator.remove();
}
}
commonAdapter.setData(newList);
commonAdapter.notifyDataSetChanged();
if (commonAdapter.getData().size() < 1)
CustomBottomSheet.this.dismiss();
topBar.removeAllLeftViews();
//topBar.addLeftTextButton("总数:" + newList.size(), R.id.topbar_left_num);
Event<List<T>> event = new Event<>();
event.setCode(0);
event.setMessage("detail is changed");
event.setRemoveKey(gidStringBuilder.substring(0, gidStringBuilder.length() - 1));
event.setData(newList);
RxBus.getInstance().post(event);
dialog.dismiss();
});
});
});
messageDialogBuilder.show();
return;
} }
// else if (item instanceof SaleOutTaskInfoBean) //采购入库任务、转库单任务、销售出库任务、形态转换单任务 // else if (item instanceof SaleOutTaskInfoBean) //采购入库任务、转库单任务、销售出库任务、形态转换单任务
// return; // return;

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

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

76
app/src/main/res/layout/activity_mater_adjust_setting.xml

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.login.SettingActivity">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:background="@color/qmui_config_color_white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:orientation="horizontal"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_weight="0.8"
android:text="@string/Scanning_code_automatically_adds_details"
android:textSize="@dimen/sp_15" />
<Switch
android:id="@+id/swAutoInsertDetail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.2"
android:gravity="right" />
</LinearLayout>
<LinearLayout
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:orientation="horizontal"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_weight="0.8"
android:text="隐藏车间和工位栏目"
android:textSize="@dimen/sp_15" />
<Switch
android:id="@+id/swHideGw"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.2"
android:gravity="right" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

53
app/src/main/res/layout/activity_pro_feed.xml

@ -0,0 +1,53 @@
<?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"
app:qmui_topbar_title_text_size="@dimen/sp_18" />
<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>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_ui"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/ll_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_scan" />
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent">
<include layout="@layout/layout_bottom_btn1" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save