26 changed files with 2503 additions and 11 deletions
@ -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> |
||||
@ -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":{}}] |
||||
@ -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": "จำนวน" |
||||
|
} |
||||
|
} |
||||
|
] |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
|
} |
||||
@ -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> |
||||
@ -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…
Reference in new issue