Browse Source

1.0.5

master
ml 9 months ago
parent
commit
d379bd539e
  1. 2
      app/build.gradle
  2. 2
      app/release/output.json
  3. 12
      app/src/main/AndroidManifest.xml
  4. 2
      app/src/main/assets/FlowReportWorkUI.json
  5. 3
      app/src/main/java/com/techscan/wk/model/AnalysisBarBean.java
  6. 9
      app/src/main/java/com/techscan/wk/model/ReportWorkErrorInfoBean.java
  7. 9
      app/src/main/java/com/techscan/wk/model/ReportWorkOffsetBean.java
  8. 133
      app/src/main/java/com/techscan/wk/ui/proreq/ProReqActivity.java
  9. 26
      app/src/main/java/com/techscan/wk/ui/query/FlowOrderQueryActivity.java
  10. 192
      app/src/main/java/com/techscan/wk/ui/reportwork/FlowReportWorkActivity.java
  11. 12
      app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkActivity.java
  12. 6
      app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkErrorListActivity.java
  13. 31
      app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkOffsetActivity.java
  14. 5
      app/src/main/java/com/techscan/wk/utils/BarAnalysisUtils.java
  15. 1
      app/src/main/res/values-en/strings.xml
  16. 1
      app/src/main/res/values-th-rTH/strings.xml
  17. 1
      app/src/main/res/values/strings.xml

2
app/build.gradle

@ -9,7 +9,7 @@ android {
//noinspection ExpiredTargetSdkVersion
targetSdkVersion 29
versionCode 1
versionName "1.0.3"
versionName "1.0.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk {
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.3","enabled":true,"outputFile":"维科上料报工系统_v1.0.3.apk","fullName":"release","baseName":"release"},"path":"维科上料报工系统_v1.0.3.apk","properties":{}}]
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.5","enabled":true,"outputFile":"维科上料报工系统_v1.0.5.apk","fullName":"release","baseName":"release"},"path":"维科上料报工系统_v1.0.5.apk","properties":{}}]

12
app/src/main/AndroidManifest.xml

@ -34,24 +34,25 @@
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
tools:replace="android:icon"
tools:targetApi="n">
<activity
android:name="com.techscan.wk.ui.baseAct.BasicDataListActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.reportwork.FlowReportWorkActivity"
android:name=".ui.reportwork.FlowReportWorkActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.reportwork.ReportWorkActivity"
android:name=".ui.reportwork.ReportWorkActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.reportwork.ReportWorkErrorListActivity"
android:name=".ui.reportwork.ReportWorkErrorListActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.reportwork.ReportWorkOffsetActivity"
android:name=".ui.reportwork.ReportWorkOffsetActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
@ -70,12 +71,10 @@
android:name=".ui.baseAct.LgortListActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name=".ui.reportwork.ConfigSettingActivity"
android:exported="false"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
<activity
android:name="com.techscan.wk.ui.login.SettingActivity"
android:screenOrientation="portrait"
@ -100,7 +99,6 @@
</activity>
<activity android:name="com.techscan.wk.ui.MainActivity" />
<receiver android:name="com.techscan.wk.broadcast.NetBroadcastReceiver">
<intent-filter>
<action

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

@ -31,7 +31,7 @@
"isFocus": false,
"language": {
"zh": "工单号",
"en": "Production order Work order number",
"en": "Work order number",
"th": "หมายเลขหน้า"
}
},

3
app/src/main/java/com/techscan/wk/model/AnalysisBarBean.java

