Commit 114cb283 by Wyh

8.15 1、每日營業報表及打印功能 2、外賣接單按鈕權限控制

Signed-off-by: Wyh <1239658231>
parent ea7060d3
...@@ -199,6 +199,23 @@ public class MoneyUtil { ...@@ -199,6 +199,23 @@ public class MoneyUtil {
return b1.subtract(b2).doubleValue(); return b1.subtract(b2).doubleValue();
} }
/**
* 計算差
*
* @param v1
* @param v2
* @return
*/
public static double sub(double v1, double... v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
for (int i = 0; i < v2.length; i++) {
BigDecimal b2 = new BigDecimal(Double.toString(v2[i]));
b1 = b1.subtract(b2);
}
return b1.doubleValue();
}
/** /**
* 計算差 * 計算差
* *
......
...@@ -439,6 +439,21 @@ public abstract class PrinterWriter { ...@@ -439,6 +439,21 @@ public abstract class PrinterWriter {
} }
/** /**
* 获取图片数据流
*
* @param image 图片
* @return 数据流
*/
public ArrayList<byte[]> getImageByte(Bitmap image, int heightParting) {
int maxWidth = getDrawableMaxWidth();
Bitmap scalingImage = scalingBitmap(image, maxWidth);
if (scalingImage == null)
return null;
ArrayList<byte[]> data = PrinterUtils.decodeBitmapToDataList(image, heightParting);
return data;
}
/**
* 解码图片 * 解码图片
* *
* @param image 图片 * @param image 图片
......
...@@ -4,7 +4,9 @@ import java.util.List; ...@@ -4,7 +4,9 @@ import java.util.List;
public class BrandsBean { public class BrandsBean {
private boolean success; private boolean success = false;
private String code;
private String message;
private long sysTime; private long sysTime;
private List<BrandsData> data; private List<BrandsData> data;
...@@ -116,4 +118,20 @@ public class BrandsBean { ...@@ -116,4 +118,20 @@ public class BrandsBean {
public void setData(List<BrandsData> data) { public void setData(List<BrandsData> data) {
this.data = data; this.data = data;
} }
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
} }
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/horizontal_dividing_line"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_0_5"
android:background="@color/color_e8" />
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vertical_dividing_line"
android:layout_width="@dimen/dp_0_5"
android:layout_height="match_parent"
android:background="@color/color_e8"
android:orientation="vertical" />
...@@ -463,6 +463,10 @@ ...@@ -463,6 +463,10 @@
<color name="color_50">#505050</color> <color name="color_50">#505050</color>
<color name="color_c9">#C9C9C9</color> <color name="color_c9">#C9C9C9</color>
<color name="color_aaa">#AAA</color> <color name="color_aaa">#AAA</color>
<color name="color_f9">#f9f9f9</color>
<color name="color_3b">#3b3b3b</color>
<color name="color_18">#181818</color>
<color name="color_e8">#e8e8e8</color>
<color name="tran_fifty_order_state0_color">#7F009788</color> <color name="tran_fifty_order_state0_color">#7F009788</color>
<!-- 待確認背景色--> <!-- 待確認背景色-->
......
...@@ -3,11 +3,11 @@ package com.gingersoft.gsa.cloud.login.mvp.presenter; ...@@ -3,11 +3,11 @@ package com.gingersoft.gsa.cloud.login.mvp.presenter;
import android.app.Activity; import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.content.Intent; import android.content.Intent;
import android.util.Log;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.bean.PublicBean; import com.gingersoft.gsa.cloud.bean.PublicBean;
import com.gingersoft.gsa.cloud.constans.AppConstans; import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.login.mvp.bean.LoginLimitBean; import com.gingersoft.gsa.cloud.login.mvp.bean.LoginLimitBean;
...@@ -27,7 +27,6 @@ import java.util.List; ...@@ -27,7 +27,6 @@ import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull; import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
...@@ -129,6 +128,9 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas ...@@ -129,6 +128,9 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
@Override @Override
public void onNext(@NonNull BrandsBean info) { public void onNext(@NonNull BrandsBean info) {
if (info != null) { if (info != null) {
if(TextUtil.isNotEmptyOrNullOrUndefined(info.getMessage())){
mRootView.showMessage(info.getMessage());
}
mRootView.saveRestaurantListInfo(info.getData()); mRootView.saveRestaurantListInfo(info.getData());
} else { } else {
mRootView.saveRestaurantListInfo(null); mRootView.saveRestaurantListInfo(null);
...@@ -138,7 +140,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas ...@@ -138,7 +140,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
super.onError(t); super.onError(t);
mRootView.launchActivity(new Intent(IAcitivity, LoginActivity.class));
} }
}); });
} }
......
...@@ -4,10 +4,8 @@ import android.content.Intent; ...@@ -4,10 +4,8 @@ import android.content.Intent;
import com.billy.cc.core.component.CC; 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.IComponent; import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.function.FModule; import com.gingersoft.gsa.cloud.function.FModule;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.MainActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity;
public class ComponentMain implements IComponent { public class ComponentMain implements IComponent {
......
...@@ -2,7 +2,12 @@ package com.gingersoft.gsa.cloud.main.mvp.contract; ...@@ -2,7 +2,12 @@ package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessDetailsBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessDetailsBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DailyReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DaySalesReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DiscountDetailsReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainBusinessBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainBusinessBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OrderAnalysisBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OrderDetailsReport;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -29,7 +34,15 @@ public interface BusinessReportContract { ...@@ -29,7 +34,15 @@ public interface BusinessReportContract {
interface View extends IView { interface View extends IView {
void loadChart(List<MainBusinessBean.DataBean> data); void loadChart(List<MainBusinessBean.DataBean> data);
void loadAdapter(List<BusinessBean> businessBeans); void loadBillReport(DaySalesReportBean.DataBean dataBean);
void loadDaySalesReport(List<BusinessBean> businessBeans);
void loadOrderAnalysis(List<DailyReportBean> dailyReportBeans);
void loadOrderDetailsReport(List<DailyReportBean> dailyReportBeans);
void loadDiscountDetailsReport(List<DailyReportBean> dailyReportBeans);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...@@ -37,5 +50,14 @@ public interface BusinessReportContract { ...@@ -37,5 +50,14 @@ public interface BusinessReportContract {
Observable<MainBusinessBean> getRestaurantBusinessAmount(Map<String, String> map); Observable<MainBusinessBean> getRestaurantBusinessAmount(Map<String, String> map);
Observable<BusinessDetailsBean> getRestaurantBusinessDetails(Map<String, String> map); Observable<BusinessDetailsBean> getRestaurantBusinessDetails(Map<String, String> map);
Observable<DaySalesReportBean> getDaySalesReport(Map<String, String> map);
Observable<OrderAnalysisBean> getOrderAnalysis(Map<String, String> map);
Observable<OrderDetailsReport> getOrderDetailsReport(Map<String, String> map);
Observable<DiscountDetailsReportBean> getDiscountDetails(Map<String, String> map);
} }
} }
...@@ -4,7 +4,11 @@ import android.app.Application; ...@@ -4,7 +4,11 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.contract.BusinessReportContract; import com.gingersoft.gsa.cloud.main.mvp.contract.BusinessReportContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessDetailsBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessDetailsBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DaySalesReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DiscountDetailsReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainBusinessBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainBusinessBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OrderAnalysisBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OrderDetailsReport;
import com.gingersoft.gsa.cloud.main.mvp.model.service.MainReportService; import com.gingersoft.gsa.cloud.main.mvp.model.service.MainReportService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
...@@ -60,4 +64,30 @@ public class BusinessReportModel extends BaseModel implements BusinessReportCont ...@@ -60,4 +64,30 @@ public class BusinessReportModel extends BaseModel implements BusinessReportCont
return mRepositoryManager.obtainRetrofitService(MainReportService.class) return mRepositoryManager.obtainRetrofitService(MainReportService.class)
.getRestaurantDetails(map); .getRestaurantDetails(map);
} }
}
\ No newline at end of file @Override
public Observable<DaySalesReportBean> getDaySalesReport(Map<String, String> map) {
return mRepositoryManager.obtainRetrofitService(MainReportService.class)
.getDaySalesReport(map);
}
@Override
public Observable<OrderAnalysisBean> getOrderAnalysis(Map<String, String> map) {
return mRepositoryManager.obtainRetrofitService(MainReportService.class)
.getOrderAnalysis(map);
}
@Override
public Observable<OrderDetailsReport> getOrderDetailsReport(Map<String, String> map) {
return mRepositoryManager.obtainRetrofitService(MainReportService.class)
.getOrderDetailsReport(map);
}
@Override
public Observable<DiscountDetailsReportBean> getDiscountDetails(Map<String, String> map) {
return mRepositoryManager.obtainRetrofitService(MainReportService.class)
.getDiscountDetails(map);
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
public class DailyReportBean {
private String type;
private String num;
private String proportion;
private String amount;
public DailyReportBean(String type, String num, String proportion, String amount) {
this.type = type;
this.num = num;
this.proportion = proportion;
this.amount = amount;
}
public DailyReportBean(String type, String num, String amount) {
this.type = type;
this.num = num;
this.amount = amount;
}
public String getType() {
if (type == null) {
return "";
}
return type;
}
public void setType(String type) {
this.type = type;
}
public String getNum() {
if (num == null) {
return "";
}
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getProportion() {
if (proportion == null) {
return "";
}
return proportion;
}
public void setProportion(String proportion) {
this.proportion = proportion;
}
public String getAmount() {
if (amount == null) {
return "";
}
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
public class DaySalesReportBean {
/**
* success : true
* sysTime : 1597391761029
* data : {"foodAmount":703.04,"disAmount":59.4,"saleAmount":0,"seramount":22.27,"roundAmount":-0.65,"tisAmount":0,"boxAmount":9,"delAmount":0,"billNum":22,"billPerson":14}
*/
private boolean success;
private long sysTime;
private DataBean data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
* foodAmount : 703.04
* disAmount : 59.4
* saleAmount : 0.0
* seramount : 22.27
* roundAmount : -0.65
* tisAmount : 0.0
* boxAmount : 9.0
* delAmount : 0.0
* billNum : 22
* billPerson : 14
*/
private double foodAmount;//項目銷售金額
private double disAmount;//折扣
private double saleAmount;//簽單
private double seramount;//服務費
private double roundAmount;//賬單小數
private double tisAmount;//貼士
private double boxAmount;//餐盒費
private double delAmount;//配送費
private int billNum;//正常訂單
private int billPerson;//正常人數
public double getFoodAmount() {
return foodAmount;
}
public void setFoodAmount(double foodAmount) {
this.foodAmount = foodAmount;
}
public double getDisAmount() {
return disAmount;
}
public void setDisAmount(double disAmount) {
this.disAmount = disAmount;
}
public double getSaleAmount() {
return saleAmount;
}
public void setSaleAmount(double saleAmount) {
this.saleAmount = saleAmount;
}
public double getSeramount() {
return seramount;
}
public void setSeramount(double seramount) {
this.seramount = seramount;
}
public double getRoundAmount() {
return roundAmount;
}
public void setRoundAmount(double roundAmount) {
this.roundAmount = roundAmount;
}
public double getTisAmount() {
return tisAmount;
}
public void setTisAmount(double tisAmount) {
this.tisAmount = tisAmount;
}
public double getBoxAmount() {
return boxAmount;
}
public void setBoxAmount(double boxAmount) {
this.boxAmount = boxAmount;
}
public double getDelAmount() {
return delAmount;
}
public void setDelAmount(double delAmount) {
this.delAmount = delAmount;
}
public int getBillNum() {
return billNum;
}
public void setBillNum(int billNum) {
this.billNum = billNum;
}
public int getBillPerson() {
return billPerson;
}
public void setBillPerson(int billPerson) {
this.billPerson = billPerson;
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List;
public class DiscountDetailsReportBean {
/**
* success : true
* sysTime : 1597391995745
* data : {"billNumSum":1,"list":[{"couponName":"6折Ginger折扣券","billNum":1,"amount":59.4}],"amountSum":59.4}
*/
private boolean success;
private long sysTime;
private DataBean data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
* billNumSum : 1
* list : [{"couponName":"6折Ginger折扣券","billNum":1,"amount":59.4}]
* amountSum : 59.4
*/
private int billNumSum;
private double amountSum;
private List<ListBean> list;
public int getBillNumSum() {
return billNumSum;
}
public void setBillNumSum(int billNumSum) {
this.billNumSum = billNumSum;
}
public double getAmountSum() {
return amountSum;
}
public void setAmountSum(double amountSum) {
this.amountSum = amountSum;
}
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class ListBean {
/**
* couponName : 6折Ginger折扣券
* billNum : 1
* amount : 59.4
*/
private String couponName;
private int billNum;
private double amount;
public String getCouponName() {
return couponName;
}
public void setCouponName(String couponName) {
this.couponName = couponName;
}
public int getBillNum() {
return billNum;
}
public void setBillNum(int billNum) {
this.billNum = billNum;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List;
public class OrderAnalysisBean {
/**
* success : true
* sysTime : 1597391872452
* data : {"billNumSum":17,"list":[{"payName":"Apple pay","billNum":2,"payAmount":22.8,"percentage":3.92},{"payName":"StripVisa","billNum":1,"payAmount":89.1,"percentage":15.3},{"payName":"中銀支付","billNum":1,"payAmount":96,"percentage":16.49},{"payName":"支付寶","billNum":2,"payAmount":92.4,"percentage":15.87},{"payName":"支付寶支付","billNum":5,"payAmount":100,"percentage":17.17},{"payName":"支付寶支付hk","billNum":1,"payAmount":31.5,"percentage":5.41},{"payName":"服務員確認","billNum":5,"payAmount":150.5,"percentage":25.85}],"amountSum":582.3}
*/
private boolean success;
private long sysTime;
private DataBean data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
* billNumSum : 17
* list : [{"payName":"Apple pay","billNum":2,"payAmount":22.8,"percentage":3.92},{"payName":"StripVisa","billNum":1,"payAmount":89.1,"percentage":15.3},{"payName":"中銀支付","billNum":1,"payAmount":96,"percentage":16.49},{"payName":"支付寶","billNum":2,"payAmount":92.4,"percentage":15.87},{"payName":"支付寶支付","billNum":5,"payAmount":100,"percentage":17.17},{"payName":"支付寶支付hk","billNum":1,"payAmount":31.5,"percentage":5.41},{"payName":"服務員確認","billNum":5,"payAmount":150.5,"percentage":25.85}]
* amountSum : 582.3
*/
private int billNumSum;
private double amountSum;
private List<ListBean> list;
public int getBillNumSum() {
return billNumSum;
}
public void setBillNumSum(int billNumSum) {
this.billNumSum = billNumSum;
}
public double getAmountSum() {
return amountSum;
}
public void setAmountSum(double amountSum) {
this.amountSum = amountSum;
}
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class ListBean {
/**
* payName : Apple pay
* billNum : 2
* payAmount : 22.8
* percentage : 3.92
*/
private String payName;
private int billNum;
private double payAmount;
private double percentage;
public String getPayName() {
return payName;
}
public void setPayName(String payName) {
this.payName = payName;
}
public int getBillNum() {
return billNum;
}
public void setBillNum(int billNum) {
this.billNum = billNum;
}
public double getPayAmount() {
return payAmount;
}
public void setPayAmount(double payAmount) {
this.payAmount = payAmount;
}
public double getPercentage() {
return percentage;
}
public void setPercentage(double percentage) {
this.percentage = percentage;
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List;
public class OrderDetailsReport {
/**
* success : true
* sysTime : 1597391944112
* data : {"billNumSum":17,"list":[{"orderType":"堂食","billNum":2,"payAmount":164,"percentage":28.16},{"orderType":"外賣","billNum":1,"payAmount":89.1,"percentage":15.3},{"orderType":"自取","billNum":14,"payAmount":329.2,"percentage":56.53}],"amountSum":582.3}
*/
private boolean success;
private long sysTime;
private DataBean data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
* billNumSum : 17
* list : [{"orderType":"堂食","billNum":2,"payAmount":164,"percentage":28.16},{"orderType":"外賣","billNum":1,"payAmount":89.1,"percentage":15.3},{"orderType":"自取","billNum":14,"payAmount":329.2,"percentage":56.53}]
* amountSum : 582.3
*/
private int billNumSum;
private double amountSum;
private List<ListBean> list;
public int getBillNumSum() {
return billNumSum;
}
public void setBillNumSum(int billNumSum) {
this.billNumSum = billNumSum;
}
public double getAmountSum() {
return amountSum;
}
public void setAmountSum(double amountSum) {
this.amountSum = amountSum;
}
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class ListBean {
/**
* orderType : 堂食
* billNum : 2
* payAmount : 164.0
* percentage : 28.16
*/
private String orderType;
private int billNum;
private double payAmount;
private double percentage;
public String getOrderType() {
return orderType;
}
public void setOrderType(String orderType) {
this.orderType = orderType;
}
public int getBillNum() {
return billNum;
}
public void setBillNum(int billNum) {
this.billNum = billNum;
}
public double getPayAmount() {
return payAmount;
}
public void setPayAmount(double payAmount) {
this.payAmount = payAmount;
}
public double getPercentage() {
return percentage;
}
public void setPercentage(double percentage) {
this.percentage = percentage;
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.service; package com.gingersoft.gsa.cloud.main.mvp.model.service;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessDetailsBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessDetailsBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DaySalesReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DiscountDetailsReportBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainBusinessBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainBusinessBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.MainOrderInfoChartBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OrderAnalysisBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OrderDetailsReport;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.PaymentMethodBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.PaymentMethodBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SalesFoodsBean; import com.gingersoft.gsa.cloud.main.mvp.model.bean.SalesFoodsBean;
...@@ -62,4 +66,25 @@ public interface MainReportService { ...@@ -62,4 +66,25 @@ public interface MainReportService {
//獲取首頁功能列表 //獲取首頁功能列表
@GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<String> getRestaurantFunList(@Query("restaurantId") String restaurantId); Observable<String> getRestaurantFunList(@Query("restaurantId") String restaurantId);
//每日營業詳情
@Headers({"Domain-Name: gsa_report"})
@GET("cloudGsaReport/daySalesReport" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<DaySalesReportBean> getDaySalesReport(@QueryMap Map<String, String> map);
//賬單分析
@Headers({"Domain-Name: gsa_report"})
@GET("cloudGsaReport/orderAnalysis" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<OrderAnalysisBean> getOrderAnalysis(@QueryMap Map<String, String> map);
//訂單詳情
@Headers({"Domain-Name: gsa_report"})
@GET("cloudGsaReport/orderDetails" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<OrderDetailsReport> getOrderDetailsReport(@QueryMap Map<String, String> map);
//折扣詳情
@Headers({"Domain-Name: gsa_report"})
@GET("cloudGsaReport/discountDetails" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<DiscountDetailsReportBean> getDiscountDetails(@QueryMap Map<String, String> map);
} }
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter; package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
...@@ -14,16 +16,25 @@ import java.util.List; ...@@ -14,16 +16,25 @@ import java.util.List;
*/ */
public class BusinessInfoAdapter extends BaseQuickAdapter<BusinessBean, BaseViewHolder> { public class BusinessInfoAdapter extends BaseQuickAdapter<BusinessBean, BaseViewHolder> {
public BusinessInfoAdapter(int layout,@Nullable List<BusinessBean> data) { private boolean isPrint;
// super(R.layout.report_business_info_item, data);
super(layout, data);
public BusinessInfoAdapter(@Nullable List<BusinessBean> data, boolean isPrint) {
super(R.layout.report_business_info_item, data);
this.isPrint = isPrint;
} }
@Override @Override
protected void convert(BaseViewHolder helper, BusinessBean item) { protected void convert(BaseViewHolder helper, BusinessBean item) {
helper.setText(R.id.tv_business_info_amount, item.getAmount() + ""); helper.setText(R.id.tv_business_info_amount, item.getAmount() + "");
helper.setText(R.id.tv_business_info_name, item.getProjectName()); helper.setText(R.id.tv_business_info_name, item.getProjectName());
if (isPrint) {
((TextView) helper.getView(R.id.tv_business_info_name)).setTextSize(22);
((TextView) helper.getView(R.id.tv_business_info_amount)).setTextSize(22);
helper.setBackgroundColor(R.id.horizontal_dividing_line, R.color.black);
helper.setBackgroundColor(R.id.vertical_dividing_line, R.color.black);
} else {
((TextView) helper.getView(R.id.tv_business_info_amount)).setTextSize(18);
((TextView) helper.getView(R.id.tv_business_info_name)).setTextSize(12);
}
} }
} }
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DailyReportBean;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class DailyBusinessAdapter extends BaseQuickAdapter<DailyReportBean, BaseViewHolder> {
private int spanCount;
private Context context;
private GradientDrawable drawable;
private boolean isPrint;
public DailyBusinessAdapter(Context context, @Nullable List<DailyReportBean> data) {
this(context, data, 4, false);
}
public DailyBusinessAdapter(Context context, @Nullable List<DailyReportBean> data, int spanCount, boolean isPrint) {
super(R.layout.item_public_report, data);
this.spanCount = spanCount;
this.context = context;
this.isPrint = isPrint;
drawable = new GradientDrawable();
drawable.setCornerRadii(new float[]{0, 0, 8, 8});
}
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, DailyReportBean dailyReportBean) {
if (spanCount == 3) {
baseViewHolder.setGone(R.id.tv_public_three, true);
} else {
baseViewHolder.setGone(R.id.tv_public_three, false);
}
baseViewHolder.setText(R.id.tv_public_one, dailyReportBean.getType());
baseViewHolder.setText(R.id.tv_public_two, dailyReportBean.getNum());
baseViewHolder.setText(R.id.tv_public_three, dailyReportBean.getProportion());
baseViewHolder.setText(R.id.tv_public_four, dailyReportBean.getAmount());
if (isPrint) {
((TextView) baseViewHolder.getView(R.id.tv_public_one)).setTextSize(24);
((TextView) baseViewHolder.getView(R.id.tv_public_two)).setTextSize(24);
((TextView) baseViewHolder.getView(R.id.tv_public_three)).setTextSize(24);
((TextView) baseViewHolder.getView(R.id.tv_public_four)).setTextSize(24);
baseViewHolder.setBackgroundColor(R.id.horizontal_dividing_line, R.color.black);
baseViewHolder.setBackgroundColor(R.id.vertical_dividing_line, R.color.black);
} else {
if (baseViewHolder.getAdapterPosition() % 2 == 0) {
if (baseViewHolder.getAdapterPosition() == getData().size() - 1) {
drawable.setColor(ContextCompat.getColor(context, R.color.white));
} else {
baseViewHolder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.white));
}
} else {
if (baseViewHolder.getAdapterPosition() == getData().size() - 1) {
drawable.setColor(ContextCompat.getColor(context, R.color.color_f9));
} else {
baseViewHolder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.color_f9));
}
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DaySalesReportBean;
public class BillingAnalysisReportView extends FrameLayout {
private boolean isPrint = false;
private Context mContext;
private TextView tvBillNum;
private TextView tvBillAverage;
private TextView tvPeople;
private TextView tvPeopleAvgPrice;
public BillingAnalysisReportView(@NonNull Context context) {
this(context, null);
}
public BillingAnalysisReportView(@NonNull Context context, boolean isPrint, DaySalesReportBean.DataBean dataBean) {
super(context, null);
this.isPrint = isPrint;
this.mContext = context;
init(mContext, dataBean);
}
public BillingAnalysisReportView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, -1);
}
public BillingAnalysisReportView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void init(Context mContext,DaySalesReportBean.DataBean dataBean) {
this.mContext = mContext;
View view = View.inflate(mContext, R.layout.layout_report_billing_analysis, null);
TextView tvTitle = view.findViewById(R.id.tv_bill_analysis_title);
tvBillNum = view.findViewById(R.id.tv_report_bill_number);
tvBillAverage = view.findViewById(R.id.tv_report_bill_average_price);
tvPeople = view.findViewById(R.id.tv_report_people_number);
tvPeopleAvgPrice = view.findViewById(R.id.tv_report_people_average_price);
View horizontalLine = view.findViewById(R.id.horizontal_dividing_line);
View verticalLine= view.findViewById(R.id.vertical_dividing_line);
if (isPrint) {
tvTitle.setTextSize(30);
((TextView)view.findViewById(R.id.tv_bill_number_text)).setTextSize(26);
((TextView)view.findViewById(R.id.tv_people_text)).setTextSize(26);
tvBillNum.setTextSize(28);
tvBillAverage.setTextSize(20);
tvPeople.setTextSize(28);
tvPeopleAvgPrice.setTextSize(20);
horizontalLine.setBackgroundColor(ContextCompat.getColor(mContext, R.color.black));
verticalLine.setBackgroundColor(ContextCompat.getColor(mContext, R.color.black));
}
setData(dataBean);
addView(view);
}
public void setData(DaySalesReportBean.DataBean dataBean){
tvBillNum.setText(dataBean.getBillNum() + "");
tvBillAverage.setText("單均價:$" + MoneyUtil.divide(dataBean.getFoodAmount(), dataBean.getBillNum()));
tvPeople.setText(dataBean.getBillPerson() + "");
tvPeopleAvgPrice.setText("人均價:$" + MoneyUtil.divide(dataBean.getFoodAmount(), dataBean.getBillPerson()));
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessBean;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.BusinessInfoAdapter;
import java.util.List;
/**
* 每日營業詳情
*/
public class DailyBusinessView extends FrameLayout {
private boolean isPrint = false;
private BusinessInfoAdapter printBusinessInfoAdapter;
private List<BusinessBean> businessBeans;
private RecyclerView mBusinessDetails;
private Context mContext;
public DailyBusinessView(@NonNull Context context) {
this(context, null);
}
public DailyBusinessView(@NonNull Context context, boolean isPrint, List<BusinessBean> businessBeans) {
super(context, null);
this.isPrint = isPrint;
this.businessBeans = businessBeans;
this.mContext = context;
init(mContext);
}
public DailyBusinessView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, -1);
}
public DailyBusinessView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context mContext) {
this.mContext = mContext;
View view = View.inflate(mContext, R.layout.layout_report_daily_business_details, null);
TextView tvTitle = view.findViewById(R.id.tv_daily_business_statement_title);
TextView tvRestaurantName = view.findViewById(R.id.tv_restaurant_name);
View horizontalLine = view.findViewById(R.id.horizontal_dividing_line);
mBusinessDetails = view.findViewById(R.id.rv_business_details);
tvRestaurantName.setText(GsaCloudApplication.getRestaurantName(mContext));
if (isPrint) {
tvRestaurantName.setTextSize(24);
tvTitle.setTextSize(30);
horizontalLine.setBackgroundColor(ContextCompat.getColor(mContext, R.color.black));
}
notifyData(businessBeans);
addView(view);
}
public void notifyData(List<BusinessBean> businessBeans){
if (printBusinessInfoAdapter == null) {
mBusinessDetails.setLayoutManager(new GridLayoutManager(mContext, 3) {
@Override
public boolean canScrollVertically() {
return false;
}
});
printBusinessInfoAdapter = new BusinessInfoAdapter(businessBeans, isPrint);
mBusinessDetails.setAdapter(printBusinessInfoAdapter);
} else {
printBusinessInfoAdapter.setNewInstance(businessBeans);
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.DailyReportBean;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.DailyBusinessAdapter;
import java.util.List;
public class OperatingReportView extends FrameLayout {
private boolean isPrint = false;
private DailyBusinessAdapter adapter;
public OperatingReportView(@NonNull Context context) {
this(context, null);
}
public OperatingReportView(@NonNull Context context, boolean isPrint, String title, List<DailyReportBean> dailyReportBeans, int spanCount) {
super(context, null);
this.isPrint = isPrint;
init(context, title, dailyReportBeans, spanCount);
}
public OperatingReportView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, -1);
}
public OperatingReportView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void init(Context mContext, String title, List<DailyReportBean> dailyReportBeans, int spanCount) {
View view = View.inflate(mContext, R.layout.layout_report_net_operating_value_details, null);
TextView tvTitle = view.findViewById(R.id.tv_report_title);
tvTitle.setText(title);
RecyclerView rv = view.findViewById(R.id.rv_business_details);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext) {
@Override
public boolean canScrollVertically() {
return false;
}
};
rv.setLayoutManager(linearLayoutManager);
adapter = new DailyBusinessAdapter(mContext, dailyReportBeans, spanCount, isPrint);
rv.setAdapter(adapter);
if (isPrint) {
tvTitle.setTextSize(30);
}
notifyData(dailyReportBeans);
addView(view);
}
public void notifyData(List<DailyReportBean> dailyReportBeans){
adapter.setNewInstance(dailyReportBeans);
}
}
<?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:id="@+id/layout_public_report"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include layout="@layout/include_horizontal_color_e8_dividing_line" />
<LinearLayout
android:layout_width="match_parent"
android:gravity="center_vertical"
android:layout_height="wrap_content"
android:minHeight="@dimen/dp_35"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_public_one"
style="@style/main_daily_business_statement_item_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_5"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
android:layout_weight="1"
tools:text="支付統計" />
<include layout="@layout/include_vertical_color_e8_dividing_line" />
<TextView
android:id="@+id/tv_public_two"
style="@style/main_daily_business_statement_item_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
android:layout_weight="1"
tools:text="賬單數量" />
<include layout="@layout/include_vertical_color_e8_dividing_line" />
<TextView
android:id="@+id/tv_public_three"
style="@style/main_daily_business_statement_item_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
android:layout_weight="1"
tools:text="佔比(%)" />
<include layout="@layout/include_vertical_color_e8_dividing_line" />
<TextView
android:id="@+id/tv_public_four"
style="@style/main_daily_business_statement_item_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
tools:text="金額" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.lihang.ShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_business_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
app:hl_cornerRadius="@dimen/dp_8"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_bill_analysis_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
style="@style/main_daily_business_statement_title"
android:text="賬單分析"
android:layout_marginBottom="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15" />
<include
layout="@layout/include_horizontal_color_e8_dividing_line"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingBottom="@dimen/dp_10"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_bill_number_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#3B3B3B"
android:layout_marginTop="@dimen/dp_5"
android:text="賬單數量" />
<TextView
android:id="@+id/tv_report_bill_number"
android:layout_width="wrap_content"
style="@style/main_daily_business_statement_title"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
tools:text="10000" />
<TextView
android:id="@+id/tv_report_bill_average_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
tools:text="單均價:$100.00" />
</LinearLayout>
<include layout="@layout/include_vertical_color_e8_dividing_line" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="@dimen/dp_10"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_people_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#3B3B3B"
android:layout_marginTop="@dimen/dp_5"
android:text="人數" />
<TextView
android:id="@+id/tv_report_people_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
style="@style/main_daily_business_statement_title"
tools:text="200" />
<TextView
android:id="@+id/tv_report_people_average_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
tools:text="人均價:$98" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</com.lihang.ShadowLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.lihang.ShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout_business_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginRight="@dimen/dp_7"
app:hl_cornerRadius="@dimen/dp_8"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_daily_business_statement_title"
style="@style/main_daily_business_statement_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:text="每日營業詳情" />
<!-- <TextView-->
<!-- android:id="@+id/tv_end_time"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="2020-02-14"-->
<!-- android:textColor="#181818"-->
<!-- android:textSize="@dimen/sp_10" />-->
<!-- <com.gingersoft.gsa.cloud.ui.view.TriangleView-->
<!-- android:id="@+id/iv_end_time_triangle"-->
<!-- android:layout_width="@dimen/dp_8"-->
<!-- android:layout_height="@dimen/dp_5"-->
<!-- android:layout_marginLeft="@dimen/dp_2"-->
<!-- app:trv_direction="bottom" />-->
</LinearLayout>
<TextView
android:id="@+id/tv_restaurant_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_10"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="餐廳名稱"
android:textColor="#3c3c3c"
android:textSize="@dimen/dp_16" />
<include
layout="@layout/include_horizontal_color_e8_dividing_line"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_0_5"
android:layout_marginTop="@dimen/dp_10" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_business_details"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</com.lihang.ShadowLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.lihang.ShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_business_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hl_cornerRadius="@dimen/dp_8"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_15"
android:orientation="vertical">
<TextView
android:id="@+id/tv_report_title"
style="@style/main_daily_business_statement_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
tools:text="營業金額淨值詳情" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_business_details"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_15"/>
</LinearLayout>
</com.lihang.ShadowLayout>
\ No newline at end of file
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_5" android:layout_marginRight="@dimen/dp_5"
android:textColor="@color/theme_color" android:textColor="@color/color_3b"
android:textSize="@dimen/dp_20" /> android:textSize="@dimen/dp_20" />
<TextView <TextView
...@@ -30,13 +30,13 @@ ...@@ -30,13 +30,13 @@
android:layout_marginRight="@dimen/dp_5" android:layout_marginRight="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_20"
android:layout_weight="1" android:layout_weight="1"
android:textColor="@color/color_3c" android:textColor="@color/color_3b"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_12" />
<include layout="@layout/include_horizontal_color_ccc_dividing_line" /> <include layout="@layout/include_horizontal_color_e8_dividing_line" />
</LinearLayout> </LinearLayout>
<include layout="@layout/include_vertical_color_ccc_dividing_line" /> <include layout="@layout/include_vertical_color_e8_dividing_line" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -8,5 +8,15 @@ ...@@ -8,5 +8,15 @@
<item name="colorAccent">@color/main_colorAccent</item> <item name="colorAccent">@color/main_colorAccent</item>
</style> </style>
<style name="main_daily_business_statement_item_textStyle">
<item name="android:textColor">#3B3B3B</item>
<item name="android:textSize">@dimen/dp_14</item>
<item name="android:gravity">center</item>
</style>
<style name="main_daily_business_statement_title">
<item name="android:textColor">@color/color_18</item>
<item name="android:textSize">@dimen/dp_18</item>
<item name="android:textStyle">bold</item>
</style>
</resources> </resources>
...@@ -7,12 +7,36 @@ import com.billy.cc.core.component.CC; ...@@ -7,12 +7,36 @@ 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.function.FModule;
import com.gingersoft.gsa.other_order_mode.service.GetInfoUpdateService; import com.gingersoft.gsa.other_order_mode.service.GetInfoUpdateService;
import com.gingersoft.gsa.other_order_mode.ui.activity.OtherOrderActivity; import com.gingersoft.gsa.other_order_mode.ui.activity.OtherOrderActivity;
public class OtherOrderComponent implements IComponent { public class OtherOrderComponent implements IComponent {
public static class takeaway{
public static final String CONFIRM_BTN_KEY = "takeaway/orderDetails/btn/confirmOrder";
public static final String PRODUCTION_COMPLETED_BTN_KEY = "takeaway/orderDetails/btn/ProductionCompleted";
public static final String CANCEL_ORDER_BTN_KEY = "takeaway/orderDetails/btn/cancelOrder";
public static final String PRINT_ORDER_BTN_KEY = "takeaway/orderDetails/btn/printOrder";
public static final String LOGISTICS_BTN_KEY = "takeaway/orderDetails/btn/logistics";
public static final String ASSIGNDELIVERY_BTN_KEY = "takeaway/orderDetails/btn/assignDelivery";
public static final String CLOSING_BTN_KEY = "takeaway/orderDetails/btn/closing";
public static final String TRANSPORTATION_BTN_KEY = "takeaway/orderDetails/btn/transportation";
/** 外送/自取- 訂單詳情管理 */
public static final FModule[] orderDetails = {
new FModule(CONFIRM_BTN_KEY, 0, 0),
new FModule(PRODUCTION_COMPLETED_BTN_KEY, 0, 0),
new FModule(CANCEL_ORDER_BTN_KEY, 0, 0),
new FModule(PRINT_ORDER_BTN_KEY, 0, 0),
new FModule(LOGISTICS_BTN_KEY, 0, 0),
new FModule(ASSIGNDELIVERY_BTN_KEY, 0, 0),
new FModule(CLOSING_BTN_KEY, 0, 0),
new FModule(TRANSPORTATION_BTN_KEY, 0, 0),
};
}
@Override @Override
public String getName() { public String getName() {
......
package com.gingersoft.gsa.other_order_mode.data.model.bean package com.gingersoft.gsa.other_order_mode.data.model.bean
import com.gingersoft.gsa.cloud.database.bean.Function
import com.gingersoft.gsa.other_order_mode.OtherOrderComponent
import com.gingersoft.gsa.other_order_mode.R import com.gingersoft.gsa.other_order_mode.R
class BtnBuilder { class BtnBuilder(var functions: List<Function>) {
companion object { companion object {
val sureBtn = 0 val SureBtn = 0
val cancelBtn = 1 val CancelBtn = 1
val printBtn = 2 val PrintBtn = 2
val logisticsBtn = 3 val LogisticsBtn = 3
val assignDeliveryBtn = 4 val AssignDeliveryBtn = 4
val closingBtn = 5 val ClosingBtn = 5
val ProductionCompletedBtn = 6 val ProductionCompletedBtn = 6
val TransportationBtn = 7//選擇運輸工具 val TransportationBtn = 7//選擇運輸工具
@Volatile
private var instance: BtnBuilder? = null
fun getInstance(functions: List<Function>) = instance ?: synchronized(this) {
instance ?: BtnBuilder(functions).also { instance = it }
}
} }
class BtnBean(val type: Int, val btnContent: String, val btnColor: Int, val btnImg: Int) class BtnBean(val type: Int, val btnContent: String, val btnColor: Int, val btnImg: Int)
fun getSureBtn(): BtnBean { fun getSureBtn(): BtnBean? {
return BtnBean(sureBtn, "確認訂單", R.color.other_order_details_sure_btn_color, R.drawable.ic_sure) return getBtn(OtherOrderComponent.takeaway.CONFIRM_BTN_KEY, SureBtn, "確認訂單", R.color.other_order_details_sure_btn_color, R.drawable.ic_sure)
} }
fun getProductionCompletedBtn(): BtnBean { fun getProductionCompletedBtn(): BtnBean? {
return BtnBean(ProductionCompletedBtn, "製作完成", R.color.other_order_details_sure_btn_color, R.drawable.ic_sure) return getBtn(OtherOrderComponent.takeaway.PRODUCTION_COMPLETED_BTN_KEY, ProductionCompletedBtn, "製作完成", R.color.other_order_details_sure_btn_color, R.drawable.ic_sure)
} }
fun getCancelBtn(): BtnBean { fun getCancelBtn(): BtnBean? {
return BtnBean(cancelBtn, "取消訂單", R.color.other_order_details_cancel_btn_color, R.drawable.ic_cancel) return getBtn(OtherOrderComponent.takeaway.CANCEL_ORDER_BTN_KEY, CancelBtn, "取消訂單", R.color.other_order_details_cancel_btn_color, R.drawable.ic_cancel)
} }
fun getPrintBtn(): BtnBean { fun getPrintBtn(): BtnBean? {
return BtnBean(printBtn, "打印訂單", R.color.other_order_details_print_btn_color, R.drawable.ic_print) return getBtn(OtherOrderComponent.takeaway.PRINT_ORDER_BTN_KEY, PrintBtn, "打印訂單", R.color.other_order_details_print_btn_color, R.drawable.ic_print)
} }
fun getLogisticsBtn(): BtnBean { fun getLogisticsBtn(): BtnBean? {
return BtnBean(logisticsBtn, "取消物流", R.color.other_order_details_cancel_logistics_btn_color, R.drawable.ic_logistics) return getBtn(OtherOrderComponent.takeaway.LOGISTICS_BTN_KEY, LogisticsBtn, "取消物流", R.color.other_order_details_cancel_logistics_btn_color, R.drawable.ic_logistics)
} }
fun getAssignDeliveryBtn(): BtnBean { fun getAssignDeliveryBtn(): BtnBean? {
return BtnBean(assignDeliveryBtn, "指派送貨", R.color.other_order_details_sure_btn_color, R.drawable.ic_deliveryman) return getBtn(OtherOrderComponent.takeaway.ASSIGNDELIVERY_BTN_KEY, AssignDeliveryBtn, "指派送貨", R.color.other_order_details_sure_btn_color, R.drawable.ic_deliveryman)
} }
fun getClosingBtn(): BtnBean { fun getClosingBtn(): BtnBean? {
return BtnBean(closingBtn, "結賬", R.color.other_order_details_cancel_btn_color, R.drawable.ic_closing) return getBtn(OtherOrderComponent.takeaway.CLOSING_BTN_KEY, ClosingBtn, "結賬", R.color.other_order_details_cancel_btn_color, R.drawable.ic_closing)
} }
fun getTransportationBtn():BtnBean{ fun getTransportationBtn(): BtnBean? {
return BtnBean(TransportationBtn, "運輸工具", R.color.other_order_details_cancel_logistics_btn_color, R.drawable.ic_logistics) return getBtn(OtherOrderComponent.takeaway.TRANSPORTATION_BTN_KEY, TransportationBtn, "運輸工具", R.color.other_order_details_cancel_logistics_btn_color, R.drawable.ic_logistics)
} }
fun getBtn(key:String, btnCode:Int, btnContent: String,btnColor: Int, btnImg: Int): BtnBean? {
for (value in functions) {
if (value.resUrl == key) {
return if (value.status == 3) {
BtnBean(btnCode, btnContent, R.color.color_ccc, btnImg)
} else {
BtnBean(btnCode, btnContent, btnColor, btnImg)
}
}
}
return null
}
} }
...@@ -9,16 +9,16 @@ ...@@ -9,16 +9,16 @@
<ImageView <ImageView
android:id="@+id/iv_btn_mark" android:id="@+id/iv_btn_mark"
android:layout_width="@dimen/dp_19" android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_19"/> android:layout_height="@dimen/dp_18"/>
<TextView <TextView
android:id="@+id/tv_btn_content" android:id="@+id/tv_btn_content"
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_5" android:layout_marginLeft="@dimen/dp_4"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/dp_16" /> android:textSize="@dimen/dp_14" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -84,8 +84,6 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -84,8 +84,6 @@ public class PrjService extends Service implements ReceiveListener {
initUsbPrint(); initUsbPrint();
} }
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this; mContext = this;
......
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