Commit e880993e by 宁斌

1、申請文件權限放到登錄頁

2、清機報表完善
parent 4a3165d6
...@@ -39,5 +39,6 @@ public interface SettlementReportContract { ...@@ -39,5 +39,6 @@ public interface SettlementReportContract {
Observable<SendSettlement> sendSettlement(RequestBody requestBody); Observable<SendSettlement> sendSettlement(RequestBody requestBody);
Observable<SettlementReport> getSettlementReport(int restaurantId);
} }
} }
...@@ -57,4 +57,9 @@ public class SettlementReportModel extends BaseModel implements SettlementReport ...@@ -57,4 +57,9 @@ public class SettlementReportModel extends BaseModel implements SettlementReport
.sendSettlement(requestBody); .sendSettlement(requestBody);
} }
@Override
public Observable<SettlementReport> getSettlementReport(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(SettlementService.class)
.getSettlementReport(restaurantId);
}
} }
\ No newline at end of file
...@@ -15,8 +15,8 @@ public class SettlementReport { ...@@ -15,8 +15,8 @@ public class SettlementReport {
/** /**
* success : true * success : true
* sysTime : 1583831604513 * sysTime : 1583923576461
* data : {"vo":{"prices":0,"scamount":0,"disamount":0,"payNum":0,"payamount":0,"tipnum":0,"tipsPrice":0,"totamount":0,"num":0,"person":0},"analysis":[{"typeName":"堂食","num":1,"amount":55},{"typeName":"未完成賬單","num":1,"amount":55},{"typeName":"本月累計營業額","num":0,"amount":55}],"restaurantOperation":{"id":2,"uid":297,"restaurantId":410,"type":1,"openTime":1583563903296,"operationTime":1583823103296,"createTime":1583823103296},"cash":[]} * data : {"vo":{"prices":256,"scamount":0,"disamount":0,"payNum":0,"payamount":0,"tipnum":0,"tipsPrice":0,"totamount":256,"num":2,"person":7},"analysis":[{"typeName":"堂食","num":3,"amount":678},{"typeName":"已完成賬單","num":1,"amount":201},{"typeName":"未完成賬單","num":2,"amount":477},{"typeName":"本月累計營業額","num":0,"amount":678}],"restaurantOperation":{"id":11,"uid":297,"restaurantId":410,"type":1,"openTime":1583919880776,"operationTime":1583922285557,"createTime":1583922285557},"cash":[{"payName":"現金","payNum":2,"payAmount":256}]}
*/ */
private boolean success; private boolean success;
...@@ -49,16 +49,26 @@ public class SettlementReport { ...@@ -49,16 +49,26 @@ public class SettlementReport {
public static class DataBean implements Serializable { public static class DataBean implements Serializable {
/** /**
* vo : {"prices":0,"scamount":0,"disamount":0,"payNum":0,"payamount":0,"tipnum":0,"tipsPrice":0,"totamount":0,"num":0,"person":0} * yesterdayTime : 2020-03-12 19:19:44
* analysis : [{"typeName":"堂食","num":1,"amount":55},{"typeName":"未完成賬單","num":1,"amount":55},{"typeName":"本月累計營業額","num":0,"amount":55}] * vo : {"prices":256,"scamount":0,"disamount":0,"payNum":0,"payamount":0,"tipnum":0,"tipsPrice":0,"totamount":256,"num":2,"person":7}
* restaurantOperation : {"id":2,"uid":297,"restaurantId":410,"type":1,"openTime":1583563903296,"operationTime":1583823103296,"createTime":1583823103296} * analysis : [{"typeName":"堂食","num":3,"amount":678},{"typeName":"已完成賬單","num":1,"amount":201},{"typeName":"未完成賬單","num":2,"amount":477},{"typeName":"本月累計營業額","num":0,"amount":678}]
* cash : [] * restaurantOperation : {"id":11,"uid":297,"restaurantId":410,"type":1,"openTime":1583919880776,"operationTime":1583922285557,"createTime":1583922285557}
* cash : [{"payName":"現金","payNum":2,"payAmount":256}]
*/ */
private String yesterdayTime;
private VoBean vo; private VoBean vo;
private RestaurantOperationBean restaurantOperation; private RestaurantOperationBean restaurantOperation;
private List<AnalysisBean> analysis; private List<AnalysisBean> analysis;
private List<?> cash; private List<CashBean> cash;
public String getYesterdayTime() {
return yesterdayTime;
}
public void setYesterdayTime(String yesterdayTime) {
this.yesterdayTime = yesterdayTime;
}
public VoBean getVo() { public VoBean getVo() {
return vo; return vo;
...@@ -84,60 +94,60 @@ public class SettlementReport { ...@@ -84,60 +94,60 @@ public class SettlementReport {
this.analysis = analysis; this.analysis = analysis;
} }
public List<?> getCash() { public List<CashBean> getCash() {
return cash; return cash;
} }
public void setCash(List<?> cash) { public void setCash(List<CashBean> cash) {
this.cash = cash; this.cash = cash;
} }
public static class VoBean implements Serializable{ public static class VoBean implements Serializable{
/** /**
* prices : 0 * prices : 256
* scamount : 0 * scamount : 0
* disamount : 0 * disamount : 0
* payNum : 0 * payNum : 0
* payamount : 0 * payamount : 0
* tipnum : 0 * tipnum : 0
* tipsPrice : 0 * tipsPrice : 0
* totamount : 0 * totamount : 256
* num : 0 * num : 2
* person : 0 * person : 7
*/ */
private int prices; private double prices;
private int scamount; private double scamount;
private int disamount; private double disamount;
private int payNum; private int payNum;
private int payamount; private double payamount;
private int tipnum; private int tipnum;
private int tipsPrice; private double tipsPrice;
private int totamount; private double totamount;
private int num; private int num;
private int person; private int person;
public int getPrices() { public double getPrices() {
return prices; return prices;
} }
public void setPrices(int prices) { public void setPrices(double prices) {
this.prices = prices; this.prices = prices;
} }
public int getScamount() { public double getScamount() {
return scamount; return scamount;
} }
public void setScamount(int scamount) { public void setScamount(double scamount) {
this.scamount = scamount; this.scamount = scamount;
} }
public int getDisamount() { public double getDisamount() {
return disamount; return disamount;
} }
public void setDisamount(int disamount) { public void setDisamount(double disamount) {
this.disamount = disamount; this.disamount = disamount;
} }
...@@ -149,11 +159,11 @@ public class SettlementReport { ...@@ -149,11 +159,11 @@ public class SettlementReport {
this.payNum = payNum; this.payNum = payNum;
} }
public int getPayamount() { public double getPayamount() {
return payamount; return payamount;
} }
public void setPayamount(int payamount) { public void setPayamount(double payamount) {
this.payamount = payamount; this.payamount = payamount;
} }
...@@ -165,19 +175,19 @@ public class SettlementReport { ...@@ -165,19 +175,19 @@ public class SettlementReport {
this.tipnum = tipnum; this.tipnum = tipnum;
} }
public int getTipsPrice() { public double getTipsPrice() {
return tipsPrice; return tipsPrice;
} }
public void setTipsPrice(int tipsPrice) { public void setTipsPrice(double tipsPrice) {
this.tipsPrice = tipsPrice; this.tipsPrice = tipsPrice;
} }
public int getTotamount() { public double getTotamount() {
return totamount; return totamount;
} }
public void setTotamount(int totamount) { public void setTotamount(double totamount) {
this.totamount = totamount; this.totamount = totamount;
} }
...@@ -200,13 +210,13 @@ public class SettlementReport { ...@@ -200,13 +210,13 @@ public class SettlementReport {
public static class RestaurantOperationBean implements Serializable{ public static class RestaurantOperationBean implements Serializable{
/** /**
* id : 2 * id : 11
* uid : 297 * uid : 297
* restaurantId : 410 * restaurantId : 410
* type : 1 * type : 1
* openTime : 1583563903296 * openTime : 1583919880776
* operationTime : 1583823103296 * operationTime : 1583922285557
* createTime : 1583823103296 * createTime : 1583922285557
*/ */
private int id; private int id;
...@@ -277,13 +287,15 @@ public class SettlementReport { ...@@ -277,13 +287,15 @@ public class SettlementReport {
public static class AnalysisBean implements Serializable{ public static class AnalysisBean implements Serializable{
/** /**
* typeName : 堂食 * typeName : 堂食
* num : 1 * num : 3
* amount : 55 * person : 2
* amount : 678
*/ */
private String typeName; private String typeName;
private int num; private int num;
private int amount; private int person;
private double amount;
public String getTypeName() { public String getTypeName() {
return typeName; return typeName;
...@@ -301,13 +313,57 @@ public class SettlementReport { ...@@ -301,13 +313,57 @@ public class SettlementReport {
this.num = num; this.num = num;
} }
public int getAmount() { public int getPerson() {
return person;
}
public void setPerson(int person) {
this.person = person;
}
public double getAmount() {
return amount; return amount;
} }
public void setAmount(int amount) { public void setAmount(double amount) {
this.amount = amount; this.amount = amount;
} }
} }
public static class CashBean implements Serializable{
/**
* payName : 現金
* payNum : 2
* payAmount : 256
*/
private String payName;
private int payNum;
private double payAmount;
public String getPayName() {
return payName;
}
public void setPayName(String payName) {
this.payName = payName;
}
public int getPayNum() {
return payNum;
}
public void setPayNum(int payNum) {
this.payNum = payNum;
}
public double getPayAmount() {
return payAmount;
}
public void setPayAmount(double payAmount) {
this.payAmount = payAmount;
}
}
} }
} }
...@@ -26,8 +26,7 @@ public interface SettlementService { ...@@ -26,8 +26,7 @@ public interface SettlementService {
@POST("RestaurantOperation/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("RestaurantOperation/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<SendSettlement> sendSettlement(@Body RequestBody requestBody); Observable<SendSettlement> sendSettlement(@Body RequestBody requestBody);
@FormUrlEncoded @GET("ricepon-report/api/restaurantOperation/report" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
@POST("ricepon-report/api/restaurantOperation/report" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) Observable<SettlementReport> getSettlementReport(@Query("restaurantId") int restaurantId);
Observable<SettlementReport> getSettlementReport(@Field("restaurantId") int restaurantId);
} }
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils; import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract;
...@@ -78,6 +79,8 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa ...@@ -78,6 +79,8 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
@Override @Override
public void onNext(@NonNull Object info) { public void onNext(@NonNull Object info) {
mRootView.loginOut(); mRootView.loginOut();
//清空用戶信息
GsaCloudApplication.clearMemberInfo();
} }
}); });
} }
...@@ -85,21 +88,21 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa ...@@ -85,21 +88,21 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
/** /**
* 进入应用强制用户开启 存储的权限(保存error log来文件必须拥有读写权限) * 进入应用强制用户开启 存储的权限(保存error log来文件必须拥有读写权限)
*/ */
public void requestExternalStoragePermission() { // public void requestExternalStoragePermission() {
PermissionUtil.externalStorage(new PermissionUtil.RequestPermission() { // PermissionUtil.externalStorage(new PermissionUtil.RequestPermission() {
@Override // @Override
public void onRequestPermissionSuccess() { // public void onRequestPermissionSuccess() {
} // }
//
@Override // @Override
public void onRequestPermissionFailure(List<String> permissions) { // public void onRequestPermissionFailure(List<String> permissions) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "external.storage.permission.hint", ArmsUtils.getString(mApplication, R.string.queue_write_external_storage_permission_hint))); // mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "external.storage.permission.hint", ArmsUtils.getString(mApplication, R.string.queue_write_external_storage_permission_hint)));
mRootView.killMyself(); // mRootView.killMyself();
} // }
//
@Override // @Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) { // public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
} // }
}, mRootView.getRxPermissions(), mErrorHandler); // }, mRootView.getRxPermissions(), mErrorHandler);
} // }
} }
...@@ -129,12 +129,14 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon ...@@ -129,12 +129,14 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
if (dataBean != null) { if (dataBean != null) {
if (dataBean.getTable() == null || (dataBean.getTable() != null && dataBean.getTable().size() == 0)) { if (dataBean.getTable() == null || (dataBean.getTable() != null && dataBean.getTable().size() == 0)) {
mRootView.showMessage("清機成功"); mRootView.showMessage("清機成功");
getSettlementReport();
} else { } else {
//還有檯未結賬 //還有檯未結賬
showSettlementErrorDialog("仍有臺號未結賬,請先結賬;" + "\n" + getTables(dataBean.getTable())); showSettlementErrorDialog("仍有臺號未結賬,請先結賬;" + "\n" + getTables(dataBean.getTable()));
} }
} else { } else {
mRootView.showMessage("清機成功"); mRootView.showMessage("清機成功");
getSettlementReport();
} }
} else { } else {
mRootView.showMessage("清機失敗"); mRootView.showMessage("清機失敗");
...@@ -143,6 +145,47 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon ...@@ -143,6 +145,47 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
}); });
} }
public void getSettlementReport() {
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
mModel.getSettlementReport(restaurantId)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<SettlementReport>(mErrorHandler) {
//{"success":false,"errCode":"data_002","errMsg":"沒有查詢到數據","sysTime":1583573772290}
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
RetrofitUrlManager.getInstance().putDomain("common", HttpsConstans.ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL);
}
@Override
public void onNext(@NonNull SettlementReport info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null) {
mRootView.returnSettlementData(info.getData());
}
} else {
// mRootView.showMessage("獲取報表失敗");
}
}
@Override
public void onComplete() {
super.onComplete();
RetrofitUrlManager.getInstance().putDomain("common", HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL);
}
@Override
public void onError(Throwable t) {
super.onError(t);
RetrofitUrlManager.getInstance().putDomain("common", HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL);
}
});
}
private void showSettlementErrorDialog(String msg) { private void showSettlementErrorDialog(String msg) {
new QMUIDialog.MessageDialogBuilder(IActivity) new QMUIDialog.MessageDialogBuilder(IActivity)
......
...@@ -120,7 +120,7 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N ...@@ -120,7 +120,7 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.requestExternalStoragePermission(); // mPresenter.requestExternalStoragePermission();
//初始化側邊欄菜單項 //初始化側邊欄菜單項
initSideMenu(); initSideMenu();
...@@ -265,6 +265,11 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N ...@@ -265,6 +265,11 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
.setActionName("showPrintActivity") .setActionName("showPrintActivity")
.build() .build()
.call(); .call();
}else if (name.equals("餐牌管理")) {
// CC.obtainBuilder("Component.Table")
// .setActionName("showOrderCenterActivity")
// .build()
// .call();
} }
} }
......
...@@ -52,7 +52,6 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem ...@@ -52,7 +52,6 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
@BindView(R2.id.btn_settlement_report) @BindView(R2.id.btn_settlement_report)
QMUIAlphaButton btn_settlement_report; QMUIAlphaButton btn_settlement_report;
private SettlementReport.DataBean mSettlementReportBean; private SettlementReport.DataBean mSettlementReportBean;
@Override @Override
...@@ -102,6 +101,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem ...@@ -102,6 +101,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
Intent intent = new Intent(this, SettlementReportActivity.class); Intent intent = new Intent(this, SettlementReportActivity.class);
intent.putExtra("settlementReportBean", mSettlementReportBean); intent.putExtra("settlementReportBean", mSettlementReportBean);
launchActivity(intent); launchActivity(intent);
mSettlementReportBean = null;
} }
} }
...@@ -157,7 +157,8 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem ...@@ -157,7 +157,8 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
@Override @Override
public void returnSettlementData(SettlementReport.DataBean datasBean) { public void returnSettlementData(SettlementReport.DataBean datasBean) {
this.mSettlementReportBean = datasBean; this.mSettlementReportBean = datasBean;
setLastTime(TimeUtils.getStringByFormat(mSettlementReportBean.getRestaurantOperation().getOpenTime(), TimeUtils.dateFormatYMDHMS)); String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:");
setLastTime(lastSettlementText + mSettlementReportBean.getYesterdayTime());
} }
......
...@@ -4,11 +4,13 @@ import android.app.Activity; ...@@ -4,11 +4,13 @@ import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils; import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2; import com.gingersoft.gsa.cloud.main.R2;
...@@ -29,6 +31,7 @@ import com.qmuiteam.qmui.widget.QMUITopBar; ...@@ -29,6 +31,7 @@ import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -74,10 +77,18 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -74,10 +77,18 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
@BindView(R2.id.tv_end_time) @BindView(R2.id.tv_end_time)
TextView tv_end_time; TextView tv_end_time;
@BindView(R2.id.rv_settlement_report_item) @BindView(R2.id.scrollView)
RecyclerView rv_settlement_report_item; ScrollView scrollView;
// @BindView(R2.id.rv_settlement_report_item)
// RecyclerView rv_settlement_report_item;
@BindView(R2.id.rv_settlement_report_item2) @BindView(R2.id.rv_settlement_report_item2)
RecyclerView rv_settlement_report_item2; RecyclerView rv_settlement_report_item2;
//币種
public String cashStr = "$";
protected String dfformat = "#0.00";
protected DecimalFormat df;
private SettlementReport.DataBean mSettlementReportBean; private SettlementReport.DataBean mSettlementReportBean;
...@@ -103,11 +114,16 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -103,11 +114,16 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
@Override @Override
public void initIntent() { public void initIntent() {
mPresenter.initAdapter();
Intent intent = getIntent(); Intent intent = getIntent();
mSettlementReportBean = (SettlementReport.DataBean) intent.getSerializableExtra("settlementReportBean"); mSettlementReportBean = (SettlementReport.DataBean) intent.getSerializableExtra("settlementReportBean");
if (mSettlementReportBean != null) { if (mSettlementReportBean != null) {
df = new DecimalFormat(dfformat);
mPresenter.initAdapter();
returnSettlementData(mSettlementReportBean); returnSettlementData(mSettlementReportBean);
} else {
df = new DecimalFormat(dfformat);
mPresenter.initAdapter();
mPresenter.getSettlementReport();
} }
} }
...@@ -193,7 +209,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -193,7 +209,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
@Override @Override
public void setSettlementReportItemAdapter(DefaultAdapter adapter) { public void setSettlementReportItemAdapter(DefaultAdapter adapter) {
setSettlementReportItemRecycleLayoutManager(); setSettlementReportItemRecycleLayoutManager();
rv_settlement_report_item.setAdapter(adapter); // rv_settlement_report_item.setAdapter(adapter);
} }
@Override @Override
...@@ -208,10 +224,12 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -208,10 +224,12 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
List<SettlementReportItem> settlementReportItems = new ArrayList<>(); List<SettlementReportItem> settlementReportItems = new ArrayList<>();
List<SettlementReportItem5> settlementReportItem5s = new ArrayList<>(); List<SettlementReportItem5> settlementReportItem5s = new ArrayList<>();
String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:");
String dailyBusinessReportText = LanguageUtils.get_language_system(this, "", "每日營業報表"); String dailyBusinessReportText = LanguageUtils.get_language_system(this, "", "每日營業報表");
String byBusinessDateText = LanguageUtils.get_language_system(this, "", "由營業日期:"); String byBusinessDateText = LanguageUtils.get_language_system(this, "", "由營業日期:");
String toBusinessDateText = LanguageUtils.get_language_system(this, "", "到營業日期:"); String toBusinessDateText = LanguageUtils.get_language_system(this, "", "到營業日期:");
String headcountOrAverageConsumptionText = LanguageUtils.get_language_system(this, "", "統計:"); String headcountOrAverageConsumptionText = LanguageUtils.get_language_system(this, "", "統計:");
String totalText = LanguageUtils.get_language_system(this, "", "總計:");
String projectTotalSalesText = LanguageUtils.get_language_system(this, "total.project.sales", "項目銷售總額"); String projectTotalSalesText = LanguageUtils.get_language_system(this, "total.project.sales", "項目銷售總額");
String orderCountallText = LanguageUtils.get_language_system(this, "order.countall_litter", "賬單小數"); String orderCountallText = LanguageUtils.get_language_system(this, "order.countall_litter", "賬單小數");
String netTurnoverText = LanguageUtils.get_language_system(this, "net.turnover", "營業金額淨值"); String netTurnoverText = LanguageUtils.get_language_system(this, "net.turnover", "營業金額淨值");
...@@ -219,115 +237,150 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -219,115 +237,150 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
String analysisStatisticsText = LanguageUtils.get_language_system(this, "analysis.statistics", "分析統計"); String analysisStatisticsText = LanguageUtils.get_language_system(this, "analysis.statistics", "分析統計");
String totalbillAmountText = LanguageUtils.get_language_system(this, "total.bill.amount", "賬單金額總數"); String totalbillAmountText = LanguageUtils.get_language_system(this, "total.bill.amount", "賬單金額總數");
String numberBillsOrAverageText = LanguageUtils.get_language_system(this, "number.bills.or.average", "賬單數目/平均"); String numberBillsOrAverageText = LanguageUtils.get_language_system(this, "number.bills.or.average", "賬單數目/平均");
String HeadcountAndAverageConsumptionText = LanguageUtils.get_language_system(this, "headcount.or.average.consumption", "人數/平均消費"); String headcountAndAverageConsumptionText = LanguageUtils.get_language_system(this, "headcount.or.average.consumption", "人數/平均消費");
String billStatusText = LanguageUtils.get_language_system(this, "", "賬單現況"); String billStatusText = LanguageUtils.get_language_system(this, "", "賬單現況");
String outstandingBillText = LanguageUtils.get_language_system(this, "", "未完成賬單"); String outstandingBillText = LanguageUtils.get_language_system(this, "", "未完成賬單");
String billsReceivedText = LanguageUtils.get_language_system(this, "", "已收款賬單"); String billsReceivedText = LanguageUtils.get_language_system(this, "", "已完成賬單");
String cumulativeTurnoverMonthText = LanguageUtils.get_language_system(this, "", "本月累計營業額"); String cumulativeTurnoverMonthText = LanguageUtils.get_language_system(this, "", "本月累計營業額");
String netOperatingValueText = LanguageUtils.get_language_system(this, "", "營業金額凈值");
String endReportText = LanguageUtils.get_language_system(this, "", "報表完結"); String endReportText = LanguageUtils.get_language_system(this, "", "報表完結");
String readersText = LanguageUtils.get_language_system(this, "", "讀取人員"); String readersText = LanguageUtils.get_language_system(this, "", "讀取人員");
tv_last_time.setText(lastSettlementText + datasBean.getYesterdayTime());
SettlementReport.DataBean.RestaurantOperationBean restaurantOperationBean = datasBean.getRestaurantOperation(); SettlementReport.DataBean.RestaurantOperationBean restaurantOperationBean = datasBean.getRestaurantOperation();
if (restaurantOperationBean != null) { if (restaurantOperationBean != null) {
String currentDate = TimeUtil.getCurrentDate(TimeUtil.dateFormatYMDHMS);
tv_business_area_title.setText(dailyBusinessReportText); tv_business_area_title.setText(dailyBusinessReportText);
tv_start_time.setText(byBusinessDateText + TimeUtils.getStringByFormat(restaurantOperationBean.getOpenTime(), TimeUtils.dateFormatYMDHMS)); tv_start_time.setText(byBusinessDateText + TimeUtils.getStringByFormat(restaurantOperationBean.getOpenTime(), TimeUtils.dateFormatYMDHMS));
tv_end_time.setText(toBusinessDateText + TimeUtils.getStringByFormat(restaurantOperationBean.getOperationTime(), TimeUtils.dateFormatYMDHMS)); // tv_end_time.setText(toBusinessDateText + TimeUtils.getStringByFormat(restaurantOperationBean.getOperationTime(), TimeUtils.dateFormatYMDHMS));
tv_end_time.setText(toBusinessDateText + currentDate);
} }
SettlementReport.DataBean.VoBean voBean = datasBean.getVo(); SettlementReport.DataBean.VoBean voBean = datasBean.getVo();
if (voBean != null) { if (voBean != null) {
settlementReportItems.add(new SettlementReportItem(projectTotalSalesText, "", "$" + voBean.getPrices())); settlementReportItem5s.add(new SettlementReportItem5(projectTotalSalesText, " ", " ", " ", "$" + df.format(voBean.getPrices())));
settlementReportItems.add(new SettlementReportItem(netTurnoverText, "", "$" + voBean.getPrices())); settlementReportItem5s.add(new SettlementReportItem5(netTurnoverText, " ", " ", " ", "$" + df.format(voBean.getTotamount())));
settlementReportItems.add(new SettlementReportItem("", "", "")); // if (voBean.getPayNum() > 0) {
if (voBean.getPayNum() > 0) { // String creditCardText = LanguageUtils.get_language_system(this, "credit.card", "信用卡");
String creditCardText = LanguageUtils.get_language_system(this, "credit.card", "信用卡"); // SettlementReportItem5 printItem = new SettlementReportItem5(creditCardText, String.valueOf(voBean.getPayNum()), " "," ","$" + df.format(voBean.getPayamount()));
SettlementReportItem printItem = new SettlementReportItem(creditCardText, String.valueOf(voBean.getPayNum()), "$" + voBean.getPayamount()); // settlementReportItem5s.add(printItem);
settlementReportItems.add(printItem); // }
settlementReportItem5s.add(new SettlementReportItem5(" ", " ", " ", " ", " "));
settlementReportItem5s.add(new SettlementReportItem5(cashAuditText, " ", " ", " ", " "));
settlementReportItem5s.add(new SettlementReportItem5(netTurnoverText, " ", " ", " ", "$" + df.format(voBean.getPrices())));
List<SettlementReport.DataBean.CashBean> cashList = datasBean.getCash();
if (cashList != null && cashList.size() > 0) {
for (int i = 0; i < cashList.size(); i++) {
SettlementReport.DataBean.CashBean cashBean = cashList.get(i);
settlementReportItem5s.add(new SettlementReportItem5(cashBean.getPayName(), " ", String.valueOf(cashBean.getPayNum()), " ", "$" + df.format(cashBean.getPayAmount())));
}
} }
settlementReportItems.add(new SettlementReportItem("", "", ""));
settlementReportItems.add(new SettlementReportItem(cashAuditText, "", ""));
} }
List<SettlementReport.DataBean.CashBean> cashList = datasBean.getCash();
List<?> cashList = datasBean.getCash();
if (cashList != null && cashList.size() > 0) { if (cashList != null && cashList.size() > 0) {
SettlementReport.DataBean.CashBean cashBean = cashList.get(0);
/**現金詳情*/ /**現金詳情*/
String cashDetailText = LanguageUtils.get_language_system(this, "credit.cash.detail", "現金詳情"); String cashDetailText = LanguageUtils.get_language_system(this, "credit.cash.detail", "現金詳情");
String cashText = LanguageUtils.get_language_system(this, "credit.cash", "現金"); String cashText = LanguageUtils.get_language_system(this, "credit.cash", "現金");
settlementReportItems.add(new SettlementReportItem("", "", "")); settlementReportItem5s.add(new SettlementReportItem5("==============================================================", "", "", "", ""));
settlementReportItems.add(new SettlementReportItem("", cashDetailText, "")); settlementReportItem5s.add(new SettlementReportItem5(" ", " ", cashDetailText, " ", " "));
settlementReportItems.add(new SettlementReportItem(cashText, "", "")); settlementReportItem5s.add(new SettlementReportItem5(cashText, " ", String.valueOf(cashBean.getPayNum()), " ", "$" + df.format(cashBean.getPayAmount())));
//統計 //統計
settlementReportItems.add(new SettlementReportItem(headcountOrAverageConsumptionText, "", "")); settlementReportItem5s.add(new SettlementReportItem5(headcountOrAverageConsumptionText, " ", " ", " ", "$" + df.format(cashBean.getPayAmount())));
} }
if (voBean != null) {
List<SettlementReport.DataBean.AnalysisBean> analysisBeanList = datasBean.getAnalysis();
if (analysisBeanList != null && analysisBeanList.size() > 0) {
Map<String, SettlementReport.DataBean.AnalysisBean> analysisBeanMap = getAnalysisBeanMap(analysisBeanList);
/**分析統計*/ /**分析統計*/
settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("==============================================================", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("", "", analysisStatisticsText, "", ""));
//帳單金額總數 //帳單金額總數
if (analysisBeanMap.containsKey(totalbillAmountText)) { settlementReportItem5s.add(new SettlementReportItem5(totalbillAmountText, " ", " ", " ", "$" + df.format(voBean.getTotamount())));
settlementReportItem5s.add(new SettlementReportItem5(totalbillAmountText, "", "$" + analysisBeanMap.get(totalbillAmountText).getAmount(), "", ""));
}
//帳單數目 / 平均 //帳單數目 / 平均
if (analysisBeanMap.containsKey(numberBillsOrAverageText)) { String averagePrice = df.format(voBean.getPrices() / voBean.getNum());
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(totalbillAmountText); settlementReportItem5s.add(new SettlementReportItem5(numberBillsOrAverageText, " ", String.valueOf(voBean.getNum()), " ", "$" + averagePrice));
settlementReportItem5s.add(new SettlementReportItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), "$" + analysisBean.getAmount(), "", ""));
}
//人數 / 平均消費 //人數 / 平均消費
if (analysisBeanMap.containsKey(HeadcountAndAverageConsumptionText)) { String averageConsumption = df.format(voBean.getPrices() / voBean.getPerson());
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(HeadcountAndAverageConsumptionText); settlementReportItem5s.add(new SettlementReportItem5(headcountAndAverageConsumptionText, " ", String.valueOf(voBean.getPerson()), " ", "$" + averageConsumption));
settlementReportItem5s.add(new SettlementReportItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), "$" + analysisBean.getAmount(), "", ""));
}
/** 帳單統計*/ /** 帳單統計*/
settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("==============================================================", "", "", "", ""));
// settlementReportItem5s.add(new SettlementReportItem5("", "", cashDetailText, "", "")); settlementReportItem5s.add(new SettlementReportItem5("", "", "帳單統計", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("類別", "帳單", "金額", "平均", "金額%")); settlementReportItem5s.add(new SettlementReportItem5("類別", "帳單", "金額", "平均", "金額%"));
settlementReportItem5s.add(new SettlementReportItem5("---------------------------", "", "", "", "")); // settlementReportItem5s.add(new SettlementReportItem5("--------------------------------------------------------------------------------", "", "", "", ""));
//總計
String averagePrice2 = df.format(voBean.getTotamount() / voBean.getNum());
settlementReportItem5s.add(new SettlementReportItem5(totalText, String.valueOf(voBean.getNum()), "$" + df.format(voBean.getTotamount()), "$" + averagePrice2, " "));
}
List<SettlementReport.DataBean.AnalysisBean> analysisBeanList = datasBean.getAnalysis();
if (analysisBeanList != null && analysisBeanList.size() > 0) {
Map<String, SettlementReport.DataBean.AnalysisBean> analysisBeanMap = getAnalysisBeanMap(analysisBeanList);
/**賬單現況*/ /**賬單現況*/
settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", ""));
// settlementReportItem5s.add(new SettlementReportItem5("", "", cashDetailText, "", "")); settlementReportItem5s.add(new SettlementReportItem5("==============================================================", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("項目", "帳單", "人數", "金額", "")); settlementReportItem5s.add(new SettlementReportItem5("", "", "賬單現況", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("---------------------------", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("項目", "帳單", "人數", " ", "金額"));
// settlementReportItem5s.add(new SettlementReportItem5("--------------------------------------------------------------------------------", "", "", "", ""));
//未完成帳單 //未完成帳單
double item5Amount = 0.0;
int item5num = 0;
int item5PeopleNum = 0;
if (analysisBeanMap.containsKey(outstandingBillText)) { if (analysisBeanMap.containsKey(outstandingBillText)) {
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(outstandingBillText); SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(outstandingBillText);
settlementReportItem5s.add(new SettlementReportItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getNum()), "$" + analysisBean.getAmount(), "")); settlementReportItem5s.add(new SettlementReportItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getNum()), " ", "$" + df.format(analysisBean.getAmount())));
item5Amount += analysisBean.getAmount();
item5num += analysisBean.getNum();
item5PeopleNum += analysisBean.getNum();
} }
//已收款帳單 //已收款帳單
if (analysisBeanMap.containsKey(billsReceivedText)) { if (analysisBeanMap.containsKey(billsReceivedText)) {
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(billsReceivedText); SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(billsReceivedText);
settlementReportItem5s.add(new SettlementReportItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getNum()), "$" + analysisBean.getAmount(), "")); settlementReportItem5s.add(new SettlementReportItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getNum()), " ", "$" + df.format(analysisBean.getAmount())));
item5Amount += analysisBean.getAmount();
item5num += analysisBean.getNum();
item5PeopleNum += analysisBean.getNum();
} }
//總計
settlementReportItem5s.add(new SettlementReportItem5(totalText, String.valueOf(item5PeopleNum), String.valueOf(item5num), " ", "$" + df.format(item5Amount)));
/**本月累計營業額*/ /**本月累計營業額*/
if (analysisBeanMap.containsKey(cumulativeTurnoverMonthText)) {
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(cumulativeTurnoverMonthText);
String firstDayOfMonth = TimeUtil.getFirstDayOfMonth(TimeUtil.dateFormatYMD) + "00:00:00";
String currentDate = TimeUtil.getCurrentDate(TimeUtil.dateFormatYMDHMS);
settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5(byBusinessDateText, "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("==============================================================", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5(toBusinessDateText, "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5(cumulativeTurnoverMonthText, "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5(byBusinessDateText + firstDayOfMonth, "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5(toBusinessDateText + currentDate, "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5(netTurnoverText, " " + " ", " ", " ", "$" + df.format(analysisBean.getAmount())));
}
/**報表完結*/ /**報表完結*/
String memberName = GsaCloudApplication.getMemberName(this); String memberName = GsaCloudApplication.getMemberName(this);
String currentDate = TimeUtils.getCurrentDate(TimeUtils.dateFormatYMDHMS); String currentDate = TimeUtils.getCurrentDate(TimeUtils.dateFormatYMDHMS);
settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("==============================================================", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("報表完結", "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("報表完結", "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("讀取人員 " + memberName, "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5("讀取人員 " + memberName, "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5(currentDate + " v" + DeviceUtils.getVersionName(this), "", "", "", "")); settlementReportItem5s.add(new SettlementReportItem5(currentDate + " v" + DeviceUtils.getVersionName(this), "", "", "", ""));
settlementReportItem5s.add(new SettlementReportItem5("", "", "", "", ""));
} }
mPresenter.notifyReportItemAdapter(settlementReportItems);
mPresenter.notifyReportItem5Adapter(settlementReportItem5s); mPresenter.notifyReportItem5Adapter(settlementReportItem5s);
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_UP);
}
});
} }
private Map<String, SettlementReport.DataBean.AnalysisBean> getAnalysisBeanMap(List<SettlementReport.DataBean.AnalysisBean> analysisBeanList) { private Map<String, SettlementReport.DataBean.AnalysisBean> getAnalysisBeanMap(List<SettlementReport.DataBean.AnalysisBean> analysisBeanList) {
...@@ -340,8 +393,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -340,8 +393,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
public void setSettlementReportItemRecycleLayoutManager() { public void setSettlementReportItemRecycleLayoutManager() {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
rv_settlement_report_item.setLayoutManager(linearLayoutManager); // rv_settlement_report_item.setLayoutManager(linearLayoutManager);
rv_settlement_report_item.setItemAnimator(new DefaultItemAnimator()); // rv_settlement_report_item.setItemAnimator(new DefaultItemAnimator());
} }
public void setSettlementReportItem5RecycleLayoutManager() { public void setSettlementReportItem5RecycleLayoutManager() {
......
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter; package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.content.Context; import android.content.Context;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
...@@ -58,11 +59,40 @@ public class SettlementReportItem5Adapter extends DefaultAdapter<SettlementRepor ...@@ -58,11 +59,40 @@ public class SettlementReportItem5Adapter extends DefaultAdapter<SettlementRepor
@Override @Override
public void setData(SettlementReportItem5 reportItem, int position) { public void setData(SettlementReportItem5 reportItem, int position) {
if(!TextUtils.isEmpty(reportItem.getItem1())){
tv_items[0].setText(reportItem.getItem1()); tv_items[0].setText(reportItem.getItem1());
tv_items[0].setVisibility(View.VISIBLE);
}else {
tv_items[0].setVisibility(View.GONE);
}
if(!TextUtils.isEmpty(reportItem.getItem2())){
tv_items[1].setText(reportItem.getItem2()); tv_items[1].setText(reportItem.getItem2());
tv_items[1].setVisibility(View.VISIBLE);
}else {
tv_items[1].setVisibility(View.GONE);
}
if(!TextUtils.isEmpty(reportItem.getItem3())){
tv_items[2].setText(reportItem.getItem3()); tv_items[2].setText(reportItem.getItem3());
tv_items[2].setVisibility(View.VISIBLE);
}else {
tv_items[2].setVisibility(View.GONE);
}
if(!TextUtils.isEmpty(reportItem.getItem4())){
tv_items[3].setText(reportItem.getItem4()); tv_items[3].setText(reportItem.getItem4());
tv_items[3].setVisibility(View.VISIBLE);
}else {
tv_items[3].setVisibility(View.GONE);
}
if(!TextUtils.isEmpty(reportItem.getItem5())){
tv_items[4].setText(reportItem.getItem5()); tv_items[4].setText(reportItem.getItem5());
tv_items[4].setVisibility(View.VISIBLE);
}else {
tv_items[4].setVisibility(View.GONE);
}
} }
} }
} }
...@@ -4,29 +4,40 @@ ...@@ -4,29 +4,40 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height" />
<ScrollView <ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"> android:fillViewport="true"
android:layout_marginBottom="@dimen/dp_45"
android:background="@color/theme_white_color"
android:layout_marginTop="?attr/qmui_topbar_height">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:padding="@dimen/dp_10"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <TextView
android:id="@+id/tv_last_time"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_45" android:gravity="center"
android:layout_marginTop="?attr/qmui_topbar_height" android:paddingBottom="@dimen/dp_5"
android:background="@color/theme_white_color" android:text="上次清機時間:2020-3-1 21:59:18"
android:orientation="vertical"> android:textColor="@color/red"
android:textSize="@dimen/sp_16" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical">
android:padding="@dimen/dp_10">
<TextView <TextView
android:id="@+id/tv_restaurant_name" android:id="@+id/tv_restaurant_name"
...@@ -63,37 +74,27 @@ ...@@ -63,37 +74,27 @@
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/tv_last_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/dp_5"
android:text="上次清機時間:2020-3-1 21:59:18"
android:textColor="@color/red"
android:textSize="@dimen/sp_16" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_0_5" android:layout_height="@dimen/dp_0_5"
android:layout_marginTop="@dimen/dp_8" android:layout_marginTop="@dimen/dp_8"
android:background="@color/theme_grey_color" /> android:background="@color/theme_grey_color" />
<com.gingersoft.gsa.cloud.base.widget.NoScrollRecyclerView <!-- <com.gingersoft.gsa.cloud.base.widget.NoScrollRecyclerView-->
android:id="@+id/rv_settlement_report_item" <!-- android:id="@+id/rv_settlement_report_item"-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:divider="@null" <!-- android:divider="@null"-->
android:fadeScrollbars="false" /> <!-- android:fadeScrollbars="false" />-->
<com.gingersoft.gsa.cloud.base.widget.NoScrollRecyclerView <com.gingersoft.gsa.cloud.base.widget.NoScrollRecyclerView
android:id="@+id/rv_settlement_report_item2" android:id="@+id/rv_settlement_report_item2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:divider="@null" android:divider="@null"
android:paddingTop="@dimen/dp_8"
android:fadeScrollbars="false" /> android:fadeScrollbars="false" />
</LinearLayout> </LinearLayout>
</LinearLayout>
</ScrollView> </ScrollView>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton <com.qmuiteam.qmui.alpha.QMUIAlphaButton
...@@ -106,10 +107,4 @@ ...@@ -106,10 +107,4 @@
android:text="去清機" android:text="去清機"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_15" /> android:textSize="@dimen/sp_15" />
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height" />
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> </com.qmuiteam.qmui.widget.QMUIWindowInsetLayout>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cl_container" android:id="@+id/cl_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_25"> android:layout_height="wrap_content">
<TextView <TextView
android:id="@+id/tv_left" android:id="@+id/tv_left"
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="left" android:text="left"
android:textColor="@color/black" android:textColor="@color/black"
android:maxLines="1"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:layout_marginLeft="@dimen/dp_15"
app:layout_constraintBottom_toBottomOf="@+id/tv_center" app:layout_constraintBottom_toBottomOf="@+id/tv_center"
app:layout_constraintLeft_toLeftOf="@+id/cl_container" /> app:layout_constraintLeft_toLeftOf="@+id/cl_container" />
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
android:id="@+id/tv_center" android:id="@+id/tv_center"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_120"
android:text="center" android:text="center"
android:maxLines="1"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
...@@ -35,9 +35,9 @@ ...@@ -35,9 +35,9 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="right" android:text="right"
android:maxLines="1"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:layout_marginRight="@dimen/dp_15"
app:layout_constraintBottom_toBottomOf="@+id/tv_center" app:layout_constraintBottom_toBottomOf="@+id/tv_center"
app:layout_constraintRight_toRightOf="@+id/cl_container" /> app:layout_constraintRight_toRightOf="@+id/cl_container" />
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cl_container" android:id="@+id/cl_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_25" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
...@@ -11,8 +11,9 @@ ...@@ -11,8 +11,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="left"
android:text="item1" android:text="item1"
android:maxLines="1"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
...@@ -22,6 +23,7 @@ ...@@ -22,6 +23,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:maxLines="1"
android:text="item2" android:text="item2"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
...@@ -32,6 +34,7 @@ ...@@ -32,6 +34,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:maxLines="1"
android:text="item3" android:text="item3"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
...@@ -43,6 +46,7 @@ ...@@ -43,6 +46,7 @@
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:text="item4" android:text="item4"
android:maxLines="1"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
...@@ -52,6 +56,7 @@ ...@@ -52,6 +56,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:maxLines="1"
android:text="item5" android:text="item5"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
......
...@@ -75,11 +75,11 @@ public class PrintStatus { ...@@ -75,11 +75,11 @@ public class PrintStatus {
ArmsUtils.makeText(context, notCompleted); ArmsUtils.makeText(context, notCompleted);
break; break;
case -1005: //打印机缺纸 case -1005: //打印机缺纸
String noPaper = LanguageUtils.get_language_system(context, "printer.no.paper", "打印机缺纸"); String noPaper = LanguageUtils.get_language_system(context, "printer.no.paper", "打印機缺紙");
ArmsUtils.makeText(context, noPaper); ArmsUtils.makeText(context, noPaper);
break; break;
case -1008: //打印机过热 case -1008: //打印机过热
String printerOverheated = LanguageUtils.get_language_system(context, "printer.overheated", "打印机过热"); String printerOverheated = LanguageUtils.get_language_system(context, "printer.overheated", "打印機過熱");
ArmsUtils.makeText(context, printerOverheated); ArmsUtils.makeText(context, printerOverheated);
break; break;
case -1001: // 打印失败 case -1001: // 打印失败
......
...@@ -199,4 +199,15 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -199,4 +199,15 @@ public class GsaCloudApplication extends BaseApplication {
SPUtils.put(context, UserConstans.brandRestaurantInfos, brandRestaurantIds); SPUtils.put(context, UserConstans.brandRestaurantInfos, brandRestaurantIds);
} }
public static void clearMemberInfo() {
setLoginToken(mAppContext, "");
setMemberId(mAppContext, 0);
setMemberName(mAppContext, "");
setBrandId(mAppContext, 0);
setBrandName(mAppContext, "");
setRestaurantId(mAppContext, 0);
setRestaurantName(mAppContext, "");
setBrandRestaurantInfos(mAppContext, "");
}
} }
package com.gingersoft.gsa.cloud.base.utils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-03-12
* 修订历史:2020-03-12
* 描述:
*/
public class MemberInfoUtils {
}
package com.gingersoft.gsa.cloud.base.utils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-03-12
* 修订历史:2020-03-12
* 描述:
*/
public class RestaurantInfoUtils {
public static int getRestaurantSize(List<LoginBean.DataBean.UserBean.BrandsBean> brands) {
int size = 0;
for (int i = 0; i < brands.size(); i++) {
if (brands.get(i).getRestaurants() != null)
size += brands.get(i).getRestaurants().size();
}
return size;
}
public static LoginBean.DataBean.UserBean.BrandsBean getOnlyBrand(List<LoginBean.DataBean.UserBean.BrandsBean> brands) {
for (int i = 0; i < brands.size(); i++) {
if (brands.get(i).getRestaurants() != null) {
for (int j = 0; j < brands.get(i).getRestaurants().size(); j++) {
return brands.get(i);
}
}
}
return null;
}
public static LoginBean.DataBean.UserBean.BrandsBean.RestaurantsBean getOnlyRestaurant(List<LoginBean.DataBean.UserBean.BrandsBean> brands) {
for (int i = 0; i < brands.size(); i++) {
if (brands.get(i).getRestaurants() != null) {
for (int j = 0; j < brands.get(i).getRestaurants().size(); j++) {
return brands.get(i).getRestaurants().get(j);
}
}
}
return null;
}
public static LoginBean.DataBean.UserBean.BrandsBean getBrandByRestaurantId(List<LoginBean.DataBean.UserBean.BrandsBean> brands, int restaurantId) {
for (int i = 0; i < brands.size(); i++) {
if (brands.get(i).getRestaurants() != null) {
for (int j = 0; j < brands.get(i).getRestaurants().size(); j++) {
if (brands.get(i).getRestaurants().get(j).getRestaurantId() == restaurantId) {
return brands.get(i);
}
}
}
}
return null;
}
}
...@@ -46,6 +46,9 @@ import java.util.List; ...@@ -46,6 +46,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import okhttp3.FormBody;
import okhttp3.RequestBody;
public class AppCrashHandler implements UncaughtExceptionHandler { public class AppCrashHandler implements UncaughtExceptionHandler {
/** /**
* Debug Log tag * Debug Log tag
...@@ -83,7 +86,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler { ...@@ -83,7 +86,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
*/ */
private static final String CRASH_REPORTER_EXTENSION = ".cyposdebug"; private static final String CRASH_REPORTER_EXTENSION = ".cyposdebug";
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");// 用于格式化日期,作为日志文件名的一部分 private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");// 用于格式化日期,作为日志文件名的一部分
private Map<String, String> info = new HashMap<String, String>();// 用来存储设备信息和异常信息 private Map<String, String> info = new HashMap<String, String>();// 用来存储设备信息和异常信息
/** /**
...@@ -231,9 +234,14 @@ public class AppCrashHandler implements UncaughtExceptionHandler { ...@@ -231,9 +234,14 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
private void sendCrashReportsToServer() { private void sendCrashReportsToServer() {
File file = new File(FileUtils.ERRORLOG_PATH); File file = new File(FileUtils.ERRORLOG_PATH);
File[] files = file.listFiles(); File[] files = file.listFiles();
if (files != null) { if (files != null && files.length > 0) {
List<File> fileList = Arrays.asList(files); List<File> fileList = Arrays.asList(files);
OkHttp3Utils.sendFileMultipart("", file.getName(), fileList); int memberId = GsaCloudApplication.getMemberId(mContext);
RequestBody requestBody = new FormBody.Builder()
.add("type", "1")
.add("uuid", String.valueOf(memberId))
.build();
OkHttp3Utils.sendFileMultipart("", file.getName(), fileList, requestBody);
} }
} }
...@@ -274,6 +282,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler { ...@@ -274,6 +282,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
/** /**
* 保存错误信息到SP * 保存错误信息到SP
*
* @param ex * @param ex
* @return * @return
*/ */
...@@ -314,7 +323,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler { ...@@ -314,7 +323,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
long timetamp = System.currentTimeMillis(); long timetamp = System.currentTimeMillis();
String time = format.format(new Date()); String time = format.format(new Date());
String MemberName = GsaCloudApplication.getMemberName(mContext); String MemberName = GsaCloudApplication.getMemberName(mContext);
String fileName = "crash-" + MemberName + "-" + time + "-" + timetamp + "-" + info.get("versionName") + ".xml"; String fileName = "crash-" + MemberName + "-" + time + "-" + timetamp + "-" + DeviceUtils.getVersionName(mContext) + ".xml";
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//外部存储卡 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//外部存储卡
try { try {
File dir = new File(FileUtils.ERRORLOG_PATH); File dir = new File(FileUtils.ERRORLOG_PATH);
......
...@@ -122,7 +122,7 @@ public class OkHttp3Utils { ...@@ -122,7 +122,7 @@ public class OkHttp3Utils {
* @param file_key 上传文件的关键字 * @param file_key 上传文件的关键字
* @param files 文件 * @param files 文件
*/ */
public static Observable<String> sendFileMultipart(String reqUrl, String file_key, List<File> files) { public static Observable<String> sendFileMultipart(String reqUrl, String file_key, List<File> files, RequestBody body) {
getOkHttpClient(); getOkHttpClient();
return Observable.create(new ObservableOnSubscribe<String>() { return Observable.create(new ObservableOnSubscribe<String>() {
...@@ -136,6 +136,9 @@ public class OkHttp3Utils { ...@@ -136,6 +136,9 @@ public class OkHttp3Utils {
multipartBodyBuilder.addFormDataPart(file_key + i, files.get(i).getName(), RequestBody.create(MEDIA_TYPE_PNG, files.get(i))); multipartBodyBuilder.addFormDataPart(file_key + i, files.get(i).getName(), RequestBody.create(MEDIA_TYPE_PNG, files.get(i)));
} }
} }
if (body != null) {
multipartBodyBuilder.addPart(body);
}
//构建请求体 //构建请求体
RequestBody requestBody = multipartBodyBuilder.build(); RequestBody requestBody = multipartBodyBuilder.build();
......
/*
*
*/
package com.gingersoft.gsa.cloud.base.utils.time;
import android.annotation.SuppressLint;
import android.util.Log;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 描述:日期处理类.
*/
@SuppressWarnings("all")
public class TimeUtil {
/**
* one day millisecond count
*/
public static final long ONE_DAY_MILLISECONDS = 1000 * 3600 * 24;
public static final long ONE_HOUR_MILLISECONDS = 1000 * 3600;
public static final long ONE_MIN_MILLISECONDS = 1000 * 60;
/**
* 时间日期格式化到年月日时分秒.
*/
public static String dateFormatYMDHMS = "yyyy-MM-dd HH:mm:ss";
public static String dateFormatYMDHMS_f = "yyyyMMddHHmmss";
public static String dateFormatMDHM = "MM-dd HH:mm";
public static String dateFormat = "yyyy-MM-dd HH:mm";
/**
* 时间日期格式化到年月日.
*/
public static String dateFormatYMD = "yyyy-MM-dd";
/**
* 时间日期格式化到年月日时分.中文显示
*/
public static String dateFormatYMDHMofChinese = "yyyy年MM月dd日 HH:mm";
/**
* 时间日期格式化到年月日.中文显示
*/
public static String dateFormatYMDofChinese = "yyyy年MM月dd日";
/**
* 时间日期格式化到月日.中文显示
*/
public static String dateFormatMDofChinese = "MM月dd日";
/**
* 时间日期格式化到月.中文显示
*/
public static String dateFormatMofChinese = "MM月";
/**
* 时间日期格式化到年月.
*/
public static String dateFormatYM = "yyyy-MM";
/**
* 时间日期格式化到年月日时分.
*/
public static String dateFormatYMDHM = "yyyy-MM-dd HH:mm";
/**
* 时间日期格式化到月日.
*/
public static String dateFormatMD = "MM/dd";
public static String dateFormatM_D = "MM-dd";
public static String dateFormatM = "MM月";
public static String dateFormatD = "dd";
public static String dateFormatM2 = "MM";
public static String dateFormatMDHMofChinese = "MM月dd日HH时mm分";
public static String dateFormatHMofChinese = "HH时mm分";
/**
* 时分秒.
*/
public static String dateFormatHMS = "HH:mm:ss";
/**
* 时分.
*/
public static String dateFormatHM = "HH:mm";
/**
* 上午/下午时分
*/
public static String dateFormatAHM = "aHH:mm";
public static String dateFormatYMDE = "yyyy/MM/dd E";
public static String dateFormatYMD2 = "yyyy/MM/dd";
private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
@SuppressLint("SimpleDateFormat")
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
@SuppressLint("SimpleDateFormat")
private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
/**
* 时间戳转特定格式时间
*
* @param format
* @param timeStamp
* @return
*/
public static String StampToData(String format, long timeStamp) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date(timeStamp));
}
/***
* 将字符串转为时间戳
* @param time
* @param format
* @return
*/
public static String getTimeToStamp(String time, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA);
Date date = new Date();
try {
date = sdf.parse(time);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String tmptime = String.valueOf(date.getTime()).substring(0, 10);
return tmptime;
}
/***
* 将字符串转为时间戳
* @param time
* @param format
* @return Integer
*/
public static long getTimeToStamp2(String time, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA);
Date date = new Date();
try {
date = sdf.parse(time);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String tmptime = String.valueOf(date.getTime()).substring(0, 10);
return Long.parseLong(tmptime);
}
public static long getTimeToStamp3(String time, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Date date = null;
try {
date = simpleDateFormat.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
long ts = date.getTime();
return Long.parseLong(String.valueOf(ts));
}
/**
* 将毫秒转换成秒
*
* @param time
* @return
*/
public static int convertToSecond(Long time) {
Date date = new Date();
date.setTime(time);
return date.getSeconds();
}
/**
* 描述:String类型的日期时间转化为Date类型.
*
* @param strDate String形式的日期时间
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return Date Date类型日期时间
*/
public static Date getDateByFormat(String strDate, String format) {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
Date date = null;
try {
date = mSimpleDateFormat.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 描述:获取偏移之后的Date.
*
* @param date 日期时间
* @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时)
* @param offset 偏移(值大于0,表示+,值小于0,表示-)
* @return Date 偏移之后的日期时间
*/
public Date getDateByOffset(Date date, int calendarField, int offset) {
Calendar c = new GregorianCalendar();
try {
c.setTime(date);
c.add(calendarField, offset);
} catch (Exception e) {
e.printStackTrace();
}
return c.getTime();
}
/**
* 描述:获取指定日期时间的字符串(可偏移).
*
* @param strDate String形式的日期时间
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时)
* @param offset 偏移(值大于0,表示+,值小于0,表示-)
* @return String String类型的日期时间
*/
public static String getStringByOffset(String strDate, String format, int calendarField, int offset) {
String mDateTime = null;
try {
Calendar c = new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
c.setTime(mSimpleDateFormat.parse(strDate));
c.add(calendarField, offset);
mDateTime = mSimpleDateFormat.format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return mDateTime;
}
/**
* 描述:Date类型转化为String类型(可偏移).
*
* @param date the date
* @param format the format
* @param calendarField the calendar field
* @param offset the offset
* @return String String类型日期时间
*/
public static String getStringByOffset(Date date, String format, int calendarField, int offset) {
String strDate = null;
try {
Calendar c = new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
c.setTime(date);
c.add(calendarField, offset);
strDate = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/***
* from yyyy-MM-dd HH:mm:ss to MM-dd HH:mm
* @param before 之前的时间
* @param beforeformat 之前的时间格式
* @param afterformat 之后的时间格式
* @return
*/
public static String formatDate(String before, String beforeformat, String afterformat) {
String after;
try {
Date date = new SimpleDateFormat(beforeformat, Locale.getDefault()).parse(before);
after = new SimpleDateFormat(afterformat, Locale.getDefault()).format(date);
} catch (ParseException e) {
return before;
}
return after;
}
/**
* 描述:Date类型转化为String类型.
*
* @param date the date
* @param format the format
* @return String String类型日期时间
*/
public static String getStringByFormat(Date date, String format) {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
String strDate = null;
try {
strDate = mSimpleDateFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取指定日期时间的字符串,用于导出想要的格式.
*
* @param strDate String形式的日期时间,必须为yyyy-MM-dd HH:mm:ss格式
* @param format 输出格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return String 转换后的String类型的日期时间
*/
public static String getStringByFormat(String strDate, String format) {
String mDateTime = null;
try {
Calendar c = new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
c.setTime(mSimpleDateFormat.parse(strDate));
SimpleDateFormat mSimpleDateFormat2 = new SimpleDateFormat(format);
mDateTime = mSimpleDateFormat2.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return mDateTime;
}
/**
* 描述:获取milliseconds表示的日期时间的字符串.
*
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return String 日期时间字符串
*/
public static String getStringByFormat(long milliseconds, String format) {
String thisDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
thisDateTime = mSimpleDateFormat.format(milliseconds);
} catch (Exception e) {
e.printStackTrace();
}
return thisDateTime;
}
/**
* 描述:获取表示当前日期时间的字符串.
*
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return String String类型的当前日期时间
*/
public static String getCurrentDate(String format) {
String curDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
Calendar c = new GregorianCalendar();
curDateTime = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
/**
* 区分白天还是夜晚
*
* @param time
* @return
*/
public static boolean getDuringOrNight(String time) {
String before = TimeUtil.formatDate(time, "yyyy-MM-dd HH:mm:ss", "HH");
int k = Integer.parseInt(before);
if ((k >= 0 && k < 6) || (k >= 18 && k < 24)) {
return true;
} else {
return false;
}
}
//获取当前系统当天日期
public static String getCurrentDay() {
String curDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(dateFormat);
Calendar c = new GregorianCalendar();
c.add(Calendar.DAY_OF_MONTH, 0);
curDateTime = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统当天日期
public static String getCurrentDay2() {
String curDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(dateFormatYMDHMS);
Calendar c = new GregorianCalendar();
c.add(Calendar.DAY_OF_MONTH, 0);
curDateTime = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统前后第几天
public static String getNextDay(int i) {
String curDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(dateFormat);
Calendar c = new GregorianCalendar();
c.add(Calendar.DAY_OF_MONTH, i);
curDateTime = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统前后第几小时
public static String getNextHour(int i) {
String curDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(dateFormat);
Calendar c = new GregorianCalendar();
c.add(Calendar.HOUR_OF_DAY, i);
curDateTime = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
/**
* 描述:获取表示当前日期时间的字符串(可偏移).
*
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时)
* @param offset 偏移(值大于0,表示+,值小于0,表示-)
* @return String String类型的日期时间
*/
public static String getCurrentDateByOffset(String format, int calendarField, int offset) {
String mDateTime = null;
try {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
Calendar c = new GregorianCalendar();
c.add(calendarField, offset);
mDateTime = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return mDateTime;
}
/**
* 描述:计算两个日期所差的天数.
*
* @param date1 第一个时间的毫秒表示
* @param date2 第二个时间的毫秒表示
* @return int 所差的天数
*/
public static int getOffectDay(long date1, long date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(date2);
//先判断是否同年
int y1 = calendar1.get(Calendar.YEAR);
int y2 = calendar2.get(Calendar.YEAR);
int d1 = calendar1.get(Calendar.DAY_OF_YEAR);
int d2 = calendar2.get(Calendar.DAY_OF_YEAR);
int maxDays = 0;
int day = 0;
if (y1 - y2 > 0) {
maxDays = calendar2.getActualMaximum(Calendar.DAY_OF_YEAR);
day = d1 - d2 + maxDays;
} else if (y1 - y2 < 0) {
maxDays = calendar1.getActualMaximum(Calendar.DAY_OF_YEAR);
day = d1 - d2 - maxDays;
} else {
day = d1 - d2;
}
return day;
}
/**
* 描述:计算两个日期所差的小时数.
*
* @param date1 第一个时间的毫秒表示
* @param date2 第二个时间的毫秒表示
* @return int 所差的小时数
*/
public static int getOffectHour(long date1, long date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(date2);
int h1 = calendar1.get(Calendar.HOUR_OF_DAY);
int h2 = calendar2.get(Calendar.HOUR_OF_DAY);
int h = 0;
int day = getOffectDay(date1, date2);
h = h1 - h2 + day * 24;
return h;
}
/**
* 描述:计算两个日期所差的分钟数.
*
* @param date1 第一个时间的毫秒表示
* @param date2 第二个时间的毫秒表示
* @return int 所差的分钟数
*/
public static int getOffectMinutes(long date1, long date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(date2);
int m1 = calendar1.get(Calendar.MINUTE);
int m2 = calendar2.get(Calendar.MINUTE);
int h = getOffectHour(date1, date2);
int m = 0;
m = m1 - m2 + h * 60;
return m;
}
/**
* 描述:获取本周一.
*
* @param format the format
* @return String String类型日期时间
*/
public static String getFirstDayOfWeek(String format) {
return getDayOfWeek(format, Calendar.MONDAY);
}
/**
* 描述:获取本周日.
*
* @param format the format
* @return String String类型日期时间
*/
public static String getLastDayOfWeek(String format) {
return getDayOfWeek(format, Calendar.SUNDAY);
}
/**
* 描述:获取本周的某一天.
*
* @param format the format
* @param calendarField the calendar field
* @return String String类型日期时间
*/
private static String getDayOfWeek(String format, int calendarField) {
String strDate = null;
try {
Calendar c = new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
int week = c.get(Calendar.DAY_OF_WEEK);
if (week == calendarField) {
strDate = mSimpleDateFormat.format(c.getTime());
} else {
int offectDay = calendarField - week;
if (calendarField == Calendar.SUNDAY) {
offectDay = 7 - Math.abs(offectDay);
}
c.add(Calendar.DATE, offectDay);
strDate = mSimpleDateFormat.format(c.getTime());
}
} catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取本月第一天.
*
* @param format the format
* @return String String类型日期时间
*/
public static String getFirstDayOfMonth(String format) {
String strDate = null;
try {
Calendar c = new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
//当前月的第一天
c.set(GregorianCalendar.DAY_OF_MONTH, 1);
strDate = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取本月最后一天.
*
* @param format the format
* @return String String类型日期时间
*/
public static String getLastDayOfMonth(String format) {
String strDate = null;
try {
Calendar c = new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
// 当前月的最后一天
c.set(Calendar.DATE, 1);
c.roll(Calendar.DATE, -1);
strDate = mSimpleDateFormat.format(c.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取表示当前日期的0点时间毫秒数.
*
* @return the first time of day
*/
public static long getFirstTimeOfDay() {
Date date = null;
try {
String currentDate = getCurrentDate(dateFormatYMD);
date = getDateByFormat(currentDate + " 00:00:00", dateFormatYMDHMS);
return date.getTime();
} catch (Exception e) {
}
return -1;
}
/**
* 描述:获取表示当前日期24点时间毫秒数.
*
* @return the last time of day
*/
public static long getLastTimeOfDay() {
Date date = null;
try {
String currentDate = getCurrentDate(dateFormatYMD);
date = getDateByFormat(currentDate + " 24:00:00", dateFormatYMDHMS);
return date.getTime();
} catch (Exception e) {
}
return -1;
}
/**
* 描述:判断是否是闰年()
* <p>(year能被4整除 并且 不能被100整除) 或者 year能被400整除,则该年为闰年.
*
* @param year 年代(如2012)
* @return boolean 是否为闰年
*/
public static boolean isLeapYear(int year) {
if ((year % 4 == 0 && year % 400 != 0) || year % 400 == 0) {
return true;
} else {
return false;
}
}
/**
* 描述:根据时间返回几天前或几分钟的描述.
*
* @param strDate the str date
* @return the string
*/
// public static String formatDateStr2Desc(Context context, String strDate, String outFormat) {
//
// DateFormat df = new SimpleDateFormat(dateFormatYMDHM);
// Calendar c1 = Calendar.getInstance();
// Calendar c2 = Calendar.getInstance();
// try {
// c2.setTime(df.parse(strDate));
// c1.setTime(new Date());
// int d = getOffectDay(c1.getTimeInMillis(), c2.getTimeInMillis());
// if (d == 0) {
// int h = getOffectHour(c1.getTimeInMillis(), c2.getTimeInMillis());
// if (h > 0) {
// return h + context.getString(R.string.an_hour_ago);
// } else if (h < 0) {
// return Math.abs(h) + context.getString(R.string.after_hours);
// } else if (h == 0) {
// int m = getOffectMinutes(c1.getTimeInMillis(), c2.getTimeInMillis());
// if (m > 0) {
// return m + context.getString(R.string.minutes_ago);
// } else if (m < 0) {
// return Math.abs(m) + context.getString(R.string.minutes_later);
// } else {
// return context.getString(R.string.just);
// }
// }
// } else if (d > 0) {
// if (d == 1) {
// return context.getString(R.string.yesterday);
// } else if (d == 2) {
// return context.getString(R.string.day_before_yesterday);
// }
// } else if (d < 0) {
// if (d == -1) {
// return context.getString(R.string.tomorrow);
// } else if (d == -2) {
// return context.getString(R.string.acquired);
// }
// return Math.abs(d) + context.getString(R.string.days_later);
// }
//
// String out = getStringByFormat(strDate, outFormat);
// if (!TextUtils.isEmpty(out)) {
// return out;
// }
// } catch (Exception e) {
// }
// return strDate;
// }
/**
* 取指定日期为星期几
*
* @param strDate 指定日期
* @param inFormat 指定日期格式
* @return String 星期几
*/
public static String getWeekNumber(String strDate, String inFormat) {
String week = "星期日";
Calendar calendar = new GregorianCalendar();
DateFormat df = new SimpleDateFormat(inFormat);
try {
calendar.setTime(df.parse(strDate));
} catch (Exception e) {
return "錯誤";
}
int intTemp = calendar.get(Calendar.DAY_OF_WEEK) - 1;
switch (intTemp) {
case 0:
week = "星期日日";
break;
case 1:
week = "星期一";
break;
case 2:
week = "星期二";
break;
case 3:
week = "星期三";
break;
case 4:
week = "星期四";
break;
case 5:
week = "星期五";
break;
case 6:
week = "星期六";
break;
}
return week;
}
/**
* 将字符串转位日期类型
*
* @param sdate
* @return
*/
private static Date toDate(String sdate) {
try {
return dateFormater.get().parse(sdate);
} catch (ParseException e) {
return null;
}
}
/**
* 以友好的方式显示时间
*
* @param ms
* @return
*/
public static String getfriendlyTime(String sdate) {
if (sdate == null)
return "";
Date time = toDate(sdate);
// Date time = new Date(ms);
if (time == null) {
return "Unknown";
}
String ftime = "";
Calendar cal = Calendar.getInstance();
// 判断是否是同一天
String curDate = dateFormater2.get().format(cal.getTime());
String paramDate = dateFormater2.get().format(time);
LogUtil.d("getfriendlyTime: " + paramDate);
if (curDate.equals(paramDate)) {
int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
if (hour == 0) {
if (((cal.getTimeInMillis() - time.getTime()) / 60000) < 1) {
ftime = "剛剛";
} else {
ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000, 1) + "分鐘前";
}
} else {
ftime = hour + "小時前";
}
return ftime;
}
long lt = time.getTime() / 86400000;
long ct = cal.getTimeInMillis() / 86400000;
int days = (int) (ct - lt);
if (days == 0) {
int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
if (hour == 0)
ftime = Math.max(
(cal.getTimeInMillis() - time.getTime()) / 60000, 1)
+ "分鐘前";
else
ftime = hour + "小時前";
} else if (days == 1) {
ftime = "昨天";
} else if (days == 2) {
ftime = "前天";
} else if (days > 2 && days <= 10) {
ftime = days + "天前";
} else if (days > 10) {
ftime = dateFormater2.get().format(time);
}
return ftime;
}
/**
* 距离当前多少个小时
*
* @param dateStr
* @return
*/
@SuppressLint("SimpleDateFormat")
public static int getExpiredHour(String dateStr) {
int ret = -1;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date;
try {
date = sdf.parse(dateStr);
Date dateNow = new Date();
long times = date.getTime() - dateNow.getTime();
if (times > 0) {
ret = ((int) (times / ONE_HOUR_MILLISECONDS));
} else {
ret = -1;
}
} catch (ParseException e) {
e.printStackTrace();
}
return ret;
}
/**
* 过了多少个小时
*
* @param dateStr
* @return
*/
@SuppressLint("SimpleDateFormat")
public static int getExpiredHour2(String dateStr) {
int ret = -1;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date sendDate;
try {
sendDate = sdf.parse(dateStr);
Date dateNow = new Date(System.currentTimeMillis());
Log.e("JPush", "date=" + sendDate);
long times = dateNow.getTime() - sendDate.getTime();
Log.e("JPush", "date.getTime()=" + sendDate.getTime());
if (times > 0) {
ret = ((int) (times / ONE_HOUR_MILLISECONDS));
int sdqf = (int) Math.floor(times / ONE_HOUR_MILLISECONDS);
} else {
ret = -1;
}
} catch (ParseException e) {
e.printStackTrace();
}
Log.e("JPush", "ret=" + ret);
return ret;
}
/**
* 判断给定字符串时间是否为今日
*
* @param sdate
* @return boolean
*/
public static boolean isToday(String sdate) {
boolean b = false;
Date time = toDate(sdate);
Date today = new Date();
if (time != null) {
String nowDate = dateFormater2.get().format(today);
String timeDate = dateFormater2.get().format(time);
if (nowDate.equals(timeDate)) {
b = true;
}
}
return b;
}
/**
* 判断给定字符串时间是否为今日
*
* @param sdate
* @return boolean
*/
public static boolean isToday(long sdate) {
boolean b = false;
Date time = new Date(sdate);
Date today = new Date();
if (time != null) {
String nowDate = dateFormater2.get().format(today);
String timeDate = dateFormater2.get().format(time);
if (nowDate.equals(timeDate)) {
b = true;
}
}
return b;
}
/**
* 根据用户生日计算年龄
*/
public static int getAgeByBirthday(Date birthday) {
Calendar cal = Calendar.getInstance();
if (cal.before(birthday)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthday);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH) + 1;
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
LogUtil.d("age: " + age);
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
// monthNow==monthBirth
if (dayOfMonthNow < dayOfMonthBirth) {
age--;
}
} else {
// monthNow>monthBirth
age--;
}
}
return age;
}
/**
* 友好显示时间差
*
* @param diff 毫秒
* @return
*/
public static String getFriendTimeOffer(long diff) {
int day = (int) (diff / (24 * 60 * 60 * 1000));
if (day > 0)
return day + "天";
int time = (int) (diff / (60 * 60 * 1000));
if (time > 0)
return time + "小時";
int min = (int) (diff / (60 * 1000));
if (min > 0)
return min + "分鐘";
int sec = (int) diff / 1000;
if (sec > 0)
return sec + "秒";
return "1秒";
}
/**
* 友好的时间间隔
*
* @param duration 秒
* @return
*/
public static String getFriendlyDuration(long duration) {
String str = "";
long tmpDuration = duration;
str += (tmpDuration / 60 > 10 ? tmpDuration / 60 : "0" + tmpDuration / 60) + ":";
tmpDuration %= 60;
str += (tmpDuration / 1 >= 10 ? tmpDuration / 1 : "0" + tmpDuration / 1);
tmpDuration %= 1;
return str;
}
/**
* 友好的时间间隔2
*
* @param duration 秒
* @return
*/
public static String getFriendlyDuration2(long duration) {
String str = "";
long tmpDuration = duration;
str += (tmpDuration / 60 > 0 ? tmpDuration / 60 + "'" : "");
tmpDuration %= 60;
str += (tmpDuration / 1 >= 10 ? tmpDuration / 1 + "''" : "0" + tmpDuration / 1 + "''");
tmpDuration %= 1;
return str;
}
public static String getFriendlyMusicDuration(long duration) {
String str = "-";
int tmpDuration = (int) (duration / 1000);//秒
str += (tmpDuration / 3600 > 10 ? tmpDuration / 3600 : "0" + tmpDuration / 3600) + ":";
tmpDuration %= 3600;
str += (tmpDuration / 60 > 10 ? tmpDuration / 60 : "0" + tmpDuration / 60) + ":";
tmpDuration %= 60;
str += (tmpDuration / 1 >= 10 ? tmpDuration / 1 : "0" + tmpDuration / 1);
tmpDuration %= 1;
return str;
}
/**
* 通过日期来确定星座
*
* @param mouth
* @param day
* @return
*/
public static String getStarSeat(int mouth, int day) {
String starSeat = null;
if ((mouth == 3 && day >= 21) || (mouth == 4 && day <= 19)) {
starSeat = "白羊座";
} else if ((mouth == 4 && day >= 20) || (mouth == 5 && day <= 20)) {
starSeat = "金牛座";
} else if ((mouth == 5 && day >= 21) || (mouth == 6 && day <= 21)) {
starSeat = "雙子座";
} else if ((mouth == 6 && day >= 22) || (mouth == 7 && day <= 22)) {
starSeat = "巨蟹座";
} else if ((mouth == 7 && day >= 23) || (mouth == 8 && day <= 22)) {
starSeat = "獅子座";
} else if ((mouth == 8 && day >= 23) || (mouth == 9 && day <= 22)) {
starSeat = "處女座";
} else if ((mouth == 9 && day >= 23) || (mouth == 10 && day <= 23)) {
starSeat = "天秤座";
} else if ((mouth == 10 && day >= 24) || (mouth == 11 && day <= 22)) {
starSeat = "天蝎座";
} else if ((mouth == 11 && day >= 23) || (mouth == 12 && day <= 21)) {
starSeat = "射手座";
} else if ((mouth == 12 && day >= 22) || (mouth == 1 && day <= 19)) {
starSeat = "摩羯座";
} else if ((mouth == 1 && day >= 20) || (mouth == 2 && day <= 18)) {
starSeat = "水平座";
} else {
starSeat = "雙魚座";
}
return starSeat;
}
/**
* 返回聊天时间
*
* @return
*/
public static String getChatTimeForShow(long time) {
if (TimeUtil.isToday(time)) {
return TimeUtil.getStringByFormat(time, TimeUtil.dateFormatHMofChinese);
} else {
return TimeUtil.getStringByFormat(time, TimeUtil.dateFormatMDHMofChinese);
}
}
/**
* 获取指定时间的毫秒值
*/
public static long getDatelongMills(String fomat, String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat(fomat);
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
long longDate = date.getTime();
return longDate;
}
/**
* 两个日期比较
*
* @param DATE1
* @param DATE2
* @return
*/
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() - dt2.getTime() > 0) {//date1>date2
return 1;
} else {
return -1;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
/**
* 格式化时间
*
* @param hour 小时
* @param minute 分钟
* @return 格式化后的时间:[xx:xx]
*/
public static String formatTime(int hour, int minute) {
return addZero(hour) + ":" + addZero(minute);
}
/**
* 时间补零
*
* @param time 需要补零的时间
* @return 补零后的时间
*/
public static String addZero(int time) {
if (String.valueOf(time).length() == 1) {
return "0" + time;
}
return String.valueOf(time);
}
}
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<string name="currency_unit">$</string> <string name="currency_unit">$</string>
<string name="Key_0">0</string> <string name="Key_0">0</string>
<string name="Key_00">00</string>
<string name="Key_1">1</string> <string name="Key_1">1</string>
<string name="Key_2">2</string> <string name="Key_2">2</string>
<string name="Key_3">3</string> <string name="Key_3">3</string>
......
...@@ -6,9 +6,10 @@ ...@@ -6,9 +6,10 @@
android:networkSecurityConfig="@xml/network_android"> android:networkSecurityConfig="@xml/network_android">
<activity android:name=".mvp.ui.activity.TableActivity"/> <activity android:name=".mvp.ui.activity.TableActivity"/>
<activity android:name=".mvp.ui.activity.MealStandActivity"/> <activity android:name=".mvp.ui.activity.MealStandActivity"/>
<activity android:name=".mvp.ui.activity.OrderPayActivity"/> <activity android:name=".mvp.ui.activity.OrderPayActivity" />
<activity android:name=".mvp.ui.activity.OrderContentActivity" /> <activity android:name=".mvp.ui.activity.OrderContentActivity" />
<activity android:name=".mvp.ui.activity.OrderCenterActivity" />
<activity android:name=".mvp.ui.activity.OrderDetailActivity" />
<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" />
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme.Base"> android:theme="@style/AppTheme.Base">
<activity android:name=".mvp.ui.activity.OrderDetailActivity"/>
<activity android:name=".mvp.ui.activity.OrderCenterActivity" />
<activity android:name=".mvp.ui.activity.TableActivity"> <activity android:name=".mvp.ui.activity.TableActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
...@@ -23,7 +24,6 @@ ...@@ -23,7 +24,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" />
...@@ -31,12 +31,12 @@ ...@@ -31,12 +31,12 @@
android:name="design_height_in_dp" android:name="design_height_in_dp"
android:value="540" /> android:value="540" />
</application> </application>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest> </manifest>
\ No newline at end of file
...@@ -4,6 +4,7 @@ import com.billy.cc.core.component.CC; ...@@ -4,6 +4,7 @@ import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderCenterActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
...@@ -35,6 +36,9 @@ public class ComponentTable implements IComponent { ...@@ -35,6 +36,9 @@ public class ComponentTable implements IComponent {
case "showOrderPayActivity": case "showOrderPayActivity":
openOrderPayActivity(cc); openOrderPayActivity(cc);
break; break;
case "showOrderCenterActivity":
openOrderCenterActivity(cc);
break;
case "getLifecycleFragment": case "getLifecycleFragment":
//demo for provide fragment object to other component //demo for provide fragment object to other component
getLifecycleFragment(cc); getLifecycleFragment(cc);
...@@ -84,4 +88,9 @@ public class ComponentTable implements IComponent { ...@@ -84,4 +88,9 @@ public class ComponentTable implements IComponent {
CCUtil.navigateTo(cc, OrderPayActivity.class); CCUtil.navigateTo(cc, OrderPayActivity.class);
CC.sendCCResult(cc.getCallId(), CCResult.success()); CC.sendCCResult(cc.getCallId(), CCResult.success());
} }
private void openOrderCenterActivity(CC cc) {
CCUtil.navigateTo(cc, OrderCenterActivity.class);
CC.sendCCResult(cc.getCallId(), CCResult.success());
}
} }
package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.AllOrderModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllOrderFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = AllOrderModule.class, dependencies = AppComponent.class)
public interface AllOrderComponent {
void inject(AllOrderFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
AllOrderComponent.Builder view(AllOrderContract.View view);
AllOrderComponent.Builder appComponent(AppComponent appComponent);
AllOrderComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.OrderCenterModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderCenterActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = OrderCenterModule.class, dependencies = AppComponent.class)
public interface OrderCenterComponent {
void inject(OrderCenterActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
OrderCenterComponent.Builder view(OrderCenterContract.View view);
OrderCenterComponent.Builder appComponent(AppComponent appComponent);
OrderCenterComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.OrderDetailModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderDetailActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = OrderDetailModule.class, dependencies = AppComponent.class)
public interface OrderDetailComponent {
void inject(OrderDetailActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
OrderDetailComponent.Builder view(OrderDetailContract.View view);
OrderDetailComponent.Builder appComponent(AppComponent appComponent);
OrderDetailComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.model.AllOrderModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class AllOrderModule {
@Binds
abstract AllOrderContract.Model bindAllOrderModel(AllOrderModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
import com.gingersoft.gsa.cloud.table.mvp.model.OrderCenterModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class OrderCenterModule {
@Binds
abstract OrderCenterContract.Model bindOrderCenterModel(OrderCenterModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import com.gingersoft.gsa.cloud.table.mvp.model.OrderDetailModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class OrderDetailModule {
@Binds
abstract OrderDetailContract.Model bindOrderDetailModel(OrderDetailModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface AllOrderContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface OrderCenterContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
...@@ -51,6 +51,8 @@ public interface OrderContentContract { ...@@ -51,6 +51,8 @@ public interface OrderContentContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends BaseOrderContract.Model { interface Model extends BaseOrderContract.Model {
Observable<BaseRespose> loadOrder(int orderId);
// Observable<BaseResult> createOrder(RequestBody requestBody); // Observable<BaseResult> createOrder(RequestBody requestBody);
// //
// Observable<BaseResult> addFood(RequestBody requestBody); // Observable<BaseResult> addFood(RequestBody requestBody);
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface OrderDetailContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class AllOrderModel extends BaseModel implements AllOrderContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public AllOrderModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.ActivityScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class OrderCenterModel extends BaseModel implements OrderCenterContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public OrderCenterModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
...@@ -50,6 +50,12 @@ public class OrderContentModel extends BaseModel implements OrderContentContract ...@@ -50,6 +50,12 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
} }
@Override @Override
public Observable<BaseRespose> loadOrder(int orderId) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.loadOrder(orderId);
}
@Override
public Observable<BaseResult> createOrder(RequestBody requestBody) { public Observable<BaseResult> createOrder(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class) return mRepositoryManager.obtainRetrofitService(MealService.class)
.createOrder(requestBody); .createOrder(requestBody);
......
package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.ActivityScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class OrderDetailModel extends BaseModel implements OrderDetailContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public OrderDetailModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, AllOrderContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public AllOrderPresenter(AllOrderContract.Model model, AllOrderContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
...@@ -410,7 +410,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -410,7 +410,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
.setActionName("printActivity") .setActionName("printActivity")
.addParam("type", 3) .addParam("type", 3)
.build() .build()
.callAsync((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
// if (result.isSuccess()) { // if (result.isSuccess()) {
//打印成功 //打印成功
if (initTable) { if (initTable) {
...@@ -429,7 +429,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -429,7 +429,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// .addParam("NewFoods", newFoods) // .addParam("NewFoods", newFoods)
// .addParam("type", 0) // .addParam("type", 0)
// .build() // .build()
// .callAsync((cc, result) -> { // .callAsyncCallbackOnMainThread((cc, result) -> {
// if (result.isSuccess()) { // if (result.isSuccess()) {
// //打印成功 // //打印成功
// mRootView.killMyself(); // mRootView.killMyself();
......
package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Model, OrderCenterContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public OrderCenterPresenter(OrderCenterContract.Model model, OrderCenterContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
...@@ -8,6 +8,7 @@ import android.view.View; ...@@ -8,6 +8,7 @@ import android.view.View;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil; import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
...@@ -17,6 +18,7 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract; ...@@ -17,6 +18,7 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose; import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity;
...@@ -119,7 +121,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -119,7 +121,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
showTipDialog(IActivity, "沒有食品,不能印單"); showTipDialog(IActivity, "沒有食品,不能印單");
return; return;
} }
if (hasNesOrderFoods()) {
//有未送單食品先送單
sendOrder(true); sendOrder(true);
} else {
printOrder(OpenTableManage.getDefault().getTableBean().getId(), false);
}
break; break;
case 2: case 2:
//結賬 //結賬
...@@ -156,7 +163,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -156,7 +163,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
setOrderId((Double) info.getData()); setOrderId((Double) info.getData());
} }
if (isPrint) { if (isPrint) {
printOrder(OpenTableManage.getDefault().getTableBean().getId()); printOrder(OpenTableManage.getDefault().getTableBean().getId(), true);
} else { } else {
mRootView.sendSuccess(); mRootView.sendSuccess();
mRootView.showMessage("送單成功"); mRootView.showMessage("送單成功");
...@@ -166,7 +173,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -166,7 +173,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
} }
} else { } else {
if (isPrint) { if (isPrint) {
printOrder(OpenTableManage.getDefault().getTableBean().getId()); printOrder(OpenTableManage.getDefault().getTableBean().getId(), true);
} else { } else {
mRootView.showMessage("送單失敗"); mRootView.showMessage("送單失敗");
} }
...@@ -195,14 +202,14 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -195,14 +202,14 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
public void onNext(@NonNull BaseResult info) { public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
if (isPrint) { if (isPrint) {
printOrder(OpenTableManage.getDefault().getTableBean().getId()); printOrder(OpenTableManage.getDefault().getTableBean().getId(), true);
} else { } else {
mRootView.showMessage("送單成功"); mRootView.showMessage("送單成功");
printSendOrder(foodLists); printSendOrder(foodLists);
} }
} else { } else {
if (isPrint) { if (isPrint) {
printOrder(OpenTableManage.getDefault().getTableBean().getId()); printOrder(OpenTableManage.getDefault().getTableBean().getId(), true);
} else { } else {
//TODO 未新增食品點擊送單 後台不讓過直接提示即可,不調用打印 //TODO 未新增食品點擊送單 後台不讓過直接提示即可,不調用打印
if (!hasNesOrderFoods()) { if (!hasNesOrderFoods()) {
...@@ -227,7 +234,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -227,7 +234,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.setActionName("printActivity") .setActionName("printActivity")
.addParam("type", 3) .addParam("type", 3)
.build() .build()
.callAsync((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
// if (result.isSuccess()) { // if (result.isSuccess()) {
// //打印成功 // //打印成功
...@@ -243,7 +250,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -243,7 +250,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
// .addParam("NewFoods", newFoods) // .addParam("NewFoods", newFoods)
// .addParam("type", 0) // .addParam("type", 0)
// .build() // .build()
// .callAsync((cc, result) -> { // .callAsyncCallbackOnMainThread((cc, result) -> {
// if (result.isSuccess()) { // if (result.isSuccess()) {
// //打印成功 // //打印成功
// mRootView.killMyself(); // mRootView.killMyself();
...@@ -251,11 +258,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -251,11 +258,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
// }); // });
} }
public void printOrder(int tableId) { public void printOrder(int tableId, boolean isSend) {
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("tableId", tableId + "") .add("tableId", tableId + "")
.build(); .build();
mModel.printOrder(requestBody) mModel.printOrder(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null)) .doOnSubscribe(disposable -> mRootView.showLoading(null))
...@@ -272,7 +278,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -272,7 +278,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.addParam("type", 1)//印單 .addParam("type", 1)//印單
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsync((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
if (result.isSuccess()) { if (result.isSuccess()) {
//打印成功 //打印成功
...@@ -286,6 +292,41 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -286,6 +292,41 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//打印 //打印
} else { } else {
mRootView.showMessage("印單失敗!"); mRootView.showMessage("印單失敗!");
if (isSend) {
//印單失敗但提交新食品成功,更新一遍訂單數據
loadOrder(MyOrderManage.getInstance().getOrderId());
}
}
}
});
}
public void loadOrder(int orderId) {
mModel.loadOrder(orderId)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseRespose>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseRespose info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null && info.getData().getOrderDetails() != null) {
OpenTableManage.getDefault().setPeopleNumber(info.getData().getPerson());
//緩存訂單信息
MyOrderManage.getInstance().setOrderBean(new OrderBean(info.getData()));
//緩存食品信息
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails()));
orderFoodList.clear();
orderFoodList.addAll(orderDetailList);
}
mSelectMealAdapter.notifyDataSetChanged();
mSelectMealAdapter.setIndex();
} else {
} }
} }
}); });
......
package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Model, OrderDetailContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public OrderDetailPresenter(OrderDetailContract.Model model, OrderDetailContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
...@@ -246,6 +246,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -246,6 +246,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
TableBean.DataBean openTableBean = getTableById(tableId); TableBean.DataBean openTableBean = getTableById(tableId);
OpenTableManage.getDefault().setTableBean(openTableBean); OpenTableManage.getDefault().setTableBean(openTableBean);
OpenTableManage.getDefault().setPeopleNumber(0);
OrderBean orderBean = respose.getData(); OrderBean orderBean = respose.getData();
if (orderBean != null && respose.getData().getOrderDetails() != null) { if (orderBean != null && respose.getData().getOrderDetails() != null) {
...@@ -302,13 +304,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -302,13 +304,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
mRootView.showMessage("此檯使用中."); mRootView.showMessage("此檯使用中.");
return; return;
} }
if (tableBean.getStatus() == 2 || tableBean.getStatus() == 3) {
mRootView.showMessage(tableBean.getTableName() + "檯已開檯不可轉檯");
return;
}
targetTableName = tableBean.getTableName(); targetTableName = tableBean.getTableName();
targetTableId = tableBean.getId(); targetTableId = tableBean.getId();
if (tableBean.getStatus() == 2 || tableBean.getStatus() == 3) {
mRootView.setOperatContentText("由: " + originalTableName + " 合併 " + targetTableName + " 號檯");
} else {
mRootView.setOperatContentText("由: " + originalTableName + " 轉到 " + targetTableName + " 號檯"); mRootView.setOperatContentText("由: " + originalTableName + " 轉到 " + targetTableName + " 號檯");
}
showOperatTipDialog(tableBean); showOperatTipDialog(tableBean);
} }
} else { } else {
...@@ -318,7 +320,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -318,7 +320,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}); });
} }
public void turnTable(int originalTableId, int targetTableId) { public void turnTable(int originalTableId, int targetTableId, boolean isMergeTable) {
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("id", String.valueOf(originalTableId)) .add("id", String.valueOf(originalTableId))
...@@ -337,7 +339,11 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -337,7 +339,11 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
@Override @Override
public void onNext(@NonNull BaseRespose respose) { public void onNext(@NonNull BaseRespose respose) {
if (respose.isSuccess()) { if (respose.isSuccess()) {
if (isMergeTable) {
mRootView.showMessage("合併成功");
} else {
mRootView.showMessage("轉檯成功"); mRootView.showMessage("轉檯成功");
}
mRootView.canceOperat(); mRootView.canceOperat();
//立即獲取餐檯數據 //立即獲取餐檯數據
getTables(false); getTables(false);
...@@ -439,6 +445,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -439,6 +445,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
public void showOperatTipDialog(TableBean.DataBean dataBean) { public void showOperatTipDialog(TableBean.DataBean dataBean) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(IActivity); QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(IActivity);
dialogBuilder.setTitle("溫馨提示"); dialogBuilder.setTitle("溫馨提示");
//是否合併檯
boolean isMergeTable = false;
switch (currentChooseOperatType) { switch (currentChooseOperatType) {
case TableOperatTypeConstant.splite_table_1: case TableOperatTypeConstant.splite_table_1:
...@@ -450,7 +458,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -450,7 +458,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
dialogBuilder.setMessage("是否確認重置" + dataBean.getTableName() + "號檯?"); dialogBuilder.setMessage("是否確認重置" + dataBean.getTableName() + "號檯?");
break; break;
case TableOperatTypeConstant.move_table_4: case TableOperatTypeConstant.move_table_4:
String message = "是否由%s號檯轉到%s號檯"; String message;
if (dataBean.getStatus() == 2 || dataBean.getStatus() == 3) {
message = "是否由%s號檯合併到%s號檯";
isMergeTable = true;
} else {
message = "是否由%s號檯轉到%s號檯";
}
dialogBuilder.setMessage(String.format(message, originalTableName, targetTableName)); dialogBuilder.setMessage(String.format(message, originalTableName, targetTableName));
break; break;
case TableOperatTypeConstant.skyorder_mode_5: case TableOperatTypeConstant.skyorder_mode_5:
...@@ -463,6 +477,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -463,6 +477,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
dialog.dismiss(); dialog.dismiss();
} }
}); });
boolean finalIsMergeTable = isMergeTable;
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, new QMUIDialogAction.ActionListener() { dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, new QMUIDialogAction.ActionListener() {
@Override @Override
public void onClick(QMUIDialog dialog, int index) { public void onClick(QMUIDialog dialog, int index) {
...@@ -478,7 +493,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -478,7 +493,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
initTable(dataBean.getId(), true); initTable(dataBean.getId(), true);
break; break;
case TableOperatTypeConstant.move_table_4: case TableOperatTypeConstant.move_table_4:
turnTable(originalTableId, targetTableId); turnTable(originalTableId, targetTableId, finalIsMergeTable);
break; break;
case TableOperatTypeConstant.skyorder_mode_5: case TableOperatTypeConstant.skyorder_mode_5:
......
...@@ -909,7 +909,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -909,7 +909,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(@NonNull String message) {
checkNotNull(message); checkNotNull(message);
ArmsUtils.makeText(this, message); ArmsUtils.makeText(MealStandActivity.this, message);
} }
@Override @Override
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.qmui.arch.QMUIFragment;
import com.gingersoft.gsa.cloud.base.qmui.arch.QMUIFragmentPagerAdapter;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllOrderFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.StateTableFragment;
import com.gingersoft.gsa.cloud.ui.view.PagerSlidingTabStrip;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderCenterComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderCenterPresenter;
import com.gingersoft.gsa.cloud.table.R;
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.QMUIViewPager;
import com.qmuiteam.qmui.widget.tab.QMUITabBuilder;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
import java.util.HashMap;
import java.util.Map;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.PagerAdapter;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> implements OrderCenterContract.View {
@BindView(R2.id.topbar)
QMUITopBar mTopBar;
@BindView(R2.id.tabSegment)
QMUITabSegment mTabSegment;
@BindView(R2.id.contentViewPager)
QMUIViewPager mContentViewPager;
private Map<ContentPage, View> mPageMap = new HashMap<>();
private ContentPage mDestPage = ContentPage.Item1;
private PagerAdapter mPagerAdapter = new PagerAdapter() {
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public int getCount() {
return ContentPage.SIZE;
}
@Override
public Object instantiateItem(final ViewGroup container, int position) {
ContentPage page = ContentPage.getPage(position);
View view = getPageView(page);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
container.addView(view, params);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
};
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderCenterComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_order_center; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
initTabAndPager();
}
private void initTabAndPager() {
mContentViewPager.setAdapter(mPagerAdapter);
mContentViewPager.setCurrentItem(mDestPage.getPosition(), false);
QMUITabBuilder builder = mTabSegment.tabBuilder();
mTabSegment.addTab(builder.setText(getString(R.string.tabSegment_order_all_title)).build(this));
mTabSegment.addTab(builder.setText(getString(R.string.tabSegment_order_cancel_title)).build(this));
mTabSegment.setupWithViewPager(mContentViewPager, false);
mTabSegment.setMode(QMUITabSegment.MODE_FIXED);
mTabSegment.addOnTabSelectedListener(new QMUITabSegment.OnTabSelectedListener() {
@Override
public void onTabSelected(int index) {
}
@Override
public void onTabUnselected(int index) {
}
@Override
public void onTabReselected(int index) {
}
@Override
public void onDoubleTap(int index) {
mTabSegment.clearSignCountView(index);
}
});
}
@Override
public void initIntent() {
}
@Override
public void initTopBar() {
mTopBar.setBackgroundColor(ContextCompat.getColor(this, R.color.theme_color));
mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
killMyself();
}
});
mTopBar.setTitle("張單管理");
}
@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();
}
private View getPageView(ContentPage page) {
View view = mPageMap.get(page);
if (view == null) {
TextView textView = new TextView(this);
textView.setGravity(Gravity.CENTER);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
textView.setTextColor(ContextCompat.getColor(this, R.color.app_color_description));
if (page == ContentPage.Item1) {
textView.setText(R.string.tabSegment_order_all_title);
} else if (page == ContentPage.Item2) {
textView.setText(R.string.tabSegment_order_cancel_title);
}
view = textView;
mPageMap.put(page, view);
}
return view;
}
public enum ContentPage {
Item1(0),
Item2(1);
public static final int SIZE = 2;
private final int position;
ContentPage(int pos) {
position = pos;
}
public static ContentPage getPage(int position) {
switch (position) {
case 0:
return Item1;
case 1:
return Item2;
default:
return Item1;
}
}
public int getPosition() {
return position;
}
}
}
...@@ -256,7 +256,7 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im ...@@ -256,7 +256,7 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(@NonNull String message) {
checkNotNull(message); checkNotNull(message);
ArmsUtils.makeText(this, message); ArmsUtils.makeText(OrderContentActivity.this, message);
} }
@Override @Override
...@@ -317,7 +317,6 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im ...@@ -317,7 +317,6 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
@Override @Override
public void printSuccess() { public void printSuccess() {
// Intent intent = new Intent();
// 设置返回码和返回携带的数据 // 设置返回码和返回携带的数据
if (OpenTableManage.getDefault() != null) { if (OpenTableManage.getDefault() != null) {
//通知更新餐台状态 //通知更新餐台状态
...@@ -328,14 +327,6 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im ...@@ -328,14 +327,6 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
} }
@Override @Override
public void startActivityForResult(int Code, Class clazz, Intent intent) {
if (intent == null) {
intent = new Intent(mContext, clazz);
}
startActivityForResult(intent, Code);
}
@Override
public void sendSuccess() { public void sendSuccess() {
if (OpenTableManage.getDefault() != null) { if (OpenTableManage.getDefault() != null) {
//通知更新餐台状态 //通知更新餐台状态
...@@ -346,6 +337,14 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im ...@@ -346,6 +337,14 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
} }
@Override @Override
public void startActivityForResult(int Code, Class clazz, Intent intent) {
if (intent == null) {
intent = new Intent(mContext, clazz);
}
startActivityForResult(intent, Code);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BILL_CODE) { if (requestCode == BILL_CODE) {
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderDetailPresenter;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderDetailComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import com.gingersoft.gsa.cloud.table.R;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 14:29
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> implements OrderDetailContract.View {
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderDetailComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_order_detail; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
@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();
}
}
...@@ -397,7 +397,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -397,7 +397,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(@NonNull String message) {
checkNotNull(message); checkNotNull(message);
ArmsUtils.makeText(this, message); ArmsUtils.makeText(OrderPayActivity.this, message);
} }
@Override @Override
...@@ -512,7 +512,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -512,7 +512,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
.setActionName("printActivity") .setActionName("printActivity")
.addParam("type", 2) .addParam("type", 2)
.build() .build()
.callAsync((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
// if (result.isSuccess()) { // if (result.isSuccess()) {
// //打印成功 // //打印成功
......
...@@ -207,8 +207,8 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table ...@@ -207,8 +207,8 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(@NonNull String message) {
if (message != null) checkNotNull(message);
ArmsUtils.makeText(this, message); ArmsUtils.makeText(TableActivity.this, message);
} }
@Override @Override
......
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.di.component.DaggerAllOrderComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.AllOrderPresenter;
import com.gingersoft.gsa.cloud.table.R;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements AllOrderContract.View {
public static AllOrderFragment newInstance() {
AllOrderFragment fragment = new AllOrderFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerAllOrderComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_all_order, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
@Override
public void setData(@Nullable Object data) {
}
@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() {
}
}
...@@ -2,15 +2,21 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.widget; ...@@ -2,15 +2,21 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.widget;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher;
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.view.inputmethod.InputMethodManager;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -69,16 +75,15 @@ public class PayKeypadDialog { ...@@ -69,16 +75,15 @@ public class PayKeypadDialog {
@OnClick({R2.id.btn_add_0, R2.id.btn_add_10, R2.id.btn_add_20, R2.id.btn_add_50, @OnClick({R2.id.btn_add_0, R2.id.btn_add_10, R2.id.btn_add_20, R2.id.btn_add_50,
R2.id.btn_100, R2.id.btn_200, R2.id.btn_500, R2.id.btn_1000, R2.id.btn_100, R2.id.btn_200, R2.id.btn_500, R2.id.btn_1000,
R2.id.btn_0, R2.id.btn_1, R2.id.btn_2, R2.id.btn_3, R2.id.btn_0, R2.id.btn_00, R2.id.btn_1, R2.id.btn_2, R2.id.btn_3,
R2.id.btn_4, R2.id.btn_5, R2.id.btn_6, R2.id.btn_7, R2.id.btn_4, R2.id.btn_5, R2.id.btn_6, R2.id.btn_7,
R2.id.btn_8, R2.id.btn_9, R2.id.btn_point, R2.id.btn_sure}) R2.id.btn_8, R2.id.btn_9, R2.id.btn_point, R2.id.btn_delete, R2.id.btn_sure})
public void onClick(View v) { public void onClick(View v) {
int id = v.getId(); int id = v.getId();
if (id == R.id.btn_0 || id == R.id.btn_1 || id == R.id.btn_2 || id == R.id.btn_3 || id == R.id.btn_4 || id == R.id.btn_5 || if (id == R.id.btn_0 || id == R.id.btn_00 || id == R.id.btn_1 || id == R.id.btn_2 || id == R.id.btn_3 || id == R.id.btn_4 || id == R.id.btn_5 ||
id == R.id.btn_6 || id == R.id.btn_7 || id == R.id.btn_8 || id == R.id.btn_9) { id == R.id.btn_6 || id == R.id.btn_7 || id == R.id.btn_8 || id == R.id.btn_9) {
int i = Integer.parseInt(v.getTag().toString()); String values = v.getTag().toString();
String values = String.valueOf(i);
String number = "0"; String number = "0";
if (!getInputNumber().isEmpty()) { if (!getInputNumber().isEmpty()) {
...@@ -89,6 +94,7 @@ public class PayKeypadDialog { ...@@ -89,6 +94,7 @@ public class PayKeypadDialog {
} else { } else {
ed_value.setText(values); ed_value.setText(values);
} }
ed_value.setSelection(0, number.length());
} else if (id == R.id.btn_add_10 || id == R.id.btn_add_20 || id == R.id.btn_add_50) { } else if (id == R.id.btn_add_10 || id == R.id.btn_add_20 || id == R.id.btn_add_50) {
int i2 = Integer.parseInt(v.getTag().toString()); int i2 = Integer.parseInt(v.getTag().toString());
String valueOf = String.valueOf(i2); String valueOf = String.valueOf(i2);
...@@ -102,7 +108,7 @@ public class PayKeypadDialog { ...@@ -102,7 +108,7 @@ public class PayKeypadDialog {
ed_value.setText(valueOf); ed_value.setText(valueOf);
} else if (id == R.id.btn_add_0) { } else if (id == R.id.btn_add_0) {
ed_value.setText("0"); ed_value.setText("0");
} else if (id == R.id.btn_100 || id == R.id.btn_200 || id == R.id.btn_500|| id == R.id.btn_1000) { } else if (id == R.id.btn_100 || id == R.id.btn_200 || id == R.id.btn_500 || id == R.id.btn_1000) {
int i3 = Integer.parseInt(v.getTag().toString()); int i3 = Integer.parseInt(v.getTag().toString());
String values3 = String.valueOf(i3); String values3 = String.valueOf(i3);
ed_value.setText(values3); ed_value.setText(values3);
...@@ -111,6 +117,11 @@ public class PayKeypadDialog { ...@@ -111,6 +117,11 @@ public class PayKeypadDialog {
if (!TextUtils.isEmpty(intputStr) && !intputStr.contains(".")) { if (!TextUtils.isEmpty(intputStr) && !intputStr.contains(".")) {
ed_value.setText(intputStr + "."); ed_value.setText(intputStr + ".");
} }
} else if (id == R.id.btn_delete) {
Editable editable = ed_value.getText();
if (editable.toString().length() > 0) {
editable.delete(ed_value.getText().length() - 1, ed_value.getText().length());
}
} else if (id == R.id.btn_sure) { } else if (id == R.id.btn_sure) {
if (onComfirmListener != null && !TextUtils.isEmpty(getInputNumber())) { if (onComfirmListener != null && !TextUtils.isEmpty(getInputNumber())) {
onComfirmListener.onComfirm(getInputNumber()); onComfirmListener.onComfirm(getInputNumber());
...@@ -119,6 +130,15 @@ public class PayKeypadDialog { ...@@ -119,6 +130,15 @@ public class PayKeypadDialog {
} }
} }
/**
* 隐藏输入软键盘
*/
private void hideInputManager(Context context, View view) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
if (view != null && imm != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏
}
}
public PayKeypadDialog setCancelable(boolean cancelable) { public PayKeypadDialog setCancelable(boolean cancelable) {
dialog.setCancelable(cancelable); dialog.setCancelable(cancelable);
......
<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/app_primary_color">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"
app:qmui_topbar_title_color="@color/theme_white_color" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/qmui_topbar_height"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:background="@color/qmui_config_color_white">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/tabSegment"
android:layout_width="match_parent"
android:layout_height="40dp" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/contentViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:fitsSystemWindows="true"/>
</LinearLayout>
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2" android:layout_marginTop="@dimen/dp_2"
android:shrinkColumns="*" android:shrinkColumns="*"
android:background="@color/theme_black"
android:orientation="vertical"
android:stretchColumns="*"> android:stretchColumns="*">
<TableRow <LinearLayout
android:id="@+id/tableRow1" android:id="@+id/tableRow1"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="@dimen/dp_50"
android:orientation="horizontal">
<Button <Button
android:id="@+id/btn_7" android:id="@+id/btn_7"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
android:background="@drawable/selector_input_number_keyboard" android:background="@drawable/selector_input_number_keyboard"
...@@ -21,12 +25,13 @@ ...@@ -21,12 +25,13 @@
android:tag="7" android:tag="7"
android:text="@string/Key_7" android:text="@string/Key_7"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_8" android:id="@+id/btn_8"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
android:background="@drawable/selector_input_number_keyboard" android:background="@drawable/selector_input_number_keyboard"
...@@ -34,30 +39,33 @@ ...@@ -34,30 +39,33 @@
android:tag="8" android:tag="8"
android:text="@string/Key_8" android:text="@string/Key_8"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_9" android:id="@+id/btn_9"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/selector_input_number_keyboard" android:background="@drawable/selector_input_number_keyboard"
android:focusable="true" android:focusable="true"
android:tag="9" android:tag="9"
android:text="@string/Key_9" android:text="@string/Key_9"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
</TableRow> </LinearLayout>
<TableRow <LinearLayout
android:id="@+id/tableRow2" android:id="@+id/tableRow2"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="@dimen/dp_50"
android:orientation="horizontal">
<Button <Button
android:id="@+id/btn_4" android:id="@+id/btn_4"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
...@@ -66,12 +74,13 @@ ...@@ -66,12 +74,13 @@
android:tag="4" android:tag="4"
android:text="@string/Key_4" android:text="@string/Key_4"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_5" android:id="@+id/btn_5"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
...@@ -80,32 +89,34 @@ ...@@ -80,32 +89,34 @@
android:tag="5" android:tag="5"
android:text="@string/Key_5" android:text="@string/Key_5"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_6" android:id="@+id/btn_6"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:background="@drawable/selector_input_number_keyboard" android:background="@drawable/selector_input_number_keyboard"
android:focusable="true" android:focusable="true"
android:tag="6" android:tag="6"
android:text="@string/Key_6" android:text="@string/Key_6"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
</TableRow> </LinearLayout>
<TableRow <LinearLayout
android:id="@+id/tableRow3" android:id="@+id/tableRow3"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="@dimen/dp_50"
android:orientation="horizontal">
<Button <Button
android:id="@+id/btn_1" android:id="@+id/btn_1"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
...@@ -114,12 +125,13 @@ ...@@ -114,12 +125,13 @@
android:tag="1" android:tag="1"
android:text="@string/Key_1" android:text="@string/Key_1"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_2" android:id="@+id/btn_2"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
...@@ -128,12 +140,13 @@ ...@@ -128,12 +140,13 @@
android:tag="2" android:tag="2"
android:text="@string/Key_2" android:text="@string/Key_2"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_3" android:id="@+id/btn_3"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:background="@drawable/selector_input_number_keyboard" android:background="@drawable/selector_input_number_keyboard"
...@@ -141,32 +154,44 @@ ...@@ -141,32 +154,44 @@
android:tag="3" android:tag="3"
android:text="@string/Key_3" android:text="@string/Key_3"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
</TableRow> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<TableRow <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<LinearLayout
android:id="@+id/tableRow4" android:id="@+id/tableRow4"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="@dimen/dp_50">
<Button <Button
android:id="@+id/btn_point" android:id="@+id/btn_0"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/selector_keyboard_gary_bg" android:background="@drawable/selector_input_number_keyboard"
android:focusable="true" android:focusable="true"
android:longClickable="true" android:tag="0"
android:tag="99" android:text="@string/Key_0"
android:text="."
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" /> android:textSize="@dimen/sp_30"
android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_0" android:id="@+id/btn_00"
android:layout_width="1dip" android:layout_width="1dip"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
...@@ -174,23 +199,59 @@ ...@@ -174,23 +199,59 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/selector_input_number_keyboard" android:background="@drawable/selector_input_number_keyboard"
android:focusable="true" android:focusable="true"
android:tag="00"
android:text="@string/Key_00"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_30"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/tableRow5"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50">
<ImageButton
android:id="@+id/btn_delete"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="1dp"
android:layout_marginRight="1dp"
android:layout_weight="1"
android:background="@drawable/selector_input_number_keyboard"
android:focusable="true"
android:tag="0" android:tag="0"
android:src="@mipmap/table_input_money_delete"
android:text="@string/Key_0" android:text="@string/Key_0"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="40sp" android:textSize="@dimen/sp_30"
android:textStyle="bold" /> android:textStyle="bold" />
<Button <Button
android:id="@+id/btn_point"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="1dp"
android:layout_marginRight="1dp"
android:layout_weight="1"
android:background="@drawable/selector_keyboard_gary_bg"
android:focusable="true"
android:longClickable="true"
android:tag="99"
android:text="."
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_30"/>
</LinearLayout>
</LinearLayout>
<ImageButton
android:id="@+id/btn_sure" android:id="@+id/btn_sure"
android:layout_width="1dip" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:background="@drawable/selector_paybill_keyboard" android:background="@drawable/selector_paybill_keyboard"
android:focusable="true" android:focusable="true"
android:tag="98" android:tag="98"
android:text="√" android:src="@mipmap/table_input_money_sure" />
android:textColor="@color/theme_white_color" </LinearLayout>
android:textSize="40sp" </LinearLayout>
android:textStyle="bold" />
</TableRow>
</TableLayout>
...@@ -19,14 +19,16 @@ ...@@ -19,14 +19,16 @@
<EditText <EditText
android:id="@+id/ed_value" android:id="@+id/ed_value"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="45dp" android:layout_height="45dp"
android:layout_marginRight="@dimen/dp_15"
android:layout_marginLeft="@dimen/dp_15"
android:layout_below="@+id/tv_pay_method" android:layout_below="@+id/tv_pay_method"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:background="@drawable/shape_rect_fillet_white_5" android:background="@drawable/shape_rect_fillet_white_5"
android:ems="10" android:ems="10"
android:enabled="false" android:focusable="false"
android:gravity="right|center_vertical" android:gravity="right|center_vertical"
android:hint="@string/input_pay_money" android:hint="@string/input_pay_money"
android:inputType="numberDecimal" android:inputType="numberDecimal"
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<string name="Key_0">0</string> <string name="Key_0">0</string>
<string name="Key_00">00</string>
<string name="Key_1">1</string> <string name="Key_1">1</string>
<string name="Key_2">2</string> <string name="Key_2">2</string>
<string name="Key_3">3</string> <string name="Key_3">3</string>
...@@ -45,6 +46,11 @@ ...@@ -45,6 +46,11 @@
<string name="meal_select_all">全選</string> <string name="meal_select_all">全選</string>
<string name="meal_select_reverse">反選</string> <string name="meal_select_reverse">反選</string>
<!-- TabSegmentFragment 选项卡展示界面 -->
<string name="tabSegment_order_all_title">全部</string>
<string name="tabSegment_order_cancel_title">已取消</string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="sure">Sure</string> <string name="sure">Sure</string>
<string name="more">More</string> <string name="more">More</string>
......
package com.gingersoft.gsa.cloud.user.login.mvp.contract; package com.gingersoft.gsa.cloud.user.login.mvp.contract;
import com.tbruyelle.rxpermissions2.RxPermissions;
/** /**
* ================================================ * ================================================
* Description: * Description:
...@@ -12,13 +14,12 @@ package com.gingersoft.gsa.cloud.user.login.mvp.contract; ...@@ -12,13 +14,12 @@ package com.gingersoft.gsa.cloud.user.login.mvp.contract;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface LoginContract extends BaseLoginContract{ public interface LoginContract extends BaseLoginContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends BaseLoginContract.View { interface View extends BaseLoginContract.View {
// void loginSuccess(LoginBean info); // void loginSuccess(LoginBean info);
// //
// void startToSwitchServer(); // void startToSwitchServer();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -5,6 +5,8 @@ import android.content.Intent; ...@@ -5,6 +5,8 @@ import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean; import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem; import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.gingersoft.gsa.cloud.ui.widget.dialog.ChooseRestaurantDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.ChooseRestaurantDialog;
...@@ -46,6 +48,17 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B ...@@ -46,6 +48,17 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B
restaurantSize = getRestaurantSize(loginBean.getData().getUser().getBrands()); restaurantSize = getRestaurantSize(loginBean.getData().getUser().getBrands());
brandsBeans.addAll(loginBean.getData().getUser().getBrands()); brandsBeans.addAll(loginBean.getData().getUser().getBrands());
} }
boolean autoLogin = (boolean) SPUtils.get(mContext, UserConstans.AUTO_LOGIN, false);
if (autoLogin) {
int restaurantId = GsaCloudApplication.getRestaurantId(this);
if (restaurantId != 0) {
//有選擇餐廳,直接跳轉首頁
jumpMainActivity();
return;
}
}
if (restaurantSize == 1) { if (restaurantSize == 1) {
//只有一個品牌是直接進下載頁面 //只有一個品牌是直接進下載頁面
LoginBean.DataBean.UserBean.BrandsBean brandsBean = getOnlyBrand(loginBean.getData().getUser().getBrands()); LoginBean.DataBean.UserBean.BrandsBean brandsBean = getOnlyBrand(loginBean.getData().getUser().getBrands());
...@@ -55,7 +68,7 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B ...@@ -55,7 +68,7 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B
} }
jumpDownloadActivity(); jumpDownloadActivity();
} else { } else {
showChooseRestaurantDialog(brandsBeans,brands); showChooseRestaurantDialog(brandsBeans, brands);
} }
} }
} }
...@@ -128,4 +141,12 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B ...@@ -128,4 +141,12 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B
.call(); .call();
killMyself(); killMyself();
} }
private void jumpMainActivity() {
CC.obtainBuilder("Component.Main")
.setActionName("showMainActivity")
.build()
.call();
killMyself();
}
} }
...@@ -3,14 +3,20 @@ package com.gingersoft.gsa.cloud.user.login.mvp.presenter; ...@@ -3,14 +3,20 @@ package com.gingersoft.gsa.cloud.user.login.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean; import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.user.login.R;
import com.gingersoft.gsa.cloud.user.login.mvp.contract.BaseLoginContract; import com.gingersoft.gsa.cloud.user.login.mvp.contract.BaseLoginContract;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.PermissionUtil;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
...@@ -45,6 +51,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas ...@@ -45,6 +51,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
this.mImageLoader = null; this.mImageLoader = null;
this.mApplication = null; this.mApplication = null;
} }
public void login(String account, String pwd) { public void login(String account, String pwd) {
if (account.equals("88888888") && pwd.equals("cc81081168")) { if (account.equals("88888888") && pwd.equals("cc81081168")) {
mRootView.startToSwitchServer(); mRootView.startToSwitchServer();
......
...@@ -2,10 +2,18 @@ package com.gingersoft.gsa.cloud.user.login.mvp.presenter; ...@@ -2,10 +2,18 @@ package com.gingersoft.gsa.cloud.user.login.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.user.login.R;
import com.gingersoft.gsa.cloud.user.login.mvp.contract.LoginContract; import com.gingersoft.gsa.cloud.user.login.mvp.contract.LoginContract;
import com.gingersoft.gsa.cloud.user.login.mvp.ui.activity.LoginActivity;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.PermissionUtil;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -35,9 +43,12 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi ...@@ -35,9 +43,12 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi
@Inject @Inject
AppManager mAppManager; AppManager mAppManager;
private LoginActivity IAcitivty;
@Inject @Inject
public LoginPresenter(LoginContract.Model model, LoginContract.View rootView) { public LoginPresenter(LoginContract.Model model, LoginContract.View rootView) {
super(model, rootView); super(model, rootView);
IAcitivty = (LoginActivity) rootView;
} }
@Override @Override
...@@ -49,6 +60,28 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi ...@@ -49,6 +60,28 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi
this.mApplication = null; this.mApplication = null;
} }
/**
* 进入应用强制用户开启 存储的权限(保存error log来文件必须拥有读写权限)
*/
public void requestExternalStoragePermission() {
PermissionUtil.externalStorage(new PermissionUtil.RequestPermission() {
@Override
public void onRequestPermissionSuccess() {
}
@Override
public void onRequestPermissionFailure(List<String> permissions) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "external.storage.permission.hint", ArmsUtils.getString(mApplication, R.string.queue_write_external_storage_permission_hint)));
mRootView.killMyself();
}
@Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
}
}, new RxPermissions(IAcitivty), mErrorHandler);
}
// public void login(String account, String pwd) { // public void login(String account, String pwd) {
// if (account.equals("88888888") && pwd.equals("cc81081168")) { // if (account.equals("88888888") && pwd.equals("cc81081168")) {
// mRootView.startToSwitchServer(); // mRootView.startToSwitchServer();
......
...@@ -21,6 +21,9 @@ import com.gingersoft.gsa.cloud.base.utils.encryption.Aes; ...@@ -21,6 +21,9 @@ import com.gingersoft.gsa.cloud.base.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil; import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; 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.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean; import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.ui.widget.dialog.ChooseRestaurantDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.ChooseRestaurantDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
...@@ -33,6 +36,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.presenter.LoginPresenter; ...@@ -33,6 +36,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.presenter.LoginPresenter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -97,6 +101,7 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements ...@@ -97,6 +101,7 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.requestExternalStoragePermission();
findViewById(R.id.tv_gsa_user_login).setOnClickListener(this); findViewById(R.id.tv_gsa_user_login).setOnClickListener(this);
if (!Objects.equals(SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, ""), "")) { if (!Objects.equals(SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, ""), "")) {
edAccount.setText("" + SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, "")); edAccount.setText("" + SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, ""));
...@@ -129,7 +134,7 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements ...@@ -129,7 +134,7 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements
// jumpActivity(); // jumpActivity();
// finish(); // finish();
// } // }
edAccount.setSelection(edAccount.getText().toString().length() ); edAccount.setSelection(edAccount.getText().toString().length());
edPwd.setOnFocusChangeListener(mOnFocusChangeListener); edPwd.setOnFocusChangeListener(mOnFocusChangeListener);
edAccount.setOnFocusChangeListener(mOnFocusChangeListener); edAccount.setOnFocusChangeListener(mOnFocusChangeListener);
edPwd.addTextChangedListener(new TextWatcher() { edPwd.addTextChangedListener(new TextWatcher() {
......
...@@ -4,11 +4,9 @@ import android.content.Intent; ...@@ -4,11 +4,9 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.ScaleAnimation; import android.view.animation.ScaleAnimation;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans; import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.encryption.Aes; import com.gingersoft.gsa.cloud.base.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
...@@ -22,9 +20,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.contract.WelcomeContract; ...@@ -22,9 +20,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.contract.WelcomeContract;
import com.gingersoft.gsa.cloud.user.login.mvp.presenter.WelcomePresenter; import com.gingersoft.gsa.cloud.user.login.mvp.presenter.WelcomePresenter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -68,6 +64,8 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem ...@@ -68,6 +64,8 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
//自動登陸 //自動登陸
String pwd = Aes.aesDecrypt((String) SPUtils.get(mContext, UserConstans.LOGIN_PASSWORD, "")); String pwd = Aes.aesDecrypt((String) SPUtils.get(mContext, UserConstans.LOGIN_PASSWORD, ""));
mPresenter.login(SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, "") + "", pwd); mPresenter.login(SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, "") + "", pwd);
} else{
startActivity(new Intent(mContext, LoginActivity.class));
} }
} }
......
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