@ -1,5 +1,8 @@
package com.techscan.wk.model;
/**
* ml
*/
public class AnalysisBarBean {
private String factory;
private String materiel;

9
app/src/main/java/com/techscan/wk/model/ReportWorkErrorInfoBean.java

@ -23,8 +23,17 @@ public class ReportWorkErrorInfoBean{
private String werks;
private int xmnga;
private String zxtpc;
private String zpc;
private String zzt;
public String getZpc() {
return zpc;
}
public void setZpc(String zpc) {
this.zpc = zpc;
}
public boolean isSelect() {
return select;
}

9
app/src/main/java/com/techscan/wk/model/ReportWorkOffsetBean.java

@ -23,8 +23,17 @@ public class ReportWorkOffsetBean {
private String werks;
private int xmnga;
private String zxtpc;
private String zpc;
private String zzt;
public String getZpc() {
return zpc;
}
public void setZpc(String zpc) {
this.zpc = zpc;
}
public String getSelect() {
return select;
}

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

@ -88,7 +88,9 @@ import okhttp3.ResponseBody;
import q.rorbin.badgeview.QBadgeView;
/**
* 生产上料
* Description:生产上料
* @author MULEI
* @date 2024/9/11
*/
public class ProReqActivity extends CommonFunctionActivity {
@ -262,18 +264,15 @@ public class ProReqActivity extends CommonFunctionActivity {
}
switch (dynamicFormBean.getFieldName()) {
case "AUFNR":
// DynamicFormBean lgortItem = dynamicFormAdapter.getItemByFieldName("lgort");
// if (TextUtils.isEmpty(lgortItem.getValue())) {
// showError(getString(R.string.Please_select_a_stock_location));
// dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
// return;
// }
if (TextUtils.isEmpty(value)) {
showError(getString(R.string.The_work_order_number_cannot_be_empty));
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
return;
}
if (LitePal.count(ProReqOrdeTaskBean.class) > 0) {
if (LitePal.count(ProReqOrdeTaskBean.class) == 0) {
query(value);
return;
}
new QMUIDialog.MessageDialogBuilder(context)
.setTitle(getResources().getString(R.string.tips_title))
.setMessage(getString(R.string.Do_you_want_to_rescan_the_work_order))
@ -300,9 +299,6 @@ public class ProReqActivity extends CommonFunctionActivity {
});
})
.create(R.style.QMUI_Dialog).show();
return;
}
query(value);
break;
case "ZCJBM":
setNextFocus("ZGWH");
@ -329,14 +325,12 @@ public class ProReqActivity extends CommonFunctionActivity {
showError(getString(R.string.There_is_no_aterial_information_in_the_barcode_please_confirm));
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":
@ -348,7 +342,11 @@ public class ProReqActivity extends CommonFunctionActivity {
});
}
/**
* 解析条码信息并比对工单产品信息
*
* @param value 条码内容
*/
private void getBarcodeInfo(String value) {
AnalysisBarBean bean = BarAnalysisUtils.analysisBarcode(value);
LitePal
@ -399,6 +397,7 @@ public class ProReqActivity extends CommonFunctionActivity {
dynamicFormAdapter.setList(dynamicFormBeans);
dynamicFormAdapter.notifyDataSetChanged();
//判断是否开启 扫描自动加入明细
boolean aBoolean = PreferencesUtil.getBoolean(context, AppConst.SCAN_ADD_DETAIL, true);
if (aBoolean) {
new Handler().postDelayed(new Runnable() {
@ -413,6 +412,11 @@ public class ProReqActivity extends CommonFunctionActivity {
}
/**
* 根据工单获取工单物料信息
*
* @param id 工单号
*/
private void query(String id) {
HttpMethods.getInstance().getOrderInfo(id, new BaseObserver<ResponseBody>(context) {
@Override
@ -421,41 +425,49 @@ public class ProReqActivity extends CommonFunctionActivity {
Type objectType = new TypeToken<BaseResponseBean<List<ProReqOrderBean>>>() {
}.getType();
BaseResponseBean<List<ProReqOrderBean>> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
if (baseResponseBean.getCode() != 200) {
showError(baseResponseBean.getMsg());
setNextFocus("AUFNR");
showTaskDetailBadgeNum();
return;
}
List<ProReqOrderBean> data = baseResponseBean.getData();
if (data.size() > 0) {
if (data.size() == 0) {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR");
showTaskDetailBadgeNum();
return;
}
proReqOrderBean = data.get(0);
List<ProReqOrdeTaskBean> item = proReqOrderBean.getItem();
if (item.size() > 0) {
if (item.size() == 0) {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR");
showTaskDetailBadgeNum();
return;
}
QMUITipDialog qmuiTipDialog = new QMUITipDialog.Builder(context).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING).create();
qmuiTipDialog.setCancelable(false);
qmuiTipDialog.setCanceledOnTouchOutside(false);
qmuiTipDialog.show();
setNextFocus("ZCJBM");
for (int i = 0; i < item.size(); i++) {
ProReqOrdeTaskBean taskBean = item.get(i);
taskBean.setRowid(System.currentTimeMillis());
taskBean.save();
}
showTaskDetailBadgeNum();
qmuiTipDialog.dismiss();
} else {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR");
}
} else {
showError(getString(R.string.No_data_was_obtained));
setNextFocus("AUFNR");
}
} else {
showError(baseResponseBean.getMsg());
setNextFocus("AUFNR");
}
showTaskDetailBadgeNum();
setNextFocus("ZCJBM");
}
@Override
protected void onFailure(Throwable e) throws Exception {
showTaskDetailBadgeNum();
setNextFocus("AUFNR");
SoundUtils.playSound(ProReqActivity.this, R.raw.warning);
CustomErrorDialog(e, ProReqActivity.this);
@ -463,6 +475,9 @@ public class ProReqActivity extends CommonFunctionActivity {
});
}
/**
* 加入明细方法
*/
private void addDetail() {
DynamicFormBean ZLYSJItem = dynamicFormAdapter.getItemByFieldName("ZLYSJ");//领用时间
DynamicFormBean ZCJBMItem = dynamicFormAdapter.getItemByFieldName("ZCJBM");//车间编码
@ -584,48 +599,6 @@ public class ProReqActivity extends CommonFunctionActivity {
});
// List<ProReqDetailBean> detailBeanList = new ArrayList<>();
// for (ProReqOrdeTaskBean bean : proReqOrdeTaskBeans) {
// double taskNum = bean.getBdmng();
// double completeNum = bean.getCompleteNum();
// if (completeNum == taskNum) continue;
// double needNum = taskNum - completeNum;
//
// ProReqDetailBean detailBean = new ProReqDetailBean();
//
// if (scanQuantity < needNum) {
// bean.setCompleteNum(scanQuantity+completeNum);
// bean.setComplete(false);
// detailBean.setBdmng(scanQuantity);
// detailBeanList.add(detailBean);
// break;
// } else if (scanQuantity == needNum) {
// bean.setCompleteNum(scanQuantity+completeNum);
// bean.setComplete(true);
//
// detailBean.setBdmng(scanQuantity);
// detailBeanList.add(detailBean);
// break;
// } else if (scanQuantity > needNum) {
// double v = scanQuantity - needNum;
// scanQuantity = v;
// bean.setCompleteNum(needNum + completeNum);
// bean.setComplete(false);
// bean.save();
//
// detailBean.setBdmng(needNum);
// detailBeanList.add(detailBean);
// }
// }
//
// LitePal.saveAllAsync(detailBeanList).listen(new SaveCallback() {
// @Override
// public void onFinish(boolean b) {
// ToastUtils.showLong("成功");
// }
// });
});
}
@ -709,7 +682,9 @@ public class ProReqActivity extends CommonFunctionActivity {
}
}
/**
* 保存数据
*/
private void saveData() {
LitePal.findAllAsync(ProReqDetailBean.class).listen(items -> {
if (items.size() == 0) {
@ -718,7 +693,7 @@ public class ProReqActivity extends CommonFunctionActivity {
}
isSave = true;
HashMap<String, Object> map = new HashMap<>();
map.put("imports", items);//唯一值
map.put("imports", items);
HttpMethods.getInstance().savePick(map, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody responseBody) throws Exception {
@ -727,7 +702,10 @@ public class ProReqActivity extends CommonFunctionActivity {
Type objectType = new TypeToken<BaseResponseBean<String>>() {
}.getType();
BaseResponseBean<String> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
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))
@ -737,9 +715,6 @@ public class ProReqActivity extends CommonFunctionActivity {
})
.create(R.style.QMUI_Dialog).show();
reInitUI();
} else {
showError(baseResponseBean.getMsg());
}
}
@Override

26
app/src/main/java/com/techscan/wk/ui/query/FlowOrderQueryActivity.java

@ -243,6 +243,11 @@ public class FlowOrderQueryActivity extends CommonFunctionActivity {
});
}
/**
* 根据流转单调用查询接口
*
* @param value 流转单号
*/
private void query(String value) {
HttpMethods.getInstance().getFlowReport(value, new BaseObserver<ResponseBody>(context) {
@Override
@ -251,19 +256,21 @@ public class FlowOrderQueryActivity extends CommonFunctionActivity {
Type objectType = new TypeToken<BaseResponseBean<List<FlowOrderQueryBean>>>() {
}.getType();
BaseResponseBean<List<FlowOrderQueryBean>> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
if (baseResponseBean.getCode() != 200) {
list.clear();
if (baseResponseBean.getData().size() > 0) {
list.addAll(baseResponseBean.getData());
} else {
ToastUtils.showLong(getString(R.string.No_data_was_obtained));
}
setTableData();
} else {
showError(baseResponseBean.getMsg());
return;
}
if (baseResponseBean.getData() == null || baseResponseBean.getData().size() == 0) {
ToastUtils.showLong(getString(R.string.No_data_was_obtained));
list.clear();
setTableData();
showError(baseResponseBean.getMsg());
return;
}
list.clear();
list.addAll(baseResponseBean.getData());
setTableData();
}
@Override
@ -309,8 +316,7 @@ public class FlowOrderQueryActivity extends CommonFunctionActivity {
dynamicFormAdapter.setItemByFieldName(selectDynamicFormBean.getFieldName(), selectDynamicFormBean);
}
switch (selectDynamicFormBean.getFieldName()) {
case "invcode":
case "barcode":
break;
}
}

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

@ -75,9 +75,10 @@ import butterknife.OnClick;
import io.reactivex.disposables.Disposable;
import okhttp3.ResponseBody;
import q.rorbin.badgeview.QBadgeView;
/**
* 流转单报工
* Description:流转单报工
* @author MULEI
* @date 2024/9/11
*/
public class FlowReportWorkActivity extends CommonFunctionActivity {
@ -122,7 +123,6 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
if (savedInstanceState == null) {
clearAllData();
}
StatusBarUtil.setStatusBarColor(this, ContextCompat.getColor(this, R.color.app_color_blue));
ButterKnife.bind(this);
setBody(true);
scanBarcodeListMap = new HashMap<>();
@ -286,17 +286,28 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
menuDialogBuilder.addItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (finalSelectIndex != -1 && which != finalSelectIndex) {
dialog.dismiss();
int count = LitePal.count(FlowOrderDetailBean.class);
int detailCount = LitePal.count(FlowReportWorkDetailBean.class);
if (rvUiHaveData() || count > 0 || detailCount > 0) {
if(which == finalSelectIndex || (!rvUiHaveData() && count == 0 && detailCount == 0)){
dialog.dismiss();
String item = items[which];
dynamicFormBean.setValue(item);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
llflowOrderDetail.setVisibility(View.VISIBLE);
} else {
llflowOrderDetail.setVisibility(View.GONE);
}
return;
}
dialog.dismiss();
new QMUIDialog.MessageDialogBuilder(context).setTitle(getResources().getString(R.string.tips_title))
.setCancelable(false)
.setMessage(getString(R.string.Do_you_want_to_change_scan_rules_Switching_will_clear_the_interface_and_all_scan_details))
.addAction(getResources().getString(R.string.cancel_info), (dialog1, index) -> dialog1.dismiss())
.addAction(getResources().getString(R.string.confirm_info), (dialog1, index) -> {
dialog1.dismiss();
initRvData();
scanBarcodeListMap = new HashMap<>();
LitePal.deleteAll(FlowOrderDetailBean.class);
@ -312,33 +323,11 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} else {
llflowOrderDetail.setVisibility(View.GONE);
}
dialog1.dismiss();
})
.create(R.style.QMUI_Dialog).show();
} else {
String item = items[which];
dynamicFormBean.setValue(item);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
llflowOrderDetail.setVisibility(View.VISIBLE);
} else {
llflowOrderDetail.setVisibility(View.GONE);
}
}
} else {
dialog.dismiss();
String item = items[which];
dynamicFormBean.setValue(item);
dynamicFormAdapter.setItemByFieldName(dynamicFormBean.getFieldName(), dynamicFormBean);
dynamicFormAdapter.notifyDataSetChanged();
if (item.equals(items[1])) {
llflowOrderDetail.setVisibility(View.VISIBLE);
} else {
llflowOrderDetail.setVisibility(View.GONE);
}
}
}
});
menuDialogBuilder.setCheckedIndex(selectIndex);
@ -348,29 +337,10 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter.setOnFormItemViewActionListener((dynamicFormBean, position) -> {
String value = dynamicFormBean.getValue();
switch (dynamicFormBean.getFieldName()) {
case "AUFNR":
// DynamicFormBean scanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");
//// String value1 = scanRuleItem.getValue();
//// if (TextUtils.isEmpty(value1)) {
//// dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
//// showError(getString(R.string.Select_a_scan_rule_first));
//// return;
//// }
// if (TextUtils.isEmpty(value)) {
// showError(getString(R.string.The_work_order_number_cannot_be_empty));
// return;
// }
// dynamicFormBean.setCanChange(false);
// dynamicFormAdapter.notifyDataSetChanged();
// setNextFocus("FlowOrder");
break;
case "FlowOrder":
//工单栏目
DynamicFormBean AUFNRItem = dynamicFormAdapter.getItemByFieldName("AUFNR");
// if (TextUtils.isEmpty(AUFNRItem.getValue())) {
// showError(getString(R.string.The_work_order_number_cannot_be_empty));
// return;
// }
//扫描规则栏目
DynamicFormBean scanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");
if (TextUtils.isEmpty(scanRuleItem.getValue())) {
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
@ -389,23 +359,35 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
return;
}
if (value.startsWith("T") && value.length() > 9) {
if (!value.startsWith("T")) {
ToastUtils.showLong(R.string.The_flow_order_number_format_is_incorrect);
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
if (value.length() < 9) {
ToastUtils.showLong(R.string.The_flow_order_number_format_is_incorrect);
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
//截取流程单号中的工单号
int t = value.indexOf("T");
String workOrder = value.substring(t + 1, 9);
String aufnrItemValue = AUFNRItem.getValue();
//如果工单号为空,直接赋值到工单号
if (TextUtils.isEmpty(aufnrItemValue)) {
AUFNRItem.setValue(workOrder);
AUFNRItem.setCanChange(false);
LitePal.deleteAll(FlowReportWorkProOrderBean.class);
query(workOrder, value, scanRuleItem, dynamicFormBean);
dynamicFormAdapter.setItemByFieldName(AUFNRItem.getFieldName(), AUFNRItem);
dynamicFormAdapter.notifyDataSetChanged();
} else {
query(workOrder, value, scanRuleItem, AUFNRItem, dynamicFormBean);
return;
}
//如果工单号不为空,判断扫描的工单号是否与上一次工单号一致。
//不一致提醒,不让继续操作
if (!workOrder.equals(aufnrItemValue)) {
ToastUtils.showLong(R.string.order_number_in_the_flow_order_is_inconsistent);
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
} else {
}
//如果是多个流转单一个箱码
if (scanRuleItem.getValue().equals(items[1])) {
LitePal
.where("flowOrder = ?", value)
@ -426,20 +408,12 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter.setFocusAndClearValueById(dynamicFormBean.getId());
});
} else {
//否则是一个流转单多个箱码
dynamicFormBean.setCanChange(false);
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("PacketBarcode");
}
}
}
} else {
ToastUtils.showLong(R.string.The_flow_order_number_format_is_incorrect);
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
break;
case "PacketBarcode":
if (TextUtils.isEmpty(value)) {
@ -448,6 +422,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
return;
}
scanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");
//如果是多个流转单一个箱码
if (scanRuleItem.getValue().equals(items[1])) {
int count = LitePal.count(FlowOrderDetailBean.class);
if (count == 0) {
@ -457,6 +432,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
return;
}
} else {
//否则是一个流转单多个箱码
DynamicFormBean FlowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");
if (TextUtils.isEmpty(FlowOrderItem.getValue())) {
dynamicFormBean.setValue("");
@ -490,10 +466,11 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
});
}
/**
* 加入明细列表
*/
private void addDetail() {
DynamicFormBean ScanRuleItem = dynamicFormAdapter.getItemByFieldName("ScanRule");//扫描规则
String gid = System.currentTimeMillis() + "";
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
DynamicFormBean flowOrderItem = dynamicFormAdapter.getItemByFieldName("FlowOrder");//流转单
DynamicFormBean PacketBarcodeItem = dynamicFormAdapter.getItemByFieldName("PacketBarcode");//包条码
@ -501,6 +478,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
DynamicFormBean MATNRItem = dynamicFormAdapter.getItemByFieldName("MATNR");//物料号
DynamicFormBean ZXTPCItem = dynamicFormAdapter.getItemByFieldName("ZXTPC");//箱号
DynamicFormBean ZPCItem = dynamicFormAdapter.getItemByFieldName("ZPC");//批次
String gid = System.currentTimeMillis() + "";
String barcode = PacketBarcodeItem.getValue();
if (TextUtils.isEmpty(aufnrItem.getValue())) {
setNextFocus("AUFNR");
@ -550,6 +528,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
FlowReportWorkDetailBean bean = new FlowReportWorkDetailBean();
bean.setGid(gid);
bean.setAufnr(aufnrItem.getValue());
bean.setMatnr(MATNRItem.getValue());
bean.setVornr("");
bean.setZxtpc(ZXTPCItem.getValue());
bean.setZpc(ZPCItem.getValue());
@ -576,6 +555,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
});
} else {
//如果规则是一个流转单多个箱码
if (TextUtils.isEmpty(flowOrderItem.getValue())) {
setNextFocus("FlowOrder");
showError(getString(R.string.Please_scan_the_transfer_slip_first));
@ -585,6 +565,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
FlowReportWorkDetailBean bean = new FlowReportWorkDetailBean();
bean.setGid(gid);
bean.setAufnr(aufnrItem.getValue());
bean.setMatnr(MATNRItem.getValue());
bean.setVornr("");
bean.setZxtpc(ZXTPCItem.getValue());
bean.setZpc(ZPCItem.getValue());
@ -609,8 +590,15 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
private void query(String workOrder, String flowOrder, DynamicFormBean scanRuleItem, DynamicFormBean dynamicFormBean) {
/**
* 根据工单获取产品信息
* @param workOrder 工单号
* @param flowOrder 流转单号
* @param scanRuleItem 扫描规则栏目
* @param AUFNRItem 工单号栏目
* @param dynamicFormBean 当前栏目也就是流转单号栏目
*/
private void query(String workOrder, String flowOrder, DynamicFormBean scanRuleItem, DynamicFormBean AUFNRItem, DynamicFormBean dynamicFormBean) {
HttpMethods.getInstance().getOrderInfo(workOrder, new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
@ -618,9 +606,27 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
Type objectType = new TypeToken<BaseResponseBean<List<FlowReportWorkProOrderBean>>>() {
}.getType();
BaseResponseBean<List<FlowReportWorkProOrderBean>> baseResponseBean = gson.fromJson(string, objectType);
if (baseResponseBean.getCode() == 200) {
if (baseResponseBean.getCode() != 200) {
showError(baseResponseBean.getMsg());
AUFNRItem.setValue("");
dynamicFormAdapter.setItemByFieldName(AUFNRItem.getFieldName(), AUFNRItem);
setNextFocus("FlowOrder");
return;
}
List<FlowReportWorkProOrderBean> data = baseResponseBean.getData();
if (data.size() > 0) {
if (data.size() == 0) {
showError(getString(R.string.No_material_information_was_obtained_for_the_workorder));
AUFNRItem.setValue("");
dynamicFormAdapter.setItemByFieldName(AUFNRItem.getFieldName(), AUFNRItem);
setNextFocus("FlowOrder");
return;
}
AUFNRItem.setValue(workOrder);
dynamicFormAdapter.setItemByFieldName(AUFNRItem.getFieldName(), AUFNRItem);
dynamicFormAdapter.notifyDataSetChanged();
FlowReportWorkProOrderBean flowReportWorkProOrderBean = data.get(0);
flowReportWorkProOrderBean.save();
if (scanRuleItem.getValue().equals(items[1])) {
@ -647,35 +653,35 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter.notifyDataSetChanged();
setNextFocus("PacketBarcode");
}
} else {
showError(getString(R.string.No_material_information_was_obtained_for_the_workorder));
setNextFocus("FlowOrder");
}
} else {
showError(baseResponseBean.getMsg());
setNextFocus("FlowOrder");
}
}
@Override
protected void onFailure(Throwable e) throws Exception {
setNextFocus("FlowOrder");
SoundUtils.playSound(FlowReportWorkActivity.this, R.raw.warning);
CustomErrorDialog(e, FlowReportWorkActivity.this);
AUFNRItem.setValue("");
dynamicFormAdapter.setItemByFieldName(AUFNRItem.getFieldName(), AUFNRItem);
setNextFocus("FlowOrder");
}
});
}
/**
* 解析条码信息并比对工单产品信息
* @param value 条码内容
* @param dynamicFormBean 当前条码栏目
*/
private void getBarcodeInfo(String value, DynamicFormBean dynamicFormBean) {
AnalysisBarBean bean = BarAnalysisUtils.analysisBarcode(value);
//先根据条码物料信息比对工单产品信息
LitePal
.where("matnr = ?", bean.getMateriel())
.findAsync(FlowReportWorkProOrderBean.class)
.listen(orderBeans -> {
if (orderBeans.size() == 0) {
//未找到相同维度数据,报错
showError("工单物料与扫码物料不一致,请确认");
showError(getString(R.string.The_material_of_the_work_order_is_inconsistent_with_that_of_the_scanning_code));
dynamicFormAdapter.setFocusById(dynamicFormBean.getId());
return;
}
@ -717,6 +723,10 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
/**
* 设置光标跳转
* @param name
*/
private void setNextFocus(String name) {
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);
@ -795,7 +805,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
/**
* 保存数据
*/
private void saveData() {
LitePal.findAllAsync(FlowReportWorkDetailBean.class).listen(items -> {
if (items.size() == 0) {
@ -923,6 +935,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
ToastUtil.showShortToastCenter(context, msg);
}
/**
* 清空所有明细和订单数据
*/
private void clearAllData() {
if (LitePal.count(FlowReportWorkDetailBean.class) > 0) {
LitePal.deleteAll(FlowReportWorkDetailBean.class);
@ -944,7 +959,10 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
return super.onKeyDown(keyCode, event);
}
/**
* 判断界面是否填写数据
* @return
*/
private boolean rvUiHaveData() {
boolean isExist = false;
for (DynamicFormBean bean : dynamicFormBeans) {

12
app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkActivity.java

@ -111,7 +111,6 @@ public class ReportWorkActivity extends CommonFunctionActivity {
if (savedInstanceState == null) {
clearAllData();
}
StatusBarUtil.setStatusBarColor(this, ContextCompat.getColor(this, R.color.app_color_blue));
ButterKnife.bind(this);
setBody(true);
scanBarcodeListMap = new HashMap<>();
@ -310,6 +309,7 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
/**
* 加入明细方法
* @param isReportWork ==true 是报工否则是报废
*/
private void addDetail(boolean isReportWork) {
@ -403,7 +403,10 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
/**
* 解析条码信息并显示
* @param value
*/
private void getBarcodeInfo(String value) {
AnalysisBarBean bean = BarAnalysisUtils.analysisBarcode(value);
for (DynamicFormBean d : dynamicFormBeans) {
@ -431,7 +434,10 @@ public class ReportWorkActivity extends CommonFunctionActivity {
}
/**
* 设置光标跳转
* @param name
*/
private void setNextFocus(String name) {
if (KeyboardUtils.isSoftInputVisible(context)) {
KeyboardUtils.hideSoftInput(context);

6
app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkErrorListActivity.java

@ -127,7 +127,6 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_work_errlist);
StatusBarUtil.setStatusBarColor(this, ContextCompat.getColor(this, R.color.app_color_blue));
ButterKnife.bind(this);
setBody(true);
Disposable register = RxBus.getInstance().register(Event.class, eventMsg -> {
@ -243,10 +242,11 @@ public class ReportWorkErrorListActivity extends CommonFunctionActivity {
list.add(new DetailShowBean(getString(R.string.Creation_time), reportWorkErrorInfoBean.getCreateTime()));
list.add(new DetailShowBean(getString(R.string.Factory), reportWorkErrorInfoBean.getWerks()));
list.add(new DetailShowBean(getString(R.string.Case_number), reportWorkErrorInfoBean.getZxtpc()));
list.add(new DetailShowBean(getString(R.string.Basic_number_of_reports), reportWorkErrorInfoBean.getLmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_basic_quantity_reported), reportWorkErrorInfoBean.getGmein()));
list.add(new DetailShowBean(getString(R.string.batch), reportWorkErrorInfoBean.getZpc()));
list.add(new DetailShowBean(getString(R.string.Quantity_reported), reportWorkErrorInfoBean.getGmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_reported_quantity), reportWorkErrorInfoBean.getMeinh() + ""));
list.add(new DetailShowBean(getString(R.string.Basic_number_of_reports), reportWorkErrorInfoBean.getLmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_basic_quantity_reported), reportWorkErrorInfoBean.getGmein()));
DetailBottomSheet detailBottomSheet = new DetailBottomSheet<>(context, getResources().getString(R.string.detail_info), list);
new XPopup.Builder(context)

31
app/src/main/java/com/techscan/wk/ui/reportwork/ReportWorkOffsetActivity.java

@ -97,6 +97,8 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
private Column<String> select;
private Column<String> AUFNR;
private Column<String> GMNGA;
private Column<String> zxtpc;
private Column<String> zpc;
QBadgeView qTaskBadgeView, qDetailBadgeView;
@ -112,7 +114,6 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_work_offse);
StatusBarUtil.setStatusBarColor(this, ContextCompat.getColor(this, R.color.app_color_blue));
ButterKnife.bind(this);
setBody(true);
Disposable register = RxBus.getInstance().register(Event.class, eventMsg -> {
@ -128,7 +129,6 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
initListeners();
initRvData();
initTableData();
reInitUI();
rvUi.postDelayed(() -> {
setNextFocus("AUFNR");
}, 200);
@ -155,14 +155,15 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
AUFNR = new Column<>(getString(R.string.Work_order_number), "aufnr");
GMNGA = new Column<>(getString(R.string.Quantity_reported), "gmnga");
zxtpc = new Column<>(getString(R.string.Case_number), "zxtpc");
zpc = new Column<>(getString(R.string.batch), "zpc");
select.setFixed(true);
select.setFast(true);
select.setMinWidth(110);
AUFNR.setFast(true);
GMNGA.setFast(true);
zxtpc.setFast(true);
zpc.setFast(true);
//设置单个格子背景颜色
smartTable.getConfig().setContentCellBackgroundFormat(new BaseCellBackgroundFormat<CellInfo>() {
@ -185,12 +186,15 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
}
});
setTableData();
}
/**
* 保存数据
* @param reportWorkOffsetBean 需要提交的工单数据
* @param row 当前列表行用于删除row数据
*/
private void saveData(ReportWorkOffsetBean reportWorkOffsetBean, int row) {
reportWorkOffsetBean.setRueck(reportWorkOffsetBean.getResultRueck());
reportWorkOffsetBean.setRmzhl(reportWorkOffsetBean.getResultRmzhl());
@ -229,7 +233,7 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
for (int i = 0; i < list.size(); i++) {
list.get(i).setSelect(getString(R.string.write_off));
}
mTableData = new TableData<>("", list, select, AUFNR, GMNGA);
mTableData = new TableData<>("", list, select, AUFNR, GMNGA,zxtpc,zpc);
smartTable.setTableData(mTableData);
smartTable.invalidate();
smartTable.getTableData().setOnRowClickListener((column, reportWorkOffsetBean, i, row) -> {
@ -254,10 +258,11 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
list.add(new DetailShowBean(getString(R.string.counter), reportWorkOffsetBean.getResultRmzhl()));
list.add(new DetailShowBean(getString(R.string.Factory), reportWorkOffsetBean.getWerks()));
list.add(new DetailShowBean(getString(R.string.Case_number), reportWorkOffsetBean.getZxtpc()));
list.add(new DetailShowBean(getString(R.string.Basic_number_of_reports), reportWorkOffsetBean.getLmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_basic_quantity_reported), reportWorkOffsetBean.getGmein()));
list.add(new DetailShowBean(getString(R.string.batch), reportWorkOffsetBean.getZpc()));
list.add(new DetailShowBean(getString(R.string.Quantity_reported), reportWorkOffsetBean.getGmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_reported_quantity), reportWorkOffsetBean.getMeinh() + ""));
list.add(new DetailShowBean(getString(R.string.Basic_number_of_reports), reportWorkOffsetBean.getLmnga() + ""));
list.add(new DetailShowBean(getString(R.string.A_unit_of_measurement_of_basic_quantity_reported), reportWorkOffsetBean.getGmein()));
DetailBottomSheet detailBottomSheet = new DetailBottomSheet<>(context, getResources().getString(R.string.detail_info), list);
new XPopup.Builder(context)
.moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
@ -357,10 +362,12 @@ public class ReportWorkOffsetActivity extends CommonFunctionActivity {
});
}
/**
* 根据工单调用查询接口方法
*/
private void query() {
DynamicFormBean aufnrItem = dynamicFormAdapter.getItemByFieldName("AUFNR");//工单
HttpMethods.getInstance().getReport(aufnrItem.getValue(),
"", new BaseObserver<ResponseBody>(context) {
HttpMethods.getInstance().getReport(aufnrItem.getValue(), "", new BaseObserver<ResponseBody>(context) {
@Override
protected void onSuccess(ResponseBody body) throws Exception {
String string = body.string();

5
app/src/main/java/com/techscan/wk/utils/BarAnalysisUtils.java

@ -20,6 +20,11 @@ public class BarAnalysisUtils {
return true;
}
/**
* 按规则解析条码 [)>@06@QRPART@10V101010@1P31102260@3SX001@1T20240724001@Q100@14D20240724@@
* @param barcode
* @return
*/
public static AnalysisBarBean analysisBarcode(String barcode) {
barcode = barcode.replaceFirst("\\[\\)>@06@QRPART", "");
System.out.println(barcode);

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

@ -171,4 +171,5 @@
<string name="No_material_information_was_obtained_for_the_workorder">No material information was obtained for the work order</string>
<string name="Do_you_want_to_change_scan_rules_Switching_will_clear_the_interface_and_all_scan_details">Do you want to change scan rules? (Switching will clear the interface and all scan details)</string>
<string name="The_flow_order_number_format_is_incorrect">The flow order number format is incorrect</string>
<string name="The_material_of_the_work_order_is_inconsistent_with_that_of_the_scanning_code">The material of the work order is inconsistent with that of the scanning code</string>
</resources>

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

@ -171,4 +171,5 @@
<string name="No_material_information_was_obtained_for_the_workorder">ไม่มีการรับข้อมูลวัสดุใด ๆ</string>
<string name="Do_you_want_to_change_scan_rules_Switching_will_clear_the_interface_and_all_scan_details">จะสลับกฎการสแกน หรือไม่?(สลับการล้างอินเทอร์เฟซ และรายละเอียดการสแกนทั้งหมด)</string>
<string name="The_flow_order_number_format_is_incorrect">หมายเลขโรเตอร์ไม่ถูกต้อง</string>
<string name="The_material_of_the_work_order_is_inconsistent_with_that_of_the_scanning_code">วัสดุรายการเชิงพาณิชย์ไม่สอดคล้องกับการค้นหารหัสโปรดยืนยัน</string>
</resources>

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

@ -182,5 +182,6 @@
<string name="No_material_information_was_obtained_for_the_workorder">该工单没有获取到物料信息</string>
<string name="Do_you_want_to_change_scan_rules_Switching_will_clear_the_interface_and_all_scan_details">是否切换扫描规则?(切换将清空界面和所有扫描明细内容)</string>
<string name="The_flow_order_number_format_is_incorrect">流转单号格式不正确</string>
<string name="The_material_of_the_work_order_is_inconsistent_with_that_of_the_scanning_code">工单物料与扫码物料不一致,请确认</string>
</resources>

Loading…
Cancel
Save