@ -92,6 +92,8 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
RecyclerView rvUi ;
@BindView ( R . id . llflowOrderDetail )
LinearLayout llflowOrderDetail ;
@BindView ( R . id . btn_flowOrderDetail )
Button btnFlowOrderDetail ;
@BindView ( R . id . btn_detail )
@ -101,7 +103,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
@BindView ( R . id . ll_bottom )
LinearLayout llBottom ;
QBadgeView qTask BadgeView , qDetailBadgeView ;
QBadgeView qFlowOrderDetail BadgeView , qDetailBadgeView ;
private DynamicFormAdapter dynamicFormAdapter ;
private List < DynamicFormBean > dynamicFormBeans ;
@ -135,17 +137,22 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} else {
scanBarcodeListMap . remove ( removeKey ) ;
}
showDetailBadgeNum ( ) ;
} else if ( eventMsg . getCode ( ) = = 1001 ) {
showOrderDetailBadgeNum ( ) ;
}
} ) ;
RxBus . getInstance ( ) . addSubscription ( this , register ) ;
qTaskBadgeView = new QBadgeView ( context ) ;
qFlowOrderDetailBadgeView = new QBadgeView ( context ) ;
qFlowOrderDetailBadgeView . bindTarget ( btnFlowOrderDetail ) ;
qDetailBadgeView = new QBadgeView ( context ) ;
qDetailBadgeView . bindTarget ( btnDetail ) ;
initTopBar ( ) ;
initListeners ( ) ;
initRvData ( ) ;
rvUi . postDelayed ( ( ) - > {
setNextFocus ( "FlowOrder " ) ;
} , 3 00) ;
setNextFocus ( "AUFNR " ) ;
} , 1 00) ;
}
@ -168,29 +175,32 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
* 重新刷新ui
* /
@SuppressLint ( "SetTextI18n" )
private void reInitUI ( boolean isReportWork ) {
private void reInitUI ( boolean isReportWork , String scanRule ) {
runOnUiThread ( ( ) - > {
SoundUtils . playSound ( this , R . raw . ok ) ;
if ( KeyboardUtils . isSoftInputVisible ( context ) ) {
KeyboardUtils . hideSoftInput ( context ) ;
}
String ScanRuleValue = "" ;
for ( int i = 0 ; i < dynamicFormBeans . size ( ) ; i + + ) {
DynamicFormBean dynamicFormBean = dynamicFormBeans . get ( i ) ;
if ( dynamicFormBean . getFieldName ( ) . equals ( "ScanRule" ) ) {
ScanRuleValue = dynamicFormBean . getValue ( ) ;
if ( dynamicFormBean . getFieldName ( ) . equals ( "AUFNR" ) | |
dynamicFormBean . getFieldName ( ) . equals ( "ScanRule" ) | |
dynamicFormBean . getFieldName ( ) . equals ( "VORNR" ) ) {
continue ;
} else if ( dynamicFormBean . getFieldName ( ) . equals ( "FlowOrder" ) ) {
if ( ! TextUtils . isEmpty ( ScanRuleValue ) ) {
if ( ScanRuleValue . equals ( items [ 0 ] ) ) {
continue ;
}
if ( ! TextUtils . isEmpty ( scanRule ) & & scanRule . equals ( items [ 0 ] ) ) {
continue ;
}
}
dynamicFormBean . setValue ( "" ) ;
}
showDetailBadgeNum ( ) ;
if ( isReportWork ) {
setNextFocus ( "PacketBarcode" ) ;
if ( scanRule . equals ( items [ 1 ] ) ) {
setNextFocus ( "FlowOrder" ) ;
} else {
setNextFocus ( "PacketBarcode" ) ;
}
} else {
setNextFocus ( "XMNGA" ) ;
}
@ -198,6 +208,31 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} ) ;
}
@Override
protected void onResume ( ) {
super . onResume ( ) ;
showDetailBadgeNum ( ) ;
showOrderDetailBadgeNum ( ) ;
}
/ * *
* 显示明细角标
* /
private void showDetailBadgeNum ( ) {
int count = LitePal . count ( FlowReportWorkDetailBean . class ) ;
qDetailBadgeView . setBadgeNumber ( count ) ;
}
/ * *
* 显示流转单明细角标
* /
private void showOrderDetailBadgeNum ( ) {
int orderDetailCount = LitePal . count ( FlowOrderDetailBean . class ) ;
qFlowOrderDetailBadgeView . setBadgeNumber ( orderDetailCount ) ;
}
/ * *
* 初始化动态列表数据
* /
@ -250,34 +285,51 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
QMUIDialog . CheckableDialogBuilder menuDialogBuilder = new QMUIDialog . CheckableDialogBuilder ( this ) ;
menuDialogBuilder . setTitle ( dynamicFormBean . getName ( ) ) ;
menuDialogBuilder . setTitle ( dynamicFormAdapter . getCurrentLanguage ( dynamicFormBean ) ) ;
int finalSelectIndex = selectIndex ;
menuDialogBuilder . addItems ( items , new DialogInterface . OnClickListener ( ) {
@Override
public void onClick ( DialogInterface dialog , int which ) {
if ( finalSelectIndex ! = - 1 & & which ! = finalSelectIndex ) {
dialog . dismiss ( ) ;
new QMUIDialog . MessageDialogBuilder ( context ) . setTitle ( getResources ( ) . getString ( R . string . tips_title ) )
. setCancelable ( false )
. setMessage ( "是否切换扫描规则?(切换规则将清空之前所有扫描明细数据)" )
. addAction ( getResources ( ) . getString ( R . string . cancel_info ) , ( dialog1 , index ) - > dialog1 . dismiss ( ) )
. addAction ( getResources ( ) . getString ( R . string . confirm_info ) , ( dialog1 , index ) - > {
dialog1 . dismiss ( ) ;
scanBarcodeListMap = new HashMap < > ( ) ;
initRvData ( ) ;
LitePal . deleteAll ( FlowOrderDetailBean . class ) ;
LitePal . deleteAll ( FlowReportWorkDetailBean . class ) ;
String item = items [ which ] ;
dynamicFormBean . setValue ( item ) ;
dynamicFormAdapter . setItemByFieldName ( dynamicFormBean . getFieldName ( ) , dynamicFormBean ) ;
dynamicFormAdapter . notifyDataSetChanged ( ) ;
if ( item . equals ( items [ 1 ] ) ) {
btnFlowOrderDetail . setVisibility ( View . VISIBLE ) ;
} else {
btnFlowOrderDetail . setVisibility ( View . GONE ) ;
}
} )
. create ( R . style . QMUI_Dialog ) . show ( ) ;
int count = LitePal . count ( FlowOrderDetailBean . class ) ;
int detailCount = LitePal . count ( FlowReportWorkDetailBean . class ) ;
if ( rvUiHaveData ( ) | | count > 0 | | detailCount > 0 ) {
new QMUIDialog . MessageDialogBuilder ( context ) . setTitle ( getResources ( ) . getString ( R . string . tips_title ) )
. setCancelable ( false )
. setMessage ( "是否切换扫描规则?(切换将清空界面和所有扫描明细内容)" )
. 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 ) ;
LitePal . deleteAll ( FlowReportWorkDetailBean . class ) ;
showDetailBadgeNum ( ) ;
showOrderDetailBadgeNum ( ) ;
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 ) ;
}
} )
. 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 ( ) ;
@ -286,9 +338,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
dynamicFormAdapter . setItemByFieldName ( dynamicFormBean . getFieldName ( ) , dynamicFormBean ) ;
dynamicFormAdapter . notifyDataSetChanged ( ) ;
if ( item . equals ( items [ 1 ] ) ) {
btnF lowOrderDetail. setVisibility ( View . VISIBLE ) ;
llf lowOrderDetail. setVisibility ( View . VISIBLE ) ;
} else {
btnF lowOrderDetail. setVisibility ( View . GONE ) ;
llf lowOrderDetail. setVisibility ( View . GONE ) ;
}
}
}
@ -299,31 +351,68 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
} ) ;
dynamicFormAdapter . setOnFormItemViewActionListener ( ( dynamicFormBean , position ) - > {
String value = dynamicFormBean . getValue ( ) ;
switch ( dynamicFormBean . getFieldName ( ) ) {
case "FlowOrder " :
case "AUFNR " :
DynamicFormBean scanRuleItem = dynamicFormAdapter . getItemByFieldName ( "ScanRule" ) ;
String value1 = scanRuleItem . getValue ( ) ;
if ( TextUtils . isEmpty ( value1 ) ) {
setNextFocus ( "FlowOrder" ) ;
SoundUtils . playSound ( context , R . raw . warning ) ;
ToastUtil . showShortToast ( FlowReportWorkActivity . this , "请先选择扫描规则" ) ;
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 ( "VORNR" ) ;
break ;
case "VORNR" :
if ( TextUtils . isEmpty ( value ) ) {
showError ( getString ( R . string . The_process_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 ;
}
if ( TextUtils . isEmpty ( value ) ) {
showError ( getString ( R . string . The_flow_order_number_cannot_be_empty ) ) ;
return ;
}
if ( value . startsWith ( "T" ) & & value . length ( ) > 9 ) {
int t = value . indexOf ( "T" ) ;
String substring = value . substring ( t + 1 , 9 ) ;
String aufnrItemValue = AUFNRItem . getValue ( ) ;
if ( ! substring . equals ( aufnrItemValue ) ) {
ToastUtils . showLong ( R . string . order_number_in_the_flow_order_is_inconsistent ) ;
dynamicFormAdapter . setFocusById ( dynamicFormBean . getId ( ) ) ;
return ;
}
}
scanRuleItem = dynamicFormAdapter . getItemByFieldName ( "ScanRule" ) ;
if ( TextUtils . isEmpty ( scanRuleItem . getValue ( ) ) ) {
setNextFocus ( dynamicFormBean . getFieldName ( ) ) ;
showError ( getString ( R . string . The_flow_order_number_cannot_be_empty ) ) ; ;
showError ( getString ( R . string . Select_a_scan_rule_first ) ) ;
return ;
}
if ( value1 . equals ( items [ 1 ] ) ) {
if ( scanRuleItem . getValue ( ) . equals ( items [ 1 ] ) ) {
LitePal
. where ( "flowOrder = ?" , value )
. findAsync ( FlowOrderDetailBean . class )
. listen ( reportWorkDetailBean - > {
if ( reportWorkDetailBean . size ( ) > 0 ) {
SoundUtils . playSound ( context , R . raw . warning ) ;
dynamicFormAdapter . setFocusById ( dynamicFormBean . getId ( ) ) ;
ToastUtil . showShortToast ( FlowReportWorkActivity . this , getString ( R . string . The_current_flow_order_number_has_been_scanned ) ) ;
dynamicFormAdapter . setFocusAndClearValueById ( dynamicFormBean . getId ( ) ) ;
showError ( getString ( R . string . The_current_flow_order_number_has_been_scanned ) ) ;
return ;
}
String gid = System . currentTimeMillis ( ) + "" ;
@ -331,19 +420,20 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
bean . setGid ( gid ) ;
bean . setFlowOrder ( value ) ;
bean . save ( ) ;
showOrderDetailBadgeNum ( ) ;
SoundUtils . playSound ( this , R . raw . ok ) ;
dynamicFormAdapter . setFocusAndClearValueById ( dynamicFormBean . getId ( ) ) ;
} ) ;
} else {
dynamicFormBean . setCanChange ( false ) ;
dynamicFormAdapter . setItemByFieldName ( dynamicFormBean . getFieldName ( ) , dynamicFormBean ) ;
dynamicFormAdapter . notifyDataSetChanged ( ) ;
setNextFocus ( "PacketBarcode" ) ;
}
break ;
case "PacketBarcode" :
if ( TextUtils . isEmpty ( value ) ) {
setNextFocus ( dynamicFormBean . getFieldName ( ) ) ;
showError ( getString ( R . string . The_packet_barcode_cannot_be_empty ) ) ; ;
setNextFocus ( "PacketBarcode" ) ;
showError ( getString ( R . string . The_packet_barcode_cannot_be_empty ) ) ;
return ;
}
scanRuleItem = dynamicFormAdapter . getItemByFieldName ( "ScanRule" ) ;
@ -373,8 +463,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
//判断条码是否已经被扫描
if ( isInBarcodeList ( scanBarcodeListMap , value ) ) {
SoundUtils . playSound ( context , R . raw . warning ) ;
ToastUtil . showShortToastCenter ( context , getString ( R . string . Do_not_scan_the_barcode_again ) ) ;
showError ( getString ( R . string . Do_not_scan_the_barcode_again ) ) ;
dynamicFormAdapter . setFocusById ( dynamicFormBean . getId ( ) ) ;
return ;
}
@ -398,13 +487,20 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
private void addDetail ( boolean isReportWork ) {
DynamicFormBean ScanRuleItem = dynamicFormAdapter . getItemByFieldName ( "ScanRule" ) ; //扫描规则
String gid = System . currentTimeMillis ( ) + "" ;
DynamicFormBean aufnrItem = dynamicFormAdapter . getItemByFieldName ( "AUFNR" ) ; //工单
DynamicFormBean vornrItem = dynamicFormAdapter . getItemByFieldName ( "VORNR" ) ; //工序
DynamicFormBean PacketBarcodeItem = dynamicFormAdapter . getItemByFieldName ( "PacketBarcode" ) ; //包条码
DynamicFormBean flowOrderItem = dynamicFormAdapter . getItemByFieldName ( "FlowOrder" ) ; //流转单
DynamicFormBean gmngaItem = dynamicFormAdapter . getItemByFieldName ( "GMNGA" ) ; //报工数量
DynamicFormBean xmngaItem = dynamicFormAdapter . getItemByFieldName ( "XMNGA" ) ; //报废数量
DynamicFormBean grundItem = dynamicFormAdapter . getItemByFieldName ( "GRUND" ) ; //原因代码
DynamicFormBean ZXTPCItem = dynamicFormAdapter . getItemByFieldName ( "ZXTPC" ) ; //箱号
String barcode = PacketBarcodeItem . getValue ( ) ;
if ( TextUtils . isEmpty ( aufnrItem . getValue ( ) ) ) {
setNextFocus ( "AUFNR" ) ;
showError ( getString ( R . string . The_work_order_number_cannot_be_empty ) ) ;
return ;
}
if ( isReportWork ) {
if ( TextUtils . isEmpty ( gmngaItem . getValue ( ) ) ) {
showError ( getString ( R . string . The_number_of_reports_cannot_be_empty ) ) ;
@ -468,6 +564,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
//否则是一个流转单多个箱码
FlowReportWorkDetailBean bean = new FlowReportWorkDetailBean ( ) ;
bean . setGid ( gid ) ;
bean . setAufnr ( aufnrItem . getValue ( ) ) ;
bean . setVornr ( vornrItem . getValue ( ) ) ;
bean . setZxtpc ( ZXTPCItem . getValue ( ) ) ;
bean . setFlowOrders ( flowOrderItem . getValue ( ) ) ;
bean . setFlowOrders ( flowOrderSb . substring ( 0 , flowOrderSb . length ( ) - 1 ) ) ;
if ( isReportWork ) {
@ -487,12 +586,15 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
boolean save = bean . save ( ) ;
if ( save ) {
LitePal . deleteAll ( FlowOrderDetailBean . class ) ;
showOrderDetailBadgeNum ( ) ;
//将当前条码存入对应的条码扫描明细中
List < String > keyBarcodes = new ArrayList < > ( ) ;
keyBarcodes . add ( barcode ) ;
scanBarcodeListMap . put ( gid , keyBarcodes ) ;
reInitUI ( isReportWork ) ;
reInitUI ( isReportWork , ScanRuleItem . getValue ( ) ) ;
} else {
showError ( getString ( R . string . Failed_to_join_details ) ) ;
}
} ) ;
@ -506,6 +608,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
//否则是一个流转单多个箱码
FlowReportWorkDetailBean bean = new FlowReportWorkDetailBean ( ) ;
bean . setGid ( gid ) ;
bean . setAufnr ( aufnrItem . getValue ( ) ) ;
bean . setVornr ( vornrItem . getValue ( ) ) ;
bean . setZxtpc ( ZXTPCItem . getValue ( ) ) ;
bean . setFlowOrders ( flowOrderItem . getValue ( ) ) ;
if ( isReportWork ) {
bean . setPacketBarcode ( barcode ) ;
@ -528,7 +633,9 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
keyBarcodes . add ( barcode ) ;
scanBarcodeListMap . put ( gid , keyBarcodes ) ;
reInitUI ( isReportWork ) ;
reInitUI ( isReportWork , ScanRuleItem . getValue ( ) ) ;
} else {
showError ( getString ( R . string . Failed_to_join_details ) ) ;
}
}
@ -554,6 +661,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
dynamicFormAdapter . setList ( dynamicFormBeans ) ;
dynamicFormAdapter . notifyDataSetChanged ( ) ;
new Handler ( ) . postDelayed ( new Runnable ( ) {
@Override
public void run ( ) {
@ -580,7 +688,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
}
dynamicFormAdapter . notifyDataSetChanged ( ) ;
} , 2 00) ;
} , 1 00) ;
}
@ -667,17 +775,19 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
if ( baseResponseBean . getCode ( ) = = 200 ) {
new QMUIDialog . MessageDialogBuilder ( context ) . setTitle ( getResources ( ) . getString ( R . string . tips_title ) )
. setCancelable ( false )
. setMessage ( getString ( R . string . Data_saved_successfully ) )
. setMessage ( baseResponseBean . getData ( ) )
. 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 ( ) ;
initRvData ( ) ;
btnFlowOrderDetail . setVisibility ( View . GONE ) ;
clearAllData ( ) ;
llflowOrderDetail . setVisibility ( View . GONE ) ;
showDetailBadgeNum ( ) ;
showOrderDetailBadgeNum ( ) ;
scanBarcodeListMap = new HashMap < > ( ) ;
setNextFocus ( "FlowOrder" ) ;
setNextFocus ( "AUFNR " ) ;
} else {
showError ( baseResponseBean . getMsg ( ) ) ;
}
@ -713,6 +823,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
}
dynamicFormAdapter . setItemByFieldName ( "GRUND" , GRUNDItem ) ;
dynamicFormAdapter . notifyDataSetChanged ( ) ;
setNextFocus ( "XMNGA" ) ;
}
} else if ( requestCode = = REQUEST_CODE_SCAN_FOR_GROUP ) {
@ -785,6 +896,21 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
return super . onKeyDown ( keyCode , event ) ;
}
private boolean rvUiHaveData ( ) {
boolean isExist = false ;
for ( DynamicFormBean bean : dynamicFormBeans ) {
if ( bean . getFieldName ( ) . equals ( "ScanRule" ) ) {
continue ;
}
if ( ! TextUtils . isEmpty ( bean . getValue ( ) ) ) {
isExist = true ;
}
}
return isExist ;
}
private void finishActivity ( ) {
int count = LitePal . count ( ReportWorkDetailBean . class ) ;
int flowOrderCount = LitePal . count ( FlowOrderDetailBean . class ) ;
@ -799,7 +925,7 @@ public class FlowReportWorkActivity extends CommonFunctionActivity {
LitePal . deleteAllAsync ( FlowOrderDetailBean . class ) . listen ( i1 - > finish ( ) ) ;
} ) ;
} )
. create ( R . style . CUSTOM_ QMUI) ;
. create ( R . style . QMUI_Dialog ) ;
qmuiDialog . show ( ) ;
return ;
}