Commit f410fc61 by Wyh

9.26 1、打印長圖問題 2、擴展表數據 3、打印頭單,統計數 4、自動接單優化 5、是否打印PDF功能優化

Signed-off-by: Wyh <1239658231>
parent 73b28016
......@@ -8,6 +8,8 @@ import android.content.res.Configuration;
import android.os.Build;
import android.os.RemoteException;
import androidx.annotation.NonNull;
import com.billy.cc.core.component.CC;
import com.elvishew.xlog.LogConfiguration;
import com.elvishew.xlog.LogLevel;
......@@ -45,7 +47,6 @@ import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import java.util.List;
import java.util.Locale;
import androidx.annotation.NonNull;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
......@@ -218,11 +219,6 @@ public class GsaCloudApplication extends BaseApplication {
RetrofitUrlManager.getInstance().putDomain("ricepon_activities", HttpsConstans.ricepon_activities);
///ricepon-cloud-gsa/api/請求地址
RetrofitUrlManager.getInstance().putDomain("ricepon_cloud_gsa", HttpsConstans.ricepon_cloud_gsa);
CC.obtainBuilder("ComponentDeliveryPick")
.setActionName("initAddress")
.build()
.call();
}
private void initPrint() {
......
......@@ -17,7 +17,14 @@ import java.util.Map;
*/
public class RestaurantExpandInfoUtils {
public final static String VALUE_INT = "valueInt";
public final static String VALUE_CHAR = "valueChar";
public final static String VALUE_DATETIME = "valueDatetime";
public final static String VALUE_DATETIME2 = "valueDatetime2";
public final static String REMARK = "remark";
private static Map<String, Object> map = new HashMap<>();
private static Map<String, Long> idMaps = new HashMap<>();
/**
* 保存常用信息
......@@ -47,7 +54,9 @@ public class RestaurantExpandInfoUtils {
case ExpandConstant.PrintMergerFood:
case ExpandConstant.PrintStatisticsAmount:
case ExpandConstant.PrintFirstOrder:
case ExpandConstant.FrozenChainAutoOrder:
map.put(expandInfo.getSettingName(), expandInfo.getValueInt() == 0);
idMaps.put(expandInfo.getSettingName(), expandInfo.getId());
break;
case ExpandConstant.OrderReceivingTimeout:
case ExpandConstant.DeliveryPrintCount:
......@@ -55,6 +64,7 @@ public class RestaurantExpandInfoUtils {
case ExpandConstant.TableModePrintCount:
case ExpandConstant.TableModeClosingPC:
map.put(expandInfo.getSettingName(), expandInfo.getValueInt());
idMaps.put(expandInfo.getSettingName(), expandInfo.getId());
break;
}
}
......@@ -67,4 +77,12 @@ public class RestaurantExpandInfoUtils {
return (T) defaultValue;
}
}
public static void setValue(String name, Object value) {
map.put(name, value);
}
public static Long getId(String name) {
return idMaps.get(name);
}
}
......@@ -154,7 +154,7 @@ public class LayoutToBitmapUtils {
// 整个View的大小 参数是左上角 和右下角的坐标
v.layout(0, 0, width, height);
int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(10000, View.MeasureSpec.AT_MOST);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(1000000, View.MeasureSpec.AT_MOST);
/** 当然,measure完后,并不会实际改变View的尺寸,需要调用View.layout方法去进行布局。
* 按示例调用layout函数后,View的大小将会变成你想要设置成的大小。
*/
......
......@@ -15,6 +15,8 @@ public class ExpandConstant {
public final static String PrintStatisticsAmount = "PrintStatisticsAmount";//是否顯示統計打印數
public final static String PrintFirstOrder = "PrintFirstOrder";//是否打印"頭單"文字
public final static String FrozenChainAutoOrder = "FrozenChainAutoOrder";//是否自動接單 為0true
public final static String Rounding = "Rounding";
public final static String RoundingDecimal = "RoundingDecimal";
public final static String ItemDecimals = "ItemDecimals";
......@@ -22,7 +24,4 @@ public class ExpandConstant {
public final static String AutoPrinterPaper = "AutoPrinterParper";
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_checkbox_checked" android:state_checked="true"/>
<item android:drawable="@drawable/ic_checkbox_uncheck" android:state_checked="false"/>
</selector>
\ No newline at end of file
......@@ -16,6 +16,22 @@
android:textSize="@dimen/dp_48"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_kitchen_print_first_order"
style="@style/Print_kitchen_table_number_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="@dimen/dp_40"/>
<TextView
android:id="@+id/tv_kitchen_print_quantity"
style="@style/Print_kitchen_table_number_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/dp_30"
tools:text="統計數量" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -195,10 +211,10 @@
style="@style/Print_kitchen_table_number_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:layout_gravity="center_horizontal"
tools:text="1/2"
android:textSize="@dimen/dp_28" />
android:layout_marginTop="@dimen/dp_20"
android:textSize="@dimen/dp_28"
tools:text="1/2" />
</LinearLayout>
......
......@@ -5,4 +5,9 @@
<item name="QMUITopBarStyle">@style/QDTopBar</item>
<item name="QMUITabSegmentStyle">@style/QMUITabSegmentStyle</item>
</style>
<style name="MyCheckbox_style">
<item name="android:colorControlNormal">@color/theme_color</item>
<item name="android:colorControlActivated">@color/color_c9</item>
</style>
</resources>
\ No newline at end of file
......@@ -407,5 +407,4 @@
<item name="android:textSize">@dimen/dp_12</item>
<item name="android:textColor">@color/color_3c</item>
</style>
</resources>
package com.gingersoft.coldchain_module.mvp.constans;
public class ColdChainConstans {
public class ColdChainConstants {
public static final int orderType = 8;
//訂單狀態:已確認
......
......@@ -3,8 +3,11 @@ package com.gingersoft.coldchain_module.mvp.contract;
import com.gingersoft.coldchain_module.mvp.model.bean.BalanceBean;
import com.gingersoft.coldchain_module.mvp.model.bean.OrderList;
import com.gingersoft.coldchain_module.mvp.model.bean.PickUpBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean;
import com.gingersoft.gsa.cloud.print.bean.OrderDetails;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
......@@ -20,6 +23,8 @@ public interface ColdChainMainContract {
void loadBalance(double price, double bond,boolean isBlink);
void setRestaurantState(int state);
void refreshOrderState(long id);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存getOrderList(@Body RequestBody requestBody);
......@@ -33,5 +38,16 @@ public interface ColdChainMainContract {
Observable<BalanceBean> getBalance(String brandId);
Observable<UpdateRestaurantStateBean> updateRestOpenStatus(RequestBody requestBody);
Observable<Object> updateExpandInfo(RequestBody requestBody);
Observable<OrderDetails> findOrderDetails(RequestBody requestBody);
Observable<ShipAnyOrdersNewBean> thirdDelivery(RequestBody requestBody);
Observable<UpdateOrderStatusBean> updateOrderStatus(RequestBody requestBody);
Observable<String> addPrj(RequestBody requestBody);
}
}
......@@ -23,6 +23,8 @@ public interface OrderDetailsContract {
void printLogisticsList(File file);
void updateOrderState(int state);
void setPrintPdfState();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -26,7 +26,6 @@ public interface OrderListContract {
void getOrderDetails(OrderDetails.DataBean dataBean);
void updateOrderStatusSuccess();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -6,9 +6,13 @@ import com.gingersoft.coldchain_module.mvp.contract.ColdChainMainContract;
import com.gingersoft.coldchain_module.mvp.model.bean.BalanceBean;
import com.gingersoft.coldchain_module.mvp.model.bean.OrderList;
import com.gingersoft.coldchain_module.mvp.model.bean.PickUpBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean;
import com.gingersoft.coldchain_module.mvp.model.service.ColdChainService;
import com.gingersoft.coldchain_module.mvp.model.service.OrderDetailService;
import com.gingersoft.gsa.cloud.print.bean.OrderDetails;
import com.google.gson.Gson;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.IRepositoryManager;
......@@ -64,4 +68,29 @@ public class ColdChainMainModel extends BaseModel implements ColdChainMainContra
return mRepositoryManager.obtainRetrofitService(ColdChainService.class).updateRestOpenStatus(requestBody);
}
@Override
public Observable<Object> updateExpandInfo(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(ColdChainService.class).updateExpandInfo(requestBody);
}
@Override
public Observable<OrderDetails> findOrderDetails(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).findOrderDetails(requestBody);
}
@Override
public Observable<ShipAnyOrdersNewBean> thirdDelivery(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).thirdDelivery(requestBody);
}
@Override
public Observable<UpdateOrderStatusBean> updateOrderStatus(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).gsUpdateOrderStatus(requestBody);
}
@Override
public Observable<String> addPrj(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody);
}
}
\ No newline at end of file
......@@ -46,4 +46,8 @@ public interface ColdChainService {
@Headers({"Domain-Name: member-web"})
@POST("wx/updateRestOpenStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<UpdateRestaurantStateBean> updateRestOpenStatus(@Body RequestBody requestBody);
@Headers({"Domain-Name: system_url"})
@POST("admin/restaurantExt/update" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<Object> updateExpandInfo(@Body RequestBody requestBody);
}
......@@ -2,14 +2,21 @@ package com.gingersoft.coldchain_module.mvp.presenter;
import android.app.Application;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstans;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.ColdChainMainContract;
import com.gingersoft.coldchain_module.mvp.model.bean.BalanceBean;
import com.gingersoft.coldchain_module.mvp.model.bean.OrderList;
import com.gingersoft.coldchain_module.mvp.model.bean.PickUpBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ThirdItem;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.print.bean.OrderDetails;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -18,11 +25,14 @@ import com.jess.arms.utils.RxLifecycleUtils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
......@@ -58,7 +68,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
public void getNumByOrderType(int restaurantId, Method method, Object object) {
//startTime endTime
RequestBody requestBody = new FormBody.Builder()
.add("orderTypes", ColdChainConstans.orderType + "")
.add("orderTypes", ColdChainConstants.orderType + "")
.add("restaurantId", restaurantId + "")
.build();
mModel.getNumByOrderType(requestBody)
......@@ -89,7 +99,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
public void pickUp(int restaurantId) {
//startTime endTime
RequestBody requestBody = new FormBody.Builder()
.add("orderType", ColdChainConstans.orderType + "")
.add("orderType", ColdChainConstants.orderType + "")
.add("restaurantId", restaurantId + "")
.build();
mModel.pickUp(requestBody)
......@@ -153,7 +163,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
public void onNext(@NonNull UpdateRestaurantStateBean info) {
if (info != null && info.isSuccess()) {
mRootView.setRestaurantState(state);
} else if(info != null && info.getData() != null && TextUtil.isNotEmptyOrNullOrUndefined(info.getData().getMsg())){
} else if (info != null && info.getData() != null && TextUtil.isNotEmptyOrNullOrUndefined(info.getData().getMsg())) {
mRootView.showMessage(info.getData().getMsg());
} else {
mRootView.showMessage("修改狀態失敗");
......@@ -161,4 +171,262 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
}
});
}
public void updateExpandInfo(String settingName, String[] valueType, String[] value) {
FormBody.Builder builder = new FormBody.Builder()
.add("id", RestaurantExpandInfoUtils.getId(settingName) + "")
.add("restaurantId", GsaCloudApplication.getRestaurantId() + "")
.add("settingName", settingName);
for (int i = 0; i < valueType.length; i++) {
builder.add(valueType[i], value[i]);
}
mModel.updateRestOpenStatus(builder.build())
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> {
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<UpdateRestaurantStateBean>(mErrorHandler) {
@Override
public void onNext(@NonNull UpdateRestaurantStateBean info) {
}
@Override
public void onError(Throwable t) {
}
});
}
private List<Integer> ids;
private Disposable autoDisposable;
private boolean isAutoReceiving;
public void stopAutoReceivingOrders() {
if (autoDisposable != null) {
autoDisposable.dispose();
}
errorCount = 6;
isAutoReceiving = false;
}
/**
* 獲取待確認訂單(開了自動接單調用此方法接單)
*
* @param restaurantId
*/
public void startToBeConfirmedOrderList(int restaurantId) {
if (autoDisposable != null && (!autoDisposable.isDisposed() || !isAutoReceiving)) {
return;
}
isAutoReceiving = true;
errorCount = 0;
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId", restaurantId + "")
.add("page", "0")
.add("pageSize", "")
.add("status", "0,1")
.add("type", ColdChainConstants.orderType + "")
.build();
mModel.getOrderList(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<OrderList>(mErrorHandler) {
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
autoDisposable = d;
}
@Override
public void onNext(@NonNull OrderList info) {
if (info != null && info.isSuccess() && info.getData() != null) {
if (info.getData().getData() != null && info.getData().getData().size() > 0) {
List<OrderList.DataBeanX.DataBean> dataBeans = info.getData().getData();
dataBeans.remove(dataBeans.size() - 1);
ids = new ArrayList<>();
for (int i = 0; i < dataBeans.size(); i++) {
ids.add(dataBeans.get(i).getId());
}
if (ids.size() > 0) {
findOrderDetails(ids.get(0));
ids.remove(0);
}
}
}
}
});
}
public void findOrderDetails(int orderId) {
if (!isAutoReceiving) {
return;
}
//startTime endTime //mRootView.showLoading("獲取訂單詳情...") mRootView.hideLoading()
RequestBody requestBody = new FormBody.Builder()
.add("orderId", orderId + "")
.build();
mModel.findOrderDetails(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> {
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<OrderDetails>(mErrorHandler) {
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
autoDisposable = d;
}
@Override
public void onNext(@NonNull OrderDetails info) {
if (info != null && info.getData() != null && info.getData().size() > 0) {
thirdDelivery(info.getData().get(0));
} else {
if (errorCount < 5) {
startToBeConfirmedOrderList(GsaCloudApplication.getRestaurantId());
errorCount++;
}
}
}
});
}
private int errorCount = 0;
public void thirdDelivery(OrderDetails.DataBean dataBean) {
if (!isAutoReceiving) {
return;
}
ThirdItem third = new ThirdItem();
if (dataBean.getPRODUCT_NAME() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean productnameBean : dataBean.getPRODUCT_NAME()) {
ThirdItem.ThirdItemItem.UntPrice hkd = new ThirdItem.ThirdItemItem.UntPrice("HKD", Double.valueOf(productnameBean.getPRICE()));
ThirdItem.ThirdItemItem thirdItemItem;
if (TextUtil.isNotEmptyOrNullOrUndefined(productnameBean.getPRODUCT_NAME())) {
thirdItemItem = new ThirdItem.ThirdItemItem(productnameBean.getPRODUCT_NAME(), hkd);
} else {
thirdItemItem = new ThirdItem.ThirdItemItem("", hkd);
}
third.add(thirdItemItem);
}
}
RequestBody requestBody = new FormBody.Builder()
.add("orderId", dataBean.getID() + "")
.add("items", GsonUtils.GsonString(third))
.build();
mModel.thirdDelivery(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> {
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<ShipAnyOrdersNewBean>(mErrorHandler) {
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
autoDisposable = d;
}
@Override
public void onNext(@NonNull ShipAnyOrdersNewBean info) {
if (info != null && info.isSuccess()) {
//修改訂單狀態
updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED);
} else {
if (errorCount < 5) {
thirdDelivery(dataBean);
errorCount++;
}
}
}
});
}
public void updateOrderState(OrderDetails.DataBean dataBean, int status) {
if (!isAutoReceiving) {
return;
}
//添加PRJ
addPrj(dataBean);
RequestBody requestBody = new FormBody.Builder()
.add("memberId", GsaCloudApplication.getMemberId() + "")
.add("orderId", dataBean.getID() + "")
.add("status", status + "")
.add("", GsaCloudApplication.getMemberName() + "")
.build();
mModel.updateOrderStatus(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("確認訂單中,請稍候..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<UpdateOrderStatusBean>(mErrorHandler) {
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
autoDisposable = d;
}
@Override
public void onNext(@NonNull UpdateOrderStatusBean info) {
errorCount = 0;
mRootView.refreshOrderState(dataBean.getID());
if (ids != null && ids.size() > 0) {
findOrderDetails(ids.get(0));
ids.remove(0);
} else {
startToBeConfirmedOrderList(GsaCloudApplication.getRestaurantId());
}
}
});
}
private void addPrj(OrderDetails.DataBean dataBean) {
StringBuilder ids = new StringBuilder();
if (dataBean.getPRODUCT_NAME() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean productnameBean : dataBean.getPRODUCT_NAME()) {
if (productnameBean.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : productnameBean.getChild()) {
if (childBeanX != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) {
ids.append(childBean.getOdsId());
ids.append(",");
}
ids.append(childBeanX.getOdsId());
ids.append(",");
}
}
}
ids.append(productnameBean.getOdsId());
ids.append(",");
}
RequestBody requestBody = new FormBody.Builder()
.add("orderId", dataBean.getID() + "")
.add("restaurantId", GsaCloudApplication.getRestaurantId() + "")
.add("orderDetailsIds", ids.toString())
.build();
mModel.addPrj(requestBody);
}
}
}
......@@ -2,7 +2,7 @@ package com.gingersoft.coldchain_module.mvp.presenter;
import android.app.Application;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstans;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.OrderDetailsContract;
import com.gingersoft.coldchain_module.mvp.model.bean.CancelLogisticsBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ReadBean;
......@@ -135,7 +135,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
@Override
public void onNext(@NonNull ReadBean info) {
mRootView.updateOrderState(ColdChainConstans.ORDER_READ);
mRootView.updateOrderState(ColdChainConstants.ORDER_READ);
}
});
}
......@@ -173,7 +173,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
if (info != null) {
if (info.isSuccess()) {
//修改訂單狀態
updateOrderState(dataBean, ColdChainConstans.ORDER_CONFIRMED, info.getData().getLab_url());
updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED, info.getData().getLab_url());
} else {
if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg());
......@@ -221,7 +221,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrorMsg())) {
mRootView.showMessage(info.getErrorMsg());
}
if (status == ColdChainConstans.ORDER_CONFIRMED) {
if (status == ColdChainConstants.ORDER_CONFIRMED) {
//模擬獲取到PDF,進行打印
mRootView.updateOrderState(status);
if (TextUtil.isNotEmptyOrNullOrUndefined(labUrl)) {
......@@ -391,7 +391,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrorMsg())) {
mRootView.showMessage(info.getErrorMsg());
}
mRootView.updateOrderState(ColdChainConstans.ORDER_CANCELLED);
mRootView.updateOrderState(ColdChainConstants.ORDER_CANCELLED);
mRootView.killMyself();
}
}
......@@ -428,7 +428,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
public void onNext(@NonNull CancelLogisticsBean info) {
if (info != null) {
if (info.isSuccess()) {
mRootView.updateOrderState(ColdChainConstans.LOGISTICS_CANCELLED);
mRootView.updateOrderState(ColdChainConstants.LOGISTICS_CANCELLED);
if (isCancelOrder) {
cancelOrder(orderId);
} else {
......@@ -473,7 +473,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
@Override
public void onNext(@NonNull PublicBean info) {
mRootView.setPrintPdfState();
}
@Override
......
......@@ -3,7 +3,7 @@ package com.gingersoft.coldchain_module.mvp.presenter;
import android.app.Application;
import android.util.Log;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstans;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.OrderListContract;
import com.gingersoft.coldchain_module.mvp.model.bean.OrderList;
import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
......@@ -46,6 +46,7 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
AppManager mAppManager;
private String TAG = this.getClass().getSimpleName();
@Inject
public OrderListPresenter(OrderListContract.Model model, OrderListContract.View rootView) {
super(model, rootView);
......@@ -75,7 +76,6 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
.add("pageSize", "")
.add("status", status)
.add("type", type)
.add("appointmentType ", "0")
.add("orderNo", "")
.add("phone", phone)
.build();
......@@ -131,23 +131,23 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
public void notifyDataByPosition(int position, int state) {
if (orderList.size() > position) {
OrderList.DataBeanX.DataBean dataBean = orderList.get(position);
if (state == ColdChainConstans.ORDER_READ) {
if (state == ColdChainConstants.ORDER_READ) {
//已讀
dataBean.setIsRead(ColdChainConstans.ORDER_READ);
dataBean.setIsRead(ColdChainConstants.ORDER_READ);
mRootView.notifyByPosition(position, dataBean);
} else if (state == ColdChainConstans.LOGISTICS_CANCELLED) {
} else if (state == ColdChainConstants.LOGISTICS_CANCELLED) {
//物流已取消
dataBean.setCurStat(9);
//物流已取消,狀態只能是待pick up,因為待確認、派送中的訂單是不能取消物流的
dataBean.setSTATUS(2);
mRootView.notifyByPosition(position, dataBean);
} else if (state == ColdChainConstans.ORDER_CANCELLED) {
} else if (state == ColdChainConstants.ORDER_CANCELLED) {
//訂單已取消
mRootView.removeItem(position);
} else if (state > 0 && state <= 3) {
dataBean.setIsRead(ColdChainConstans.ORDER_READ);
dataBean.setIsRead(ColdChainConstants.ORDER_READ);
dataBean.setSTATUS(state);
if (state == ColdChainConstans.ORDER_CONFIRMED) {
if (state == ColdChainConstants.ORDER_CONFIRMED) {
//訂單如已確認,那麼物流狀態也是已通知物流
dataBean.setCurStat(1);
}
......@@ -156,6 +156,14 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
}
}
public void notifyDataPrintStateByPosition(int position, boolean isPrint) {
if (orderList.size() > position) {
OrderList.DataBeanX.DataBean dataBean = orderList.get(position);
dataBean.setIsPrintPdf(isPrint ? 1 : 0);
mRootView.notifyByPosition(position, dataBean);
}
}
public void findOrderDetails(int orderId) {
//startTime endTime //mRootView.showLoading("獲取訂單詳情...") mRootView.hideLoading()
RequestBody requestBody = new FormBody.Builder()
......@@ -163,10 +171,12 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
.build();
mModel.findOrderDetails(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {})
.doOnSubscribe(disposable -> {
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> {})
.doAfterTerminate(() -> {
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<OrderDetails>(mErrorHandler) {
......@@ -179,12 +189,12 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrorMsg())) {
mRootView.showMessage(info.getErrorMsg());
} else {
Log.e(TAG,"獲取訂單詳情失敗");
Log.e(TAG, "獲取訂單詳情失敗");
mRootView.killMyself();
}
}
} else {
Log.e(TAG,"獲取訂單詳情失敗");
Log.e(TAG, "獲取訂單詳情失敗");
mRootView.killMyself();
}
}
......@@ -192,7 +202,7 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
@Override
public void onError(Throwable t) {
super.onError(t);
Log.e(TAG,"獲取訂單詳情失敗");
Log.e(TAG, "獲取訂單詳情失敗");
mRootView.killMyself();
}
});
......@@ -231,7 +241,7 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
if (info != null) {
if (info.isSuccess()) {
//修改訂單狀態
updateOrderState(dataBean, ColdChainConstans.ORDER_CONFIRMED);
updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED);
} else {
if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg());
......@@ -275,9 +285,6 @@ public class OrderListPresenter extends BasePresenter<OrderListContract.Model, O
@Override
public void onNext(@NonNull UpdateOrderStatusBean info) {
if (info != null) {
mRootView.updateOrderStatusSuccess();
}
}
@Override
......
......@@ -2,7 +2,7 @@ package com.gingersoft.coldchain_module.mvp.presenter;
import android.app.Application;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstans;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.SupplementOrderContract;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementResultBean;
......@@ -57,7 +57,7 @@ public class SupplementOrderPresenter extends BasePresenter<SupplementOrderContr
public void getNumByOrderType(int restaurantId) {
//startTime endTime
RequestBody requestBody = new FormBody.Builder()
.add("orderTypes", ColdChainConstans.orderType + "")
.add("orderTypes", ColdChainConstants.orderType + "")
.add("restaurantId", restaurantId + "")
.build();
mModel.getNumByOrderType(requestBody)
......
......@@ -29,17 +29,19 @@ import com.gingersoft.coldchain_module.R;
import com.gingersoft.coldchain_module.R2;
import com.gingersoft.coldchain_module.di.component.DaggerColdChainMainComponent;
import com.gingersoft.coldchain_module.di.module.ColdChainMainModule;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstans;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.ColdChainMainContract;
import com.gingersoft.coldchain_module.mvp.model.bean.OrderList;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.presenter.ColdChainMainPresenter;
import com.gingersoft.coldchain_module.mvp.ui.fragment.OrderListFragment;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.constans.DeliveryPickConstans;
import com.gingersoft.gsa.cloud.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.service.GetInfoUpdateService;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
......@@ -56,9 +58,14 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import static androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -90,6 +97,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
TextView tvRestaurantState;
@BindView(R2.id.cb_auto_receiving_orders)
CheckBox autoReceivingOrders;
public void setOrderNum(OrderList.DataBeanX.DataBean bean) {
mTakeAwayPb.setMax(bean.getMaxOrder() == 0 ? 1 : bean.getMaxOrder());
mTakeAwayPb.setProgress(bean.getNum());
......@@ -130,6 +138,8 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
return R.layout.frozen_chain_main; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
private Disposable autoOrderDisposable;
@Override
public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.getBalance();
......@@ -138,14 +148,51 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
fragments = new ArrayList<>();
List<String> titles = Arrays.asList("全部", "待確認", "待提交", "派送中");
for (int i = 0; i < titles.size(); i++) {
fragments.add(OrderListFragment.newInstance(status.get(i), ColdChainConstans.orderType + ""));
fragments.add(OrderListFragment.newInstance(status.get(i), ColdChainConstants.orderType + "", i));
}
getNumByOrderTypeInvoke("loadNumber");
initViewPager(titles);
initService();
initHearBroadcast();
autoReceivingOrders.setChecked(RestaurantExpandInfoUtils.getValue(ExpandConstant.FrozenChainAutoOrder, false));
autoReceivingOrders.setOnCheckedChangeListener((buttonView, isChecked) -> {
RestaurantExpandInfoUtils.setValue(ExpandConstant.FrozenChainAutoOrder, isChecked);
if (autoOrderDisposable != null && !autoOrderDisposable.isDisposed()) {
autoOrderDisposable.dispose();
}
Observable.timer(1, TimeUnit.SECONDS).subscribeOn(Schedulers.io()).subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
autoOrderDisposable = d;
}
@Override
public void onNext(Long aLong) {
mPresenter.updateExpandInfo(ExpandConstant.FrozenChainAutoOrder, new String[]{RestaurantExpandInfoUtils.VALUE_INT}, new String[]{RestaurantExpandInfoUtils.getValue(ExpandConstant.FrozenChainAutoOrder, false) ? "0" : "1"});
if (!isChecked) {
mPresenter.stopAutoReceivingOrders();
} else {
mPresenter.startToBeConfirmedOrderList(restaurantId);
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
});
}
public void getNumByOrderTypeInvoke(String functionName) {
Class[] parameterTypes = {SupplementInfoBean.class};
try {
......@@ -185,6 +232,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
public void onPageSelected(int position) {
fragments.get(position).setData(status.get(position));
fragmentPosition = position;
fragments.get(viewPager.getCurrentItem()).onRefreshData();
}
@Override
......@@ -223,9 +271,12 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
bind.setOnPostCallBack(type -> {
// -1斷開連接,\n-2:消息傳輸錯誤,\n0:連接消息,\n1:登錄通知,\n2:登出通知,\n3:外賣送單通知,\n4:自取送單通知,\n5:歷史訂單通知,\n6:修改訂單狀態通知,\n7:支付成功通知"
if (type == 3 || type == 5
|| type == 6 || type == 7) {//ColdChainConstans.orderType
|| type == 6 || type == 7) {//ColdChainConstants.orderType
fragments.get(viewPager.getCurrentItem()).onRefreshData();
mPresenter.getBalance();
if(autoReceivingOrders.isChecked()){
mPresenter.startToBeConfirmedOrderList(restaurantId);
}
}
if (type == 3 || type == 6 || type == 7) {
getNumByOrderTypeInvoke("loadNumber");
......@@ -249,7 +300,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
if (bean != null && bean.getData() != null && bean.getData().getOrderVOS() != null) {
topBar.setTitle("凍鏈接單" + "(" + 0 + "/" + bean.getData().getColdChainPickUpNum() + ")");
for (SupplementInfoBean.DataBean.OrderVOSBean orderVOSBean : bean.getData().getOrderVOS()) {
if (orderVOSBean.getOrderType() == ColdChainConstans.orderType) {
if (orderVOSBean.getOrderType() == ColdChainConstants.orderType) {
confirmedOrderNum = orderVOSBean.getOrderNum();
topBar.setTitle("凍鏈接單" + "(" + confirmedOrderNum + "/" + bean.getData().getColdChainPickUpNum() + ")");
}
......@@ -279,7 +330,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
@Override
public void setRestaurantState(int state) {
if(stateBg == null){
if (stateBg == null) {
stateBg = new GradientDrawable();
}
switch (state) {
......@@ -304,6 +355,11 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
}
@Override
public void refreshOrderState(long id) {
fragments.get(viewPager.getCurrentItem()).notifyDataState(id, ColdChainConstants.ORDER_CONFIRMED);
}
@Override
protected void onStart() {
super.onStart();
getNumByOrderTypeInvoke("loadNumber");
......@@ -404,6 +460,9 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
@Override
protected void onDestroy() {
super.onDestroy();
if (autoOrderDisposable != null) {
autoOrderDisposable.dispose();
}
if (bind != null) {
bind.setOnPostCallBack(null);
}
......@@ -497,7 +556,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
if (bean != null && bean.getData() != null && bean.getData().getOrderVOS() != null) {
int orderNum = 0;
for (SupplementInfoBean.DataBean.OrderVOSBean orderVOSBean : bean.getData().getOrderVOS()) {
if (orderVOSBean.getOrderType() == ColdChainConstans.orderType) {
if (orderVOSBean.getOrderType() == ColdChainConstants.orderType) {
orderNum = orderVOSBean.getOrderNum();
}
}
......@@ -506,7 +565,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
return false;
}
public boolean isAutoReceivingOrder(){
public boolean isAutoReceivingOrder() {
return autoReceivingOrders.isChecked();
}
}
......
......@@ -113,6 +113,7 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
private int position;
private int orderStatus;
private boolean printPdf = false;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderDetailsComponent //如找不到该类,请编译一下项目
......@@ -199,6 +200,9 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
Intent intent = new Intent();
intent.putExtra("position", position);
intent.putExtra("orderStatus", orderStatus);
if(printPdf){
intent.putExtra("printPdf", true);
}
setResult(1001, intent);
finish();
}
......@@ -325,6 +329,11 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
orderStatus = state;
}
@Override
public void setPrintPdfState() {
printPdf = true;
}
/**
* 自定义打印
*/
......
......@@ -13,7 +13,7 @@ import com.gingersoft.coldchain_module.R;
import com.gingersoft.coldchain_module.R2;
import com.gingersoft.coldchain_module.di.component.DaggerSupplementOrderComponent;
import com.gingersoft.coldchain_module.di.module.SupplementOrderModule;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstans;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.SupplementOrderContract;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.presenter.SupplementOrderPresenter;
......@@ -178,7 +178,7 @@ public class SupplementOrderActivity extends BaseActivity<SupplementOrderPresent
if (dataBean.getOrderVOS() != null) {
int orderNum = 0;
for (SupplementInfoBean.DataBean.OrderVOSBean orderVOSBean : dataBean.getOrderVOS()) {
if (orderVOSBean.getOrderType() == ColdChainConstans.orderType) {
if (orderVOSBean.getOrderType() == ColdChainConstants.orderType) {
orderNum = orderVOSBean.getOrderNum();
}
}
......
......@@ -52,13 +52,15 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
private String status;
private String type;
private int position;
private int page = 1;
public static OrderListFragment newInstance(String status, String type) {
public static OrderListFragment newInstance(String status, String type, int position) {
OrderListFragment fragment = new OrderListFragment();
Bundle arguments = new Bundle();
arguments.putString("status", status);
arguments.putString("type", type);
arguments.putInt("position", position);
fragment.setArguments(arguments);
return fragment;
}
......@@ -87,6 +89,7 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
if (arguments != null) {
status = getArguments().getString("status");
type = getArguments().getString("type");
position = getArguments().getInt("position");
}
onRefreshData();
mRefreshLayout.setOnRefreshListener(refreshLayout -> onRefreshData());
......@@ -206,13 +209,6 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
} else {
adapter.setList(data);
}
//是否自動接單
if (getActivity() instanceof ColdChainMainActivity && ((ColdChainMainActivity) getActivity()).isAutoReceivingOrder()) {
//如果第一個單都不是 "未確認" 訂單,那麼下面的單也不可能是,根據訂單狀態排序的。
if (data.size() > 0 && (data.get(0).getSTATUS() == 0 || data.get(0).getSTATUS() == 1)) {
mPresenter.findOrderDetails(data.get(0).getId());
}
}
} else {
layoutNoData.setVisibility(View.VISIBLE);
mRvOrderList.setVisibility(View.GONE);
......@@ -227,6 +223,19 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
}
}
public void notifyDataState(long id, int state) {
if (adapter != null) {
List<OrderList.DataBeanX.DataBean> data = adapter.getData();
for (int i = 0; i < data.size(); i++) {
if (data.get(i).getId() == id) {
data.get(i).setSTATUS(state);
}
}
adapter.setList(data);
}
}
@Override
public void removeItem(int position) {
if (adapter != null) {
......@@ -253,12 +262,6 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
}
}
@Override
public void updateOrderStatusSuccess() {
//修改訂單狀態之後,刷新列表
onRefreshData();
}
private void notifyActivityOrderNum() {
if (getActivity() instanceof ColdChainMainActivity) {
((ColdChainMainActivity) getActivity()).getNumByOrderTypeInvoke("loadNumber");
......@@ -270,8 +273,13 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1001 && data != null && mPresenter != null) {
int position = data.getIntExtra("position", -1);
boolean isPrint = data.getBooleanExtra("printPdf", false);
if (isPrint) {
mPresenter.notifyDataPrintStateByPosition(position, true);
} else {
int orderStatus = data.getIntExtra("orderStatus", 0);
mPresenter.notifyDataByPosition(position, orderStatus);
}
}
}
}
......@@ -159,9 +159,9 @@
<TextView
android:id="@+id/tv_cold_chain_restaurant_state"
style="@style/otherOrder_restaurant_state_style"
android:layout_marginRight="@dimen/dp_2"
android:background="@drawable/shape_restaurant_state_bg"
android:text="營業中 "
android:layout_marginRight="@dimen/dp_10"
app:layout_constraintBottom_toBottomOf="@id/ed_cold_chain_order_num_search"
app:layout_constraintRight_toLeftOf="@id/cb_auto_receiving_orders"
app:layout_constraintTop_toTopOf="@id/ed_cold_chain_order_num_search" />
......@@ -176,12 +176,13 @@
app:layout_constraintRight_toRightOf="@id/tv_cold_chain_restaurant_state"
app:layout_constraintTop_toTopOf="@id/tv_cold_chain_restaurant_state" />
<CheckBox
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/cb_auto_receiving_orders"
style="@style/MyCheckbox_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layoutDirection="ltr"
android:text="自動接單"
android:button="@drawable/selector_checkbox"
android:textColor="@color/color_a9"
app:layout_constraintBottom_toBottomOf="@id/tv_cold_chain_restaurant_state"
app:layout_constraintRight_toRightOf="parent"
......
package com.gingersoft.cloud.gsa;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.gingersoft.cloud.gsa", appContext.getPackageName());
}
}
package com.gingersoft.cloud.gsa;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}
\ No newline at end of file
......@@ -155,7 +155,7 @@
android:id="@+id/rb_auto_login"
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"
android:background="@drawable/selector_checkbox_bg"
android:background="@drawable/selector_checkbox"
android:button="@null" />
<TextView
......@@ -176,7 +176,7 @@
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"
android:layout_marginLeft="@dimen/dp_15"
android:background="@drawable/selector_checkbox_bg"
android:background="@drawable/selector_checkbox"
android:button="@null"
app:layout_constraintLeft_toRightOf="@id/tv_auto_login_text"
app:layout_constraintTop_toTopOf="@id/rb_auto_login" />
......
......@@ -17,7 +17,8 @@
android:networkSecurityConfig="@xml/network_android"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.RestaurantQrCodeActivity"/>
<activity android:name=".mvp.ui.activity.ExpandListActivity"></activity>
<activity android:name=".mvp.ui.activity.RestaurantQrCodeActivity" />
<activity android:name=".mvp.ui.activity.LanguageActivity" />
<activity android:name=".mvp.ui.activity.ReportActivity" />
<activity android:name=".mvp.ui.activity.MainActivity" />
......
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.ExpandListModule;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.ExpandListActivity;
@ActivityScope
@Component(modules = ExpandListModule.class, dependencies = AppComponent.class)
public interface ExpandListComponent {
void inject(ExpandListActivity activity);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.ExpandListContract;
import com.gingersoft.gsa.cloud.main.mvp.model.ExpandListModel;
@Module
public class ExpandListModule {
private ExpandListContract.View view;
/**
* 构建ExpandListModule时,将View的实现类传进来,这样就可以提供View的实现类给presenter
*
* @param view
*/
public ExpandListModule(ExpandListContract.View view) {
this.view = view;
}
@ActivityScope
@Provides
ExpandListContract.View provideExpandListView() {
return this.view;
}
@ActivityScope
@Provides
ExpandListContract.Model provideExpandListModel(ExpandListModel model) {
return model;
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FunctionBean;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import java.util.List;
import io.reactivex.Observable;
public interface ExpandListContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void loadExpandList(List<Function> data);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<FunctionBean> getExpandList(long userId);
}
}
package com.gingersoft.gsa.cloud.main.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.ExpandListContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FunctionBean;
import com.gingersoft.gsa.cloud.main.mvp.model.service.ExpandListService;
import com.google.gson.Gson;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import javax.inject.Inject;
import io.reactivex.Observable;
@ActivityScope
public class ExpandListModel extends BaseModel implements ExpandListContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public ExpandListModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
@Override
public Observable<FunctionBean> getExpandList(long userId) {
return mRepositoryManager.obtainRetrofitService(ExpandListService.class).getExpandList(userId);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import com.gingersoft.gsa.cloud.database.bean.Function;
import java.util.List;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019-12-28
* 修订历史:2019-12-28
* 描述:
*/
@Data
public class FunctionBean {
private boolean success;
private String errMsg;
private long sysTime;
private List<Function> data;
}
package com.gingersoft.gsa.cloud.main.mvp.model.service;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FunctionBean;
import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface ExpandListService {
@GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FunctionBean> getExpandList(@Query("userId") long userId);
}
package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.main.mvp.contract.ExpandListContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FunctionBean;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.RxLifecycleUtils;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
@ActivityScope
public class ExpandListPresenter extends BasePresenter<ExpandListContract.Model, ExpandListContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public ExpandListPresenter(ExpandListContract.Model model, ExpandListContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
public void getExpandInfoList() {
mModel.getExpandList(GsaCloudApplication.getMemberId())
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<FunctionBean>(mErrorHandler) {
@Override
public void onNext(FunctionBean functionBean) {
mRootView.loadExpandList(functionBean.getData());
}
});
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerExpandListComponent;
import com.gingersoft.gsa.cloud.main.di.module.ExpandListModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.ExpandListContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.ExpandListPresenter;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
public class ExpandListActivity extends BaseActivity<ExpandListPresenter> implements ExpandListContract.View {
@BindView(R2.id.rv_expand_list)
RecyclerView rvExpandList;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerExpandListComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.expandListModule(new ExpandListModule(this))
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_expand_list; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.getExpandInfoList();
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void loadExpandList(List<Function> data) {
}
}
......@@ -300,7 +300,10 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
}
List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager");
managerFuncations.add(new Function((long) 171, 163, 5, "二維碼", R.drawable.ic_authority_management_close, 0));
managerFuncations.add(new Function((long) 171, 163, 5, "配置列表", R.drawable.ic_authority_management_close, 0));
if (managerFuncations.size() > 0) {
functions.addAll(managerFuncations);
ll_management.setVisibility(View.VISIBLE);
......@@ -407,6 +410,8 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
.call();
} else if(name.equals("二維碼")){
launchActivity(new Intent(mContext, RestaurantQrCodeActivity.class));
} else if (name.equals("配置列表")) {
launchActivity(new Intent(mContext, ExpandListActivity.class));
}
}
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_expand_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
\ No newline at end of file
......@@ -96,6 +96,8 @@ public class PrjBean {
private int currentIndex;//當前是第幾張prj
private int totalPrj;//本次總共有多少張prj
private int isFirstSendOrder;//是否首次送單,1是 2否
private int quantity;//統計打印數量
public int getId() {
return id;
......@@ -344,6 +346,22 @@ public class PrjBean {
public void setTotalPrj(int totalPrj) {
this.totalPrj = totalPrj;
}
public int getIsFirstSendOrder() {
return isFirstSendOrder;
}
public void setIsFirstSendOrder(int isFirstSendOrder) {
this.isFirstSendOrder = isFirstSendOrder;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
public Map<String, List<Bean>> getPrjMap() {
......
......@@ -118,6 +118,9 @@ public class PrintPrjKitchen extends PrinterRoot {
TextView tvCurrentPageIndex = view.findViewById(R.id.tv_prj_page_index);
RecyclerView rvFood = view.findViewById(R.id.rv_kitchen_food);
TextView tvTableNumber2 = view.findViewById(R.id.tv_kitchen_print_table_number2);
TextView tvFirstOrder = view.findViewById(R.id.tv_kitchen_print_first_order);
TextView tvPrintQuantity = view.findViewById(R.id.tv_kitchen_print_quantity);
LinearLayout layoutOpenTableTime = view.findViewById(R.id.layout_opening_table_time);
KitChenPrjPrintFoodAdapter foodAdapter = new KitChenPrjPrintFoodAdapter(data, printerDeviceBean);
......@@ -171,6 +174,18 @@ public class PrintPrjKitchen extends PrinterRoot {
} else {
tvTakeTime.setVisibility(View.GONE);
}
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintFirstOrder, false)) {
tvFirstOrder.setText("<頭單>");
tvFirstOrder.setVisibility(prjBean.getIsFirstSendOrder() == 1 ? View.VISIBLE : View.GONE);
} else {
tvFirstOrder.setVisibility(View.GONE);
}
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintStatisticsAmount, false)) {
tvPrintQuantity.setText(prjBean.getQuantity() + "");
} else {
tvPrintQuantity.setVisibility(View.GONE);
}
//開台時間
tvOpeningTime.setText(TimeUtils.parseTimeRepeat(prjBean.getOrderDetailsTime(), TimeUtils.DEFAULT_DATE_MDHM));
......
......@@ -54,6 +54,7 @@ import com.google.zxing.WriterException;
import com.hyweb.n5.lib.constant.PrinterConstant;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.hyweb.n5.server.aidl.IOnPrintCallback;
import com.jess.arms.integration.AppManager;
import com.joe.print.R;
import com.joe.print.mvp.model.bean.PrintBillBean;
import com.joe.print.mvp.print.common.PrinterFinderCallback;
......@@ -62,6 +63,7 @@ import com.joe.print.mvp.print.usb.EscCommand;
import com.joe.print.mvp.print.usb.UsbPrint;
import com.joe.print.mvp.print.usb.UsbPrinter;
import com.joe.print.mvp.print.usb.UsbPrinterFinder;
import com.joe.print.mvp.ui.activity.PrintActivity;
import com.joe.print.mvp.ui.adapter.BillItemAdapter;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
......@@ -77,12 +79,15 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.inject.Inject;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener {
@Inject
AppManager mAppManager;
protected final String MONETARY_UNIT = "$";
private final static int SUNMI_PAPER_WIDTH = 360;//商米打印機紙張寬度
private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度
......@@ -194,7 +199,9 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
n5Print(bitmaps, listener);
} else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) {
//BBPOS Wisepos 打印 localhost 192.168.1.162
OkHttp3Utils.get("http://localhost:8080/pos?transactionType=PRINT&isExternal=true&apiVersion=21&printData=<html><body><H2>BBPOS test print</H2></body></html>").subscribe(new Observer<String>() {
//打印結果示例:<?xml version="1.0" encoding= "UTF-8" ?><WAPIResult><status>SUCCESS</status><requestType>PRINT</requestType><state>IDLE</state><systemInfo><appVersion>1.22.4.4.007</appVersion><OSVersion>9</OSVersion><ip>192.168.1.162</ip><mac>2059a018d3d6</mac><serialNumber>WSS503013000075</serialNumber><firmware>WSS50.501-02 (5.00.01.02.beta7)</firmware><hardware></hardware><terminalConfig>GNZZ_MTIPD_v13_with_AE_v1</terminalConfig><key>034040XXXXXXXXXXXXXX</key><bootloader>6.00.00.20 (6.00.00.34)</bootloader></systemInfo><timestamp>1601021267673</timestamp></WAPIResult>
WiseposBean wiseposBean = new WiseposBean();
OkHttp3Utils.get("http://localhost:8080/pos?transactionType=PRINT&isExternal=false&apiVersion=21&printData=<html><body><H2>BBPOS test print</H2></body></html>").subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
......@@ -204,7 +211,6 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public void onNext(String s) {
Log.e("eee", "打印內容:" + s);
XmlPullParser xmlPullParser = Xml.newPullParser();
WiseposBean wiseposBean = new WiseposBean();
try {
xmlPullParser.setInput(new ByteArrayInputStream(s.getBytes()), "utf-8");
int eventType = xmlPullParser.getEventType();
......@@ -236,12 +242,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
}
break;
case XmlPullParser.END_TAG:
//這個節點解析完成
if (wiseposBean.getState() != null && wiseposBean.getState().equals("SUCCESS")) {
listener.printSuccess();
} else {
listener.printFile("打印失敗");
}
break;
}
eventType = xmlPullParser.next();
......@@ -262,8 +263,18 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
@Override
public void onComplete() {
Log.e("eee", "完成");
//這個節點解析完成
if (wiseposBean.getState() != null && wiseposBean.getState().equals("SUCCESS")) {
listener.printSuccess();
} else {
listener.printFile("打印失敗");
}
Intent intent = new Intent(GsaCloudApplication.getAppContext(), PrintActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
GsaCloudApplication.getAppContext().startActivity(intent);
}
});
} else {
......
......@@ -25,6 +25,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
......@@ -119,11 +120,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
public int initView(@Nullable Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
return 0; //如果你不需要框架帮你设置 setContentView(id) 需要 自行设置,请返回 0
return 0; //R.layout.print_bitmap如果你不需要框架帮你设置 setContentView(id) 需要 自行设置,请返回 0
}
// ImageView bitmapIv;
@Override
public void initData(@Nullable Bundle savedInstanceState) {
// bitmapIv = findViewById(R.id.iv_bitmap);
callId = CCUtil.getNavigateCallId(this);
//獲取打印類型,根據打印類型生成對應的bitmap
type = CCUtil.getNavigateParam(this, PRINT_TYPE, PrintConstans.PRINT_TEST);
......@@ -309,7 +312,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void printFile(String msg) {
if (!TextUtil.isEmptyOrNullOrUndefined(msg)) {
ToastUtils.show(mContext, msg);
ToastUtils.show(GsaCloudApplication.getAppContext(), msg);
}
// if (printCount <= 1) {
CC.sendCCResult(callId, CCResult.error("print error"));
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_bitmap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:scaleType="fitXY" />
</androidx.core.widget.NestedScrollView>
\ No newline at end of file
......@@ -13,6 +13,8 @@
app:qmui_topbar_text_btn_color_state_list="@color/theme_white_color"
app:qmui_topbar_title_color="@color/theme_white_color" />
<requestFocus />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
......@@ -24,8 +26,6 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<requestFocus />
<LinearLayout
style="@style/print_add_printer_input_style"
android:layout_width="match_parent"
......@@ -53,10 +53,11 @@
android:textColorHint="@color/hint_color"
android:textSize="@dimen/dp_14">
<requestFocus />
</EditText>
</LinearLayout>
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<RelativeLayout
android:id="@+id/layout_print_type"
style="@style/print_add_printer_input_style"
......@@ -71,7 +72,6 @@
android:layout_centerVertical="true"
android:text="打印機類型" />
<ImageView
android:id="@+id/iv_print_type_arrow"
android:layout_width="wrap_content"
......@@ -401,6 +401,7 @@
app:layout_constraintTop_toTopOf="parent" />
</RelativeLayout>
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<!-- 語言選擇-->
......@@ -436,10 +437,10 @@
android:layout_marginRight="@dimen/dp_7"
android:layout_toLeftOf="@id/iv_food_language_arrow"
android:layout_toRightOf="@id/tv_food_language_text"
android:ellipsize="end"
android:gravity="right"
android:text="請選擇"
android:maxLines="1"
android:ellipsize="end"
android:text="請選擇"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_16"
app:layout_constraintRight_toRightOf="parent"
......@@ -656,8 +657,8 @@
android:layout_height="wrap_content"
android:thumb="@drawable/shape_thumb_on"
android:track="@drawable/selector_switch_track"
app:layout_constraintRight_toRightOf="parent"
android:visibility="gone"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
......@@ -703,8 +704,8 @@
android:layout_height="wrap_content"
android:thumb="@drawable/shape_thumb_on"
android:track="@drawable/selector_switch_track"
app:layout_constraintRight_toRightOf="parent"
android:visibility="gone"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
......
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