Commit f09f1d03 by 宁斌

1、餐檯管理bug出來 , 餐檯服務費小數位問題

parent b95e25c0
...@@ -140,6 +140,12 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem ...@@ -140,6 +140,12 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
return view; return view;
} }
@Nullable
@Override
public View getView() {
return view;
}
/** /**
* 是否使用eventBus,默认为使用(true), * 是否使用eventBus,默认为使用(true),
* *
......
package com.jess.arms.utils;
import android.app.Activity;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.EditText;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-06-19
* 修订历史:2020-06-19
* 描述:
*/
public class KeyboardChangeHelper implements ViewTreeObserver.OnGlobalLayoutListener {
private View contentView;
private EditText targetView;
private int rootViewVisibleHeight = 0;
private int offset;
private OnKeyboardShowListener listener;
public KeyboardChangeHelper(View contentView) {
this.contentView = contentView;
setTranslationOffset(0);
}
@Override
public void onGlobalLayout() {
if (!initTargetView()) {
return;
}
Rect r = new Rect();
contentView.getWindowVisibleDisplayFrame(r);
int visibleHeight = r.height();
if (rootViewVisibleHeight == 0) {
rootViewVisibleHeight = visibleHeight;
return;
}
//根视图显示高度没有变化,可以看作软键盘显示/隐藏状态没有改变
if (rootViewVisibleHeight == visibleHeight) {
return;
}
//根视图显示高度变小超过200,可以看作软键盘显示了
if (rootViewVisibleHeight - visibleHeight > 200) {
rootViewVisibleHeight = visibleHeight;
if (null != listener) {
listener.onKeyboardShow();
}
layoutResize(true, r.bottom);
return;
}
//根视图显示高度变大超过200,可以看作软键盘隐藏了
if (visibleHeight - rootViewVisibleHeight > 200) {
rootViewVisibleHeight = visibleHeight;
if (null != listener) {
listener.onKeyboardHide();
}
layoutResize(false, 0);
}
}
private void layoutResize(boolean isKeyboardShow, int currentBottom) {
int resizeHeight = 0;
Rect rect = new Rect();
if (null != targetView) {
targetView.getGlobalVisibleRect(rect);
// rect.bottom 获取到的时EditText的底部,加上offset是再往下offset距离的底部
resizeHeight = rect.bottom + offset - currentBottom;
}
if (resizeHeight < 0) {
return;
}
if (isKeyboardShow) {
contentView.setTranslationY(-resizeHeight);
} else {
contentView.setTranslationY(0);
}
}
private boolean initTargetView() {
View focusedView;
Activity activity = (Activity) contentView.getContext();
if (null != activity) {
focusedView = activity.getCurrentFocus();
} else {
return false;
}
if (focusedView instanceof EditText) {
targetView = (EditText)focusedView;
}
return true;
}
public void addListener() {
contentView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
public void removeListener() {
// remember to remove if used
contentView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
public void setTranslationOffset(int offset) {
this.offset = offset;
}
public void addOnKeyboardShowListener(OnKeyboardShowListener listener) {
this.listener = listener;
}
public interface OnKeyboardShowListener {
void onKeyboardShow();
void onKeyboardHide();
}
}
...@@ -160,25 +160,6 @@ public class TimeUtils { ...@@ -160,25 +160,6 @@ public class TimeUtils {
/** /**
* @param beginTime 開始時間
* @param distance 差距: 昨天天傳負一,今天傳零,明天傳一
* @param type 類型: 1、天 Calendar.DATE 2、年Calendar.YEAR 3、月Calendar.MONTH
* @param sf {@link #DEFAULT_DATE_MD}
* @return 獲得從開始時間+distance(偏移時間的年月日)
*/
public static String getBeginDistanceDate(Calendar beginTime, int distance, int type, SimpleDateFormat sf) {
beginTime.set(type, beginTime.get(type) + distance);
Date endDate = null;
try {
endDate = sf.parse(sf.format(beginTime.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return sf.format(endDate);
}
/**
* 获取前n天日期、后n天日期 * 获取前n天日期、后n天日期
* *
* @param distanceDay 前几天 如获取前7天日期则传-7即可;如果后7天则传7 * @param distanceDay 前几天 如获取前7天日期则传-7即可;如果后7天则传7
......
...@@ -5,8 +5,8 @@ ext { ...@@ -5,8 +5,8 @@ ext {
buildToolsVersion: '28.0.3', buildToolsVersion: '28.0.3',
minSdkVersion : 19, //N5收銀機應用安卓開發環境要求Android OS Version: 5.1Android SDK Min Version: 19 minSdkVersion : 19, //N5收銀機應用安卓開發環境要求Android OS Version: 5.1Android SDK Min Version: 19
targetSdkVersion : 28, targetSdkVersion : 28,
versionCode : 2, versionCode : 4,
versionName : "1.0.2" versionName : "1.0.4"
] ]
version = [ version = [
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration"
android:value="ConfigModule" /> android:value="ConfigModule" />
<meta-data <meta-data
android:name="design_width_in_dp" android:name="design_width_in_dp"
android:value="360"/> android:value="360"/>
......
...@@ -20,4 +20,9 @@ public interface MainService { ...@@ -20,4 +20,9 @@ public interface MainService {
@Headers({"Domain-Name: update_version"}) @Headers({"Domain-Name: update_version"})
@POST("system/checkAppVersion" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("system/checkAppVersion" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<CheckVersionRequest> checkAppVersion(@Body RequestBody requestBody); Observable<CheckVersionRequest> checkAppVersion(@Body RequestBody requestBody);
@Headers({"Domain-Name: update_version"})
@POST("restaurant/clearHeartbeat" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<Object> clearHeartbeat(@Body RequestBody requestBody);
} }
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
package="com.gingersoft.gsa.cloud.manager"> package="com.gingersoft.gsa.cloud.manager">
<application> <application>
<activity android:name=".mvp.ui.activity.TableManageActivity"/> <activity
android:name=".mvp.ui.activity.TableManageActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"/>
<!-- arms配置 --> <!-- arms配置 -->
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration"
......
...@@ -223,7 +223,9 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -223,7 +223,9 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
if (fragment != null) { if (fragment != null) {
if (fragment instanceof AreaListFragment) { if (fragment instanceof AreaListFragment) {
AreaListFragment areaListFragment = (AreaListFragment) fragment; AreaListFragment areaListFragment = (AreaListFragment) fragment;
if (!areaListFragment.isRadioEdit()) {
areaListFragment.updateAreaData(areas); areaListFragment.updateAreaData(areas);
}
} else if (fragment instanceof TableListFragment) { } else if (fragment instanceof TableListFragment) {
TableListFragment tableListFragment = (TableListFragment) fragment; TableListFragment tableListFragment = (TableListFragment) fragment;
tableListFragment.updateAreaData(areas); tableListFragment.updateAreaData(areas);
...@@ -238,7 +240,7 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -238,7 +240,7 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
} }
} }
TableListFragment tableListFragment = findFragment(TableListFragment.class); TableListFragment tableListFragment = findFragment(TableListFragment.class);
if(tableListFragment != null){ if (tableListFragment != null) {
tableListFragment.updateTableData(mTableAreaList, mTableList); tableListFragment.updateTableData(mTableAreaList, mTableList);
} }
break; break;
...@@ -330,4 +332,13 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -330,4 +332,13 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
public List<TableItem> getTableList() { public List<TableItem> getTableList() {
return mTableList; return mTableList;
} }
public boolean isRadioEdit() {
TableListFragment tableListFragment = findFragment(TableListFragment.class);
if (tableListFragment != null) {
return tableListFragment.isRadioEdit();
} else {
return false;
}
}
} }
...@@ -24,6 +24,7 @@ import com.gingersoft.gsa.cloud.manager.di.component.DaggerAddAreaComponent; ...@@ -24,6 +24,7 @@ import com.gingersoft.gsa.cloud.manager.di.component.DaggerAddAreaComponent;
import com.gingersoft.gsa.cloud.manager.mvp.contract.AddAreaContract; import com.gingersoft.gsa.cloud.manager.mvp.contract.AddAreaContract;
import com.gingersoft.gsa.cloud.manager.mvp.presenter.AddAreaPresenter; import com.gingersoft.gsa.cloud.manager.mvp.presenter.AddAreaPresenter;
import com.gingersoft.gsa.cloud.manager.R; import com.gingersoft.gsa.cloud.manager.R;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.util.QMUIResHelper; import com.qmuiteam.qmui.util.QMUIResHelper;
import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout;
......
...@@ -209,19 +209,19 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -209,19 +209,19 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER | Gravity.RIGHT; params.gravity = Gravity.CENTER | Gravity.RIGHT;
params.width = 130; params.width = 150;
peopleMixNumberEditText.setLayoutParams(params); peopleMixNumberEditText.setLayoutParams(params);
FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT); FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT);
params2.gravity = Gravity.CENTER | Gravity.RIGHT; params2.gravity = Gravity.CENTER | Gravity.RIGHT;
params2.width = 30; params2.width = 30;
params2.rightMargin = 150; params2.rightMargin = 170;
tv_line.setLayoutParams(params2); tv_line.setLayoutParams(params2);
FrameLayout.LayoutParams params3 = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT); FrameLayout.LayoutParams params3 = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT);
params3.gravity = Gravity.CENTER | Gravity.RIGHT; params3.gravity = Gravity.CENTER | Gravity.RIGHT;
params3.width = 130; params3.width = 150;
params3.rightMargin = 200; params3.rightMargin = 220;
peopleMaxNumberEditText.setLayoutParams(params3); peopleMaxNumberEditText.setLayoutParams(params3);
......
...@@ -36,6 +36,7 @@ import com.gingersoft.gsa.cloud.manager.mvp.contract.AreaListContract; ...@@ -36,6 +36,7 @@ import com.gingersoft.gsa.cloud.manager.mvp.contract.AreaListContract;
import com.gingersoft.gsa.cloud.manager.mvp.presenter.AreaListPresenter; import com.gingersoft.gsa.cloud.manager.mvp.presenter.AreaListPresenter;
import com.gingersoft.gsa.cloud.manager.R; import com.gingersoft.gsa.cloud.manager.R;
import com.jess.arms.utils.KeyboardChangeHelper;
import com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout; import com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout;
import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout;
...@@ -120,6 +121,12 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -120,6 +121,12 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
.inject(this); .inject(this);
} }
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override @Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_area_list, container, false); return inflater.inflate(R.layout.fragment_area_list, container, false);
...@@ -143,12 +150,26 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -143,12 +150,26 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
mAreaManageAdapter.notifyDataSetChanged(); mAreaManageAdapter.notifyDataSetChanged();
} }
}); });
setKeyboardChange();
}
private void setKeyboardChange() {
View view = getView();
if (view != null) {
KeyboardChangeHelper changeHelper = new KeyboardChangeHelper(view);
changeHelper.addListener();
changeHelper.addOnKeyboardShowListener(new KeyboardChangeHelper.OnKeyboardShowListener() {
@Override
public void onKeyboardShow() {
fl_add_area.setVisibility(View.INVISIBLE);
} }
@Override @Override
public void onResume() { public void onKeyboardHide() {
super.onResume(); fl_add_area.setVisibility(View.VISIBLE);
hideSoftInput(); }
});
}
} }
private void initTopbar() { private void initTopbar() {
...@@ -158,17 +179,23 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -158,17 +179,23 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
Button rightButton = mTopBar.addRightTextButton("編輯", R.id.qmui_dialog_edit_right_icon); Button rightButton = mTopBar.addRightTextButton("編輯", R.id.qmui_dialog_edit_right_icon);
rightButton.setTextColor(ContextCompat.getColor(mContext, R.color.theme_white_color)); rightButton.setTextColor(ContextCompat.getColor(mContext, R.color.theme_white_color));
rightButton.setOnClickListener(v -> { rightButton.setOnClickListener(v -> {
clickEdit(rightButton);
});
}
private void clickEdit(Button rightButton) {
isRadioEdit = !isRadioEdit; isRadioEdit = !isRadioEdit;
if (isRadioEdit) { if (isRadioEdit) {
fl_add_area.setVisibility(View.INVISIBLE);
initCheckedStatus(); initCheckedStatus();
rightButton.setText("取消"); rightButton.setText("取消");
} else { } else {
fl_add_area.setVisibility(View.VISIBLE);
rightButton.setText("編輯"); rightButton.setText("編輯");
} }
showRadioEdit(); showRadioEdit();
mAreaManageAdapter.setRadioEdit(isRadioEdit); mAreaManageAdapter.setRadioEdit(isRadioEdit);
mAreaManageAdapter.notifyDataSetChanged(); mAreaManageAdapter.notifyDataSetChanged();
});
} }
private void initRefreshLayout() { private void initRefreshLayout() {
...@@ -220,13 +247,6 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -220,13 +247,6 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
mAreaManageAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() { mAreaManageAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() {
@Override @Override
public void onItemClick(View view, int viewType, Object data, int position) { public void onItemClick(View view, int viewType, Object data, int position) {
// if (isRadioEdit) {
// TableArea tableArea = (TableArea) data;
// tableArea.setChecked(!tableArea.isChecked());
// mAreaManageAdapter.notifyDataSetChanged();
// } else {
// start(AddAreaFragment.newInstance((TableArea) data));
// }
} }
}); });
mAreaManageAdapter.addTextChangedListener(new AreaManageAdapter.OnTextChangedListener() { mAreaManageAdapter.addTextChangedListener(new AreaManageAdapter.OnTextChangedListener() {
...@@ -249,7 +269,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -249,7 +269,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
recycler_area.setVisibility(View.VISIBLE); recycler_area.setVisibility(View.VISIBLE);
} }
public void addSuccess(){ public void addSuccess() {
ed_area_name.setText(""); ed_area_name.setText("");
} }
...@@ -266,9 +286,9 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -266,9 +286,9 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
@OnClick(R2.id.fl_add_area) @OnClick(R2.id.fl_add_area)
void onClickAddArea() { void onClickAddArea() {
if(ll_add_area_layout.getVisibility() == View.GONE){ if (ll_add_area_layout.getVisibility() == View.GONE) {
ll_add_area_layout.setVisibility(View.VISIBLE); ll_add_area_layout.setVisibility(View.VISIBLE);
}else { } else {
ll_add_area_layout.setVisibility(View.GONE); ll_add_area_layout.setVisibility(View.GONE);
} }
} }
...@@ -280,21 +300,9 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -280,21 +300,9 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
} }
} }
// @OnClick(R2.id.cb_all_select) // @OnClick(R2.id.btn_save)
// void onClickAddSelect() { // void onClickSaveModify() {
// for (int i = 0; i < mTableAreaList.size(); i++) { // mActivity.updateArea(createUpateAreaRequest(datasBean.getId(), name));
// mTableAreaList.get(i).setChecked(true);
// }
// mAreaManageAdapter.notifyDataSetChanged();
// }
// @OnClick(R2.id.btn_anti_select)
// void onClickAntiSelect() {
// for (int i = 0; i < mTableAreaList.size(); i++) {
// TableArea tableArea = mTableAreaList.get(i);
// tableArea.setChecked(!tableArea.isChecked());
// }
// mAreaManageAdapter.notifyDataSetChanged();
// } // }
@OnClick(R2.id.btn_sure) @OnClick(R2.id.btn_sure)
...@@ -435,4 +443,8 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -435,4 +443,8 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
ll_bottom_operat.setVisibility(View.GONE); ll_bottom_operat.setVisibility(View.GONE);
} }
} }
public boolean isRadioEdit() {
return isRadioEdit;
}
} }
...@@ -552,9 +552,13 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -552,9 +552,13 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
@Override @Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) { public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if(isRadioEdit){
mActivity.onPauseRefreshTableData();
return;
}
switch (newState) { switch (newState) {
case SCROLL_STATE_IDLE://停止滚动 case SCROLL_STATE_IDLE://停止滚动
if (mActivity != null) { if (mActivity != null ) {
mActivity.onStartRefreshTableData(); mActivity.onStartRefreshTableData();
} }
break; break;
...@@ -571,6 +575,10 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -571,6 +575,10 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
if(isRadioEdit){
mActivity.onPauseRefreshTableData();
return false;
}
int action = event.getAction(); int action = event.getAction();
switch (action) { switch (action) {
case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_DOWN:
...@@ -602,6 +610,10 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -602,6 +610,10 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
} }
} }
public boolean isRadioEdit() {
return isRadioEdit;
}
@Override @Override
public List<TableItem> getTableList() { public List<TableItem> getTableList() {
return mTableList; return mTableList;
......
...@@ -22,13 +22,18 @@ ...@@ -22,13 +22,18 @@
android:layout_height="match_parent" android:layout_height="match_parent"
app:srlEnableLoadMore="false"> app:srlEnableLoadMore="false">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="vertical" android:background="@color/theme_white_color"
android:background="@color/theme_white_color"> android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView <com.gingersoft.gsa.cloud.base.widget.NoScrollRecyclerView
android:id="@+id/recycler_area" android:id="@+id/recycler_area"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
...@@ -56,15 +61,15 @@ ...@@ -56,15 +61,15 @@
android:textColor="@color/normal_color" android:textColor="@color/normal_color"
android:textColorHint="@color/hint_color" android:textColorHint="@color/hint_color"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
android:visibility="visible"/> android:visibility="visible" />
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id="@+id/btn_save_area" android:id="@+id/btn_save_area"
android:layout_width="@dimen/dp_60" android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_38" android:layout_height="@dimen/dp_38"
android:layout_marginRight="@dimen/dp_10"
android:layout_marginLeft="@dimen/dp_10"
android:layout_gravity="right|center_vertical" android:layout_gravity="right|center_vertical"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:background="@color/theme_red_color" android:background="@color/theme_red_color"
android:text="保存" android:text="保存"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
...@@ -73,6 +78,7 @@ ...@@ -73,6 +78,7 @@
app:qmui_radius="@dimen/dp_5" /> app:qmui_radius="@dimen/dp_5" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout> </com.scwang.smartrefresh.layout.SmartRefreshLayout>
</FrameLayout> </FrameLayout>
...@@ -85,7 +91,7 @@ ...@@ -85,7 +91,7 @@
android:orientation="horizontal" android:orientation="horizontal"
android:paddingLeft="@dimen/dp_15" android:paddingLeft="@dimen/dp_15"
android:paddingRight="@dimen/dp_15" android:paddingRight="@dimen/dp_15"
android:visibility="gone"> android:visibility="visible">
<CheckBox <CheckBox
android:id="@+id/cb_all_select" android:id="@+id/cb_all_select"
...@@ -101,12 +107,22 @@ ...@@ -101,12 +107,22 @@
android:layout_width="@dimen/dp_60" android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_38" android:layout_height="@dimen/dp_38"
android:layout_gravity="right|center_vertical" android:layout_gravity="right|center_vertical"
android:background="@color/theme_red_color"
android:text="刪除" android:text="刪除"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
app:qmui_backgroundColor="@color/theme_color" app:qmui_backgroundColor="@color/theme_color"
app:qmui_radius="@dimen/dp_5" /> app:qmui_radius="@dimen/dp_5" />
<!-- <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton-->
<!-- android:id="@+id/btn_save"-->
<!-- android:layout_width="@dimen/dp_60"-->
<!-- android:layout_height="@dimen/dp_38"-->
<!-- android:layout_gravity="right|center_vertical"-->
<!-- android:text="保存"-->
<!-- android:textColor="@color/theme_white_color"-->
<!-- android:textSize="@dimen/sp_14"-->
<!-- app:qmui_backgroundColor="@color/theme_color"-->
<!-- app:qmui_radius="@dimen/dp_5" />-->
</LinearLayout> </LinearLayout>
<!-- <com.qmuiteam.qmui.alpha.QMUIAlphaTextView--> <!-- <com.qmuiteam.qmui.alpha.QMUIAlphaTextView-->
...@@ -127,7 +143,7 @@ ...@@ -127,7 +143,7 @@
android:layout_width="@dimen/dp_65" android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_65" android:layout_height="@dimen/dp_65"
android:layout_gravity="bottom|right" android:layout_gravity="bottom|right"
android:layout_marginBottom="@dimen/dp_45" android:layout_marginBottom="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_20" android:layout_marginRight="@dimen/dp_20"
android:background="@drawable/manage_shape_add_btn_oval"> android:background="@drawable/manage_shape_add_btn_oval">
...@@ -138,7 +154,6 @@ ...@@ -138,7 +154,6 @@
android:src="@drawable/add_white" /> android:src="@drawable/add_white" />
</com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout> </com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout>
<com.qmuiteam.qmui.widget.QMUITopBarLayout <com.qmuiteam.qmui.widget.QMUITopBarLayout
android:id="@+id/topbar" android:id="@+id/topbar"
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -145,14 +145,6 @@ class WeatherRepository private constructor(private val network: CoolWeatherNetw ...@@ -145,14 +145,6 @@ class WeatherRepository private constructor(private val network: CoolWeatherNetw
network.getCancelReason(requestBody) network.getCancelReason(requestBody)
} }
suspend fun getCancelReason(restaurantId: String, type: String) = withContext(Dispatchers.IO) {
val requestBody = FormBody.Builder()
.add("restaurantId", restaurantId)
.add("type", type)//取消原因類型,1食品取消,2,物流取消,3,訂單取消
.build()
network.getCancelReason(requestBody)
}
fun getBody(vararg pair: Pair1<String, String>): RequestBody { fun getBody(vararg pair: Pair1<String, String>): RequestBody {
val requestBody = FormBody.Builder() val requestBody = FormBody.Builder()
......
...@@ -10,12 +10,12 @@ data class CancelReason( ...@@ -10,12 +10,12 @@ data class CancelReason(
val content: String, val content: String,
val content2: String, val content2: String,
val content3: String, val content3: String,
val createTime: Int, val createTime: Long,
val id: Int, val id: Int,
val restaurantId: Int, val restaurantId: Int,
val sort: Int, val sort: Int,
val type: Int, val type: Int,
val uid: Int, val uid: Int,
val updateTime: Int val updateTime: Long
) )
} }
\ No newline at end of file
...@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils ...@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
import com.gingersoft.gsa.cloud.base.widget.DialogUtils import com.gingersoft.gsa.cloud.base.widget.DialogUtils
import com.gingersoft.gsa.cloud.constans.PrintConstans import com.gingersoft.gsa.cloud.constans.PrintConstans
import com.gingersoft.gsa.cloud.print.bean.OrderDetails import com.gingersoft.gsa.cloud.print.bean.OrderDetails
import com.gingersoft.gsa.cloud.ui.utils.AppDialog
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
import com.gingersoft.gsa.other_order_mode.R import com.gingersoft.gsa.other_order_mode.R
import com.gingersoft.gsa.other_order_mode.data.WeatherRepository import com.gingersoft.gsa.other_order_mode.data.WeatherRepository
...@@ -31,21 +32,16 @@ import kotlinx.coroutines.withContext ...@@ -31,21 +32,16 @@ import kotlinx.coroutines.withContext
class PageViewModel(private val repository: WeatherRepository) : ViewModel() { class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
private fun showLoading(context: Context, message: String? = null) {
if (message != null)
LoadingDialog.showDialogForLoading(context, message, true)
else
LoadingDialog.showDialogForLoading(context)
}
fun cancelDialogForLoading() {
LoadingDialog.cancelDialogForLoading()
}
companion object { companion object {
var fragmentStatus = arrayOf("0,1,2,3", "0,1", "2", "3", "3") var fragmentStatus = arrayOf("0,1,2,3", "0,1", "2", "3", "3")
var fragmentType = arrayOf("0", "0", "0", "2", "7") var fragmentType = arrayOf("0", "0", "0", "2", "7")
val PrintCode = 1001//打印
val SendCode = 1002//指派送貨
val OrderDelivery = 1003//訂單配送
val Closing = 1004//結賬
val CancelOrder = 1005//取消訂單
val CancelLogistics = 1006//取消物流
val ProductionComplete = 1007//製作完成
} }
var mOrderNum = arrayListOf<MutableLiveData<Int>>() var mOrderNum = arrayListOf<MutableLiveData<Int>>()
...@@ -64,8 +60,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -64,8 +60,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
//派送員信息 //派送員信息
var deliveryBean: DeliveryBean? = null var deliveryBean: DeliveryBean? = null
var deliveryConfig: DeliveryConfig? = null
/** /**
* 獲取訂單數量 * 獲取訂單數量
* status * status
...@@ -249,16 +243,23 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -249,16 +243,23 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
// } // }
fun getShipanyAndOrderInfo(curStat: Int, restaurantId: String, orderId: String, listener: (OrderDetails?) -> Unit) { fun getShipanyAndOrderInfo(restaurantId: String, orderId: String, listener: (OrderDetails?) -> Unit) {
launch({ launch({
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val orderDetail = withContext(Dispatchers.Default) { repository.getOrderInfo(orderId) } val orderDetail = withContext(Dispatchers.Default) { repository.getOrderInfo(orderId) }
if (orderDetail.data != null && orderDetail.data!!.isNotEmpty()) { if (orderDetail.data != null && orderDetail.data!!.isNotEmpty()) {
if (curStat != 0) { //訂單詳情不為空
if (orderDetail.data!![0].isDelete != 0) {
//如果不是第三方物流單
withContext(Dispatchers.Main) {
listener.invoke(orderDetail)
}
} else {
if (orderDetail.data!![0].curStat != 0) {
val data = orderDetail.data!![0] val data = orderDetail.data!![0]
val type: Int val type: Int
val estimatedTime: String val estimatedTime: String
when (curStat) { when (orderDetail.data!![0].curStat) {
1 -> { 1 -> {
type = 2 type = 2
estimatedTime = "預計配送員接單時間:" estimatedTime = "預計配送員接單時間:"
...@@ -277,7 +278,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -277,7 +278,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} }
} }
val estimatedBean = withContext(Dispatchers.Default) { repository.getShipanyOrderTime(restaurantId, orderId, type) }//1、预计整张订单完成时间2、預計配送員接單時間3、預計配送員到店時間4、配送員預計送達時間 val estimatedBean = withContext(Dispatchers.Default) { repository.getShipanyOrderTime(restaurantId, orderId, type) }//1、预计整张订单完成时间2、預計配送員接單時間3、預計配送員到店時間4、配送員預計送達時間
if (estimatedBean.data.estimated_time > 0) { if (estimatedBean?.data != null && estimatedBean.data.estimated_time > 0) {
data.estimatedTime = estimatedTime + ("${estimatedBean.data.estimated_time}分鐘後") data.estimatedTime = estimatedTime + ("${estimatedBean.data.estimated_time}分鐘後")
} else { } else {
data.estimatedTime = "" data.estimatedTime = ""
...@@ -286,6 +287,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -286,6 +287,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
listener.invoke(orderDetail) listener.invoke(orderDetail)
} }
}
} else { } else {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
listener.invoke(null) listener.invoke(null)
...@@ -299,168 +301,220 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -299,168 +301,220 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}) })
} }
/**
* 待確認 --- 確認之後狀態變為 製作中,按鈕顯示:自取:製作完成,外賣:指派送貨----自取的狀態為待取餐,按鈕為結賬,外賣的狀態為派送中,按鈕顯示結賬 fun updateOrderStatusByBtn(btnId: Int, dataBean: OrderDetails.DataBean, restaurantId: String, listener: (Int, Boolean) -> Unit) {
* 更新訂單信息,自取或是外賣
* status 0,1待確認
* 2 已確認,外賣是指派送單,自取是製作完成
*/
fun updateOrderStatus(context: Context, data: OrderList.DataBeanX.DataBean, orderDetails: OrderDetails, listener: (Boolean) -> Unit) {
launch({ launch({
val status = when (data.STATUS) {//如果以前的狀態是0,則修改為2。。。。 when (btnId) {
0 -> 2 BtnBuilder.sureBtn -> {
1 -> 2 // 確認訂單
2 -> 3 // 1、如果是外賣,指派到第三方物流
3 -> 4 // 2、如果是自取,狀態改為製作中
else -> 0 repository.getDeliveryConfigDTO(restaurantId).apply {
} var third = false
val isPush = when (status) { //獲取配送設置,查看當前單是否是第三方物流
2 -> 2 for (i in 0 until data.list.size) {
3 -> 1 if (data.list[i].distributionType == dataBean.deliveryMode) {
4 -> 0 third = data.list[i].type == 1
else -> 2 break
}
// if (data.order_type == 2) {
// 是外賣
if (status == 3) {
//指派送貨,自取是製作完成
if (data.order_type == 2) {
if (orderDetails.data!![0].isDelete != 0) {
if (deliveryBean != null && deliveryBean!!.data.isNotEmpty()) {
selectorDelivery(listener, context, data, status, isPush)
} else {
ToastUtils.show(context, "沒有送貨員信息")
} }
} else {
//第三方的單,執行重印功能
printOrder(orderDetails, data, context, listener)
} }
if (third) {
// 如果是第三方物流,調用第三方接口
thirdSend(dataBean, 2, listener)
} else { } else {
//自取 updateOrderAndPrint(dataBean, 2, listener)
repository.gsUpdateOrderStatus(data.Id.toString(), status, data.order_type, 1, "", "", "", "0", "", 1, 0).apply {
listener.invoke(code == "1")
} }
} }
} else if (status == 4) {
//結賬,彈窗確認是否結賬
if (orderDetails.data!![0].isDelete == 0) {
//第三方物流單,沒有結賬,重印
printOrder(orderDetails, data, context, listener)
} else {
object : DialogUtils(context, R.layout.other_order_pause_orders) {
override fun initLayout(hepler: ViewHepler, dialog: Dialog) {
hepler.setText(R.id.tv_warning_title, "是否確認結賬?")
hepler.getView<TextView>(R.id.tv_dialog_confirm).setOnClickListener {
dialog.dismiss()
launch({
// updateOrderStatus(data.Id.toString(), "", status, "", "", isPush, data.order_type).apply {
// listener.invoke(success)
// }
repository.gsUpdateOrderStatus(data.Id.toString(), status, data.order_type, 3, "", "", "", "0", "", 1, 0).apply {
listener.invoke(code == "1")
}
}, {
})
} }
hepler.getView<TextView>(R.id.tv_dialog_cancel).setOnClickListener { BtnBuilder.printBtn -> {
dialog.dismiss() //打印
listener.invoke(false) printOrder(dataBean, listener)
} }
BtnBuilder.ProductionCompletedBtn -> {
//製作完成
repository.gsUpdateOrderStatus(dataBean.ID.toString(), 3, dataBean.order_type, 1, "", "", "", "0", "", 1, 0).apply {
listener.invoke(ProductionComplete, code == "1")
} }
}.createDialogView().show()
}
} else {
showLoading(context)
// 確認訂單
var third = false
if (deliveryConfig != null) {
for (i in 0 until deliveryConfig!!.data.list.size) {
if (deliveryConfig!!.data.list[i].distributionType == data.deliveryMode) {
third = deliveryConfig!!.data.list[i].type == 1
break
} }
} }
}, {
})
} }
if (third) {
// 如果是第三方物流,調用第三方接口 fun gsUpdateOrderStatus(orderId: String, orderType: Int, listener: (Int, Boolean) -> Unit) {
thirdSend(data, orderDetails, status, context, listener) launch({
} else { repository.gsUpdateOrderStatus(orderId, 4, orderType, 3, "", "", "", "0", "", 1, 0).apply {
updateOrderAndPrint(data, status, context, listener) listener.invoke(OrderDelivery, code == "1")
} }
}, {
listener.invoke(OrderDelivery, false)
})
} }
/**
* 待確認 --- 確認之後狀態變為 製作中,按鈕顯示:自取:製作完成,外賣:指派送貨----自取的狀態為待取餐,按鈕為結賬,外賣的狀態為派送中,按鈕顯示結賬
* 更新訂單信息,自取或是外賣
* status 0,1待確認
* 2 已確認,外賣是指派送單,自取是製作完成
*/
fun updateOrderStatus(context: Context, data: OrderList.DataBeanX.DataBean, orderDetails: OrderDetails, listener: (Boolean) -> Unit) {
// launch({
// val status = when (data.STATUS) {//如果以前的狀態是0,則修改為2。。。。
// 0 -> 2
// 1 -> 2
// 2 -> 3
// 3 -> 4
// else -> 0
// }
// val isPush = when (status) {
// 2 -> 2
// 3 -> 1
// 4 -> 0
// else -> 2
// }
//// if (data.order_type == 2) {
// // 是外賣
// if (status == 3) {
// //指派送貨,自取是製作完成
// if (data.order_type == 2) {
// if (orderDetails.data!![0].isDelete != 0) {
// if (deliveryBean != null && deliveryBean!!.data.isNotEmpty()) {
// selectorDelivery(listener, context, data, status, isPush)
// } else { // } else {
// // 自取的確認訂單 // ToastUtils.show(context, "沒有送貨員信息")
// repository.updateSelfOrderStatus(data.Id.toString(), status.toString(), GsaCloudApplication.getRestaurantId(context).toString()).apply {
// listener.invoke(success)
// } // }
// } else {
// //第三方的單,執行重印功能
// printOrder(orderDetails, data, context, listener)
// } // }
}, { // } else {
// //自取
}) // repository.gsUpdateOrderStatus(data.Id.toString(), status, data.order_type, 1, "", "", "", "0", "", 1, 0).apply {
// listener.invoke(code == "1")
// }
// }
// } else if (status == 4) {
// //結賬,彈窗確認是否結賬
// if (orderDetails.data!![0].isDelete == 0) {
// //第三方物流單,沒有結賬,重印
// printOrder(orderDetails, data, context, listener)
// } else {
// object : DialogUtils(context, R.layout.other_order_pause_orders) {
// override fun initLayout(hepler: ViewHepler, dialog: Dialog) {
// hepler.setText(R.id.tv_warning_title, "是否確認結賬?")
// hepler.getView<TextView>(R.id.tv_dialog_confirm).setOnClickListener {
// dialog.dismiss()
// launch({
// // updateOrderStatus(data.Id.toString(), "", status, "", "", isPush, data.order_type).apply {
//// listener.invoke(success)
//// }
// repository.gsUpdateOrderStatus(data.Id.toString(), status, data.order_type, 3, "", "", "", "0", "", 1, 0).apply {
// listener.invoke(code == "1")
// }
// }, {
//
// })
// }
// hepler.getView<TextView>(R.id.tv_dialog_cancel).setOnClickListener {
// dialog.dismiss()
// listener.invoke(false)
// }
// }
// }.createDialogView().show()
// }
// } else {
// showLoading(context)
// // 確認訂單
// var third = false
// if (deliveryConfig != null) {
// for (i in 0 until deliveryConfig!!.data.list.size) {
// if (deliveryConfig!!.data.list[i].distributionType == data.deliveryMode) {
// third = deliveryConfig!!.data.list[i].type == 1
// break
// }
// }
// }
// if (third) {
// // 如果是第三方物流,調用第三方接口
// thirdSend(data, orderDetails, status, context, listener)
// } else {
// updateOrderAndPrint(data, status, context, listener)
// }
// }
//// } else {
//// // 自取的確認訂單
//// repository.updateSelfOrderStatus(data.Id.toString(), status.toString(), GsaCloudApplication.getRestaurantId(context).toString()).apply {
//// listener.invoke(success)
//// }
//// }
// }, {
//
// })
} }
/** /**
* 修改訂單狀態並打印 * 修改訂單狀態並打印
*/ */
private suspend fun updateOrderAndPrint(data: OrderList.DataBeanX.DataBean, status: Int, context: Context, listener: (Boolean) -> Unit) { private suspend fun updateOrderAndPrint(dataBean: OrderDetails.DataBean, status: Int, listener: (Int, Boolean) -> Unit) {
// updateOrderStatus(data.Id.toString(), "", status, "", "", isPush, data.order_type).apply { repository.gsUpdateOrderStatus(dataBean.ID.toString(), status, dataBean.order_type, 1, "", "", "", "0", "", 1, 0).apply {
//
// }
repository.gsUpdateOrderStatus(data.Id.toString(), status, data.order_type, 1, "", "", "", "0", "", 1, 0).apply {
if (status == 0 || status == 1 || status == 2) { if (status == 0 || status == 1 || status == 2) {
//確認送單 //確認送單
if (this.code == "1") { if (this.code == "1") {
listener.invoke(OrderDelivery, true)
// 打印 // 打印
// 初始化用於打印的view // 初始化用於打印的view
// 送單成功後,再調用接口獲取取餐碼 // 送單成功後,再調用接口獲取取餐碼
showLoading(context) getOrderInfo(dataBean.ID.toString()) {
getOrderInfo(data.Id.toString()) {
if (it != null) { if (it != null) {
printOrder(it, data, context, listener) printOrder(dataBean, listener)
} }
cancelDialogForLoading()
} }
} else { } else {
ToastUtils.show(context, "送單失敗") listener.invoke(OrderDelivery, false)
} }
} }
cancelDialogForLoading()
} }
} }
/** /**
* 打印訂單 * 打印訂單
*/ */
private fun printOrder(orderDetails: OrderDetails, data: OrderList.DataBeanX.DataBean, context: Context, listener: (Boolean) -> Unit) { private fun printOrder(dataBean: OrderDetails.DataBean, listener: (Int, Boolean) -> Unit) {
if (orderDetails.data != null) {
//訂單信息和廚房單 //訂單信息和廚房單
orderDetails.data!![0].order_type = data.order_type MyOrderManage.setDataBean(dataBean)
orderDetails.data!![0].orderPayType = data.orderPayType
MyOrderManage.setDataBean(orderDetails.data!![0])
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, 5) .addParam(PrintConstans.PRINT_TYPE, 5)
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread { _, result -> .callAsyncCallbackOnMainThread { _, result ->
Log.e("error", "是否成功打印:" + result.isSuccess)
if (!result.isSuccess) {
ToastUtils.show(context, "打印失敗")
}
MyOrderManage.setDataBean(null) MyOrderManage.setDataBean(null)
listener.invoke(PrintCode, result.isSuccess)
} }
} else {
ToastUtils.show(context, "沒有訂單內容,打印失敗")
} }
listener.invoke(true)
/**
* 打開錢箱
*/
fun openCashBox() {
CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, 6)
.addParam(PrintConstans.PRINT_LOADING, false)
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread { _, result ->
}
} }
/** /**
* 第三方派送 * 第三方派送
*/ */
private suspend fun thirdSend(data: OrderList.DataBeanX.DataBean, orderDetails: OrderDetails, status: Int, context: Context, listener: (Boolean) -> Unit) { private suspend fun thirdSend(dataBean: OrderDetails.DataBean, status: Int, listener: (Int, Boolean) -> Unit) {
val third = ThirdItem() val third = ThirdItem()
orderDetails.data?.get(0)?.PRODUCT_NAME?.let { //將食品數據轉為第三方需要的數據
dataBean.PRODUCT_NAME?.let {
for (i in it) { for (i in it) {
val price = ThirdItem.ThirdItemItem.UntPrice(`val` = i.PRICE!!.toDouble()) val price = ThirdItem.ThirdItemItem.UntPrice(`val` = i.PRICE!!.toDouble())
val thirdItem = if (i.PRODUCT_NAME != null) { val thirdItem = if (i.PRODUCT_NAME != null) {
...@@ -471,27 +525,29 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -471,27 +525,29 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
third.add(thirdItem) third.add(thirdItem)
} }
} }
repository.thirdDelivery(data.Id.toString(), third).apply { //調用第三方物流接口
cancelDialogForLoading() repository.thirdDelivery(dataBean.ID.toString(), third).apply {
if (success) { if (success) {
ToastUtils.show(context, "訂單派送成功") listener.invoke(OrderDelivery, true)
updateOrderAndPrint(data, status, context, listener) updateOrderAndPrint(dataBean, status, listener)
} else { } else {
ToastUtils.show(context, "訂單派送失敗") listener.invoke(OrderDelivery, false)
} }
} }
} }
// suspend fun updateOrderStatus(orderId: String, selfOrderId: String?, status: Int, mobile: String?, sender: String?, isPush: Int, orderType: Int): UpdateOrderBean {
// return repository.updateOrderStatus(orderId, selfOrderId, status, mobile, sender, isPush, orderType)
// }
/** /**
* 選擇派送員 * 選擇派送員
*/ */
private fun selectorDelivery(listener: (Boolean) -> Unit, context: Context, data: OrderList.DataBeanX.DataBean, status: Int, isPush: Int) { fun selectorDelivery(context: Context, dataBean: OrderDetails.DataBean, status: Int, listener: (Int, Boolean) -> Unit) {
launch({
repository.getDeliveryInfo(GsaCloudApplication.getRestaurantId(context).toString(), GsaCloudApplication.getMemberId(context).toString()).apply {
deliveryBean = this
if (this.data.isEmpty()) {
ToastUtils.show(context, "沒有配置配送員信息")
return@apply
}
//顯示選擇派送員 //顯示選擇派送員
listener.invoke(false)//關閉彈窗。但是不刷新頁面
object : DialogUtils(context, R.layout.other_order_layout_assign_deliveryman) { object : DialogUtils(context, R.layout.other_order_layout_assign_deliveryman) {
override fun initLayout(hepler: ViewHepler?, dialog: Dialog?) { override fun initLayout(hepler: ViewHepler?, dialog: Dialog?) {
hepler!!.getView<TextView>(R.id.tv_delivery_cancel).setOnClickListener { hepler!!.getView<TextView>(R.id.tv_delivery_cancel).setOnClickListener {
...@@ -516,21 +572,11 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -516,21 +572,11 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
confirmBtn.setOnClickListener { confirmBtn.setOnClickListener {
if (selectIndex != -1) { if (selectIndex != -1) {
launch({ launch({
// updateOrderStatus(data.Id.toString(), "", status, deliveryBean!!.data[deliveryAdapter.selectIndex].mobile, deliveryBean!!.data[deliveryAdapter.selectIndex].userName, isPush, data.order_type).apply { repository.gsUpdateOrderStatus(dataBean.ID.toString(), status, dataBean.order_type, 1, "", deliveryBean!!.data[deliveryAdapter.selectIndex].userName, deliveryBean!!.data[deliveryAdapter.selectIndex].mobile, "0", "", 1, 0).apply {
// if (this.success) {
// dialog?.dismiss()
// //回調
// listener.invoke(success)//刷新頁面
// ToastUtils.show(context, "訂單開始派送")
// } else {
// ToastUtils.show(context, "訂單派送失敗")
// }
// }
repository.gsUpdateOrderStatus(data.Id.toString(), status, data.order_type, 1, "", deliveryBean!!.data[deliveryAdapter.selectIndex].userName, deliveryBean!!.data[deliveryAdapter.selectIndex].mobile, "0", "", 1, 0).apply {
if (code == "1") { if (code == "1") {
dialog?.dismiss() dialog?.dismiss()
//回調 //回調
listener.invoke(code == "1")//刷新頁面 listener.invoke(OrderDelivery, code == "1")//刷新頁面
ToastUtils.show(context, "訂單開始派送") ToastUtils.show(context, "訂單開始派送")
} else { } else {
ToastUtils.show(context, "訂單派送失敗") ToastUtils.show(context, "訂單派送失敗")
...@@ -550,6 +596,63 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -550,6 +596,63 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
.setGravity(Gravity.BOTTOM) .setGravity(Gravity.BOTTOM)
.show() .show()
} }
}, {
})
}
/**
* 選擇取消原因
*/
fun selectorCancelReason(context: Context, cancelReason: CancelReason, title: String, listener: (Int) -> Unit) {
object : DialogUtils(context, R.layout.other_order_layout_assign_deliveryman) {
override fun initLayout(hepler: ViewHepler?, dialog: Dialog?) {
hepler!!.getView<TextView>(R.id.tv_delivery_cancel).setOnClickListener {
dialog!!.dismiss()
}
hepler.getView<TextView>(R.id.tv_title).text = title
val confirmBtn: TextView = hepler.getView(R.id.tv_delivery_confirm)
var selectIndex = -1
val recycler = hepler.getView<RecyclerView>(R.id.rv_delivery)
if (cancelReason.data.isNotEmpty() && cancelReason.data.size < 3) {
recycler.layoutManager = GridLayoutManager(context, cancelReason.data.size)
} else {
recycler.layoutManager = GridLayoutManager(context, 3)
}
val cancelReasons = ArrayList<DeliveryBean.Data>()
for (bean in cancelReason.data) {
val data = DeliveryBean.Data(bean.id, "", bean.content)
cancelReasons.add(data)
}
val deliveryAdapter = DeliveryAdapter(context, cancelReasons)
recycler.adapter = deliveryAdapter
deliveryAdapter.setOnItemClickListener { adapter, view, position ->
selectIndex = position
deliveryAdapter.selectIndex = position
adapter.notifyDataSetChanged()
confirmBtn.background = context.resources.getDrawable(R.drawable.shape_green_btn)
}
confirmBtn.setOnClickListener {
if (selectIndex != -1) {
listener.invoke(selectIndex)
} else {
ToastUtils.show(context, "請選擇一個取消原因")
}
}
}
}.setWidth(WindowManager.LayoutParams.MATCH_PARENT)
.setHeight((ArmsUtils.getScreenHeidth(context) * 0.5).toInt())
.createDialogView()
.setGravity(Gravity.BOTTOM)
.show()
}
/** /**
* 獲取配送員信息 * 獲取配送員信息
...@@ -567,10 +670,10 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -567,10 +670,10 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
/** /**
* 獲取餐廳第三方物流信息 * 獲取餐廳第三方物流信息
*/ */
fun getDeliveryConfigDTO(context: Context) { fun getDeliveryConfigDTO(restaurantId: String, listener: (DeliveryConfig?) -> Unit) {
launch({ launch({
repository.getDeliveryConfigDTO(GsaCloudApplication.getRestaurantId(context).toString()).apply { repository.getDeliveryConfigDTO(restaurantId).apply {
deliveryConfig = this listener.invoke(this)
} }
}, { }, {
...@@ -580,9 +683,9 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -580,9 +683,9 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
/** /**
* 取消物流 * 取消物流
*/ */
fun cancelLogistics(shopId: String, orderId: String, listener: (String) -> Unit) { fun cancelLogistics(shopId: String, orderId: String, reasonId: String, reasonDesc: String, listener: (String) -> Unit) {
launch({ launch({
repository.cancelLogistics(shopId, orderId).apply { repository.cancelLogistics(shopId, orderId, reasonId, reasonDesc).apply {
if (success) { if (success) {
listener.invoke("已取消物流") listener.invoke("已取消物流")
} else { } else {
...@@ -595,12 +698,11 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -595,12 +698,11 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} }
/** /**
* 取消訂單,如果有物流需要先提示取消物流 * 取消訂單
*/ */
fun cancelOrder(context: Context, orderId: String, listener: (Boolean) -> Unit) { fun cancelOrder(context: Context, orderId: String, reasonId: String, reasonDesc: String, listener: (Boolean) -> Unit) {
launch({ launch({
showLoading(context) repository.updateOrderStates(GsaCloudApplication.getMemberId(context).toString(), orderId, "6", GsaCloudApplication.getMemberName(context), reasonId, reasonDesc).apply {
repository.updateOrderStates(GsaCloudApplication.getMemberId(context).toString(), orderId, "6", GsaCloudApplication.getMemberName(context)).apply {
listener.invoke(code == "1") listener.invoke(code == "1")
} }
}, { }, {
...@@ -608,13 +710,16 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -608,13 +710,16 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}) })
} }
fun getCancelReason(restaurantId: String, type: String) { /**
* 獲取餐廳配置的取消原因
*/
fun getCancelReason(restaurantId: String, type: String, listener: (CancelReason?) -> Unit) {
launch({ launch({
repository.getCancelReason(restaurantId, type).apply { repository.getCancelReason(restaurantId, type).apply {
listener.invoke(this)
} }
}, { }, {
listener.invoke(null)
}) })
} }
...@@ -628,10 +733,4 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -628,10 +733,4 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} }
} }
override fun onCleared() {
super.onCleared()
cancelDialogForLoading()
}
} }
\ No newline at end of file
...@@ -102,7 +102,6 @@ class OtherOrderActivity : BaseActivity() { ...@@ -102,7 +102,6 @@ class OtherOrderActivity : BaseActivity() {
btnHeight = btn_open_or_close_info.height.toFloat() btnHeight = btn_open_or_close_info.height.toFloat()
} }
pageViewModel.getDeliveryInfo(this) pageViewModel.getDeliveryInfo(this)
pageViewModel.getDeliveryConfigDTO(this)
} }
/** /**
...@@ -257,13 +256,14 @@ class OtherOrderActivity : BaseActivity() { ...@@ -257,13 +256,14 @@ class OtherOrderActivity : BaseActivity() {
private fun initWebsocket() { private fun initWebsocket() {
//開啟websocket //開啟websocket
val intent = Intent(this, GetInfoUpdateService::class.java) val intent = Intent(this, GetInfoUpdateService::class.java)
startService(intent)
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE) bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE)
} }
override fun onDestroy() { // override fun onDestroy() {
super.onDestroy() // super.onDestroy()
unbindService(serviceConnection) // unbindService(serviceConnection)
} // }
private var serviceConnection = object : ServiceConnection { private var serviceConnection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName, service: IBinder) { override fun onServiceConnected(name: ComponentName, service: IBinder) {
...@@ -274,12 +274,12 @@ class OtherOrderActivity : BaseActivity() { ...@@ -274,12 +274,12 @@ class OtherOrderActivity : BaseActivity() {
Log.e("message", "消息類型$type") Log.e("message", "消息類型$type")
if (type == 3 || type == 4 || type == 5 if (type == 3 || type == 4 || type == 5
|| type == 6 || type == 7) { || type == 6 || type == 7) {
if (type == 6 || type == 7) { // if (type == 6 || type == 7) {
//
} else { // } else {
//播放提示音 // //播放提示音
initSoundPool() // initSoundPool()
} // }
pageViewModel.refreshState.postValue(selectPosition) pageViewModel.refreshState.postValue(selectPosition)
} }
} }
...@@ -420,6 +420,11 @@ class OtherOrderActivity : BaseActivity() { ...@@ -420,6 +420,11 @@ class OtherOrderActivity : BaseActivity() {
startActivity(Intent(this, HistoryOrderActivity::class.java)) startActivity(Intent(this, HistoryOrderActivity::class.java))
pop!!.dismiss() pop!!.dismiss()
} }
view.findViewById<QMUIAlphaTextView>(R.id.tv_open_cash_box).setOnClickListener {
//開錢箱
pageViewModel.openCashBox()
pop!!.dismiss()
}
} else { } else {
pop!!.show(it) pop!!.show(it)
} }
......
...@@ -5,6 +5,7 @@ import android.util.Log ...@@ -5,6 +5,7 @@ import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Button
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
...@@ -18,7 +19,6 @@ import com.gingersoft.gsa.other_order_mode.ui.adapter.DeliveryListAdapter ...@@ -18,7 +19,6 @@ import com.gingersoft.gsa.other_order_mode.ui.adapter.DeliveryListAdapter
import com.gingersoft.gsa.other_order_mode.ui.base.BaseFragment import com.gingersoft.gsa.other_order_mode.ui.base.BaseFragment
import com.gingersoft.gsa.other_order_mode.util.InjectorUtil import com.gingersoft.gsa.other_order_mode.util.InjectorUtil
import kotlinx.android.synthetic.main.fragment_delivery_list.* import kotlinx.android.synthetic.main.fragment_delivery_list.*
import kotlin.math.max
class DeliveryFragment : BaseFragment() { class DeliveryFragment : BaseFragment() {
...@@ -30,15 +30,21 @@ class DeliveryFragment : BaseFragment() { ...@@ -30,15 +30,21 @@ class DeliveryFragment : BaseFragment() {
private lateinit var viewModel: DeliveryViewModel private lateinit var viewModel: DeliveryViewModel
private lateinit var contentView:View
private lateinit var addBtn: Button
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? { savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_delivery_list, container, false)
contentView = inflater.inflate(R.layout.fragment_delivery_list, container, false)
addBtn = contentView.findViewById(R.id.btn_default)
return contentView
} }
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProvider(activity?.viewModelStore!!, InjectorUtil.getDeliveryFactory())[DeliveryViewModel::class.java] viewModel = ViewModelProvider(activity?.viewModelStore!!, InjectorUtil.getDeliveryFactory())[DeliveryViewModel::class.java]
tv_add_delivery.setOnClickListener{ addBtn.text = "+添加配送方式"
addBtn.setOnClickListener{
(activity as DeliverySettingActivity).editDelivery(null) (activity as DeliverySettingActivity).editDelivery(null)
} }
viewModel.otherInfo.observe(viewLifecycleOwner, Observer { it -> viewModel.otherInfo.observe(viewLifecycleOwner, Observer { it ->
...@@ -53,7 +59,7 @@ class DeliveryFragment : BaseFragment() { ...@@ -53,7 +59,7 @@ class DeliveryFragment : BaseFragment() {
deliveryListAdapter!!.setOnItemChildClickListener { adapter, view, position -> deliveryListAdapter!!.setOnItemChildClickListener { adapter, view, position ->
when (view.id) { when (view.id) {
R.id.iv_delete -> { R.id.iv_delete -> {
AppDialog.showWaringDialog(context, "是否確認刪除") { _, dialog -> AppDialog().showWaringDialog(context, "是否確認刪除") { _, dialog ->
showLoading() showLoading()
it.data.list[position].apply { it.data.list[position].apply {
viewModel.updateDeliveryConfig(distributionFeeMin.toString(), distributionFeeMax.toString(), distributionFee.toString(), deliveryCost.toString(), distributionType, type, desc, id, GsaCloudApplication.getRestaurantId(context), GsaCloudApplication.getMemberId(context), lackPrice.toString(), 1) { viewModel.updateDeliveryConfig(distributionFeeMin.toString(), distributionFeeMax.toString(), distributionFee.toString(), deliveryCost.toString(), distributionType, type, desc, id, GsaCloudApplication.getRestaurantId(context), GsaCloudApplication.getMemberId(context), lackPrice.toString(), 1) {
......
...@@ -39,6 +39,7 @@ class HistoryFragment : BaseFragment() { ...@@ -39,6 +39,7 @@ class HistoryFragment : BaseFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProvider(activity!!.viewModelStore, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply { viewModel = ViewModelProvider(activity!!.viewModelStore, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply {
historyData.observe(viewLifecycleOwner, Observer{ it -> historyData.observe(viewLifecycleOwner, Observer{ it ->
cancelDialogForLoading() cancelDialogForLoading()
refresh_layout.finishRefresh() refresh_layout.finishRefresh()
...@@ -47,7 +48,7 @@ class HistoryFragment : BaseFragment() { ...@@ -47,7 +48,7 @@ class HistoryFragment : BaseFragment() {
it?.let { _ -> it?.let { _ ->
refresh_layout.setEnableLoadMore((it.data != null && it.data!!.size > 0)) refresh_layout.setEnableLoadMore((it.data != null && it.data!!.size > 0))
if (mHistoryOrderAdapter == null) { if (mHistoryOrderAdapter == null) {
mHistoryOrderAdapter = it.data.let { it1 -> context?.let { it2 -> HistoryOrderAdapter(it2, it1) } } mHistoryOrderAdapter = it.data.let { it1 -> context?.let { it2 -> HistoryOrderAdapter(status.value, it2, it1) } }
rv_other_order.layoutManager = LinearLayoutManager(context) rv_other_order.layoutManager = LinearLayoutManager(context)
rv_other_order.adapter = mHistoryOrderAdapter rv_other_order.adapter = mHistoryOrderAdapter
mHistoryOrderAdapter!!.setOnItemClickListenter { it -> mHistoryOrderAdapter!!.setOnItemClickListenter { it ->
...@@ -77,6 +78,7 @@ class HistoryFragment : BaseFragment() { ...@@ -77,6 +78,7 @@ class HistoryFragment : BaseFragment() {
} }
} else { } else {
mHistoryOrderAdapter!!.data = it.data mHistoryOrderAdapter!!.data = it.data
mHistoryOrderAdapter!!.stauts = status.value
mHistoryOrderAdapter!!.notifyDataSetChanged() mHistoryOrderAdapter!!.notifyDataSetChanged()
} }
} }
......
package com.gingersoft.gsa.other_order_mode.ui.fragment package com.gingersoft.gsa.other_order_mode.ui.fragment
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils ...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
import com.gingersoft.gsa.cloud.ui.utils.AppDialog import com.gingersoft.gsa.cloud.ui.utils.AppDialog
import com.gingersoft.gsa.other_order_mode.R import com.gingersoft.gsa.other_order_mode.R
import com.gingersoft.gsa.other_order_mode.model.viewModel.PageViewModel import com.gingersoft.gsa.other_order_mode.model.viewModel.PageViewModel
import com.gingersoft.gsa.other_order_mode.ui.activity.OrderDetailsActivity
import com.gingersoft.gsa.other_order_mode.ui.adapter.OtherOrdersAdapter import com.gingersoft.gsa.other_order_mode.ui.adapter.OtherOrdersAdapter
import com.gingersoft.gsa.other_order_mode.ui.base.BaseFragment import com.gingersoft.gsa.other_order_mode.ui.base.BaseFragment
import com.gingersoft.gsa.other_order_mode.util.InjectorUtil import com.gingersoft.gsa.other_order_mode.util.InjectorUtil
...@@ -35,18 +37,8 @@ class PlaceholderFragment : BaseFragment() { ...@@ -35,18 +37,8 @@ class PlaceholderFragment : BaseFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
pageViewModel = ViewModelProvider(activity?.viewModelStore!!, InjectorUtil.getWeatherModelFactory())[PageViewModel::class.java].apply { pageViewModel = ViewModelProvider(activity?.viewModelStore!!, InjectorUtil.getWeatherModelFactory())[PageViewModel::class.java].apply {
// 第一次進入獲取數據
// getOrderList(this, false)
// 綁定狀態,如果這個值發生變化 // 綁定狀態,如果這個值發生變化
refreshState.observe(viewLifecycleOwner, Observer { refreshState.observe(viewLifecycleOwner, Observer {
// 觸發刷新,判斷是否更新
// 並且type一致
//如果當前fragment的狀態中包含需要刷新的狀態,獲取數據
// if (PageViewModel.fragmentStatus[arguments?.getInt(INDEX)!!].contains(it.toString())) {
// page = 1
// getOrderList(this, false)
// }
Log.e("eee", "$it 當前:" + arguments?.getInt(INDEX))
if (arguments?.getInt(INDEX) == it) { if (arguments?.getInt(INDEX) == it) {
page = 1 page = 1
getOrderList(this, false) getOrderList(this, false)
...@@ -60,63 +52,71 @@ class PlaceholderFragment : BaseFragment() { ...@@ -60,63 +52,71 @@ class PlaceholderFragment : BaseFragment() {
adapter.setOnItemClickListenter { data -> adapter.setOnItemClickListenter { data ->
// 點擊查詢食品詳情 // 點擊查詢食品詳情
showLoading() val intent = Intent(activity, OrderDetailsActivity::class.java)
pageViewModel.getShipanyAndOrderInfo(data.curStat, GsaCloudApplication.getRestaurantId(context).toString(), data.Id.toString()) { it1 -> intent.putExtra("orderId", data.Id.toString())
cancelDialogForLoading() intent.putExtra("orderType", data.order_type)
//顯示彈窗 intent.putExtra("orderStatus", data.STATUS)
if (this@PlaceholderFragment.context != null && it1 != null) { intent.putExtra("orderPayType", data.orderPayType)
OtherOrderUtils.showOrderDetailsDialog(this@PlaceholderFragment.context!!, it1, data.STATUS, data.order_type) { view, _, dialog -> startActivity(intent)
when (view.id) {
R.id.btn_assign_shipping -> {
//修改訂單狀態 // showLoading()
pageViewModel.updateOrderStatus(this@PlaceholderFragment.context!!, data, it1) { // pageViewModel.getShipanyAndOrderInfo(data.curStat, GsaCloudApplication.getRestaurantId(context).toString(), data.Id.toString()) { it1 ->
dialog.dismiss() // cancelDialogForLoading()
if (it) { // //顯示彈窗
// 關閉彈窗,並刷新當前頁面 // if (this@PlaceholderFragment.context != null && it1 != null) {
refresh() // OtherOrderUtils.showOrderDetailsDialog(this@PlaceholderFragment.context!!, it1, data.STATUS, data.order_type) { view, _, dialog ->
} // when (view.id) {
} // R.id.btn_assign_shipping -> {
} // //修改訂單狀態
R.id.btn_cancel_order -> { // pageViewModel.updateOrderStatus(this@PlaceholderFragment.context!!, data, it1) {
//取消訂單,先判斷有沒有物流 // dialog.dismiss()
if (it1.data!![0].isDelete == 0) { // if (it) {
//第三方物流單 // // 關閉彈窗,並刷新當前頁面
//彈出彈窗詢問是否確認取消 // refresh()
AppDialog.showWaringDialog(context, "是否確認取消第三方派送?") { v, dialog -> // }
when (v.id) { // }
R.id.tv_dialog_confirm -> { // }
//取消物流 // R.id.btn_cancel_order -> {
showLoading() // //取消訂單,先判斷有沒有物流
pageViewModel.cancelLogistics(GsaCloudApplication.getRestaurantId(context).toString(), data.Id.toString()) { // if (it1.data!![0].isDelete == 0) {
ToastUtils.show(context, it) // //第三方物流單
cancelDialogForLoading() // //彈出彈窗詢問是否確認取消
refresh()//刷新當前頁面 // AppDialog.showWaringDialog(context, "是否確認取消第三方派送?") { v, dialog ->
} // when (v.id) {
dialog.dismiss() // R.id.tv_dialog_confirm -> {
} // //取消物流
R.id.tv_dialog_cancel -> dialog.dismiss() // showLoading()
} // pageViewModel.cancelLogistics(GsaCloudApplication.getRestaurantId(context).toString(), data.Id.toString()) {
} // ToastUtils.show(context, it)
} else { // cancelDialogForLoading()
//本店配送的單 // refresh()//刷新當前頁面
pageViewModel.cancelOrder(context!!, data.Id.toString()) { // }
ToastUtils.show(context, if (it) { // dialog.dismiss()
"取消訂單成功" // }
} else { // R.id.tv_dialog_cancel -> dialog.dismiss()
"取消訂單失敗" // }
}) // }
cancelDialogForLoading() // } else {
refresh()//刷新當前頁面 // //本店配送的單
} // pageViewModel.cancelOrder(context!!, data.Id.toString()) {
} // ToastUtils.show(context, if (it) {
dialog.dismiss() // "取消訂單成功"
} // } else {
} // "取消訂單失敗"
} // })
} else { // cancelDialogForLoading()
ToastUtils.show(context, "獲取訂單詳情失敗") // refresh()//刷新當前頁面
} // }
} // }
// dialog.dismiss()
// }
// }
// }
// } else {
// ToastUtils.show(context, "獲取訂單詳情失敗")
// }
// }
} }
rv_other_order.adapter = adapter rv_other_order.adapter = adapter
...@@ -136,7 +136,6 @@ class PlaceholderFragment : BaseFragment() { ...@@ -136,7 +136,6 @@ class PlaceholderFragment : BaseFragment() {
refresh() refresh()
//重新拉取一遍送貨員和第三方派送信息 //重新拉取一遍送貨員和第三方派送信息
pageViewModel.getDeliveryInfo(context!!) pageViewModel.getDeliveryInfo(context!!)
pageViewModel.getDeliveryConfigDTO(context!!)
} }
refresh_layout.setOnLoadMoreListener { refresh_layout.setOnLoadMoreListener {
page++ page++
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="@dimen/dp_1"
android:color="@color/black" />
</shape>
\ No newline at end of file
...@@ -10,12 +10,5 @@ ...@@ -10,12 +10,5 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.qmuiteam.qmui.layout.QMUIButton <include layout="@layout/layout_default" />
android:id="@+id/tv_add_delivery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_border_bg"
android:text="添加配送方式"
android:padding="@dimen/dp_10"
android:textColor="@color/theme_color" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -155,7 +155,7 @@ ...@@ -155,7 +155,7 @@
<ImageView <ImageView
android:id="@+id/iv_edit" android:id="@+id/iv_edit"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_30"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
android:gravity="center" android:gravity="center"
...@@ -169,15 +169,15 @@ ...@@ -169,15 +169,15 @@
app:layout_constraintRight_toLeftOf="@id/iv_delete" app:layout_constraintRight_toLeftOf="@id/iv_delete"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
android:id="@+id/iv_delete" android:id="@+id/iv_delete"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_30"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
android:gravity="center" android:gravity="center"
android:paddingLeft="@dimen/dp_5" android:paddingLeft="@dimen/dp_5"
android:paddingRight="@dimen/dp_5" android:paddingRight="@dimen/dp_5"
android:src="@drawable/ic_delete_bill_method" android:src="@drawable/ic_delete"
android:text="刪除" android:text="刪除"
android:textColor="@color/theme_333_color" android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_12" android:textSize="@dimen/dp_12"
......
...@@ -95,4 +95,14 @@ ...@@ -95,4 +95,14 @@
<style name="otherOrder_delivery_setting_layout_style"> <style name="otherOrder_delivery_setting_layout_style">
<item name="android:paddingRight">@dimen/dp_20</item> <item name="android:paddingRight">@dimen/dp_20</item>
</style> </style>
<style name="otherOrder_details_sixteen_text_Style">
<item name="android:textSize">@dimen/dp_16</item>
<item name="android:textColor">@color/theme_333_color</item>
<item name="android:textStyle">bold</item>
</style>
<style name="otherOrder_details_twelve_text_Style">
<item name="android:textSize">@dimen/dp_12</item>
<item name="android:textColor">@color/color_3c</item>
</style>
</resources> </resources>
...@@ -31,13 +31,6 @@ public class IpPrintMaker implements PrintDataMaker { ...@@ -31,13 +31,6 @@ public class IpPrintMaker implements PrintDataMaker {
this.bitmaps = new ArrayList<>(); this.bitmaps = new ArrayList<>();
this.bitmaps.add(bitmap); this.bitmaps.add(bitmap);
} }
public IpPrintMaker(Context context, int width, Bitmap bitmap) {
this.mContext = context;
this.width = width;
this.bitmaps = new ArrayList<>();
this.bitmaps.add(bitmap);
}
@Override @Override
public List<byte[]> getPrintData() { public List<byte[]> getPrintData() {
......
...@@ -59,6 +59,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -59,6 +59,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public final static int PRINT_KITCHEN = 3;//送單,廚房單 public final static int PRINT_KITCHEN = 3;//送單,廚房單
public final static int PRINT_CLEAN_MACHINE = 4;//清機報表 public final static int PRINT_CLEAN_MACHINE = 4;//清機報表
public final static int PRINT_OTHER_ORDER = 5;//接單內容打印 public final static int PRINT_OTHER_ORDER = 5;//接單內容打印
public final static int PRINT_INSTRUCTION = 6;//開錢箱
private final static int SUNMI_PAPER_WIDTH = 360;//商米打印機紙張寬度 private final static int SUNMI_PAPER_WIDTH = 360;//商米打印機紙張寬度
private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度 private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度
...@@ -86,6 +87,8 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -86,6 +87,8 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return new PrintCleanMachine(); return new PrintCleanMachine();
} else if (type == PRINT_OTHER_ORDER) { } else if (type == PRINT_OTHER_ORDER) {
return new PrintOtherOrder(); return new PrintOtherOrder();
} else if (type == PRINT_INSTRUCTION) {
return new PrintInstruction();
} }
return null; return null;
} }
...@@ -134,6 +137,11 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -134,6 +137,11 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public abstract int getPrintCount(Context context); public abstract int getPrintCount(Context context);
public void print(List<PrinterDeviceBean> deviceBeans) { public void print(List<PrinterDeviceBean> deviceBeans) {
if (this instanceof PrintInstruction) {
//開錢箱
PrintExecutor executor = new PrintExecutor(getDefaultPrintInList(deviceBeans));
executor.doPrinterRequestAsync(new OpenCashBoxMaker());
} else {
listMap = getPrintBitmap(mContext); listMap = getPrintBitmap(mContext);
printSize = listMap.size(); printSize = listMap.size();
printCount = getPrintCount(mContext); printCount = getPrintCount(mContext);
...@@ -141,13 +149,6 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -141,13 +149,6 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
printListener.printFile(); printListener.printFile();
return; return;
} }
//當配置打印多張時執行
// int x = 2;
// for (int i = 0; i < x; i++) {
// for (Map.Entry<String, List<Bitmap>> entry : listMap.entrySet()) {
// merge2ResultMap(listMap, entry.getKey(), entry.getValue());
// }
// }
// 先不管有沒有默認打印位置 // 先不管有沒有默認打印位置
// 第一步先查看map中的key是不是空的"",有key就要獲取打印機列表,找到對應打印機打印。如果沒有找到打印機再去找默認打印機 // 第一步先查看map中的key是不是空的"",有key就要獲取打印機列表,找到對應打印機打印。如果沒有找到打印機再去找默認打印機
// 如果沒有key,則是走默認打印機流程 // 如果沒有key,則是走默認打印機流程
...@@ -161,6 +162,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -161,6 +162,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
} }
} }
} }
}
/** /**
...@@ -343,6 +345,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -343,6 +345,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
} }
private void defaultPrint(List<PrinterDeviceBean> printerDeviceBeans, List<Bitmap> bitmaps) { private void defaultPrint(List<PrinterDeviceBean> printerDeviceBeans, List<Bitmap> bitmaps) {
//獲取默認打印方式,本機、IP
String deftultPrint = (String) SPUtils.get(mContext, PrintConstans.DEFAULT_PRINT_METHOD, ""); String deftultPrint = (String) SPUtils.get(mContext, PrintConstans.DEFAULT_PRINT_METHOD, "");
if (deftultPrint.equals("")) { if (deftultPrint.equals("")) {
// 如果沒有默認打印位置,彈出彈窗讓用戶選擇是本機打印還是ip打印 // 如果沒有默認打印位置,彈出彈窗讓用戶選擇是本機打印還是ip打印
...@@ -401,25 +404,30 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -401,25 +404,30 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
}); });
} else if (deftultPrint.equals(PrintConstans.IP_PRINT)) { } else if (deftultPrint.equals(PrintConstans.IP_PRINT)) {
// 默認打印方式為ip打印,調用ip打印方法 // 默認打印方式為ip打印,調用ip打印方法
// 獲取默認ip打印機 // 獲取默認ip打印機
if (printerDeviceBeans != null && printerDeviceBeans.size() > 0) { if (printerDeviceBeans != null && printerDeviceBeans.size() > 0) {
//有默認打印機 ipDevicePrint(getDefaultPrintInList(printerDeviceBeans), bitmaps);
for (PrinterDeviceBean printerDeviceBean : printerDeviceBeans) { } else {
if (printerDeviceBean.getStatus() == 2) {
//默認打印機
ipDevicePrint(printerDeviceBeans.get(0), bitmaps);
return;
}
}
//沒有默認打印機,彈出彈窗,讓用戶選擇ip打印機 //沒有默認打印機,彈出彈窗,讓用戶選擇ip打印機
showIpPrintDeviceList(printerDeviceBeans, bitmaps); showIpPrintDeviceList(printerDeviceBeans, bitmaps);
}
} else { } else {
//沒有打印機,讓用戶去添加 //沒有打印機,讓用戶去添加
setPrintState(PrintActivity.ADD_PRINT_DEVICE); setPrintState(PrintActivity.ADD_PRINT_DEVICE);
} }
} }
private PrinterDeviceBean getDefaultPrintInList(List<PrinterDeviceBean> printerDeviceBeans) {
for (PrinterDeviceBean printerDeviceBean : printerDeviceBeans) {
if (printerDeviceBean.getStatus() == 2) {
//默認打印機
return printerDeviceBean;
}
}
return null;
} }
private void showIpPrintDeviceList private void showIpPrintDeviceList
(List<PrinterDeviceBean> printerDeviceBeans, List<Bitmap> bitmaps) { (List<PrinterDeviceBean> printerDeviceBeans, List<Bitmap> bitmaps) {
if (printerDeviceBeans != null && printerDeviceBeans.size() > 0) { if (printerDeviceBeans != null && printerDeviceBeans.size() > 0) {
...@@ -465,32 +473,26 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -465,32 +473,26 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public void ipDevicePrint(PrinterDeviceBean public void ipDevicePrint(PrinterDeviceBean
printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener
stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) { stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) {
int paperType = printerDeviceBean.getType();//打印紙類型 1:58mm,2::80mm
int printWidth;//打印出來的內容寬度 int printWidth;//打印出來的內容寬度
if (paperType == 1) { if (printerDeviceBean.getPaperSpecification() != null) {
paperType = PrinterWriter58mm.TYPE_58; printWidth = Double.valueOf(printerDeviceBean.getPaperSpecification()).intValue();
printWidth = 580 - 20;//兩邊留20的空隙
} else { } else {
paperType = PrinterWriter80mm.TYPE_80; printWidth = 540;
printWidth = 800 - 20;//兩邊留20的空隙
} }
PrintExecutor executor = new PrintExecutor(printerDeviceBean, paperType); PrintExecutor executor = new PrintExecutor(printerDeviceBean);
executor.setOnStateChangedListener(stateChangedListener); executor.setOnStateChangedListener(stateChangedListener);
executor.setOnPrintResultListener(resultListener); executor.setOnPrintResultListener(resultListener);
// List<Bitmap> zoomBitmaps = new ArrayList<>();
if (bitmaps != null) { if (bitmaps != null) {
for (int j = 0; j < printCount; j++) { for (int j = 0; j < printCount; j++) {
for (int i = 0; i < bitmaps.size(); i++) { for (int i = 0; i < bitmaps.size(); i++) {
// zoomBitmaps.add(ImageUtils.zoomDrawable(bitmaps.get(i), printWidth));
IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, ImageUtils.zoomDrawable(bitmaps.get(i), printWidth)); IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, ImageUtils.zoomDrawable(bitmaps.get(i), printWidth));
executor.doPrinterRequestAsync(maker); executor.doPrinterRequestAsync(maker);
} }
} }
} }
// IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, zoomBitmaps);
// executor.doPrinterRequestAsync(maker);
} }
/** /**
* view轉bitmap * view轉bitmap
* *
......
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.print.PrintDataMaker;
import com.gingersoft.gsa.cloud.print.PrinterWriter;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
import com.gingersoft.gsa.cloud.print.PrinterWriter80mm;
import com.joe.print.R;
import java.util.ArrayList;
import java.util.List;
/**
* 打印測試
* 測試數據生成
*/
public class TestPrintDataMaker implements PrintDataMaker {
private Context context;
// private String qr;
private int width;
private int height;
public TestPrintDataMaker(Context context, int width, int height) {
this.context = context;
// this.qr = qr;
this.width = width;
this.height = height;
}
@Override
public List<byte[]> getPrintData(int type) {
ArrayList<byte[]> data = new ArrayList<>();
try {
PrinterWriter printer;
printer = type == PrinterWriter58mm.TYPE_58 ? new PrinterWriter58mm(height, width) : new PrinterWriter80mm(height, width);
printer.setAlignCenter();
data.add(printer.getDataAndReset());
ArrayList<byte[]> image = printer.getImageByte(context.getResources(), R.mipmap.ic_launcher);
data.addAll(image);
List<Bitmap> bitmaps = PrintUtils.getPrintBitmap(context, -1, width);//根據打印類型獲得不同的bitmap
if (bitmaps.size() <= 0) {
ToastUtils.show(context, "打印失敗");
return null;
}
for (int i = 0; i < bitmaps.size(); i++) {
ArrayList<byte[]> image1 = printer.getImageByte(bitmaps.get(i));
data.addAll(image1);//draw2PxPoint2(bitmaps.get(i)
printer.printLineFeed();
printer.printLineFeed();
printer.printLineFeed();
printer.printLineFeed();
printer.printLineFeed();
printer.feedPaperCutPartial();
}
data.add(printer.getDataAndReset());
// printer.setAlignLeft();
// printer.printLine();
// printer.printLineFeed();
//
// printer.printLineFeed();
// printer.setAlignCenter();
// printer.setEmphasizedOn();
// printer.setFontSize(1);
// printer.print("Selftest");
// printer.printLineFeed();
// printer.setFontSize(0);
// printer.setEmphasizedOff();
// printer.printLineFeed();
//
// printer.print("Gingersoft");
// printer.printLineFeed();
// printer.print("客服电话:××××××××");
// printer.printLineFeed();
//
// printer.setAlignLeft();
// printer.printLineFeed();
//
// printer.print("订单号:88888888888888888");
// printer.printLineFeed();
//
// printer.print("预计送达:" +
// new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.getDefault())
// .format(new Date(System.currentTimeMillis())));
// printer.printLineFeed();
//
// printer.setEmphasizedOn();
// printer.print("#8(已付款)");
// printer.printLineFeed();
// printer.print("××区××路×××大厦××楼×××室");
// printer.printLineFeed();
// printer.setEmphasizedOff();
// printer.printLineFeed();
// printer.print("备注:多加点辣椒,多加点香菜,多加点酸萝卜,多送点一次性手套");
// printer.printLineFeed();
//
// printer.printLine();
// printer.printLineFeed();
// printer.printLineFeed();
// printer.printLineFeed();
data.add(printer.getDataAndClose());
return data;
} catch (Exception e) {
return new ArrayList<>();
}
}
}
package com.joe.print.mvp.ui.activity;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
import com.gingersoft.gsa.cloud.print.PrinterWriter80mm;
import com.joe.print.R;
import com.joe.print.mvp.print.SendPrint;
import com.joe.print.mvp.print.TestPrintDataMaker;
import static com.billy.cc.core.component.CCUtil.EXTRA_KEY_CALL_ID;
/**
* Created by Wyh on 2020/1/7.
*/
public class IpPrintActivity extends Activity implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, DialogInterface.OnDismissListener {
private Context mContext;
private PrintExecutor executor;
private SendPrint maker;
private String callId;
/**
* -
* 是否打印成功 true:成功
*/
private boolean printStatus = false;
private String ip;
private Integer port;
private int paperType = 1;//打印紙類型 1:58mm,2::80mm
private int printWidth = 560;//打印出來的內容寬度
/**
* -1:打印測試
* 0:上菜紙
* 1:印單
* 2:結賬單
* 3:廚房單
*/
private int type = -1;
private TextView mTvLoadingTip;
private Dialog mLoadingDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
super.onCreate(savedInstanceState);
mContext = this;
getWindow().setBackgroundDrawable(null);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
initDialog();
initIntent();
callId = getIntent().getStringExtra(EXTRA_KEY_CALL_ID);
printOrder(this);
}
private void initDialog() {
try {
View view = LayoutInflater.from(mContext).inflate(R.layout.ui_dialog_loading, null);
mTvLoadingTip = view.findViewById(R.id.tv_loading_dialog_text);
mLoadingDialog = new Dialog(mContext, R.style.ui_loading_dialog);
mLoadingDialog.setCancelable(true);
mLoadingDialog.setCanceledOnTouchOutside(false);
Window window = mLoadingDialog.getWindow();
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// window.getDecorView().setBackgroundResource(android.R.color.transparent);
mLoadingDialog.setContentView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
mLoadingDialog.show();
mLoadingDialog.setOnDismissListener(dialog -> dismiss());
setLoadingText("加載中...");
} catch (Exception e) {
e.printStackTrace();
}
}
private void setLoadingText(String tip) {
if (mLoadingDialog != null && mLoadingDialog.isShowing()) {
mTvLoadingTip.setText(tip);
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//點擊當前頁面任意地方自動關閉
finish();
return true;
}
private void initIntent() {
Intent intent = getIntent();
ip = intent.getStringExtra("ip");
port = intent.getIntExtra("port", 0);
paperType = intent.getIntExtra("paperType", 1);
type = intent.getIntExtra(PrintConstans.PRINT_TYPE, -1);
if (ip == null || ip.equals("")) {
ip = "192.168.1.217";
}
if (paperType == 1) {
paperType = PrinterWriter58mm.TYPE_58;
printWidth = 580 - 20;//兩邊留20的空隙
} else {
paperType = PrinterWriter80mm.TYPE_80;
printWidth = 800 - 20;//兩邊留20的空隙
}
}
public void printOrder(Context context) {
PrinterDeviceBean printerDeviceBean = new PrinterDeviceBean("", null, ip, port, type);
if (executor == null) {
executor = new PrintExecutor(printerDeviceBean, paperType);
executor.setOnStateChangedListener(this);
executor.setOnPrintResultListener(this);
}
if (maker == null) {
maker = new SendPrint(context, 255, printWidth, type);
}
executor.setIp(printerDeviceBean);
if (type == -1) {
executor.doPrinterRequestAsync(new TestPrintDataMaker(context, 380, 255));
} else {
executor.doPrinterRequestAsync(maker);
}
}
@Override
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
String tip;
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
tip = "打印成功";
printStatus = true;
setLoadingText(tip);
dismiss();
break;
case PrintSocketHolder.ERROR_1:
tip = "生成打印數據失敗";
printStatus = false;
setLoadingText(tip);
dismiss();
break;
case PrintSocketHolder.ERROR_2:
case PrintSocketHolder.ERROR_3:
tip = "連接打印機失敗";
printStatus = false;
setLoadingText(tip);
dismiss();
break;
case PrintSocketHolder.ERROR_4:
tip = "寫入測試頁面數據失敗";
setLoadingText(tip);
break;
case PrintSocketHolder.ERROR_5:
tip = "必要的參數不能為空";
setLoadingText(tip);
break;
}
}
@Override
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
String tip = "打印中...";
switch (state) {
case PrintSocketHolder.STATE_0:
case PrintSocketHolder.STATE_1:
tip = "開始創建連接";
break;
case PrintSocketHolder.STATE_2:
tip = "創建連接成功,開始發送數據";
break;
case PrintSocketHolder.STATE_3:
tip = "開始寫入數據";
break;
case PrintSocketHolder.STATE_4:
tip = "關閉中";
break;
}
setLoadingText(tip);
}
private void dismiss() {
//延遲一秒
new Handler().postDelayed(() -> {
if (mLoadingDialog != null) {
mLoadingDialog.dismiss();
//判断是否为CC调用打开本页面
if (callId != null) {
CCResult result;
if (printStatus) {
result = CCResult.success();
} else {
result = CCResult.error("print error");
}
//为确保不管登录成功与否都会调用CC.sendCCResult,在onDestroy方法中调用
CC.sendCCResult(callId, result);
}
}
finish();
}, 1500);
}
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (executor != null)
executor.closeSocket();
}
}
...@@ -327,7 +327,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -327,7 +327,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100; double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) { if (serviceAmount > 0) {
BillOrderMoney orderMoney = new BillOrderMoney(); BillOrderMoney orderMoney = new BillOrderMoney();
orderMoney.setMoney(serviceAmount); orderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
orderMoney.setTitle(dataBean.getServiceCharge() + "%" + serviceChargeStr); orderMoney.setTitle(dataBean.getServiceCharge() + "%" + serviceChargeStr);
orderMoney.setStatus(1); orderMoney.setStatus(1);
orderMoney.setType(BillOrderMoney.SERVERCHARGE_TYPE); orderMoney.setType(BillOrderMoney.SERVERCHARGE_TYPE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment