Browse Source

1.0.12

master
ml 7 months ago
parent
commit
f4944eb4fe
  1. 2
      app/build.gradle
  2. 2
      app/release/output.json
  3. 2
      app/src/main/assets/FlowReportWorkUI.json
  4. 2
      app/src/main/assets/ReportWorkUI.json
  5. 2
      app/src/main/assets/litepal.xml
  6. 11
      app/src/main/java/com/techscan/wk/app/BaseApplication.java
  7. 2
      app/src/main/java/com/techscan/wk/base/BaseActivity.java
  8. 36
      app/src/main/java/com/techscan/wk/model/ProReqOrdeTaskBean.java
  9. 26
      app/src/main/java/com/techscan/wk/rxretrofit/BaseObserver.java
  10. 2
      app/src/main/java/com/techscan/wk/rxretrofit/HttpMethods.java
  11. 61
      app/src/main/java/com/techscan/wk/ui/proreq/ProReqActivity.java
  12. 117
      app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java

2
app/build.gradle

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

2
app/release/output.json

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

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

@ -132,7 +132,7 @@
"values": [], "values": [],
"mast": false, "mast": false,
"canChange": true, "canChange": true,
"isShow": false,
"isShow": true,
"language": { "language": {
"zh": "报工数量", "zh": "报工数量",
"en": "Quantity reported", "en": "Quantity reported",

2
app/src/main/assets/ReportWorkUI.json

@ -78,7 +78,7 @@
"values": [], "values": [],
"mast": false, "mast": false,
"canChange": true, "canChange": true,
"isShow": false,
"isShow": true,
"language": { "language": {
"zh": "报工数量", "zh": "报工数量",
"en": "Quantity reported", "en": "Quantity reported",

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

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

11
app/src/main/java/com/techscan/wk/app/BaseApplication.java

@ -162,11 +162,11 @@ public class BaseApplication extends Application {
Log.d("BaseApplication", "xCrash SDK init: end"); Log.d("BaseApplication", "xCrash SDK init: end");
// Send all pending crash log files. // Send all pending crash log files.
new Thread(() -> {
for (File file : TombstoneManager.getAllTombstones()) {
sendThenDeleteCrashLog(file.getAbsolutePath(), null);
}
}).start();
// new Thread(() -> {
// for (File file : TombstoneManager.getAllTombstones()) {
// sendThenDeleteCrashLog(file.getAbsolutePath(), null);
// }
// }).start();
} }
private void sendThenDeleteCrashLog(String logPath, String emergency) { private void sendThenDeleteCrashLog(String logPath, String emergency) {
@ -201,6 +201,7 @@ public class BaseApplication extends Application {
requestJson.addProperty("pid", map.get("pid")); requestJson.addProperty("pid", map.get("pid"));
requestJson.addProperty("javaStacktrace", map.get("java stacktrace")); requestJson.addProperty("javaStacktrace", map.get("java stacktrace"));
requestJson.addProperty("crashTime", map.get("Crash time")); requestJson.addProperty("crashTime", map.get("Crash time"));
Log.e("seedErrorLog", "seedErrorLog");
HttpMethods.getInstance().seedErrorLog(requestJson, new BaseObserver<ResponseBody>() { HttpMethods.getInstance().seedErrorLog(requestJson, new BaseObserver<ResponseBody>() {
@Override @Override
protected void onSuccess(ResponseBody responseBody) { protected void onSuccess(ResponseBody responseBody) {

2
app/src/main/java/com/techscan/wk/base/BaseActivity.java

@ -54,6 +54,7 @@ public abstract class BaseActivity extends QMUIActivity implements NetBroadcastR
isBody = body; isBody = body;
} }
/** /**
* 通过反射执行外部方法 * 通过反射执行外部方法
* *
@ -122,6 +123,7 @@ public abstract class BaseActivity extends QMUIActivity implements NetBroadcastR
super.onDestroy(); super.onDestroy();
} }
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) { if (keyCode == KeyEvent.KEYCODE_BACK) {

36
app/src/main/java/com/techscan/wk/model/ProReqOrdeTaskBean.java

@ -8,20 +8,20 @@ public class ProReqOrdeTaskBean extends LitePalSupport {
@Column(defaultValue = "0") @Column(defaultValue = "0")
private Boolean complete; //是否完成 private Boolean complete; //是否完成
@Column(defaultValue = "0.00") @Column(defaultValue = "0.00")
private Double completeNum; //已完成数量
private double completeNum; //已完成数量
private long rowid; //自定义行id private long rowid; //自定义行id
private String aufnr;//订单号 private String aufnr;//订单号
private String ausch;//部件废品百分数 private String ausch;//部件废品百分数
private Double bdmng;//组件用量 //任务数量
private Double bmeng;//基本数量
private Double enmng;//提货数
private double bdmng;//组件用量 //任务数量
private double bmeng;//基本数量
private double enmng;//提货数
private String erfme;//组件单位 private String erfme;//组件单位
private Double erfmg;//组件用量(BOM单位)
private double erfmg;//组件用量(BOM单位)
private String lgort;//库存地点 private String lgort;//库存地点
private String lgortName;//库存地点名称 private String lgortName;//库存地点名称
private String matnr;//组件物料编码 private String matnr;//组件物料编码
private String meins;//组件单位 //任务数量用到的单位 private String meins;//组件单位 //任务数量用到的单位
private Double menge;//单位用量
private double menge;//单位用量
private String posnr;//行项目 private String posnr;//行项目
private String rgekz;//反冲 private String rgekz;//反冲
private String rsnum;//预留号 private String rsnum;//预留号
@ -61,11 +61,11 @@ public class ProReqOrdeTaskBean extends LitePalSupport {
this.complete = complete; this.complete = complete;
} }
public Double getCompleteNum() {
public double getCompleteNum() {
return completeNum; return completeNum;
} }
public void setCompleteNum(Double completeNum) {
public void setCompleteNum(double completeNum) {
this.completeNum = completeNum; this.completeNum = completeNum;
} }
@ -85,27 +85,27 @@ public class ProReqOrdeTaskBean extends LitePalSupport {
this.ausch = ausch; this.ausch = ausch;
} }
public Double getBdmng() {
public double getBdmng() {
return bdmng; return bdmng;
} }
public void setBdmng(Double bdmng) {
public void setBdmng(double bdmng) {
this.bdmng = bdmng; this.bdmng = bdmng;
} }
public Double getBmeng() {
public double getBmeng() {
return bmeng; return bmeng;
} }
public void setBmeng(Double bmeng) {
public void setBmeng(double bmeng) {
this.bmeng = bmeng; this.bmeng = bmeng;
} }
public Double getEnmng() {
public double getEnmng() {
return enmng; return enmng;
} }
public void setEnmng(Double enmng) {
public void setEnmng(double enmng) {
this.enmng = enmng; this.enmng = enmng;
} }
@ -117,11 +117,11 @@ public class ProReqOrdeTaskBean extends LitePalSupport {
this.erfme = erfme; this.erfme = erfme;
} }
public Double getErfmg() {
public double getErfmg() {
return erfmg; return erfmg;
} }
public void setErfmg(Double erfmg) {
public void setErfmg(double erfmg) {
this.erfmg = erfmg; this.erfmg = erfmg;
} }
@ -149,11 +149,11 @@ public class ProReqOrdeTaskBean extends LitePalSupport {
this.meins = meins; this.meins = meins;
} }
public Double getMenge() {
public double getMenge() {
return menge; return menge;
} }
public void setMenge(Double menge) {
public void setMenge(double menge) {
this.menge = menge; this.menge = menge;
} }

26
app/src/main/java/com/techscan/wk/rxretrofit/BaseObserver.java

@ -102,18 +102,28 @@ public abstract class BaseObserver<T> implements Observer<T> {
private void showProgressDialog() { private void showProgressDialog() {
if (context == null)return; if (context == null)return;
qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
.setTipWord(context.getString(R.string.Loading))
.create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
if(isContextExisted(context)){
qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
.setTipWord(context.getString(R.string.Loading))
.create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
}
} }
private void closeProgressDialog() { private void closeProgressDialog() {
if (qmuiTipDialog == null) return; if (qmuiTipDialog == null) return;
if (qmuiTipDialog.isShowing())
qmuiTipDialog.dismiss();
try {
if(isContextExisted(context)){
if (qmuiTipDialog.isShowing())
qmuiTipDialog.dismiss();
}
} catch (Exception e) {
e.printStackTrace();
}
} }
/** /**

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

@ -105,7 +105,7 @@ public class HttpMethods {
.retryOnConnectionFailure(true) .retryOnConnectionFailure(true)
.writeTimeout(TIME_OUT, TimeUnit.SECONDS) .writeTimeout(TIME_OUT, TimeUnit.SECONDS)
.connectTimeout(TIME_OUT_CONN, TimeUnit.SECONDS) .connectTimeout(TIME_OUT_CONN, TimeUnit.SECONDS)
.readTimeout(TIME_OUT_CONN, TimeUnit.SECONDS)
.readTimeout(TIME_OUT_CONN * 5, TimeUnit.SECONDS)
.build(); .build();
/* /*

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

@ -72,6 +72,7 @@ import com.techscan.wk.widgets.CustomBottomSheet;
import org.litepal.LitePal; import org.litepal.LitePal;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -124,8 +125,6 @@ public class ProReqActivity extends CommonFunctionActivity {
private Map<String, List<String>> scanBarcodeListMap;//存放条码扫描明细 private Map<String, List<String>> scanBarcodeListMap;//存放条码扫描明细
private ProReqOrderBean proReqOrderBean; private ProReqOrderBean proReqOrderBean;
private boolean isSave = false; private boolean isSave = false;
private AnalysisBarBean barDataBean;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -336,7 +335,25 @@ public class ProReqActivity extends CommonFunctionActivity {
getBarcodeInfo(value); getBarcodeInfo(value);
break; break;
case "quantity": case "quantity":
addDetailCheck(value);
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; break;
default: default:
break; break;
@ -350,7 +367,7 @@ public class ProReqActivity extends CommonFunctionActivity {
* @param value 条码内容 * @param value 条码内容
*/ */
private void getBarcodeInfo(String value) { private void getBarcodeInfo(String value) {
barDataBean = BarAnalysisUtils.analysisBarcode(value);
AnalysisBarBean barDataBean = BarAnalysisUtils.analysisBarcode(value);
String materiel = barDataBean.getMateriel(); String materiel = barDataBean.getMateriel();
if (TextUtils.isEmpty(materiel)) { if (TextUtils.isEmpty(materiel)) {
setNextFocus("barcode"); setNextFocus("barcode");
@ -408,7 +425,7 @@ public class ProReqActivity extends CommonFunctionActivity {
//判断是否开启 扫描自动加入明细 //判断是否开启 扫描自动加入明细
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true); boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true);
if (aBoolean) { if (aBoolean) {
new Handler().postDelayed(() -> addDetailCheck(barDataBean.getQuantity()), 300);
new Handler().postDelayed(() -> addDetailCheck(barDataBean), 200);
} }
}); });
@ -418,7 +435,7 @@ public class ProReqActivity extends CommonFunctionActivity {
/** /**
* 加入明细前校验 * 加入明细前校验
*/ */
private void addDetailCheck(String quantity) {
private void addDetailCheck(AnalysisBarBean barDataBean) {
if (LitePal.count(ProReqOrdeTaskBean.class) == 0) { if (LitePal.count(ProReqOrdeTaskBean.class) == 0) {
showError(getString(R.string.Please_scan_the_ticket_number_first)); showError(getString(R.string.Please_scan_the_ticket_number_first));
setNextFocus("AUFNR"); setNextFocus("AUFNR");
@ -429,7 +446,7 @@ public class ProReqActivity extends CommonFunctionActivity {
setNextFocus("barcode"); setNextFocus("barcode");
return; return;
} }
String quantity = barDataBean.getQuantity();
if (TextUtils.isEmpty(quantity)) { if (TextUtils.isEmpty(quantity)) {
setNextFocus("quantity"); setNextFocus("quantity");
showError(getString(R.string.The_quantity_cannot_be_empty)); showError(getString(R.string.The_quantity_cannot_be_empty));
@ -441,20 +458,21 @@ public class ProReqActivity extends CommonFunctionActivity {
setNextFocus("quantity"); setNextFocus("quantity");
return; return;
} }
BigDecimal quantityBD = new BigDecimal(quantity);
//当前加入明细的数量 //当前加入明细的数量
double currenScanNum = Double.parseDouble(quantity);
double currenScanNum = quantityBD.doubleValue();
if (currenScanNum <= 0) { if (currenScanNum <= 0) {
showError(getString(R.string.The_number_of_scanned_codes_must_be_greater_than_0)); showError(getString(R.string.The_number_of_scanned_codes_must_be_greater_than_0));
return; return;
} }
//条码数量
String barNum = barDataBean.getQuantity();
String packageNumber = barDataBean.getPackageNumber(); String packageNumber = barDataBean.getPackageNumber();
if (!TextUtils.isEmpty(barNum) && checkNumber(barNum)) {
if (!TextUtils.isEmpty(quantity) && checkNumber(quantity) && packageNumber != null && !TextUtils.isEmpty(packageNumber)) {
//计算出当前箱号在明细中已扫描的数量 //计算出当前箱号在明细中已扫描的数量
Double hisScanNum = LitePal.where("zboxid = ? ", packageNumber).sum(ProReqDetailBean.class, "erfmg", double.class); Double hisScanNum = LitePal.where("zboxid = ? ", packageNumber).sum(ProReqDetailBean.class, "erfmg", double.class);
double finalHisScanNum = hisScanNum; double finalHisScanNum = hisScanNum;
double finalBarNum = Double.parseDouble(barNum);
double finalBarNum = Double.parseDouble(quantity);
double finalCurrenScanNum = currenScanNum; double finalCurrenScanNum = currenScanNum;
HttpMethods.getInstance().getByzboxid(packageNumber, new BaseObserver<ResponseBody>(context) { HttpMethods.getInstance().getByzboxid(packageNumber, new BaseObserver<ResponseBody>(context) {
@Override @Override
@ -476,7 +494,7 @@ public class ProReqActivity extends CommonFunctionActivity {
DialogUtil.showErrorInfoDialog(context, "当前数量" + quantity + ",历史已扫数量" + (finalHisScanNum + data) + DialogUtil.showErrorInfoDialog(context, "当前数量" + quantity + ",历史已扫数量" + (finalHisScanNum + data) +
",已扫数量总和超过条码数量" + finalBarNum + ",请确认"); ",已扫数量总和超过条码数量" + finalBarNum + ",请确认");
} else { } else {
addDetail();
addDetail(barDataBean,currenScanNum);
} }
} }
} }
@ -488,7 +506,7 @@ public class ProReqActivity extends CommonFunctionActivity {
}); });
} else { } else {
addDetail();
addDetail(barDataBean,currenScanNum);
} }
} }
@ -496,7 +514,7 @@ public class ProReqActivity extends CommonFunctionActivity {
/** /**
* 加入明细方法 * 加入明细方法
*/ */
private void addDetail() {
private void addDetail(AnalysisBarBean barDataBean,double currenScanNum) {
//DynamicFormBean ZLYSJItem = dynamicFormAdapter.getItemByFieldName("ZLYSJ");//领用时间 //DynamicFormBean ZLYSJItem = dynamicFormAdapter.getItemByFieldName("ZLYSJ");//领用时间
DynamicFormBean ZCJBMItem = dynamicFormAdapter.getItemByFieldName("ZCJBM");//车间编码 DynamicFormBean ZCJBMItem = dynamicFormAdapter.getItemByFieldName("ZCJBM");//车间编码
DynamicFormBean ZGWHItem = dynamicFormAdapter.getItemByFieldName("ZGWH");//工位号 DynamicFormBean ZGWHItem = dynamicFormAdapter.getItemByFieldName("ZGWH");//工位号
@ -505,7 +523,6 @@ public class ProReqActivity extends CommonFunctionActivity {
DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料编码 DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料编码
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号 DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
DynamicFormBean ZPCItem = dynamicFormAdapter.getItemByFieldName("ZPC");//批次 DynamicFormBean ZPCItem = dynamicFormAdapter.getItemByFieldName("ZPC");//批次
DynamicFormBean quantityItem = dynamicFormAdapter.getItemByFieldName("quantity");//数量
DynamicFormBean erfmeItem = dynamicFormAdapter.getItemByFieldName("erfme");//单位 DynamicFormBean erfmeItem = dynamicFormAdapter.getItemByFieldName("erfme");//单位
if (TextUtils.isEmpty(lgortItem.getValue())) { if (TextUtils.isEmpty(lgortItem.getValue())) {
@ -513,14 +530,13 @@ public class ProReqActivity extends CommonFunctionActivity {
return; return;
} }
String barcode = barcodeItem.getValue();
String barcode = barDataBean.getBarcode();
if (TextUtils.isEmpty(barcode)) { if (TextUtils.isEmpty(barcode)) {
showError(getString(R.string.The_bar_code_cannot_be_blank)); showError(getString(R.string.The_bar_code_cannot_be_blank));
setNextFocus("barcode"); setNextFocus("barcode");
return; return;
} }
LitePal LitePal
//.where("matnr = ? and complete = ?", MATNRItem.getValue(), "0") //.where("matnr = ? and complete = ?", MATNRItem.getValue(), "0")
.where("matnr = ?", MATNRItem.getValue()) .where("matnr = ?", MATNRItem.getValue())
@ -531,7 +547,7 @@ public class ProReqActivity extends CommonFunctionActivity {
showError(getString(R.string.There_is_no_data_of_the_same_dimension_in_the_task_list)); showError(getString(R.string.There_is_no_data_of_the_same_dimension_in_the_task_list));
return; return;
} }
double scanQuantity = Double.parseDouble(quantityItem.getValue());
double scanQuantity = currenScanNum;
String gid = System.currentTimeMillis() + ""; String gid = System.currentTimeMillis() + "";
//加入明细,并且可以超量,每次只匹配任务一行 //加入明细,并且可以超量,每次只匹配任务一行
for (ProReqOrdeTaskBean bean : proReqOrdeTaskBeans) { for (ProReqOrdeTaskBean bean : proReqOrdeTaskBeans) {
@ -546,7 +562,7 @@ public class ProReqActivity extends CommonFunctionActivity {
bean.save(); bean.save();
ProReqDetailBean detailBean = new ProReqDetailBean(); ProReqDetailBean detailBean = new ProReqDetailBean();
detailBean.setBarcode(barDataBean.getBarcode());
detailBean.setBarcode(barcode);
detailBean.setTaskRowId(bean.getRowid()); detailBean.setTaskRowId(bean.getRowid());
detailBean.setGid(gid); detailBean.setGid(gid);
detailBean.setAufnr(bean.getAufnr()); detailBean.setAufnr(bean.getAufnr());
@ -581,7 +597,6 @@ public class ProReqActivity extends CommonFunctionActivity {
scanBarcodeListMap.put(gid, keyBarcodes); scanBarcodeListMap.put(gid, keyBarcodes);
runOnUiThread(() -> { runOnUiThread(() -> {
barDataBean = null;
SoundUtils.playSound(this, R.raw.ok); SoundUtils.playSound(this, R.raw.ok);
if (KeyboardUtils.isSoftInputVisible(context)) { if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context); KeyboardUtils.hideSoftInput(context);
@ -626,7 +641,7 @@ public class ProReqActivity extends CommonFunctionActivity {
} }
List<ProReqOrderBean> data = baseResponseBean.getData(); List<ProReqOrderBean> data = baseResponseBean.getData();
if (data.size() == 0) {
if (data == null || data.size() == 0) {
showError(getString(R.string.No_data_was_obtained)); showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR"); setNextFocus("AUFNR");
showTaskDetailBadgeNum(); showTaskDetailBadgeNum();
@ -939,7 +954,7 @@ public class ProReqActivity extends CommonFunctionActivity {
} }
} }
dynamicFormAdapter.notifyDataSetChanged(); dynamicFormAdapter.notifyDataSetChanged();
}, 200);
}, 100);
} }

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

@ -50,10 +50,12 @@ import com.techscan.wk.rxbus.RxBus;
import com.techscan.wk.rxretrofit.BaseObserver; import com.techscan.wk.rxretrofit.BaseObserver;
import com.techscan.wk.rxretrofit.BaseResponseBean; import com.techscan.wk.rxretrofit.BaseResponseBean;
import com.techscan.wk.rxretrofit.HttpMethods; import com.techscan.wk.rxretrofit.HttpMethods;
import com.techscan.wk.rxretrofit.exception.ApiException;
import com.techscan.wk.ui.baseAct.BasicDataListActivity; import com.techscan.wk.ui.baseAct.BasicDataListActivity;
import com.techscan.wk.ui.scan.CustomCaptureActivity; import com.techscan.wk.ui.scan.CustomCaptureActivity;
import com.techscan.wk.utils.AntiShakeUtils; import com.techscan.wk.utils.AntiShakeUtils;
import com.techscan.wk.utils.BarAnalysisUtils; import com.techscan.wk.utils.BarAnalysisUtils;
import com.techscan.wk.utils.DialogUtil;
import com.techscan.wk.utils.FindUtils; import com.techscan.wk.utils.FindUtils;
import com.techscan.wk.utils.SoundUtils; import com.techscan.wk.utils.SoundUtils;
import com.techscan.wk.utils.ToastUtil; import com.techscan.wk.utils.ToastUtil;
@ -65,6 +67,9 @@ import org.litepal.LitePal;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -118,7 +123,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
private Map<String, List<String>> scanBarcodeListMap;//存放条码扫描明细 private Map<String, List<String>> scanBarcodeListMap;//存放条码扫描明细
private boolean isSave = false; private boolean isSave = false;
private String[] items = new String[]{}; private String[] items = new String[]{};
private AnalysisBarBean barDataBean;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -422,7 +426,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
break; break;
case "PacketBarcode": case "PacketBarcode":
barDataBean = null;
if (TextUtils.isEmpty(value)) { if (TextUtils.isEmpty(value)) {
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
showError(getString(R.string.The_packet_barcode_cannot_be_empty)); showError(getString(R.string.The_packet_barcode_cannot_be_empty));
@ -465,12 +468,58 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
break; break;
//报工数量 //报工数量
case "GMNGA": case "GMNGA":
DynamicFormBean PacketBarcodeItem = dynamicFormAdapter.getItemByFieldName("PacketBarcode");//包条码
String barcodeItemValue = PacketBarcodeItem.getValue();
if (TextUtils.isEmpty(barcodeItemValue)) {
setNextFocus("PacketBarcode");
showError(getString(R.string.The_packet_barcode_cannot_be_empty));
return;
}
checkBarcode = BarAnalysisUtils.checkBarcodePresuffix(barcodeItemValue);
if (!checkBarcode) {
showError(getString(R.string.The_barcode_format_is_incorrect) + barcodeItemValue);
for (int i = 0; i < dynamicFormBeans.size(); i++) {
if (dynamicFormBeans.get(i).getFieldName().equals("AUFNR") ||
dynamicFormBeans.get(i).equals("ScanRule") ||
dynamicFormBeans.get(i).equals("FlowOrder")) {
continue;
}
dynamicFormBeans.get(i).setValue("");
}
setNextFocus("PacketBarcode");
return;
}
//判断条码是否已经被扫描
if (isInBarcodeList(scanBarcodeListMap, barcodeItemValue)) {
showError(getString(R.string.Do_not_scan_the_barcode_again));
for (int i = 0; i < dynamicFormBeans.size(); i++) {
if (dynamicFormBeans.get(i).getFieldName().equals("AUFNR") ||
dynamicFormBeans.get(i).equals("ScanRule") ||
dynamicFormBeans.get(i).equals("FlowOrder")) {
continue;
}
dynamicFormBeans.get(i).setValue("");
}
setNextFocus("PacketBarcode");
return;
}
DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料号 DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料号
if (TextUtils.isEmpty(MATNRItem.getValue())) { if (TextUtils.isEmpty(MATNRItem.getValue())) {
showError(getString(R.string.Please_scan_the_package_barcode_first)); showError(getString(R.string.Please_scan_the_package_barcode_first));
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
return; return;
} }
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_number_of_reports_cannot_be_empty));
setNextFocus("GMNGA");
return;
}
AnalysisBarBean barBean = BarAnalysisUtils.analysisBarcode(PacketBarcodeItem.getValue());
barBean.setQuantity(value);
LitePal LitePal
.where("matnr = ?", MATNRItem.getValue()) .where("matnr = ?", MATNRItem.getValue())
.findAsync(FlowReportWorkProOrderBean.class) .findAsync(FlowReportWorkProOrderBean.class)
@ -481,7 +530,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter.setFocusById(dynamicFormBean.getId()); dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return; return;
} }
addDetailCheck(orderBeans.get(0), value);
addDetailCheck(orderBeans.get(0), barBean);
}); });
break; break;
@ -525,10 +574,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} }
} }
barDataBean = barBean;
//先根据条码物料信息比对工单产品信息 //先根据条码物料信息比对工单产品信息
LitePal LitePal
.where("matnr = ?", barDataBean.getMateriel())
.where("matnr = ?", barBean.getMateriel())
.findAsync(FlowReportWorkProOrderBean.class) .findAsync(FlowReportWorkProOrderBean.class)
.listen(orderBeans -> { .listen(orderBeans -> {
if (orderBeans.size() == 0) { if (orderBeans.size() == 0) {
@ -541,19 +589,19 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
for (DynamicFormBean d : dynamicFormBeans) { for (DynamicFormBean d : dynamicFormBeans) {
switch (d.getFieldName()) { switch (d.getFieldName()) {
case "MATNR"://物料号 case "MATNR"://物料号
d.setValue(barDataBean.getMateriel());
d.setValue(barBean.getMateriel());
d.setFocus(false); d.setFocus(false);
break; break;
case "ZXTPC"://包装容器号 --箱号 case "ZXTPC"://包装容器号 --箱号
d.setValue(barDataBean.getPackageNumber());
d.setValue(barBean.getPackageNumber());
d.setFocus(false); d.setFocus(false);
break; break;
case "ZPC"://批次 case "ZPC"://批次
d.setValue(barDataBean.getBatch());
d.setValue(barBean.getBatch());
d.setFocus(false); d.setFocus(false);
break; break;
case "GMNGA"://报工数量 case "GMNGA"://报工数量
d.setValue(barDataBean.getQuantity());
d.setValue(barBean.getQuantity());
d.setFocus(false); d.setFocus(false);
break; break;
default: default:
@ -564,7 +612,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter.setList(dynamicFormBeans); dynamicFormAdapter.setList(dynamicFormBeans);
dynamicFormAdapter.notifyDataSetChanged(); dynamicFormAdapter.notifyDataSetChanged();
new Handler().postDelayed(() -> addDetailCheck(orderBeans.get(0), barDataBean.getQuantity()), 300);
new Handler().postDelayed(() -> addDetailCheck(orderBeans.get(0), barBean), 200);
}); });
@ -573,25 +621,26 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
/** /**
* 加入明细前校验 * 加入明细前校验
*/ */
private void addDetailCheck(FlowReportWorkProOrderBean workProOrderBean, String quantity) {
if (barDataBean == null) {
private void addDetailCheck(FlowReportWorkProOrderBean workProOrderBean, AnalysisBarBean barBean) {
if (barBean == null) {
showError(getString(R.string.The_packet_barcode_cannot_be_empty)); showError(getString(R.string.The_packet_barcode_cannot_be_empty));
setNextFocus("PacketBarcode"); setNextFocus("PacketBarcode");
return; return;
} }
int count = LitePal.where("zxtpc =?", barDataBean.getPackageNumber()).count(FlowReportWorkDetailBean.class);
int count = LitePal.where("zxtpc =?", barBean.getPackageNumber()).count(FlowReportWorkDetailBean.class);
if (count > 0) { if (count > 0) {
showError(getString(R.string.The_case_number_cannot_be_scanned_repeatedly)); showError(getString(R.string.The_case_number_cannot_be_scanned_repeatedly));
return; return;
} }
String quantity = barBean.getQuantity();
if (TextUtils.isEmpty(quantity)) { if (TextUtils.isEmpty(quantity)) {
showError(getString(R.string.The_number_of_reports_cannot_be_empty)); showError(getString(R.string.The_number_of_reports_cannot_be_empty));
setNextFocus("GMNGA"); setNextFocus("GMNGA");
return; return;
} }
if (Double.parseDouble(quantity) <= 0) {
BigDecimal gmnga = new BigDecimal(quantity);//当前扫描的报工数量
if (gmnga.doubleValue() <= 0) {
showError(getString(R.string.The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0)); showError(getString(R.string.The_number_of_jobs_reported_cannot_be_0_or_smaller_than_0));
setNextFocus("GMNGA"); setNextFocus("GMNGA");
return; return;
@ -613,7 +662,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
BigDecimal psmngdecimal = new BigDecimal(psmng);//订单数量 BigDecimal psmngdecimal = new BigDecimal(psmng);//订单数量
BigDecimal gwemgdecimal = new BigDecimal(gwemg);//已交货数量 BigDecimal gwemgdecimal = new BigDecimal(gwemg);//已交货数量
BigDecimal gmnga = new BigDecimal(quantity);//当前扫描的报工数量
//统计明细里已报工的数量 //统计明细里已报工的数量
Double sum = LitePal.sum(FlowReportWorkDetailBean.class, "gmnga", double.class); Double sum = LitePal.sum(FlowReportWorkDetailBean.class, "gmnga", double.class);
@ -641,12 +689,12 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
.addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss()) .addAction(getResources().getString(R.string.cancel_info), (dialog, index) -> dialog.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> { .addAction(getResources().getString(R.string.confirm_info), (dialog, index) -> {
dialog.dismiss(); dialog.dismiss();
addDetail(workProOrderBean);
addDetail(workProOrderBean, gmnga.doubleValue());
}) })
.create(R.style.QMUI_Dialog); .create(R.style.QMUI_Dialog);
qmuiDialog.show(); qmuiDialog.show();
} else { } else {
addDetail(workProOrderBean);
addDetail(workProOrderBean, gmnga.doubleValue());
} }
} }
@ -654,12 +702,11 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
/** /**
* 加入明细列表 * 加入明细列表
*/ */
private void addDetail(FlowReportWorkProOrderBean workProOrderBean) {
private void addDetail(FlowReportWorkProOrderBean workProOrderBean, double quantity) {
DynamicFormBean ScanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");//扫描规则 DynamicFormBean ScanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");//扫描规则
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单 DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单 DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单
DynamicFormBean PacketBarcodeItem = dynamicFormAdapter.getItemByFieldName("PacketBarcode");//包条码 DynamicFormBean PacketBarcodeItem = dynamicFormAdapter.getItemByFieldName("PacketBarcode");//包条码
DynamicFormBean gmngaItem = dynamicFormAdapter.getItemByFieldName("GMNGA");//报工数量
DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料号 DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料号
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号 DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
DynamicFormBean ZPCItem = dynamicFormAdapter.getItemByFieldName("ZPC");//批次 DynamicFormBean ZPCItem = dynamicFormAdapter.getItemByFieldName("ZPC");//批次
@ -706,7 +753,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setFlowOrders(flowOrderItem.getValue()); bean.setFlowOrders(flowOrderItem.getValue());
bean.setFlowOrders(flowOrderSb.substring(0, flowOrderSb.length() - 1)); bean.setFlowOrders(flowOrderSb.substring(0, flowOrderSb.length() - 1));
bean.setPacketBarcode(barcode); bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue());
bean.setGmnga(String.valueOf(quantity));
bean.setUeeto(workProOrderBean.getUeeto()); bean.setUeeto(workProOrderBean.getUeeto());
bean.setPsmng(workProOrderBean.getPsmng()); bean.setPsmng(workProOrderBean.getPsmng());
bean.setXmnga(""); bean.setXmnga("");
@ -719,7 +766,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
List<String> keyBarcodes = new ArrayList<>(); List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode); keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes); scanBarcodeListMap.put(gid, keyBarcodes);
barDataBean = null;
reInitUI(ScanRuleItem.getValue()); reInitUI(ScanRuleItem.getValue());
} else { } else {
showError(getString(R.string.Failed_to_join_details)); showError(getString(R.string.Failed_to_join_details));
@ -745,7 +791,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean.setMeinh(workProOrderBean.getAmein()); bean.setMeinh(workProOrderBean.getAmein());
bean.setFlowOrders(flowOrderItem.getValue()); bean.setFlowOrders(flowOrderItem.getValue());
bean.setPacketBarcode(barcode); bean.setPacketBarcode(barcode);
bean.setGmnga(gmngaItem.getValue());
bean.setGmnga(String.valueOf(quantity));
bean.setUeeto(workProOrderBean.getUeeto()); bean.setUeeto(workProOrderBean.getUeeto());
bean.setPsmng(workProOrderBean.getPsmng()); bean.setPsmng(workProOrderBean.getPsmng());
bean.setXmnga(""); bean.setXmnga("");
@ -756,7 +802,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
List<String> keyBarcodes = new ArrayList<>(); List<String> keyBarcodes = new ArrayList<>();
keyBarcodes.add(barcode); keyBarcodes.add(barcode);
scanBarcodeListMap.put(gid, keyBarcodes); scanBarcodeListMap.put(gid, keyBarcodes);
barDataBean = null;
reInitUI(ScanRuleItem.getValue()); reInitUI(ScanRuleItem.getValue());
} else { } else {
showError(getString(R.string.Failed_to_join_details)); showError(getString(R.string.Failed_to_join_details));
@ -982,7 +1027,11 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
@Override @Override
protected void onFailure(Throwable e) throws Exception { protected void onFailure(Throwable e) throws Exception {
CustomErrorDialog(e, FlowReportWorkActivity.this);
if (e instanceof SocketTimeoutException || e instanceof SocketException) {
DialogUtil.showErrorInfoDialog(context, "响应超时,请联系管理员确认数据是否已在处理,在继续下一步操作!!!");
} else {
CustomErrorDialog(e, FlowReportWorkActivity.this);
}
} }
}); });
@ -1120,15 +1169,21 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} }
} }
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finishActivity();
return true;
}
return super.onKeyDown(keyCode, event);
protected void doOnBackPressed() {
finishActivity();
} }
// @Override
// public boolean onKeyDown(int keyCode, KeyEvent event) {
// if (keyCode == KeyEvent.KEYCODE_BACK) {
// finishActivity();
// return true;
// }
// return super.onKeyDown(keyCode, event);
// }
/** /**
* 判断界面是否填写数据 * 判断界面是否填写数据
* *

Loading…
Cancel
Save