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