Commit 922cde77 by 宁斌

bbpos結賬單,qrcode打印處理

parent d7c21e36
...@@ -52,7 +52,8 @@ buildscript { ...@@ -52,7 +52,8 @@ buildscript {
dependencies { dependencies {
// api project(':qm-skin-maker') //fragmentation
api project(':fragmentation_core')
//support //support
api(rootProject.ext.dependencies["support-v4"]) { api(rootProject.ext.dependencies["support-v4"]) {
exclude module: 'support-annotations' exclude module: 'support-annotations'
...@@ -140,11 +141,6 @@ dependencies { ...@@ -140,11 +141,6 @@ dependencies {
//可長按拖動 側滑刪除的recyclerview //可長按拖動 側滑刪除的recyclerview
api rootProject.ext.dependencies["yzjRecyclerView"] api rootProject.ext.dependencies["yzjRecyclerView"]
//fragmentation
api project(':fragmentation_core')
// api rootProject.ext.dependencies["fragmentation"]
// api rootProject.ext.dependencies["fragmentation-core"]
// api rootProject.ext.dependencies["fragmentation-swipeback"]
//test //test
api rootProject.ext.dependencies["timber"] api rootProject.ext.dependencies["timber"]
implementation rootProject.ext.dependencies["retrofit-url-manager"] implementation rootProject.ext.dependencies["retrofit-url-manager"]
...@@ -153,6 +149,7 @@ dependencies { ...@@ -153,6 +149,7 @@ dependencies {
// testApi rootProject.ext.dependencies["junit"] // testApi rootProject.ext.dependencies["junit"]
api rootProject.ext.dependencies["immersionbar-components"] api rootProject.ext.dependencies["immersionbar-components"]
api rootProject.ext.dependencies["immersionbar"] api rootProject.ext.dependencies["immersionbar"]
} }
......
...@@ -13,6 +13,9 @@ public class BrandInfo { ...@@ -13,6 +13,9 @@ public class BrandInfo {
private int brandId; private int brandId;
private String brandName; private String brandName;
public BrandInfo() {
}
public BrandInfo(int brandId, String brandName) { public BrandInfo(int brandId, String brandName) {
this.brandId = brandId; this.brandId = brandId;
this.brandName = brandName; this.brandName = brandName;
......
...@@ -15,6 +15,9 @@ public class RestaurantInfo { ...@@ -15,6 +15,9 @@ public class RestaurantInfo {
private String restaurantName; private String restaurantName;
private String gsPosShopId; private String gsPosShopId;
public RestaurantInfo() {
}
public RestaurantInfo(int restaurantId, String restaurantName, String gsPosShopId) { public RestaurantInfo(int restaurantId, String restaurantName, String gsPosShopId) {
this.restaurantId = restaurantId; this.restaurantId = restaurantId;
this.restaurantName = restaurantName; this.restaurantName = restaurantName;
......
package com.gingersoft.gsa.cloud.account.restaurant; package com.gingersoft.gsa.cloud.account.restaurant;
import android.text.TextUtils; import android.text.TextUtils;
import com.gingersoft.gsa.cloud.account.user.UserConstans; import com.gingersoft.gsa.cloud.account.user.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
...@@ -23,8 +24,18 @@ public class ResturantInfoManager { ...@@ -23,8 +24,18 @@ public class ResturantInfoManager {
*/ */
private RestaurantInfo restaurantInfo; private RestaurantInfo restaurantInfo;
private ResturantInfoManager() { private ResturantInfoManager() {
if (brandInfo == null) {
brandInfo = new BrandInfo();
}
if (restaurantInfo == null) {
restaurantInfo = new RestaurantInfo();
}
brandInfo.setBrandId((Integer) SPUtils.get(UserConstans.brandId, 0));
brandInfo.setBrandName((String) SPUtils.get(UserConstans.brandName, ""));
restaurantInfo.setGsPosShopId((String) SPUtils.get(UserConstans.gsPosShopId, "-1"));
restaurantInfo.setRestaurantId((Integer) SPUtils.get(UserConstans.restaurantId, 0));
restaurantInfo.setRestaurantName((String) SPUtils.get(UserConstans.restaurantName, ""));
} }
public static ResturantInfoManager newInstance() { public static ResturantInfoManager newInstance() {
...@@ -38,35 +49,35 @@ public class ResturantInfoManager { ...@@ -38,35 +49,35 @@ public class ResturantInfoManager {
if (restaurantInfo != null) { if (restaurantInfo != null) {
return restaurantInfo.getRestaurantId(); return restaurantInfo.getRestaurantId();
} }
return 0; return (int) SPUtils.get(UserConstans.restaurantId, 0);
} }
public String getGsPosShopId() { public String getGsPosShopId() {
if (restaurantInfo != null) { if (restaurantInfo != null) {
return restaurantInfo.getGsPosShopId(); return restaurantInfo.getGsPosShopId();
} }
return "-1"; return (String) SPUtils.get(UserConstans.gsPosShopId, "-1");
} }
public String getRestaurantName() { public String getRestaurantName() {
if (restaurantInfo != null) { if (restaurantInfo != null) {
return restaurantInfo.getRestaurantName(); return restaurantInfo.getRestaurantName();
} }
return ""; return (String) SPUtils.get(UserConstans.restaurantName, "");
} }
public int getBrandId() { public int getBrandId() {
if (brandInfo != null) { if (brandInfo != null) {
return brandInfo.getBrandId(); return brandInfo.getBrandId();
} }
return 0; return (int) SPUtils.get(UserConstans.brandId, 0);
} }
public String getBrandName() { public String getBrandName() {
if (brandInfo != null) { if (brandInfo != null) {
return brandInfo.getBrandName(); return brandInfo.getBrandName();
} }
return ""; return (String) SPUtils.get(UserConstans.brandName, "");
} }
public void setResturantInfo(RestaurantInfo info) { public void setResturantInfo(RestaurantInfo info) {
...@@ -114,5 +125,4 @@ public class ResturantInfoManager { ...@@ -114,5 +125,4 @@ public class ResturantInfoManager {
SPUtils.put(UserConstans.brandRestaurantInfos, brandRestaurantIds); SPUtils.put(UserConstans.brandRestaurantInfos, brandRestaurantIds);
} }
} }
...@@ -34,6 +34,12 @@ public class UserContext { ...@@ -34,6 +34,12 @@ public class UserContext {
private UserContext() { private UserContext() {
if (info == null) {
info = new UserInfo();
}
info.setToken((String) SPUtils.get(UserConstans.token, ""));
info.setUserId((Integer) SPUtils.get(UserConstans.memberId, 0));
info.setUserName((String) SPUtils.get(UserConstans.memberName, ""));
} }
public static UserContext newInstance() { public static UserContext newInstance() {
...@@ -67,21 +73,21 @@ public class UserContext { ...@@ -67,21 +73,21 @@ public class UserContext {
if (info != null) { if (info != null) {
return info.getToken(); return info.getToken();
} }
return ""; return (String) SPUtils.get(UserConstans.token, "");
} }
public int getMemberId() { public int getMemberId() {
if (info != null) { if (info != null) {
return info.getUserId(); return info.getUserId();
} }
return 0; return (int) SPUtils.get(UserConstans.memberId, 0);
} }
public String getMemberName() { public String getMemberName() {
if (info != null) { if (info != null) {
return info.getUserName(); return info.getUserName();
} }
return ""; return (String) SPUtils.get(UserConstans.memberName, "");
} }
public void setUserInfo(UserInfo info) { public void setUserInfo(UserInfo info) {
......
package com.gingersoft.gsa.cloud.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-03-10
* 修订历史:2020-03-10
* 描述:
*/
@Data
public class SettlementReport implements Parcelable {
/**
* yesterdayTime : 2020-03-12 19:19:44
* 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 String yesterdayTime;
private VoBean vo;
private RestaurantOperationBean restaurantOperation;
private List<AnalysisBean> analysis;
private List<CashBean> cash;
private String currentTime;
private String startTime;
public SettlementReport() {
}
@Data
public static class VoBean implements Parcelable {
/**
* prices : 256
* scamount : 0
* disamount : 0
* payNum : 0
* payamount : 0
* tipnum : 0
* tipsPrice : 0
* totamount : 256
* deliverycharge : 0
* num : 2
* person : 7
*/
private double prices;
private double scamount;
private double disamount;
private int payNum;
private double payamount;
private int tipnum;
private double tipsPrice;
private double totamount;
private double deliverycharge;
private int num;
private int person;
public VoBean() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeDouble(this.prices);
dest.writeDouble(this.scamount);
dest.writeDouble(this.disamount);
dest.writeInt(this.payNum);
dest.writeDouble(this.payamount);
dest.writeInt(this.tipnum);
dest.writeDouble(this.tipsPrice);
dest.writeDouble(this.totamount);
dest.writeDouble(this.deliverycharge);
dest.writeInt(this.num);
dest.writeInt(this.person);
}
protected VoBean(Parcel in) {
this.prices = in.readDouble();
this.scamount = in.readDouble();
this.disamount = in.readDouble();
this.payNum = in.readInt();
this.payamount = in.readDouble();
this.tipnum = in.readInt();
this.tipsPrice = in.readDouble();
this.totamount = in.readDouble();
this.deliverycharge = in.readDouble();
this.num = in.readInt();
this.person = in.readInt();
}
public static final Creator<VoBean> CREATOR = new Creator<VoBean>() {
@Override
public VoBean createFromParcel(Parcel source) {
return new VoBean(source);
}
@Override
public VoBean[] newArray(int size) {
return new VoBean[size];
}
};
}
@Data
public static class RestaurantOperationBean implements Parcelable {
/**
* id : 11
* uid : 297
* restaurantId : 410
* type : 1
* openTime : 1583919880776
* operationTime : 1583922285557
* createTime : 1583922285557
*/
private int id;
private int uid;
private int restaurantId;
private int type;
private long openTime;
private long operationTime;
private long createTime;
public RestaurantOperationBean() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.id);
dest.writeInt(this.uid);
dest.writeInt(this.restaurantId);
dest.writeInt(this.type);
dest.writeLong(this.openTime);
dest.writeLong(this.operationTime);
dest.writeLong(this.createTime);
}
protected RestaurantOperationBean(Parcel in) {
this.id = in.readInt();
this.uid = in.readInt();
this.restaurantId = in.readInt();
this.type = in.readInt();
this.openTime = in.readLong();
this.operationTime = in.readLong();
this.createTime = in.readLong();
}
public static final Creator<RestaurantOperationBean> CREATOR = new Creator<RestaurantOperationBean>() {
@Override
public RestaurantOperationBean createFromParcel(Parcel source) {
return new RestaurantOperationBean(source);
}
@Override
public RestaurantOperationBean[] newArray(int size) {
return new RestaurantOperationBean[size];
}
};
}
@Data
public static class AnalysisBean implements Parcelable {
/**
* typeName : 堂食
* num : 3
* person : 2
* amount : 678
*/
private String typeName;
private int num;
private int person;
private double amount;
public AnalysisBean() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.typeName);
dest.writeInt(this.num);
dest.writeInt(this.person);
dest.writeDouble(this.amount);
}
protected AnalysisBean(Parcel in) {
this.typeName = in.readString();
this.num = in.readInt();
this.person = in.readInt();
this.amount = in.readDouble();
}
public static final Creator<AnalysisBean> CREATOR = new Creator<AnalysisBean>() {
@Override
public AnalysisBean createFromParcel(Parcel source) {
return new AnalysisBean(source);
}
@Override
public AnalysisBean[] newArray(int size) {
return new AnalysisBean[size];
}
};
}
@Data
public static class CashBean implements Parcelable {
/**
* payName : 現金
* payNum : 2
* payAmount : 256
* payType : 1001
*/
private String payName;
private int payNum;
private double payAmount;
private int payType;
public CashBean() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.payName);
dest.writeInt(this.payNum);
dest.writeDouble(this.payAmount);
dest.writeInt(this.payType);
}
protected CashBean(Parcel in) {
this.payName = in.readString();
this.payNum = in.readInt();
this.payAmount = in.readDouble();
this.payType = in.readInt();
}
public static final Creator<CashBean> CREATOR = new Creator<CashBean>() {
@Override
public CashBean createFromParcel(Parcel source) {
return new CashBean(source);
}
@Override
public CashBean[] newArray(int size) {
return new CashBean[size];
}
};
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.yesterdayTime);
dest.writeParcelable(this.vo, flags);
dest.writeParcelable(this.restaurantOperation, flags);
dest.writeTypedList(this.analysis);
dest.writeTypedList(this.cash);
dest.writeString(this.currentTime);
dest.writeString(this.startTime);
}
protected SettlementReport(Parcel in) {
this.yesterdayTime = in.readString();
this.vo = in.readParcelable(VoBean.class.getClassLoader());
this.restaurantOperation = in.readParcelable(RestaurantOperationBean.class.getClassLoader());
this.analysis = in.createTypedArrayList(AnalysisBean.CREATOR);
this.cash = in.createTypedArrayList(CashBean.CREATOR);
this.currentTime = in.readString();
this.startTime = in.readString();
}
public static final Creator<SettlementReport> CREATOR = new Creator<SettlementReport>() {
@Override
public SettlementReport createFromParcel(Parcel source) {
return new SettlementReport(source);
}
@Override
public SettlementReport[] newArray(int size) {
return new SettlementReport[size];
}
};
}
...@@ -17,7 +17,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler { ...@@ -17,7 +17,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
@Override @Override
public Response onHttpResultResponse(String httpResult, Interceptor.Chain chain, Response response) { public Response onHttpResultResponse(String httpResult, Interceptor.Chain chain, Response response) {
// 统一处理http响应。eg:状态码不是200时,根据状态码做相应的处理。 // 统一处理http响应。eg:状态码不是200时,根据状态码做相应的处理。
LoganManager.w_network(httpResult); LoganManager.w_network("發送請求: "+httpResult);
return response; return response;
} }
...@@ -25,7 +25,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler { ...@@ -25,7 +25,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
public Request onHttpRequestBefore(Interceptor.Chain chain, Request request) { public Request onHttpRequestBefore(Interceptor.Chain chain, Request request) {
// 统一处理http请求。eg:给request统一添加token或者header以及参数加密等操作 // 统一处理http请求。eg:给request统一添加token或者header以及参数加密等操作
String requestReult = request.toString(); String requestReult = request.toString();
LoganManager.w_network(requestReult); LoganManager.w_network("接收請求: "+requestReult);
return chain.request().newBuilder() return chain.request().newBuilder()
.build(); .build();
} }
......
package com.gingersoft.gsa.cloud.function; package com.gingersoft.gsa.cloud.function;
import com.gingersoft.gsa.cloud.function.jump.ActivityJumpBean;
import com.gingersoft.gsa.cloud.function.jump.ActivityJumpBean;
import lombok.Data; import lombok.Data;
/** /**
......
package com.gingersoft.gsa.cloud.function; package com.gingersoft.gsa.cloud.function;
import android.app.Activity;
import android.content.Context;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import java.util.List; import java.util.List;
...@@ -15,8 +12,6 @@ import java.util.List; ...@@ -15,8 +12,6 @@ import java.util.List;
*/ */
public interface XFunctionAction { public interface XFunctionAction {
void inJectFunctionAnnoations(Object view,Class<?> functionModules);
List<Function> getFunctionItems(String targetResKey,FModule[] fModules); List<Function> getFunctionItems(String targetResKey,FModule[] fModules);
Function getFunctionItem(String targetResKey,FModule fModules); Function getFunctionItem(String targetResKey,FModule fModules);
......
package com.gingersoft.gsa.cloud.function; package com.gingersoft.gsa.cloud.function;
import android.app.Activity; import android.app.Activity;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.base.utils.ReflectionUtils;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
...@@ -17,8 +15,6 @@ import java.util.Iterator; ...@@ -17,8 +15,6 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import butterknife.BindView;
/** /**
* @author : bin * @author : bin
* @create date: 2020-11-23 * @create date: 2020-11-23
...@@ -45,8 +41,7 @@ public class XFunctionManager implements XFunctionAction { ...@@ -45,8 +41,7 @@ public class XFunctionManager implements XFunctionAction {
} }
@Override public static void inJect(Object rootView, Class<?> functionModules) {
public void inJectFunctionAnnoations(Object rootView, Class<?> functionModules) {
Map<String, FModule[]> FModuleValues = new HashMap<>(); Map<String, FModule[]> FModuleValues = new HashMap<>();
Map<String, FModule> FModuleValue = new HashMap<>(); Map<String, FModule> FModuleValue = new HashMap<>();
...@@ -101,23 +96,39 @@ public class XFunctionManager implements XFunctionAction { ...@@ -101,23 +96,39 @@ public class XFunctionManager implements XFunctionAction {
if (annotation instanceof XFunctionViews) { if (annotation instanceof XFunctionViews) {
XFunctionViews functionViews = (XFunctionViews) annotation; XFunctionViews functionViews = (XFunctionViews) annotation;
String value = functionViews.value(); String value = functionViews.value();
boolean filterParent = functionViews.filterParent();
if (FModuleValues.containsKey(value)) { if (FModuleValues.containsKey(value)) {
//功能組 拿到對應的key去匹配 //功能組 拿到對應的key去匹配
List<Function> functions = getFunctionItems(value, FModuleValues.get(value)); List<Function> functions = XFunctionManager.newInstance().getFunctionItems(value, FModuleValues.get(value));
if (filterParent) {
for (int j = functions.size() - 1; j >= 0; j--) {
if (functions.get(j).getParentId() == 0) {
//過濾掉父級
functions.remove(j);
}
break;
}
}
try { try {
String name = field.getName();
//設置功能組數據源 //設置功能組數據源
ReflectionUtils.setField(rootView.getClass(), name, field.get(name), functions); List<Function> functionList = (List<Function>) field.get(rootView);
} catch (NoSuchFieldException e) { if (functionList == null) {
e.printStackTrace(); functionList = new ArrayList<>();
}
functionList.addAll(functions);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
} finally {
if (functions != null && functions.size() > 0) {
functions.clear();
functions = null;
}
} }
} }
} else if (annotation instanceof XFunctionView) { } else if (annotation instanceof XFunctionView) {
XFunctionView functionView = (XFunctionView) annotation; XFunctionView functionView = (XFunctionView) annotation;
String value = functionView.value(); String value = functionView.value();
int viewResId = functionView.viewId(); int viewResId = functionView.viewId();
if (viewResId == 0) { if (viewResId == 0) {
//控制單個功能 顯示隱藏需要viewId配合 //控制單個功能 顯示隱藏需要viewId配合
continue; continue;
...@@ -145,8 +156,8 @@ public class XFunctionManager implements XFunctionAction { ...@@ -145,8 +156,8 @@ public class XFunctionManager implements XFunctionAction {
} }
@Override @Override
public List<Function> getFunctionItems(String targetResKey, FModule[] fModules) { public ArrayList<Function> getFunctionItems(String targetResKey, FModule[] fModules) {
List<Function> functionList = new ArrayList<>(); ArrayList<Function> functionList = new ArrayList<>();
if (mFunctionMap.size() == 0) { if (mFunctionMap.size() == 0) {
return functionList; return functionList;
} }
...@@ -157,7 +168,8 @@ public class XFunctionManager implements XFunctionAction { ...@@ -157,7 +168,8 @@ public class XFunctionManager implements XFunctionAction {
//獲取具體的功能組,如table/bottom/init下的table/bottom組 //獲取具體的功能組,如table/bottom/init下的table/bottom組
String[] keyRes = resUrl.split("/"); String[] keyRes = resUrl.split("/");
if (keyRes.length > 1) { if (keyRes.length > 1) {
resUrl = resUrl.substring(0, keyRes[keyRes.length - 1].length()); int endIndex = resUrl.length() - (keyRes[keyRes.length - 1].length());
resUrl = resUrl.substring(0, endIndex);
if (resUrl.startsWith(targetResKey)) { if (resUrl.startsWith(targetResKey)) {
/** /**
* 匹配功能組成功{@link XFunctionItems} * 匹配功能組成功{@link XFunctionItems}
......
...@@ -18,4 +18,10 @@ import java.lang.annotation.Target; ...@@ -18,4 +18,10 @@ import java.lang.annotation.Target;
public @interface XFunctionViews { public @interface XFunctionViews {
String value(); String value();
/**
* 過濾父級,一般為功能組名
* @return
*/
boolean filterParent() default true;
} }
package com.gingersoft.gsa.cloud.function.jump; package com.gingersoft.gsa.cloud.function.jump;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import com.gingersoft.gsa.cloud.database.bean.Function;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.gingersoft.gsa.cloud.function.jump; package com.gingersoft.gsa.cloud.function.jump;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.database.bean.Function;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author : bin * @author : bin
......
package com.gingersoft.gsa.cloud.function.jump; package com.gingersoft.gsa.cloud.function.jump;
import android.content.Context; import android.content.Context;
import android.content.Intent;
/** /**
* @author : bin * @author : bin
* @create date: 2020-11-26 * @create date: 2020-11-26
* @update date: 2020-11-26 * @update date: 2020-11-26
* @description:統一頁面跳轉接口 , 避免一堆if else,switch * @description:統一頁面跳轉接口
*/ */
public interface ActivityJumpStrategy { public interface ActivityJumpStrategy {
......
package com.gingersoft.gsa.cloud.function.jump; package com.gingersoft.gsa.cloud.function.jump;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.text.TextUtils; import android.text.TextUtils;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
...@@ -14,7 +13,6 @@ import com.billy.cc.core.component.CC; ...@@ -14,7 +13,6 @@ import com.billy.cc.core.component.CC;
*/ */
public class CCToJumpStrategy implements ActivityJumpStrategy{ public class CCToJumpStrategy implements ActivityJumpStrategy{
@Override @Override
public void actionToJumpPage(Context context, ActivityJumpBean jumpBean) { public void actionToJumpPage(Context context, ActivityJumpBean jumpBean) {
if (!TextUtils.isEmpty(jumpBean.getComponentName()) && !TextUtils.isEmpty(jumpBean.getActionName())) { if (!TextUtils.isEmpty(jumpBean.getComponentName()) && !TextUtils.isEmpty(jumpBean.getActionName())) {
......
...@@ -41,7 +41,7 @@ public class LoganManager { ...@@ -41,7 +41,7 @@ public class LoganManager {
Logan.w(log, LoganConfig.NETWORK_LEVLE); Logan.w(log, LoganConfig.NETWORK_LEVLE);
//網絡日誌比較重要立即寫入本地 //網絡日誌比較重要立即寫入本地
// Logan.f(); // Logan.f();
printLog("Network", log); // printLog("Network", log);
} }
public static void w_crash(String log) { public static void w_crash(String log) {
......
package com.gingersoft.gsa.cloud.print.bean;
import android.os.Parcel;
import android.os.Parcelable;
import com.gingersoft.gsa.cloud.bean.SettlementReport;
import lombok.Data;
/**
* @author : bin
* @create date: 2020-11-27
* @update date: 2020-11-27
* @description:
*/
public class PrintCleanMachineContent extends SettlementReport implements PrintContent {
protected PrintCleanMachineContent(Parcel in) {
super(in);
}
}
...@@ -17,7 +17,6 @@ public class PrintQRCodeContent implements PrintContent, Parcelable { ...@@ -17,7 +17,6 @@ public class PrintQRCodeContent implements PrintContent, Parcelable {
private String printTableName; private String printTableName;
private String printTopInfo; private String printTopInfo;
private String BottonInfo;
private String printQrcode; private String printQrcode;
private String printTime; private String printTime;
private String printPeopleNum; private String printPeopleNum;
...@@ -36,7 +35,6 @@ public class PrintQRCodeContent implements PrintContent, Parcelable { ...@@ -36,7 +35,6 @@ public class PrintQRCodeContent implements PrintContent, Parcelable {
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.printTableName); dest.writeString(this.printTableName);
dest.writeString(this.printTopInfo); dest.writeString(this.printTopInfo);
dest.writeString(this.BottonInfo);
dest.writeString(this.printQrcode); dest.writeString(this.printQrcode);
dest.writeString(this.printTime); dest.writeString(this.printTime);
dest.writeString(this.printPeopleNum); dest.writeString(this.printPeopleNum);
...@@ -47,7 +45,6 @@ public class PrintQRCodeContent implements PrintContent, Parcelable { ...@@ -47,7 +45,6 @@ public class PrintQRCodeContent implements PrintContent, Parcelable {
protected PrintQRCodeContent(Parcel in) { protected PrintQRCodeContent(Parcel in) {
this.printTableName = in.readString(); this.printTableName = in.readString();
this.printTopInfo = in.readString(); this.printTopInfo = in.readString();
this.BottonInfo = in.readString();
this.printQrcode = in.readString(); this.printQrcode = in.readString();
this.printTime = in.readString(); this.printTime = in.readString();
this.printPeopleNum = in.readString(); this.printPeopleNum = in.readString();
......
...@@ -22,188 +22,6 @@ import java.util.Date; ...@@ -22,188 +22,6 @@ import java.util.Date;
@Entity @Entity
public class Modifier { public class Modifier {
// @Property(nameInDb = "_id")
// @Id(autoincrement = true)
// private Long dbid;
//
// private Long mid;
// /**
// * 食品分类ID
// */
// private Long topId;
//
// private Long restaurantId;
//
// private String modifierName;
//
// private Long seqNo;
//
// private Double marketPrice;
//
// private Double price;
// /**
// * 餐盒费
// */
// private Double lunchboxPrice;
//
// private Long colorId;
// /**
// * 圖片
// */
// private String imageUrl;
// /**
// * 0=顯示, 1=隱藏, 2=暫停
// */
// private Long invisible;
// /**
// * 成本
// */
// private Double cost;
// /**
// * 開始日期
// */
// private Date startDate;
// /**
// * 結束日期
// */
// private Date endDate;
// /**
// * 贊
// */
// private Long like;
// /**
// * 已售
// */
// private Long totalSold;
// /**
// * gspos自定义表中的Id
// */
// private Long majorMainId;
// /**
// * 報表部門分組
// */
// private Long deptId;
// /**
// * 创建人
// */
// private String createBy;
// /**
// * 创建时间
// */
// private Date createTime;
// /**
// * 更新人
// */
// private String updateBy;
// /**
// * 更新时间
// */
// private Date updateTime;
// /**
// * 本地对应ID
// */
// private String posFid;
// /**
// * 父级ID
// */
// private String pId;
// /**
// * 細項下有細項時, 是否自動打開細項 0=不開開 1=打開
// */
// private Long autoMod;
// /**
// * 頁面中藍色按鈕有沒有編輯按鈕 (筆的圖按) 0=不可編輯 1=可編輯
// */
// private Long blueEdit;
// /**
// * 相同項目自動合併 0=不自動合併 1=自動合併
// */
// private Long autoMerge;
// /**
// * 自定義細項 (如細項有下一層, 當層的自定義細項會失效) 0=否 1=是
// */
// private Long customMsg;
// /**
// * 是否組別 1 为组别
// */
// private Long isParent;
// /**
// * 食品名称1
// */
// private String modifierName1;
// /**
// * 食品名称2
// */
// private String modifierName2;
// /**
// * 金額=-994時, 取這個數值乘主項金額
// */
// private Double multiple;
// /**
// * 打印設定
// */
// private String printSet;
// /**
// * 廚房打印設定
// */
// private String ktSetting;
// /**
// * 多選
// */
// private Long modComm;
// /**
// * 口味
// */
// private Long modTaste;
// /**
// * 訊息
// */
// private Long modMsg;
// /**
// * TRUE=追單, FALSE=不處理
// */
// private Long ktFireCourse;
// /**
// * 是否参与折扣#1:可折扣
// */
// private Long ableDisCount;
// /**
// * 打印到帳單
// */
// private Long printToBill;
// /**
// * 廚房單打印主項
// */
// private Long ktPrintMainItem;
// /**
// * 廚房單顯示單價
// */
// private Long ktShowPrice;
// /**
// * 廚房打印顏色
// */
// private Long ktFont;
// /**
// * 0:新增;1:修改:2刪除
// */
// private Long conditions;
// /**
// * 是否同步 0:否 1:是
// */
// private Long isRt;
// /**
// * 隱藏
// */
// private Byte visible;
// /**
// * 是否删除:0正常,1删除
// */
// private Long deletes;
// /**
// * 是否參與會員喜好統計 0 參與 1 不參與
// */
// private Long isStatistic;
@Property(nameInDb = "_id") @Property(nameInDb = "_id")
@Id(autoincrement = true) @Id(autoincrement = true)
private Long dbid; private Long dbid;
......
...@@ -324,7 +324,7 @@ public class ModifierDaoUtils { ...@@ -324,7 +324,7 @@ public class ModifierDaoUtils {
// String sql = " SELECT MODIFIER.mid,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" + // String sql = " SELECT MODIFIER.mid,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" +
// " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO"; // " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO";
String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT" + String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET" +
" FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE!=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO"; " FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE!=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
List<Modifier> mfs_child = new ArrayList<>(); List<Modifier> mfs_child = new ArrayList<>();
...@@ -337,14 +337,14 @@ public class ModifierDaoUtils { ...@@ -337,14 +337,14 @@ public class ModifierDaoUtils {
switch (mode) { switch (mode) {
case modifierMode_All: case modifierMode_All:
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT" + sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,KT_SETTING" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO"; " FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO";
mfs_child1 = query_modifier_Child_new(sqlstr, fid); mfs_child1 = query_modifier_Child_new(sqlstr, fid);
List<Modifier> mfs_child2 = new ArrayList<>(); List<Modifier> mfs_child2 = new ArrayList<>();
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT" + sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,KT_SETTING" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO"; " FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO";
mfs_child2 = query_modifier_Child_new(sqlstr, fid); mfs_child2 = query_modifier_Child_new(sqlstr, fid);
...@@ -382,33 +382,35 @@ public class ModifierDaoUtils { ...@@ -382,33 +382,35 @@ public class ModifierDaoUtils {
ArrayList<Modifier> modifiers = new ArrayList<>(); ArrayList<Modifier> modifiers = new ArrayList<>();
Cursor c = mManager.getDaoSession().getModifierDao().getDatabase().rawQuery(sql, null); Cursor c = mManager.getDaoSession().getModifierDao().getDatabase().rawQuery(sql, null);
while (c.moveToNext()) { while (c.moveToNext()) {
Modifier order = new Modifier(); Modifier modifier = new Modifier();
order.setFid(fid); modifier.setFid(fid);
order.setMid(c.getLong(c.getColumnIndex("MID"))); modifier.setMid(c.getLong(c.getColumnIndex("MID")));
order.setPrice(c.getDouble(c.getColumnIndex("PRICE"))); modifier.setPrice(c.getDouble(c.getColumnIndex("PRICE")));
order.setIsParent(c.getLong(c.getColumnIndex("IS_PARENT"))); modifier.setIsParent(c.getLong(c.getColumnIndex("IS_PARENT")));
// order.setSeqNo(c.getLong(c.getColumnIndex("SEQ_NO"))); // order.setSeqNo(c.getLong(c.getColumnIndex("SEQ_NO")));
order.setModifierName(c.getString(c.getColumnIndex("MODIFIER_NAME"))); modifier.setModifierName(c.getString(c.getColumnIndex("MODIFIER_NAME")));
order.setModifierName1(c.getString(c.getColumnIndex("MODIFIER_NAME1"))); modifier.setModifierName1(c.getString(c.getColumnIndex("MODIFIER_NAME1")));
order.setModifierName2(c.getString(c.getColumnIndex("MODIFIER_NAME2"))); modifier.setModifierName2(c.getString(c.getColumnIndex("MODIFIER_NAME2")));
// order.setVisible(c.getInt(c.getColumnIndex("VISIBLE"))); // order.setVisible(c.getInt(c.getColumnIndex("VISIBLE")));
order.setTopId(c.getLong(c.getColumnIndex("TOP_ID"))); modifier.setTopId(c.getLong(c.getColumnIndex("TOP_ID")));
order.setModComm(c.getLong(c.getColumnIndex("MOD_COMM"))); modifier.setModComm(c.getLong(c.getColumnIndex("MOD_COMM")));
order.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG"))); modifier.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG")));
order.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE"))); modifier.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE")));
order.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE"))); modifier.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE")));
order.setAbleDisCount(c.getLong(c.getColumnIndex("ABLE_DIS_COUNT"))); modifier.setAbleDisCount(c.getLong(c.getColumnIndex("ABLE_DIS_COUNT")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE"))); modifier.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
modifier.setPrintSet(c.getString(c.getColumnIndex("PRINT_SET")));
modifier.setKtSetting(c.getString(c.getColumnIndex("KT_SETTING")));
if (fid != 0) { if (fid != 0) {
//非公共細項 //非公共細項
order.setSelectQty(c.getInt(c.getColumnIndex("MAX_QTY"))); modifier.setSelectQty(c.getInt(c.getColumnIndex("MAX_QTY")));
String defmodifier = c.getString(c.getColumnIndex("DEFMODIFIER")); String defmodifier = c.getString(c.getColumnIndex("DEFMODIFIER"));
if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) { if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) {
order.setDefmodifier(defmodifier); modifier.setDefmodifier(defmodifier);
} }
} }
// if (order.isVisible()) { // if (order.isVisible()) {
modifiers.add(order); modifiers.add(modifier);
// } // }
} }
c.close(); c.close();
......
...@@ -94,32 +94,19 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas ...@@ -94,32 +94,19 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
@Override @Override
public void onNext(@NonNull LoginBean info) { public void onNext(@NonNull LoginBean info) {
if (info.isSuccess()) { if (info.isSuccess()) {
// GsaCloudApplication.isLogin = true;
// SPUtils.put(UserConstans.IS_LOGIN, true);
UserContext.newInstance().setState(new LoginedState()); UserContext.newInstance().setState(new LoginedState());
// GsaCloudApplication.userName = info.getData().getUser().getUserName();
mRootView.showMessage("登陸成功"); mRootView.showMessage("登陸成功");
mRootView.loginSuccess(info); mRootView.loginSuccess(info);
} else { } else {
// GsaCloudApplication.isLogin = false;
mRootView.showMessage(info.getErrMsg()); mRootView.showMessage(info.getErrMsg());
UserContext.newInstance().logOut(); UserContext.newInstance().logOut();
// if (IAcitivity instanceof LoginActivity) {
//
// } else {
// mRootView.launchActivity(new Intent(IAcitivity, LoginActivity.class));
// }
} }
} }
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
super.onError(t); super.onError(t);
UserContext.newInstance().logOut();
OkHttp3Utils.noticePersonnel(AppConstans.RP_LOGIN_ERROR, "登陸報錯:" + t.getMessage()); OkHttp3Utils.noticePersonnel(AppConstans.RP_LOGIN_ERROR, "登陸報錯:" + t.getMessage());
if (IAcitivity instanceof LoginActivity) { if (IAcitivity instanceof LoginActivity) {
} else { } else {
......
...@@ -4,6 +4,7 @@ import android.animation.AnimatorSet; ...@@ -4,6 +4,7 @@ import android.animation.AnimatorSet;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
...@@ -99,11 +100,14 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem ...@@ -99,11 +100,14 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
//是第一次進入,顯示引導頁 //是第一次進入,顯示引導頁
showGuide(); showGuide();
} else { } else {
if ((boolean) SPUtils.get(UserConstans.AUTO_LOGIN, false) && UserContext.newInstance().isLogin() boolean isLogin = (boolean) SPUtils.get(UserConstans.AUTO_LOGIN, false);
&& ResturantInfoManager.newInstance().getRestaurantId() != 0) { if (isLogin) {
//自動登陸
String pwd = Aes.aesDecrypt((String) SPUtils.get(UserConstans.LOGIN_PASSWORD, "")); if (!TextUtils.isEmpty(UserContext.newInstance().getLoginToken()) && ResturantInfoManager.newInstance(). getRestaurantId() != 0) {
mPresenter.login(SPUtils.get(UserConstans.LOGIN_USERNAME, "") + "", pwd); //自動登陸
String pwd = Aes.aesDecrypt((String) SPUtils.get(UserConstans.LOGIN_PASSWORD, ""));
mPresenter.login(SPUtils.get(UserConstans.LOGIN_USERNAME, "") + "", pwd);
}
} else { } else {
startActivity(new Intent(mContext, LoginActivity.class)); startActivity(new Intent(mContext, LoginActivity.class));
} }
......
...@@ -12,9 +12,10 @@ import com.gingersoft.gsa.cloud.function.XFunctionItems; ...@@ -12,9 +12,10 @@ import com.gingersoft.gsa.cloud.function.XFunctionItems;
*/ */
public class FunctionMain { public class FunctionMain {
public static final String ORDER_GROUP = "main/order/"; public static final String MAIN_GROUP = "main";
public static final String MANAGER_GROUP = "main/manager/"; public static final String ORDER_GROUP = MAIN_GROUP + "/order/";
public static final String EMPLOYEE_GROUP = "main/employee/"; public static final String MANAGER_GROUP = MAIN_GROUP + "/manager/";
public static final String EMPLOYEE_GROUP = MAIN_GROUP + "/employee/";
/** /**
* 首頁- 點餐 * 首頁- 點餐
*/ */
......
package com.gingersoft.gsa.cloud.main.mvp.contract; package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.PaymentMethodBean; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport; import com.gingersoft.gsa.cloud.bean.SettlementReport;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.RequestBody;
/** /**
...@@ -27,11 +26,11 @@ public interface SettlementContract { ...@@ -27,11 +26,11 @@ public interface SettlementContract {
void setLastTime(String date); void setLastTime(String date);
void returnSettlementData(SettlementReport.DataBean datasBean); void returnSettlementData(SettlementReport datasBean);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel{ interface Model extends IModel{
Observable<SettlementReport> getSettlementReport(int restaurantId); Observable<BaseResult> getSettlementReport(int restaurantId);
} }
} }
package com.gingersoft.gsa.cloud.main.mvp.contract; package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement; import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport; import com.gingersoft.gsa.cloud.bean.SettlementReport;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -32,7 +33,7 @@ public interface SettlementReportContract { ...@@ -32,7 +33,7 @@ public interface SettlementReportContract {
void setSettlementReportItem5Adapter(DefaultAdapter adapter); void setSettlementReportItem5Adapter(DefaultAdapter adapter);
void returnSettlementData(SettlementReport.DataBean datasBean); void returnSettlementData(SettlementReport datasBean);
//打印清機報表 //打印清機報表
void printRepore(); void printRepore();
...@@ -45,6 +46,6 @@ public interface SettlementReportContract { ...@@ -45,6 +46,6 @@ public interface SettlementReportContract {
Observable<SendSettlement> sendSettlement(RequestBody requestBody); Observable<SendSettlement> sendSettlement(RequestBody requestBody);
Observable<SettlementReport> getSettlementReport(int restaurantId); Observable<BaseResult> getSettlementReport(int restaurantId);
} }
} }
...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model; ...@@ -2,7 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.model.service.SettlementService; import com.gingersoft.gsa.cloud.main.mvp.model.service.SettlementService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
...@@ -48,7 +48,7 @@ public class SettlementModel extends BaseModel implements SettlementContract.Mod ...@@ -48,7 +48,7 @@ public class SettlementModel extends BaseModel implements SettlementContract.Mod
} }
@Override @Override
public Observable<SettlementReport> getSettlementReport(int restaurantId) { public Observable<BaseResult> getSettlementReport(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(SettlementService.class) return mRepositoryManager.obtainRetrofitService(SettlementService.class)
.getSettlementReport(restaurantId); .getSettlementReport(restaurantId);
} }
......
...@@ -4,8 +4,6 @@ import android.app.Application; ...@@ -4,8 +4,6 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement; import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport;
import com.gingersoft.gsa.cloud.main.mvp.model.service.MainReportService;
import com.gingersoft.gsa.cloud.main.mvp.model.service.SettlementService; import com.gingersoft.gsa.cloud.main.mvp.model.service.SettlementService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
...@@ -58,7 +56,7 @@ public class SettlementReportModel extends BaseModel implements SettlementReport ...@@ -58,7 +56,7 @@ public class SettlementReportModel extends BaseModel implements SettlementReport
} }
@Override @Override
public Observable<SettlementReport> getSettlementReport(int restaurantId) { public Observable<BaseResult> getSettlementReport(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(SettlementService.class) return mRepositoryManager.obtainRetrofitService(SettlementService.class)
.getSettlementReport(restaurantId); .getSettlementReport(restaurantId);
} }
......
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.io.Serializable;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-03-10
* 修订历史:2020-03-10
* 描述:
*/
public class SettlementReport {
/**
* success : true
* sysTime : 1583923576461
* 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 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 implements Serializable {
/**
* yesterdayTime : 2020-03-12 19:19:44
* 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 String yesterdayTime;
private VoBean vo;
private RestaurantOperationBean restaurantOperation;
private List<AnalysisBean> analysis;
private List<CashBean> cash;
private String currentTime;
private String startTime;
public String getCurrentTime() {
return currentTime;
}
public void setCurrentTime(String currentTime) {
this.currentTime = currentTime;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getYesterdayTime() {
return yesterdayTime;
}
public void setYesterdayTime(String yesterdayTime) {
this.yesterdayTime = yesterdayTime;
}
public VoBean getVo() {
return vo;
}
public void setVo(VoBean vo) {
this.vo = vo;
}
public RestaurantOperationBean getRestaurantOperation() {
return restaurantOperation;
}
public void setRestaurantOperation(RestaurantOperationBean restaurantOperation) {
this.restaurantOperation = restaurantOperation;
}
public List<AnalysisBean> getAnalysis() {
return analysis;
}
public void setAnalysis(List<AnalysisBean> analysis) {
this.analysis = analysis;
}
public List<CashBean> getCash() {
return cash;
}
public void setCash(List<CashBean> cash) {
this.cash = cash;
}
public static class VoBean implements Serializable{
/**
* prices : 256
* scamount : 0
* disamount : 0
* payNum : 0
* payamount : 0
* tipnum : 0
* tipsPrice : 0
* totamount : 256
* deliverycharge : 0
* num : 2
* person : 7
*/
private double prices;
private double scamount;
private double disamount;
private int payNum;
private double payamount;
private int tipnum;
private double tipsPrice;
private double totamount;
private double deliverycharge;
private int num;
private int person;
public double getDeliverycharge() {
return deliverycharge;
}
public void setDeliverycharge(double deliverycharge) {
this.deliverycharge = deliverycharge;
}
public double getPrices() {
return prices;
}
public void setPrices(double prices) {
this.prices = prices;
}
public double getScamount() {
return scamount;
}
public void setScamount(double scamount) {
this.scamount = scamount;
}
public double getDisamount() {
return disamount;
}
public void setDisamount(double disamount) {
this.disamount = disamount;
}
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;
}
public int getTipnum() {
return tipnum;
}
public void setTipnum(int tipnum) {
this.tipnum = tipnum;
}
public double getTipsPrice() {
return tipsPrice;
}
public void setTipsPrice(double tipsPrice) {
this.tipsPrice = tipsPrice;
}
public double getTotamount() {
return totamount;
}
public void setTotamount(double totamount) {
this.totamount = totamount;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getPerson() {
return person;
}
public void setPerson(int person) {
this.person = person;
}
}
public static class RestaurantOperationBean implements Serializable{
/**
* id : 11
* uid : 297
* restaurantId : 410
* type : 1
* openTime : 1583919880776
* operationTime : 1583922285557
* createTime : 1583922285557
*/
private int id;
private int uid;
private int restaurantId;
private int type;
private long openTime;
private long operationTime;
private long createTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public long getOpenTime() {
return openTime;
}
public void setOpenTime(long openTime) {
this.openTime = openTime;
}
public long getOperationTime() {
return operationTime;
}
public void setOperationTime(long operationTime) {
this.operationTime = operationTime;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
}
public static class AnalysisBean implements Serializable{
/**
* typeName : 堂食
* num : 3
* person : 2
* amount : 678
*/
private String typeName;
private int num;
private int person;
private double amount;
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getPerson() {
return person;
}
public void setPerson(int person) {
this.person = person;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
public static class CashBean implements Serializable{
/**
* payName : 現金
* payNum : 2
* payAmount : 256
* payType : 1001
*/
private String payName;
private int payNum;
private double payAmount;
private int payType;
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;
}
public int getPayType() {
return payType;
}
public void setPayType(int payType) {
this.payType = payType;
}
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.service; package com.gingersoft.gsa.cloud.main.mvp.model.service;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement; import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport;
import io.reactivex.Observable; import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager; import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
...@@ -26,6 +26,6 @@ public interface SettlementService { ...@@ -26,6 +26,6 @@ public interface SettlementService {
@Headers({"Domain-Name: settlement_report_server"}) @Headers({"Domain-Name: settlement_report_server"})
@GET("ricepon-report/api/restaurantOperation/report" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET("ricepon-report/api/restaurantOperation/report" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<SettlementReport> getSettlementReport(@Query("restaurantId") int restaurantId); Observable<BaseResult> getSettlementReport(@Query("restaurantId") int restaurantId);
} }
...@@ -3,8 +3,10 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter; ...@@ -3,8 +3,10 @@ package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager; import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementContract; import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport; import com.gingersoft.gsa.cloud.bean.SettlementReport;
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;
...@@ -15,7 +17,6 @@ import javax.inject.Inject; ...@@ -15,7 +17,6 @@ import javax.inject.Inject;
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.disposables.Disposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
...@@ -67,18 +68,16 @@ public class SettlementPresenter extends BasePresenter<SettlementContract.Model, ...@@ -67,18 +68,16 @@ public class SettlementPresenter extends BasePresenter<SettlementContract.Model,
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<SettlementReport>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
//{"success":false,"errCode":"data_002","errMsg":"沒有查詢到數據","sysTime":1583573772290}
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
}
@Override @Override
public void onNext(@NonNull SettlementReport info) { public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
if (info.getData() != null) { if (info.getData() != null) {
mRootView.returnSettlementData(info.getData()); SettlementReport settlementReport = JsonUtils.parseObject(info.getData(), SettlementReport.class);
if (settlementReport != null) {
mRootView.returnSettlementData(settlementReport);
}
} }
} else { } else {
// mRootView.showMessage("獲取報表失敗"); // mRootView.showMessage("獲取報表失敗");
......
...@@ -5,10 +5,12 @@ import android.app.Application; ...@@ -5,10 +5,12 @@ import android.app.Application;
import android.text.TextUtils; import android.text.TextUtils;
import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager; import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.main.R; import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementReportContract; import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementReportContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement; import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport; import com.gingersoft.gsa.cloud.bean.SettlementReport;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.SettlementReportActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.activity.SettlementReportActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SettlementReportItem5Adapter; import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SettlementReportItem5Adapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SettlementReportItemAdapter; import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SettlementReportItemAdapter;
...@@ -196,7 +198,7 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon ...@@ -196,7 +198,7 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
// Object[] parameters = {}; // Object[] parameters = {};
// CommonTipDialog.showDoubtDialog(IActivity, "今天已清機過,是否合併清機", SettlementReportPresenter.class, SettlementReportPresenter.this, // CommonTipDialog.showDoubtDialog(IActivity, "今天已清機過,是否合併清機", SettlementReportPresenter.class, SettlementReportPresenter.this,
// "sendSettlement", parameterTypes, parameters); // "sendSettlement", parameterTypes, parameters);
showMergeSettlementDialog(IActivity,"今天已清機過,是否合併清機"); showMergeSettlementDialog(IActivity, "今天已清機過,是否合併清機");
} else { } else {
if (!TextUtils.isEmpty(info.getErrMsg())) { if (!TextUtils.isEmpty(info.getErrMsg())) {
showSettlementErrorDialog(info.getErrMsg() + ",清機失敗"); showSettlementErrorDialog(info.getErrMsg() + ",清機失敗");
...@@ -217,14 +219,16 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon ...@@ -217,14 +219,16 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<SettlementReport>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
//{"success":false,"errCode":"data_002","errMsg":"沒有查詢到數據","sysTime":1583573772290}
@Override @Override
public void onNext(@NonNull SettlementReport info) { public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
if (info.getData() != null) { if (info.getData() != null) {
mRootView.returnSettlementData(info.getData()); SettlementReport settlementReport = JsonUtils.parseObject(info.getData(), SettlementReport.class);
if (settlementReport != null) {
mRootView.returnSettlementData(settlementReport);
}
} }
} else { } else {
// mRootView.showMessage("獲取報表失敗"); // mRootView.showMessage("獲取報表失敗");
...@@ -234,7 +238,7 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon ...@@ -234,7 +238,7 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
} }
public void showMergeSettlementDialog(Activity context, String msg) { public void showMergeSettlementDialog(Activity context, String msg) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context); QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
dialogBuilder.setTitleIcon(com.gingersoft.gsa.cloud.base.R.drawable.qmui_icon_dialog_doubt); dialogBuilder.setTitleIcon(com.gingersoft.gsa.cloud.base.R.drawable.qmui_icon_dialog_doubt);
dialogBuilder.setMessage(msg); dialogBuilder.setMessage(msg);
......
...@@ -35,9 +35,7 @@ import com.gingersoft.gsa.cloud.constans.AppConstans; ...@@ -35,9 +35,7 @@ import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.constans.ResultConstans; import com.gingersoft.gsa.cloud.constans.ResultConstans;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.function.FunctionManager; import com.gingersoft.gsa.cloud.function.FunctionManager;
import com.gingersoft.gsa.cloud.function.XFunctionItems;
import com.gingersoft.gsa.cloud.function.XFunctionManager; import com.gingersoft.gsa.cloud.function.XFunctionManager;
import com.gingersoft.gsa.cloud.function.XFunctionView;
import com.gingersoft.gsa.cloud.function.XFunctionViews; import com.gingersoft.gsa.cloud.function.XFunctionViews;
import com.gingersoft.gsa.cloud.function.jump.ActivityJumpBean; import com.gingersoft.gsa.cloud.function.jump.ActivityJumpBean;
import com.gingersoft.gsa.cloud.function.jump.ActivityJumpStrategy; import com.gingersoft.gsa.cloud.function.jump.ActivityJumpStrategy;
...@@ -127,12 +125,12 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -127,12 +125,12 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
@BindViews({R2.id.tv_function_name1, R2.id.tv_function_name2, R2.id.tv_function_name3}) @BindViews({R2.id.tv_function_name1, R2.id.tv_function_name2, R2.id.tv_function_name3})
TextView[] mTvFunctionNames; TextView[] mTvFunctionNames;
@XFunctionViews(FunctionMain.ORDER_GROUP) @XFunctionViews(value = FunctionMain.ORDER_GROUP, filterParent = false)
private List<Function> mOrderingMeals; private List<Function> mOrderingMeals = new ArrayList<>();
@XFunctionViews(FunctionMain.MANAGER_GROUP) @XFunctionViews(value = FunctionMain.MANAGER_GROUP, filterParent = false)
private List<Function> mManagement; private List<Function> mManagement = new ArrayList<>();
@XFunctionViews(FunctionMain.EMPLOYEE_GROUP) @XFunctionViews(value = FunctionMain.EMPLOYEE_GROUP, filterParent = false)
private List<Function> mStaffManagement; private List<Function> mStaffManagement = new ArrayList<>();
private Map<Function, ActivityJumpStrategy> mActivityJumpStrategy = new HashMap<>(); private Map<Function, ActivityJumpStrategy> mActivityJumpStrategy = new HashMap<>();
...@@ -152,8 +150,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -152,8 +150,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
XFunctionManager.newInstance().inJectFunctionAnnoations(this, FunctionMain.class); XFunctionManager.inJect(this, FunctionMain.class);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mPresenter.checkAppVersion(); mPresenter.checkAppVersion();
mPresenter.syncRestaurantExtendedConfiguration(); mPresenter.syncRestaurantExtendedConfiguration();
......
...@@ -13,7 +13,6 @@ import com.gingersoft.gsa.cloud.main.R; ...@@ -13,7 +13,6 @@ import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2; import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSettlementComponent; import com.gingersoft.gsa.cloud.main.di.component.DaggerSettlementComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementContract; import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SettlementPresenter; import com.gingersoft.gsa.cloud.main.mvp.presenter.SettlementPresenter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
...@@ -21,10 +20,9 @@ import com.jess.arms.di.component.AppComponent; ...@@ -21,10 +20,9 @@ import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton; import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import com.gingersoft.gsa.cloud.bean.SettlementReport;
/** /**
* ================================================ * ================================================
...@@ -48,7 +46,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem ...@@ -48,7 +46,7 @@ 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 mSettlementReportBean;
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
...@@ -134,7 +132,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem ...@@ -134,7 +132,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
} }
@Override @Override
public void returnSettlementData(SettlementReport.DataBean datasBean) { public void returnSettlementData(SettlementReport datasBean) {
this.mSettlementReportBean = datasBean; this.mSettlementReportBean = datasBean;
if(mSettlementReportBean.getRestaurantOperation() != null) { if(mSettlementReportBean.getRestaurantOperation() != null) {
String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:"); String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:");
......
...@@ -12,6 +12,7 @@ import android.widget.RadioGroup; ...@@ -12,6 +12,7 @@ import android.widget.RadioGroup;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.SimpleAdapter; import android.widget.SimpleAdapter;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
...@@ -19,6 +20,7 @@ import androidx.core.widget.NestedScrollView; ...@@ -19,6 +20,7 @@ import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager; import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager;
import com.gingersoft.gsa.cloud.account.user.UserContext; import com.gingersoft.gsa.cloud.account.user.UserContext;
...@@ -36,9 +38,8 @@ import com.gingersoft.gsa.cloud.main.R2; ...@@ -36,9 +38,8 @@ import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSettlementReportComponent; import com.gingersoft.gsa.cloud.main.di.component.DaggerSettlementReportComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementReportContract; import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementReportContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement; import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReport; import com.gingersoft.gsa.cloud.bean.SettlementReport;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SettlementReportPresenter; import com.gingersoft.gsa.cloud.main.mvp.presenter.SettlementReportPresenter;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem5; import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem5;
import com.gingersoft.gsa.cloud.ui.utils.AnimateUtils; import com.gingersoft.gsa.cloud.ui.utils.AnimateUtils;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
...@@ -51,15 +52,20 @@ import com.jess.arms.utils.DeviceUtils; ...@@ -51,15 +52,20 @@ import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.widget.QMUITopBar; 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 org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.text.DecimalFormat; 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;
import java.util.Map; import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -155,7 +161,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -155,7 +161,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
@Override @Override
public void initIntent() { public void initIntent() {
Intent intent = getIntent(); Intent intent = getIntent();
SettlementReport.DataBean settlementReportBean = (SettlementReport.DataBean) intent.getSerializableExtra("settlementReportBean"); SettlementReport settlementReportBean = intent.getParcelableExtra("settlementReportBean");
df = new DecimalFormat(dfformat); df = new DecimalFormat(dfformat);
if (settlementReportBean != null) { if (settlementReportBean != null) {
mPresenter.initAdapter(); mPresenter.initAdapter();
...@@ -176,9 +182,9 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -176,9 +182,9 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
rightBtn = mTopBar.addRightTextButton("打印", R.id.tv_right); rightBtn = mTopBar.addRightTextButton("打印", R.id.tv_right);
rightBtn.setTextColor(ArmsUtils.getColor(this, R.color.theme_white_color)); rightBtn.setTextColor(ArmsUtils.getColor(this, R.color.theme_white_color));
rightBtn.setOnClickListener(v -> { rightBtn.setOnClickListener(v -> {
String settlementReportJson = (String) SPUtils.get( PrintConstans.SETTLEMENT_REPORT, ""); String settlementReportJson = (String) SPUtils.get(PrintConstans.SETTLEMENT_REPORT, "");
if (!TextUtils.isEmpty(settlementReportJson)) { if (!TextUtils.isEmpty(settlementReportJson)) {
SettlementReport.DataBean datasBean = JsonUtils.parseObject(settlementReportJson, SettlementReport.DataBean.class); SettlementReport datasBean = JsonUtils.parseObject(settlementReportJson, SettlementReport.class);
if (datasBean != null) { if (datasBean != null) {
returnSettlementData(datasBean); returnSettlementData(datasBean);
printRepore(); printRepore();
...@@ -289,13 +295,12 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -289,13 +295,12 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
} }
@Override @Override
public void returnSettlementData(SettlementReport.DataBean datasBean) { public void returnSettlementData(SettlementReport datasBean) {
if (datasBean.getVo() != null && datasBean.getVo().getPrices() > 0) { if (datasBean.getVo() != null && datasBean.getVo().getPrices() > 0) {
//保存下次重印數據 //保存下次重印數據
SPUtils.put( PrintConstans.SETTLEMENT_REPORT, JsonUtils.toJson(datasBean)); SPUtils.put(PrintConstans.SETTLEMENT_REPORT, JsonUtils.toJson(datasBean));
} }
List<SectionTextItem3> settlementReportItems = new ArrayList<>();
List<SectionTextItem5> settlementReportItem5s = new ArrayList<>(); List<SectionTextItem5> settlementReportItem5s = new ArrayList<>();
String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:"); String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:");
...@@ -331,7 +336,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -331,7 +336,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
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, "", "讀取人員");
SettlementReport.DataBean.RestaurantOperationBean restaurantOperationBean = datasBean.getRestaurantOperation(); SettlementReport.RestaurantOperationBean restaurantOperationBean = datasBean.getRestaurantOperation();
if (restaurantOperationBean != null) { if (restaurantOperationBean != null) {
tv_business_area_title.setText(dailyBusinessReportText); tv_business_area_title.setText(dailyBusinessReportText);
tv_last_time.setText(lastSettlementText + TimeUtils.getStringByFormat(restaurantOperationBean.getOperationTime(), TimeUtils.DEFAULT_DATE_FORMAT)); tv_last_time.setText(lastSettlementText + TimeUtils.getStringByFormat(restaurantOperationBean.getOperationTime(), TimeUtils.DEFAULT_DATE_FORMAT));
...@@ -340,7 +345,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -340,7 +345,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
tv_start_time.setText(byBusinessDateText + datasBean.getStartTime()); tv_start_time.setText(byBusinessDateText + datasBean.getStartTime());
tv_end_time.setText(toBusinessDateText + datasBean.getCurrentTime()); tv_end_time.setText(toBusinessDateText + datasBean.getCurrentTime());
SettlementReport.DataBean.VoBean voBean = datasBean.getVo(); SettlementReport.VoBean voBean = datasBean.getVo();
if (voBean != null) { if (voBean != null) {
settlementReportItem5s.add(new SectionTextItem5(projectTotalSalesText, null, null, null, cashStr + df.format(voBean.getPrices()))); settlementReportItem5s.add(new SectionTextItem5(projectTotalSalesText, null, null, null, cashStr + df.format(voBean.getPrices())));
settlementReportItem5s.add(new SectionTextItem5(discountText, null, null, null, "-" + cashStr + df.format(voBean.getDisamount()))); settlementReportItem5s.add(new SectionTextItem5(discountText, null, null, null, "-" + cashStr + df.format(voBean.getDisamount())));
...@@ -356,20 +361,20 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -356,20 +361,20 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
settlementReportItem5s.add(new SectionTextItem5(null, null, " ", null, null)); settlementReportItem5s.add(new SectionTextItem5(null, null, " ", null, null));
settlementReportItem5s.add(new SectionTextItem5(cashAuditText, null, null, null, null)); settlementReportItem5s.add(new SectionTextItem5(cashAuditText, null, null, null, null));
settlementReportItem5s.add(new SectionTextItem5(netTurnoverText, null, null, null, cashStr + df.format(voBean.getTotamount()))); settlementReportItem5s.add(new SectionTextItem5(netTurnoverText, null, null, null, cashStr + df.format(voBean.getTotamount())));
List<SettlementReport.DataBean.CashBean> cashList = datasBean.getCash(); List<SettlementReport.CashBean> cashList = datasBean.getCash();
if (cashList != null && cashList.size() > 0) { if (cashList != null && cashList.size() > 0) {
for (int i = 0; i < cashList.size(); i++) { for (int i = 0; i < cashList.size(); i++) {
SettlementReport.DataBean.CashBean cashBean = cashList.get(i); SettlementReport.CashBean cashBean = cashList.get(i);
settlementReportItem5s.add(new SectionTextItem5(cashBean.getPayName(), null, String.valueOf(cashBean.getPayNum()), null, cashStr + df.format(cashBean.getPayAmount()))); settlementReportItem5s.add(new SectionTextItem5(cashBean.getPayName(), null, String.valueOf(cashBean.getPayNum()), null, cashStr + df.format(cashBean.getPayAmount())));
} }
} }
} }
List<SettlementReport.DataBean.CashBean> cashList = datasBean.getCash(); List<SettlementReport.CashBean> cashList = datasBean.getCash();
if (cashList != null && cashList.size() > 0) { if (cashList != null && cashList.size() > 0) {
for (int i = 0; i < cashList.size(); i++) { for (int i = 0; i < cashList.size(); i++) {
SettlementReport.DataBean.CashBean cashBean = cashList.get(i); SettlementReport.CashBean cashBean = cashList.get(i);
if(cashBean.getPayType() == PayMethod.PAY_TYPE_CASH){ if (cashBean.getPayType() == PayMethod.PAY_TYPE_CASH) {
/**現金詳情*/ /**現金詳情*/
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", "現金");
...@@ -383,8 +388,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -383,8 +388,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
} }
} }
List<SettlementReport.DataBean.AnalysisBean> analysisBeanList = datasBean.getAnalysis(); List<SettlementReport.AnalysisBean> analysisBeanList = datasBean.getAnalysis();
Map<String, SettlementReport.DataBean.AnalysisBean> analysisBeanMap = null; Map<String, SettlementReport.AnalysisBean> analysisBeanMap = null;
if (analysisBeanList != null && analysisBeanList.size() > 0) { if (analysisBeanList != null && analysisBeanList.size() > 0) {
analysisBeanMap = getAnalysisBeanMap(analysisBeanList); analysisBeanMap = getAnalysisBeanMap(analysisBeanList);
} }
...@@ -521,7 +526,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -521,7 +526,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
int item5num = 0; int item5num = 0;
int item5PeopleNum = 0; int item5PeopleNum = 0;
if (analysisBeanMap.containsKey(outstandingBillText)) { if (analysisBeanMap.containsKey(outstandingBillText)) {
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(outstandingBillText); SettlementReport.AnalysisBean analysisBean = analysisBeanMap.get(outstandingBillText);
settlementReportItem5s.add(new SectionTextItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getPerson()), null, cashStr + df.format(analysisBean.getAmount()))); settlementReportItem5s.add(new SectionTextItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getPerson()), null, cashStr + df.format(analysisBean.getAmount())));
item5Amount += analysisBean.getAmount(); item5Amount += analysisBean.getAmount();
item5num += analysisBean.getNum(); item5num += analysisBean.getNum();
...@@ -529,7 +534,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -529,7 +534,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
} }
//已收款帳單 //已收款帳單
if (analysisBeanMap.containsKey(billsReceivedText)) { if (analysisBeanMap.containsKey(billsReceivedText)) {
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(billsReceivedText); SettlementReport.AnalysisBean analysisBean = analysisBeanMap.get(billsReceivedText);
settlementReportItem5s.add(new SectionTextItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getPerson()), null, cashStr + df.format(analysisBean.getAmount()))); settlementReportItem5s.add(new SectionTextItem5(analysisBean.getTypeName(), String.valueOf(analysisBean.getNum()), String.valueOf(analysisBean.getPerson()), null, cashStr + df.format(analysisBean.getAmount())));
item5Amount += analysisBean.getAmount(); item5Amount += analysisBean.getAmount();
item5num += analysisBean.getNum(); item5num += analysisBean.getNum();
...@@ -541,7 +546,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -541,7 +546,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
/**本月累計營業額*/ /**本月累計營業額*/
if (analysisBeanMap.containsKey(cumulativeTurnoverMonthText)) { if (analysisBeanMap.containsKey(cumulativeTurnoverMonthText)) {
SettlementReport.DataBean.AnalysisBean analysisBean = analysisBeanMap.get(cumulativeTurnoverMonthText); SettlementReport.AnalysisBean analysisBean = analysisBeanMap.get(cumulativeTurnoverMonthText);
String firstDayOfMonth = TimeUtils.getFirstDayOfMonth(TimeUtils.DATE_FORMAT_DATE) + " 00:00:00"; String firstDayOfMonth = TimeUtils.getFirstDayOfMonth(TimeUtils.DATE_FORMAT_DATE) + " 00:00:00";
String currentDate = TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT); String currentDate = TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT);
settlementReportItem5s.add(new SectionTextItem5(null, null, null, null, null)); settlementReportItem5s.add(new SectionTextItem5(null, null, null, null, null));
...@@ -563,6 +568,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -563,6 +568,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
settlementReportItem5s.add(new SectionTextItem5(null, null, null, null, null)); settlementReportItem5s.add(new SectionTextItem5(null, null, null, null, null));
} }
mPresenter.notifyReportItem5Adapter(settlementReportItem5s); mPresenter.notifyReportItem5Adapter(settlementReportItem5s);
scrollView.post(() -> scrollView.fullScroll(ScrollView.FOCUS_UP)); scrollView.post(() -> scrollView.fullScroll(ScrollView.FOCUS_UP));
} }
...@@ -634,7 +640,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -634,7 +640,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
for (int i = 0; i < dateNum.size(); i++) { for (int i = 0; i < dateNum.size(); i++) {
SendSettlement.DataBean.DateNumBean dateNumBean = dateNum.get(i); SendSettlement.DataBean.DateNumBean dateNumBean = dateNum.get(i);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("date", TimeUtils.formatDate(dateNumBean.getDate(),TimeUtils.DATE_FORMAT_DATE ,TimeUtils.DEFAULT_DATE_MD)); map.put("date", TimeUtils.formatDate(dateNumBean.getDate(), TimeUtils.DATE_FORMAT_DATE, TimeUtils.DEFAULT_DATE_MD));
map.put("num", dateNumBean.getNum()); map.put("num", dateNumBean.getNum());
lists.add(map); lists.add(map);
} }
...@@ -724,8 +730,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -724,8 +730,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
return view; return view;
} }
private Map<String, SettlementReport.DataBean.AnalysisBean> getAnalysisBeanMap(List<SettlementReport.DataBean.AnalysisBean> analysisBeanList) { private Map<String, SettlementReport.AnalysisBean> getAnalysisBeanMap(List<SettlementReport.AnalysisBean> analysisBeanList) {
Map<String, SettlementReport.DataBean.AnalysisBean> analysisBeanMap = new HashMap<>(); Map<String, SettlementReport.AnalysisBean> analysisBeanMap = new HashMap<>();
for (int i = 0; i < analysisBeanList.size(); i++) { for (int i = 0; i < analysisBeanList.size(); i++) {
analysisBeanMap.put(analysisBeanList.get(i).getTypeName(), analysisBeanList.get(i)); analysisBeanMap.put(analysisBeanList.get(i).getTypeName(), analysisBeanList.get(i));
} }
......
...@@ -1223,6 +1223,7 @@ public class OrderDetail implements Commodity, Serializable { ...@@ -1223,6 +1223,7 @@ public class OrderDetail implements Commodity, Serializable {
OrderDetail orderDetail = new OrderDetail(); OrderDetail orderDetail = new OrderDetail();
orderDetail.setProductName(modifier.getModifierName()); orderDetail.setProductName(modifier.getModifierName());
orderDetail.setKtPrintMainItem(modifier.getKtPrintMainItem()); orderDetail.setKtPrintMainItem(modifier.getKtPrintMainItem());
orderDetail.setPrintSeting(modifier.getPrintSet());
orderDetail.setTopId(modifier.getTopId()); orderDetail.setTopId(modifier.getTopId());
orderDetail.setParentId(id); orderDetail.setParentId(id);
orderDetail.setProductId(modifier.getMid()); orderDetail.setProductId(modifier.getMid());
......
package com.joe.print.mvp.model.bean;
import com.joe.print.mvp.print.PrintCleanMachine;
import java.util.List;
import lombok.Data;
/**
* @author : bin
* @create date: 2020-11-28
* @update date: 2020-11-28
* @description:BBPOS打印格式
*/
@Data
public class HtmlLable {
private String lablename;
private String value;
private HtmlLable.Attributes[] attributesList;
public HtmlLable(String lablename) {
this.lablename = lablename;
}
public HtmlLable(String lablename, String value) {
this.lablename = lablename;
this.value = value;
}
public HtmlLable(String lablename, String value, HtmlLable.Attributes... attributes) {
this.lablename = lablename;
this.value = value;
this.attributesList = attributes;
}
@Data
public static final class Attributes {
private String attributesName;
private String attributesVaule;
public Attributes(String attributesName, String attributesVaule) {
this.attributesName = attributesName;
this.attributesVaule = attributesVaule;
}
}
}
...@@ -4,6 +4,7 @@ import android.content.Context; ...@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.text.TextUtils; import android.text.TextUtils;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean; import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo; import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod; import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
...@@ -19,6 +20,8 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; ...@@ -19,6 +20,8 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.constans.ExpandConstant; import com.gingersoft.gsa.cloud.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.OrderDetails; import com.gingersoft.gsa.cloud.print.bean.OrderDetails;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -29,6 +32,7 @@ import java.util.Map; ...@@ -29,6 +32,7 @@ import java.util.Map;
*/ */
public class PrintBill extends PrinterRoot { public class PrintBill extends PrinterRoot {
@Override @Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) { public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>(); Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
...@@ -39,7 +43,7 @@ public class PrintBill extends PrinterRoot { ...@@ -39,7 +43,7 @@ public class PrintBill extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
DoshokuOrder doshokuOrder = DoshokuOrder.getInstance(); DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
ShoppingCart shoppingCart = doshokuOrder.getShoppingCart(); ShoppingCart shoppingCart = doshokuOrder.getShoppingCart();
...@@ -70,7 +74,7 @@ public class PrintBill extends PrinterRoot { ...@@ -70,7 +74,7 @@ public class PrintBill extends PrinterRoot {
String stringBuilder = "<html><body>" + String stringBuilder = "<html><body>" +
getHtmlPrintHeadInfo() + getHtmlPrintHeadInfo() +
getHtmlPrintHeadOrderInfo(tableBean) + getHtmlPrintHeadOrderInfo(tableBean) +
generateFoodInfo(foodList) + generateHtmlFoodInfo(foodList) +
getHtmlBillInfo() + getHtmlBillInfo() +
getWholeLine() + getWholeLine() +
getPLable(payInfo.toString(), HTML_PRINT_GRAVITY_LEFT) + getPLable(payInfo.toString(), HTML_PRINT_GRAVITY_LEFT) +
...@@ -85,7 +89,9 @@ public class PrintBill extends PrinterRoot { ...@@ -85,7 +89,9 @@ public class PrintBill extends PrinterRoot {
getPLable("《追加積分到個人賬戶》", HTML_PRINT_GRAVITY_CENTER); getPLable("《追加積分到個人賬戶》", HTML_PRINT_GRAVITY_CENTER);
} }
stringBuilder += "</body></html>"; stringBuilder += "</body></html>";
return stringBuilder; String[] pritContent = new String[1];
pritContent[0] = stringBuilder;
return pritContent;
} }
@Override @Override
......
...@@ -2,20 +2,56 @@ package com.joe.print.mvp.print; ...@@ -2,20 +2,56 @@ package com.joe.print.mvp.print;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager;
import com.gingersoft.gsa.cloud.account.user.UserContext;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.PrintTransitUtils; import com.gingersoft.gsa.cloud.base.utils.PrintTransitUtils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.bean.SettlementReport;
import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.PrintCleanMachineContent;
import com.joe.print.mvp.model.bean.HtmlLable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.joe.print.mvp.print.common.HtmlContract.ATTRIBUTES_ALIGN;
import static com.joe.print.mvp.print.common.HtmlContract.ATTRIBUTES_OFFSET;
import static com.joe.print.mvp.print.common.HtmlContract.LABLE_COLUMN;
import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P;
import static com.joe.print.mvp.print.common.HtmlContract.value_align_center;
import static com.joe.print.mvp.print.common.HtmlContract.value_offset_last;
import static com.joe.print.mvp.print.common.HtmlContract.value_offset_percentage20;
import static com.joe.print.mvp.print.common.HtmlContract.value_offset_percentage30;
import static com.joe.print.mvp.print.common.HtmlContract.value_offset_percentage50;
import static com.joe.print.mvp.print.common.HtmlContract.value_offset_percentage60;
import static com.joe.print.mvp.print.common.HtmlContract.value_offset_percentage70;
/** /**
* view * 清機打印
*/ */
public class PrintCleanMachine extends PrinterRoot { public class PrintCleanMachine extends PrinterRoot<PrintCleanMachineContent> {
private PrintCleanMachineContent mCleanMachineContent;
private Map<String, SettlementReport.AnalysisBean> mAnalysisBeanMap = null;
@Override
protected void setPrintContent(PrintCleanMachineContent printContent) {
this.mCleanMachineContent = printContent;
this.mAnalysisBeanMap = getAnalysisBeanMap(mCleanMachineContent.getAnalysis());
}
private Map<String, SettlementReport.AnalysisBean> getAnalysisBeanMap(List<SettlementReport.AnalysisBean> analysisBeanList) {
Map<String, SettlementReport.AnalysisBean> analysisBeanMap = new HashMap<>();
for (int i = 0; i < analysisBeanList.size(); i++) {
analysisBeanMap.put(analysisBeanList.get(i).getTypeName(), analysisBeanList.get(i));
}
return analysisBeanMap;
}
@Override @Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) { public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) {
...@@ -27,8 +63,23 @@ public class PrintCleanMachine extends PrinterRoot { ...@@ -27,8 +63,23 @@ public class PrintCleanMachine extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; if (mCleanMachineContent == null) {
return new String[]{"<html><body></body></html>"};
}
String stringBuilder = "<html><body>" +
getHtmlHeadInfo() +
getHtmlBusinessTotal() +
getHtmlCashDetails() +
getHtmlAnalysisAndStatistics() +
getHtmlBillingStatisticsItems() +
getHtmlBillStatusItems() +
getHtmlCumulativeThisMonth() +
getHtmlEndInfo()
+ "</body></html>";
String[] pritContent = new String[1];
pritContent[0] = stringBuilder;
return pritContent;
} }
@Override @Override
...@@ -36,7 +87,6 @@ public class PrintCleanMachine extends PrinterRoot { ...@@ -36,7 +87,6 @@ public class PrintCleanMachine extends PrinterRoot {
return 1; return 1;
} }
/** /**
* 獲取"清機報表"圖片 * 獲取"清機報表"圖片
* *
...@@ -50,4 +100,306 @@ public class PrintCleanMachine extends PrinterRoot { ...@@ -50,4 +100,306 @@ public class PrintCleanMachine extends PrinterRoot {
} }
return null; return null;
} }
private String getHtmlHeadInfo() {
HtmlLable[] htmlLables = new HtmlLable[7];
htmlLables[0] = new HtmlLable(LABLE_P, "上次清機時間:" + mCleanMachineContent.getRestaurantOperation().getOperationTime());
htmlLables[1] = new HtmlLable(LABLE_P, "品牌名稱:" + ResturantInfoManager.newInstance().getBrandName());
htmlLables[2] = new HtmlLable(LABLE_P, "店鋪名稱:" + ResturantInfoManager.newInstance().getRestaurantName());
htmlLables[3] = new HtmlLable(LABLE_P, "每日營業報表");
htmlLables[4] = new HtmlLable(LABLE_P, "由營業日期:" + mCleanMachineContent.getStartTime());
htmlLables[5] = new HtmlLable(LABLE_P, "到營業日期:" + mCleanMachineContent.getCurrentTime());
htmlLables[6] = new HtmlLable(LABLE_P, "-----------------------------------------------------------------");
return getHtmlLables(htmlLables);
}
private String getHtmlBusinessTotal() {
SettlementReport.VoBean voBean = mCleanMachineContent.getVo();
List<SettlementReport.CashBean> cashs = mCleanMachineContent.getCash();
List<HtmlLable> htmlLables = new ArrayList<>();
String[] items = {"項目銷售總額", "折扣", "服務費", "送貨費", "營業今個淨值", "現金核數", "營業金額淨值"};
List<String> items2 = new ArrayList<>();
items2.add(String.valueOf(voBean.getPrices()));
items2.add(String.valueOf(voBean.getDisamount()));
items2.add(String.valueOf(voBean.getScamount()));
items2.add(String.valueOf(voBean.getDeliverycharge()));
items2.add(String.valueOf(voBean.getTotamount()));
items2.add("");
items2.add(String.valueOf(voBean.getTotamount()));
for (int i = 0; i < items.length; i++) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, items[i]));
if (items2.size() > (i + 1)) {
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(items2.get(i)), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
}
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
if (cashs != null) {
for (SettlementReport.CashBean cashBean : cashs) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, cashBean.getPayName()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(cashBean.getPayNum()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_percentage60)));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(cashBean.getPayAmount()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
}
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
/**
* 現金詳情
*
* @return
*/
private String getHtmlCashDetails() {
List<SettlementReport.CashBean> cashs = mCleanMachineContent.getCash();
if (cashs == null || cashs.size() == 0) {
return "";
}
List<HtmlLable> htmlLables = new ArrayList<>();
htmlLables.add(new HtmlLable(LABLE_P, "現金詳情", new HtmlLable.Attributes(ATTRIBUTES_ALIGN, value_align_center)));
for (SettlementReport.CashBean cashBean : cashs) {
if (cashBean.getPayType() == PayMethod.PAY_TYPE_CASH) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, cashBean.getPayName()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(cashBean.getPayNum()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_percentage60)));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(cashBean.getPayAmount()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
break;
}
}
if (htmlLables.size() > 0) {
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
}
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
/**
* 分析統計
*
* @return
*/
private String getHtmlAnalysisAndStatistics() {
SettlementReport.VoBean voBean = mCleanMachineContent.getVo();
List<HtmlLable> htmlLables = new ArrayList<>();
htmlLables.add(new HtmlLable(LABLE_P, "分析統計", new HtmlLable.Attributes(ATTRIBUTES_ALIGN, value_align_center)));
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, "帳單金額總數"));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(voBean.getTotamount()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
htmlLables.add(new HtmlLable(getRowLableStart()));
String averagePrice = "0.00";
if (voBean.getNum() != 0) {
averagePrice = String.valueOf(MoneyUtil.get_ItemDecimals_money(voBean.getPrices() / voBean.getNum()));
}
htmlLables.add(new HtmlLable(LABLE_COLUMN, "帳單數目"));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(voBean.getNum()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_percentage60)));
htmlLables.add(new HtmlLable(LABLE_COLUMN, averagePrice, new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
htmlLables.add(new HtmlLable(getRowLableStart()));
String averageConsumption = "0.00";
if (voBean.getPerson() != 0) {
averageConsumption = String.valueOf(MoneyUtil.get_ItemDecimals_money(voBean.getPrices() / voBean.getPerson()));
}
htmlLables.add(new HtmlLable(LABLE_COLUMN, "人數 / 平均消費"));
htmlLables.add(new HtmlLable(LABLE_COLUMN, String.valueOf(voBean.getPerson()), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_percentage60)));
htmlLables.add(new HtmlLable(LABLE_COLUMN, averageConsumption, new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
/**
* 賬單統計
*
* @return
*/
private String getHtmlBillingStatisticsItems() {
List<HtmlLable> htmlLables = new ArrayList<>();
htmlLables.add(new HtmlLable(LABLE_P, "賬單統計", new HtmlLable.Attributes(ATTRIBUTES_ALIGN, value_align_center)));
List<SettlementReport.AnalysisBean> analysisBeanList = mCleanMachineContent.getAnalysis();
SettlementReport.VoBean voBean = mCleanMachineContent.getVo();
for (int i = 0; i < analysisBeanList.size(); i++) {
//當前餐廳有幾種訂單:堂食,外賣,自取
SettlementReport.AnalysisBean analysisBean = analysisBeanList.get(i);
if (analysisBean.equals("堂食") || analysisBean.equals("外賣") || analysisBean.equals("自取")) {
htmlLables.addAll(getHtmlBillingStatisticsItem(analysisBean, voBean));
}
}
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
private List<HtmlLable> getHtmlBillingStatisticsItem(SettlementReport.AnalysisBean analysisBean, SettlementReport.VoBean voBean) {
String[] items = {"類別", "賬單", "金額", "平均", "金額%"};
List<String> items2 = new ArrayList<>();
List<HtmlLable> htmlLables = new ArrayList<>();
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, "類別"));
htmlLables.add(new HtmlLable(LABLE_COLUMN, analysisBean.getTypeName(), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
String averagePrice = "";
String percentage = "";
double amount = analysisBean.getAmount();
int num = analysisBean.getNum();
if (voBean.getNum() != 0) {
double number = MoneyUtil.divide(amount, num, 2);
averagePrice = AppConstans.CARSH_STR + MoneyUtil.get_ItemDecimals_money(number);
}
if (amount > 0) {
percentage = AppConstans.CARSH_STR + MoneyUtil.get_ItemDecimals_money((MoneyUtil.divide(amount, voBean.getTotamount(), 2) * 100));
}
items2.add(analysisBean.getTypeName());
items2.add(String.valueOf(analysisBean.getNum()));
items2.add(String.valueOf(analysisBean.getAmount()));
items2.add(averagePrice);
items2.add(percentage);
for (int i = 0; i < items.length; i++) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, items[i]));
if (items2.size() > (i + 1)) {
htmlLables.add(new HtmlLable(LABLE_COLUMN, items2.get(i), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
}
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
return htmlLables;
}
/**
* 賬單現況:已完成賬單,未完成賬單,總計...
*
* @return
*/
private String getHtmlBillStatusItems() {
List<SettlementReport.AnalysisBean> analysisBeanList = mCleanMachineContent.getAnalysis();
List<String> items = new ArrayList<>();
List<String> items2 = new ArrayList<>();
List<String> items3 = new ArrayList<>();
List<String> items4 = new ArrayList<>();
items.add("項目");
items2.add("賬單");
items3.add("人數");
items4.add("金額");
List<HtmlLable> htmlLables = new ArrayList<>();
htmlLables.add(new HtmlLable(LABLE_P, "賬單現況", new HtmlLable.Attributes(ATTRIBUTES_ALIGN, value_align_center)));
for (int i = 0; i < analysisBeanList.size(); i++) {
SettlementReport.AnalysisBean analysisBean = analysisBeanList.get(i);
if ("已完成賬單".equals(analysisBean.getTypeName()) || "未完成賬單".equals(analysisBean.getTypeName()) || "總計".equals(analysisBean.getTypeName())) {
items.add(analysisBean.getTypeName());
items2.add(String.valueOf(analysisBean.getNum()));
items3.add(String.valueOf(analysisBean.getPerson()));
items4.add(String.valueOf(analysisBean.getAmount()));
}
}
for (int i = 0; i < items.size(); i++) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, items.get(i)));
if (items2.size() > (i + 1)) {
htmlLables.add(new HtmlLable(LABLE_COLUMN, items2.get(i), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_percentage30)));
}
if (items3.size() > (i + 1)) {
htmlLables.add(new HtmlLable(LABLE_COLUMN, items3.get(i), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_percentage60)));
}
if (items4.size() > (i + 1)) {
htmlLables.add(new HtmlLable(LABLE_COLUMN, items4.get(i), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
}
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
private String getHtmlCumulativeThisMonth() {
List<HtmlLable> htmlLables = new ArrayList<>();
SettlementReport.AnalysisBean analysisBean = mAnalysisBeanMap.get("本月累計營業額");
String firstDayOfMonth = TimeUtils.getFirstDayOfMonth(TimeUtils.DATE_FORMAT_DATE) + " 00:00:00";
String currentDate = TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT);
List<String> items = new ArrayList<>();
items.add("本月累計營業額");
items.add("由營業日期:" + firstDayOfMonth);
items.add("到營業日期:" + currentDate);
items.add("營業金額淨值");
List<String> items2 = new ArrayList<>();
items2.add("");
items2.add("");
items2.add("");
if (analysisBean != null) {
items2.add(AppConstans.CARSH_STR + analysisBean.getAmount());
} else {
items2.add(AppConstans.CARSH_STR + "0.00");
}
for (int i = 0; i < items.size(); i++) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, items.get(i)));
if (items2.size() > (i + 1)) {
htmlLables.add(new HtmlLable(LABLE_COLUMN, items2.get(i), new HtmlLable.Attributes(ATTRIBUTES_OFFSET, value_offset_last)));
}
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
private String getHtmlEndInfo() {
List<HtmlLable> htmlLables = new ArrayList<>();
String currentDate = TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT);
List<String> items = new ArrayList<>();
items.add("報表完結");
items.add("讀取人員:" + UserContext.newInstance().getMemberName());
items.add(currentDate);
for (int i = 0; i < items.size(); i++) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(LABLE_COLUMN, items.get(i)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
HtmlLable[] htmlLables2 = (HtmlLable[]) htmlLables.toArray();
return getHtmlLables(htmlLables2);
}
} }
...@@ -4,6 +4,7 @@ import android.content.Context; ...@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -19,7 +20,7 @@ public class PrintInstruction extends PrinterRoot { ...@@ -19,7 +20,7 @@ public class PrintInstruction extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; return null;
} }
......
...@@ -14,6 +14,7 @@ import com.gingersoft.gsa.cloud.base.table.bean.TableBean; ...@@ -14,6 +14,7 @@ import com.gingersoft.gsa.cloud.base.table.bean.TableBean;
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.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.joe.print.R; import com.joe.print.R;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -127,7 +128,7 @@ public class PrintKitchen extends PrinterRoot { ...@@ -127,7 +128,7 @@ public class PrintKitchen extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; return null;
} }
......
...@@ -48,7 +48,7 @@ public class PrintOtherOrder extends PrinterRoot { ...@@ -48,7 +48,7 @@ public class PrintOtherOrder extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; return null;
} }
......
...@@ -47,7 +47,7 @@ public class PrintOtherOrderClosing extends PrinterRoot { ...@@ -47,7 +47,7 @@ public class PrintOtherOrderClosing extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; return null;
} }
......
...@@ -14,20 +14,58 @@ import com.gingersoft.gsa.cloud.base.utils.other.TextUtil; ...@@ -14,20 +14,58 @@ import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.constans.ExpandConstant; import com.gingersoft.gsa.cloud.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.joe.print.R; import com.joe.print.R;
import com.gingersoft.gsa.cloud.print.bean.PrjBean; import com.gingersoft.gsa.cloud.print.bean.PrjBean;
import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract;
import com.joe.print.mvp.ui.adapter.KitChenPrjPrintFoodAdapter; import com.joe.print.mvp.ui.adapter.KitChenPrjPrintFoodAdapter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P;
/** /**
* 廚房單打印 * 廚房單打印
*/ */
public class PrintPrjKitchen extends PrinterRoot { public class PrintPrjKitchen extends PrinterRoot {
private static final String font_size_table_number = "48";
private static final String font_size_first_order = "40";
private static final String font_size_print_quantity = "30";
private static final String font_size_order_num_text = "24";
private static final String font_size_order_num = "40";
private static final String font_size_take_code_text = "20";
private static final String font_size_take_code = "20";
private static final String font_size_order_time_text = "28";
private static final String font_size_order_time = "28";
private static final String font_size_food_time = "28";
private static final String font_size_opening_time_text = "20";
private static final String font_size_opening_time = "20";
private static final String font_size_kitchen_location = "20";
private static final String font_size_operator = "20";
private static final String font_size_people_text = "24";
private static final String font_size_people = "24";
private static final String font_size_kitchen_print_table_number2 = "48";
private static final String font_size_prj_page_index = "28";
private int foodFontSize = 24;
private int modifierFontSize = 24;
private int foodIsBold;
private int modifierIsBold;
private int foodIsItalic;
private int modifierIsItalic;
private String[] languageTypes;
private static Map<String, List<PrjBean.DataBean.Bean>> prjMap; private static Map<String, List<PrjBean.DataBean.Bean>> prjMap;
@Override @Override
...@@ -65,8 +103,129 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -65,8 +103,129 @@ public class PrintPrjKitchen extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; if (getPrjMap().size() == 0) {
return new String[]{"<html><body></body></html>"};
}
try {
this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2;
this.modifierFontSize = Integer.parseInt(deviceBean.getModifierFont()) * 2;
} catch (NumberFormatException e) {
e.printStackTrace();
}
this.foodIsBold = deviceBean.getFoodIsBold();
this.modifierIsBold = deviceBean.getModifierIsBold();
this.foodIsItalic = deviceBean.getFoodIsItalic();
this.modifierIsItalic = deviceBean.getModifierIsItalic();
this.languageTypes = deviceBean.getLanguageType().split(",");
List<String> pritContents = new ArrayList<>();
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> entry : getPrjMap().entrySet()) {
//不帶*號,所有同樣廚房位置的食品都在一張紙上
// for (PrjBean.DataBean.Bean bean : entry.getValue()) {
pritContents.add(getBBPosPrintData(entry.getKey(), entry.getValue(), entry.getValue().get(0)));
// }
}
return (String[]) pritContents.toArray();
}
private String getBBPosPrintData(String key, List<PrjBean.DataBean.Bean> prjBeans, PrjBean.DataBean.Bean prjBean) {
String stringBuilder = "<html><body>" +
getHtmlHeadInfo(key, prjBean) +
getHtmlKitchenFood(prjBeans) +
getHtmlEndInfo(prjBean) +
"</body></html>";
return stringBuilder;
}
private String getHtmlHeadInfo(String key, PrjBean.DataBean.Bean prjBean) {
List<HtmlLable> htmlLables = new ArrayList<>();
//台號
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, getTableName(prjBean), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_table_number)));
//頭單標籤
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintFirstOrder, false)) {
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, getTableName(prjBean),
new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_first_order),
new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_ALIGN, HtmlContract.value_align_center)));
}
//統計打印數
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintStatisticsAmount, false)) {
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, String.valueOf(prjBean.getQuantity()), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_print_quantity)));
}
//訂單碼
if (!TextUtil.isEmptyOrNullOrUndefined(prjBean.getBillNo())) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, "訂單碼:", new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_order_num_text)));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, prjBean.getBillNo(), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_order_num)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
//取餐碼
if (!TextUtil.isEmptyOrNullOrUndefined(prjBean.getTakeFoodCode())) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, "取餐碼:", new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_take_code_text)));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, prjBean.getTakeFoodCode(), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_take_code)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
//落單時間,為當前時間
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, "落單時間:", new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_order_time_text)));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_MDHM), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_order_time)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
//盡快送達
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, "盡快送達", new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_food_time)));
//開台時間
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, "開檯時間:", new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_opening_time_text)));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, TimeUtils.parseTimeRepeat(prjBean.getOrderDetailsTime(), TimeUtils.DEFAULT_DATE_MDHM), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_opening_time)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
//廚房位置
if (!TextUtil.isEmptyOrNullOrUndefined(key) && !key.equals("-1")) {
htmlLables.add(new HtmlLable(getRowLableStart(new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_kitchen_location))));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, key + "廚房"));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, prjBean.getUserName()));
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
//人數
if (prjBean.getPerson() != 0) {
htmlLables.add(new HtmlLable(getRowLableStart()));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, key + "人數", new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_people_text)));
htmlLables.add(new HtmlLable(HtmlContract.LABLE_COLUMN, String.valueOf(prjBean.getPerson()), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_people)));
htmlLables.add(new HtmlLable(getRowLableEnd()));
}
htmlLables.add(new HtmlLable(LABLE_P, "-----------------------------------------------------------------"));
htmlLables.add(new HtmlLable(getBrLable()));
return getHtmlLables((HtmlLable[]) htmlLables.toArray());
}
private String getHtmlKitchenFood(List<PrjBean.DataBean.Bean> prjBeans) {
setFoodItemType(prjBeans);
List<HtmlLable> htmlLables = new ArrayList<>();
for (PrjBean.DataBean.Bean prjBean : prjBeans) {
}
htmlLables.add(new HtmlLable(getBrLable()));
return getHtmlLables((HtmlLable[]) htmlLables.toArray());
}
private String getHtmlEndInfo(PrjBean.DataBean.Bean prjBean) {
List<HtmlLable> htmlLables = new ArrayList<>();
//台號
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, getTableName(prjBean), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_kitchen_print_table_number2)));
//廚房單頁碼
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintPage, false)) {
htmlLables.add(new HtmlLable(HtmlContract.LABLE_P, prjBean.getCurrentIndex() + "/" + prjBean.getTotalPrj(),
new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_FONT_SIZE, font_size_prj_page_index),
new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_ALIGN, HtmlContract.value_align_center)));
}
return getHtmlLables((HtmlLable[]) htmlLables.toArray());
} }
@Override @Override
...@@ -94,24 +253,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -94,24 +253,7 @@ public class PrintPrjKitchen extends PrinterRoot {
if (prjBean == null) { if (prjBean == null) {
return null; return null;
} }
for (PrjBean.DataBean.Bean bean : data) { setFoodItemType(data);
if (bean.getParentId() == 0) {
//沒有父級id,則是第一級食品
bean.setItemType(1);
}
//如果父級id不為0,是細項
if (bean.getParentId() != 0) {
bean.setItemType(2);//先設置為細項,再通過下面的遍歷確定是否是第三級細項
//循環遍歷查找父級食品
for (PrjBean.DataBean.Bean itembean : data) {
if (bean.getParentId() == itembean.getOrderDetailsId()) {
//如果父級是細項,則當前食品就是二級細項
bean.setItemType(bean.getItemType() + 1);
break;
}
}
}
}
View view = LinearLayout.inflate(context, R.layout.print_kitchen, null); View view = LinearLayout.inflate(context, R.layout.print_kitchen, null);
TextView tvTableNumber = view.findViewById(R.id.tv_kitchen_print_table_number); TextView tvTableNumber = view.findViewById(R.id.tv_kitchen_print_table_number);
TextView tvOrderNumberText = view.findViewById(R.id.tv_order_num_text); TextView tvOrderNumberText = view.findViewById(R.id.tv_order_num_text);
...@@ -232,6 +374,67 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -232,6 +374,67 @@ public class PrintPrjKitchen extends PrinterRoot {
return viewToZoomBitmap(context, view, printerDeviceBean); return viewToZoomBitmap(context, view, printerDeviceBean);
} }
private void setFoodItemType(List<PrjBean.DataBean.Bean> data) {
for (PrjBean.DataBean.Bean bean : data) {
if (bean.getParentId() == 0) {
//沒有父級id,則是第一級食品
bean.setItemType(1);
}
//如果父級id不為0,是細項
if (bean.getParentId() != 0) {
bean.setItemType(2);//先設置為細項,再通過下面的遍歷確定是否是第三級細項
//循環遍歷查找父級食品
for (PrjBean.DataBean.Bean itembean : data) {
if (bean.getParentId() == itembean.getOrderDetailsId()) {
//如果父級是細項,則當前食品就是二級細項
bean.setItemType(bean.getItemType() + 1);
break;
}
}
}
}
}
private String getTableName(PrjBean.DataBean.Bean prjBean) {
if (TextUtil.isEmptyOrNullOrUndefined(prjBean.getTableName())) {
switch (prjBean.getOrderType()) {
case 1:
case 3:
return "堂食";
case 7:
return "自取";
default:
return "外賣";
}
} else {
return prjBean.getTableName();
}
}
private String getProductNameByLanguageType(PrjBean.DataBean.Bean prjBean) {
for (String type : languageTypes) {
String languageType = type;
if (languageType.contains(".")) {
languageType = type.substring(0, type.indexOf("."));
}
if (languageType.equals("2")) {
//語言二
if (TextUtil.isNotEmptyOrNullOrUndefined(prjBean.getProductName2())) {
return prjBean.getProductName2();
}
} else if (languageType.equals("3")) {
//語言三
if (TextUtil.isNotEmptyOrNullOrUndefined(prjBean.getProductName3())) {
return prjBean.getProductName3();
}
} else {
//語言一或其他
if (TextUtil.isNotEmptyOrNullOrUndefined(prjBean.getProductName())) {
return prjBean.getProductName();
}
}
}
}
public static Map<String, List<PrjBean.DataBean.Bean>> getPrjMap() { public static Map<String, List<PrjBean.DataBean.Bean>> getPrjMap() {
if (prjMap == null) { if (prjMap == null) {
......
...@@ -6,26 +6,37 @@ import android.view.View; ...@@ -6,26 +6,37 @@ import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.view.QRCodeUtil; import com.gingersoft.gsa.cloud.base.utils.view.QRCodeUtil;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.PrintQRCodeContent; import com.gingersoft.gsa.cloud.print.bean.PrintQRCodeContent;
import com.google.zxing.WriterException; import com.google.zxing.WriterException;
import com.joe.print.R; import com.joe.print.R;
import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P;
import static com.joe.print.mvp.print.common.HtmlContract.LABLE_QRCODE;
/** /**
* skyorder qrcode打印 * skyorder qrcode打印
*/ */
public class PrintQRCode extends PrinterRoot { public class PrintQRCode extends PrinterRoot<PrintQRCodeContent> {
private PrintQRCodeContent mQRCodeBean; private PrintQRCodeContent mQRCodeBean;
public PrintQRCode(PrintQRCodeContent qrCodeBean) { public PrintQRCode() {
this.mQRCodeBean = qrCodeBean; }
@Override
protected void setPrintContent(PrintQRCodeContent printContent) {
this.mQRCodeBean = printContent;
} }
@Override @Override
...@@ -38,10 +49,46 @@ public class PrintQRCode extends PrinterRoot { ...@@ -38,10 +49,46 @@ public class PrintQRCode extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; if (mQRCodeBean == null) {
return new String[]{"<html><body></body></html>"};
}
String stringBuilder = "<html><body>" +
getHtmlHeadInfo() +
getHtmlQRcode() +
getHtmlEndInfo()
+ "</body></html>";
String[] pritContent = new String[1];
pritContent[0] = stringBuilder;
return pritContent;
}
private String getHtmlHeadInfo() {
HtmlLable[] htmlLables = {
new HtmlLable(LABLE_P, mQRCodeBean.getPrintTableName(), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_ALIGN, HtmlContract.value_align_center)),
new HtmlLable(LABLE_P, mQRCodeBean.getPrintTableName(), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_ALIGN, HtmlContract.value_align_center)),
new HtmlLable(getBrLable())};
return getHtmlLables(htmlLables);
}
private String getHtmlQRcode() {
HtmlLable[] htmlLables = {
new HtmlLable(getBrLable()),
new HtmlLable(LABLE_QRCODE, mQRCodeBean.getPrintQrcode(), new HtmlLable.Attributes(HtmlContract.ATTRIBUTES_ALIGN, HtmlContract.value_align_center)),
new HtmlLable(getBrLable())};
return getHtmlLables(htmlLables);
} }
private String getHtmlEndInfo() {
HtmlLable[] htmlLables = {
new HtmlLable(LABLE_P, mQRCodeBean.getPrintTime()),
new HtmlLable(LABLE_P, mQRCodeBean.getPrintPeopleNum()),
new HtmlLable(LABLE_P, mQRCodeBean.getPrintMealEndTime()),
new HtmlLable(LABLE_P, mQRCodeBean.getPrintBottonInfo())};
return getHtmlLables(htmlLables);
}
@Override @Override
public int getPrintCount(Context context) { public int getPrintCount(Context context) {
return 1; return 1;
...@@ -67,7 +114,7 @@ public class PrintQRCode extends PrinterRoot { ...@@ -67,7 +114,7 @@ public class PrintQRCode extends PrinterRoot {
printTime.setText(mQRCodeBean.getPrintTime()); printTime.setText(mQRCodeBean.getPrintTime());
printPeopleNum.setText(mQRCodeBean.getPrintPeopleNum()); printPeopleNum.setText(mQRCodeBean.getPrintPeopleNum());
printMealEndTime.setText(mQRCodeBean.getPrintMealEndTime()); printMealEndTime.setText(mQRCodeBean.getPrintMealEndTime());
printBottonInfo.setText(mQRCodeBean.getBottonInfo()); printBottonInfo.setText(mQRCodeBean.getPrintBottonInfo());
Bitmap QRImage = null; Bitmap QRImage = null;
try { try {
......
...@@ -4,6 +4,7 @@ import android.content.Context; ...@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.view.Gravity; import android.view.Gravity;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.base.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.base.table.bean.TableBean; import com.gingersoft.gsa.cloud.base.table.bean.TableBean;
...@@ -11,6 +12,7 @@ import com.gingersoft.gsa.cloud.base.utils.other.TextUtil; ...@@ -11,6 +12,7 @@ import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R; import com.joe.print.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -31,16 +33,24 @@ public class PrintServe extends PrinterRoot { ...@@ -31,16 +33,24 @@ public class PrintServe extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
List<OrderDetail> foodList = DoshokuOrder.getInstance().getShoppingCart().getOrderCommodityList(); List<OrderDetail> foodList = DoshokuOrder.getInstance().getShoppingCart().getOrderCommodityList();
TableBean.DataBean tableBean = DoshokuOrder.getInstance().getOpenTableInfo(); TableBean.DataBean tableBean = DoshokuOrder.getInstance().getOpenTableInfo();
if (foodList.size() == 0 || tableBean == null) {
return new String[]{"<html><body></body></html>"};
}
String stringBuilder = "<html><body>" + String stringBuilder = "<html><body>" +
getHtmlPrintHeadInfo() + getHtmlPrintHeadInfo() +
getHtmlPrintHeadOrderInfo(tableBean) + getHtmlPrintHeadOrderInfo(tableBean) +
generateFoodInfoTwoColumns(foodList) + generateHtmlFoodInfoTwoColumns(foodList) +
getWholeLine() + getWholeLine() +
getHtmlFooter() + "</body></html>"; getHtmlFooter() + "</body></html>";
return stringBuilder; String[] pritContent = new String[1];
pritContent[0] = stringBuilder;
return pritContent;
} }
@Override @Override
......
...@@ -46,18 +46,25 @@ public class PrintSlip extends PrinterRoot { ...@@ -46,18 +46,25 @@ public class PrintSlip extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
List<OrderDetail> foodList = DoshokuOrder.getInstance().getShoppingCart().getOrderCommodityList(); List<OrderDetail> foodList = DoshokuOrder.getInstance().getShoppingCart().getOrderCommodityList();
TableBean.DataBean tableBean = DoshokuOrder.getInstance().getOpenTableInfo(); TableBean.DataBean tableBean = DoshokuOrder.getInstance().getOpenTableInfo();
if (foodList.size() == 0 || tableBean == null) {
return new String[]{"<html><body></body></html>"};
}
String stringBuilder = "<html><body>" + String stringBuilder = "<html><body>" +
getHtmlPrintHeadInfo() + getHtmlPrintHeadInfo() +
getHtmlPrintHeadOrderInfo(tableBean) + getHtmlPrintHeadOrderInfo(tableBean) +
generateFoodInfo(foodList) + generateHtmlFoodInfo(foodList) +
getHtmlBillInfo() + getHtmlBillInfo() +
getWholeLine() + getWholeLine() +
getHtmlFooter() + "</body></html>"; getHtmlFooter() + "</body></html>";
return stringBuilder;
String[] pritContent = new String[1];
pritContent[0] = stringBuilder;
return pritContent;
} }
private String getPLable(String content) { private String getPLable(String content) {
......
...@@ -34,8 +34,22 @@ public class PrintTest extends PrinterRoot { ...@@ -34,8 +34,22 @@ public class PrintTest extends PrinterRoot {
} }
@Override @Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) { public String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean) {
return null; String stringBuilder = "<html><body>" +
"<p>測試打印1<p/></br>" +
"<p>測試打印2<p/></br>" +
"<p>測試打印3<p/></br>" +
"<p>測試打印4<p/></br>" +
"<p>測試打印5<p/></br>" +
"<row>" +
" <column>This is an item with super long name</column>" +
" <column offset=0.6>1</column>" +
" <column offset=last>HKD 100</column>" +
" </row>"+
"</body></html>";
String[] pritContent = new String[1];
pritContent[0] = stringBuilder;
return pritContent;
} }
@Override @Override
...@@ -58,7 +72,7 @@ public class PrintTest extends PrinterRoot { ...@@ -58,7 +72,7 @@ public class PrintTest extends PrinterRoot {
} }
public Bitmap getBitmap(Context mContext, PrinterDeviceBean deviceBean){ public Bitmap getBitmap(Context mContext, PrinterDeviceBean deviceBean) {
LinearLayout layout = new LinearLayout(mContext); LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL); layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(getTextView(mContext, "炒爐打印測試", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_10))); layout.addView(getTextView(mContext, "炒爐打印測試", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_10)));
...@@ -66,12 +80,12 @@ public class PrintTest extends PrinterRoot { ...@@ -66,12 +80,12 @@ public class PrintTest extends PrinterRoot {
layout.addView(getTextLine(mContext, "項目")); layout.addView(getTextLine(mContext, "項目"));
List<OrderDetails.DataBean.PRODUCTNAMEBean> productnameBeans = new ArrayList<>(); List<OrderDetails.DataBean.PRODUCTNAMEBean> productnameBeans = new ArrayList<>();
OrderDetails.DataBean.PRODUCTNAMEBean productnameBean = new OrderDetails.DataBean.PRODUCTNAMEBean(); OrderDetails.DataBean.PRODUCTNAMEBean productnameBean = new OrderDetails.DataBean.PRODUCTNAMEBean();
productnameBean.setPRODUCT_NAME("測試食品"); productnameBean.setPRODUCT_NAME("測試食品");
productnameBean.setNum("1"); productnameBean.setNum("1");
productnameBean.setPRICE("10.0"); productnameBean.setPRICE("10.0");
List<OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX> childBeanXES = new ArrayList<>(); List<OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX> childBeanXES = new ArrayList<>();
OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX = new OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX(); OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX = new OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX();
childBeanX.setPRODUCT_NAME("測試子食品"); childBeanX.setPRODUCT_NAME("測試子食品");
childBeanX.setNum("1"); childBeanX.setNum("1");
......
package com.joe.print.mvp.print; package com.joe.print.mvp.print;
import android.text.TextUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -16,6 +18,11 @@ public class PrintUtils { ...@@ -16,6 +18,11 @@ public class PrintUtils {
private static int foodAmountSpace = 12; private static int foodAmountSpace = 12;
public final static double BBPOS_Chinese_Length = 2.4; public final static double BBPOS_Chinese_Length = 2.4;
private static final double num_offset = 0.6;
private static final String amount_offset = "last";
private static final int food_width_percentage = 60;
private static final int num_and_amount_percentage = 40;
/** /**
* @param content 要顯示的內容 * @param content 要顯示的內容
* @param maxLength 字符串最大長度 * @param maxLength 字符串最大長度
...@@ -128,6 +135,8 @@ public class PrintUtils { ...@@ -128,6 +135,8 @@ public class PrintUtils {
} }
/** /**
* BBPOS 獲取經過換行處理後的html串
*
* @param name1 字符串一 * @param name1 字符串一
* @param name2 字符串二 * @param name2 字符串二
* @param name3 字符串三 * @param name3 字符串三
...@@ -142,16 +151,20 @@ public class PrintUtils { ...@@ -142,16 +151,20 @@ public class PrintUtils {
int maxLine = Math.max(Math.max(name1s.size(), name2s.size()), name3s.size()); int maxLine = Math.max(Math.max(name1s.size(), name2s.size()), name3s.size());
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < maxLine; i++) { for (int i = 0; i < maxLine; i++) {
stringBuilder.append("<p>"); // stringBuilder.append("<p>");
putText(chineseCharLength, name1s, stringBuilder, i, foodNameSpace); putText(chineseCharLength, name1s, name2s, name3s, stringBuilder, i);
putText(chineseCharLength, name2s, stringBuilder, i, foodNumSpace);
putText(chineseCharLength, name3s, stringBuilder, i, foodAmountSpace); // putText(chineseCharLength, name1s, name2s, name3s, stringBuilder, i, foodNameSpace);
stringBuilder.append("</p>"); // putText(chineseCharLength, name1s, name2s, name3s, stringBuilder, i, foodNumSpace);
// putText(chineseCharLength, name1s, name2s, name3s, stringBuilder, i, foodAmountSpace);
// stringBuilder.append("</p>");
} }
return stringBuilder.toString(); return stringBuilder.toString();
} }
/** /**
* BBPOS 獲取經過換行處理後的html串
*
* @param name1 字符串一 * @param name1 字符串一
* @param name2 字符串二 * @param name2 字符串二
* @param chineseCharLength 中文字符所佔長度,BBPOS佔2.4,針式佔1.5 * @param chineseCharLength 中文字符所佔長度,BBPOS佔2.4,針式佔1.5
...@@ -164,10 +177,14 @@ public class PrintUtils { ...@@ -164,10 +177,14 @@ public class PrintUtils {
int maxLine = Math.max(name1s.size(), name2s.size()); int maxLine = Math.max(name1s.size(), name2s.size());
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < maxLine; i++) { for (int i = 0; i < maxLine; i++) {
stringBuilder.append("<p>"); // stringBuilder.append("<p>");
putText(chineseCharLength, name1s, stringBuilder, i, foodNameSpace); putText(chineseCharLength, name1s, name2s, null, stringBuilder, i);
putText(chineseCharLength, name2s, stringBuilder, i, foodNumSpace);
stringBuilder.append("</p>"); // putText(chineseCharLength, name1s, name2s, null, stringBuilder, i, foodNameSpace);
// putText(chineseCharLength, name1s, name2s, null, stringBuilder, i, foodNumSpace);
// appendFoodRow(stringBuilder, name1, name2, null, foodNameSpace, BOOPOS_food_column2);
// appendFoodRow(stringBuilder, name1, name2, null, foodNumSpace, BOOPOS_food_column2);
// stringBuilder.append("</p>");
} }
return stringBuilder.toString(); return stringBuilder.toString();
} }
...@@ -180,4 +197,36 @@ public class PrintUtils { ...@@ -180,4 +197,36 @@ public class PrintUtils {
} }
} }
private static void putText(double chineseCharLength, List<String> name1s, List<String> name2s, List<String> name3s,
StringBuilder stringBuilder, int i) {
if (i < name1s.size()) {
stringBuilder.append("<row>\n" + "<column>" + name1s.get(i) + "</column>\n");
}
if (i < name2s.size()) {
if (name3s != null) {
//row結尾在金額位置
stringBuilder.append("<column offset=" + num_offset + ">" + name2s.get(i) + "</column>\n");
} else {
stringBuilder.append("<column offset=" + num_offset + ">" + name2s.get(i) + "</column>\n</row>\n");
}
}
if (name3s != null) {
if (i < name3s.size()) {
stringBuilder.append("<column offset=" + amount_offset + ">" + name3s.get(i) + "</column>\n</row>\n");
}
}
}
/**
* 獲取BBPos食品行打印信息
* @param name1s
* @param name2s
* @param name3s
* @return
*/
public static String getBBPosFoodLineString(List<String> name1s, List<String> name2s, List<String> name3s){
}
} }
...@@ -9,6 +9,7 @@ import android.os.Build; ...@@ -9,6 +9,7 @@ import android.os.Build;
import android.os.IBinder; import android.os.IBinder;
import android.os.RemoteException; import android.os.RemoteException;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.SparseArray;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -50,6 +51,7 @@ import com.gingersoft.gsa.cloud.print.PrintExecutor; ...@@ -50,6 +51,7 @@ import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder; import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm; import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
import com.gingersoft.gsa.cloud.print.bean.OrderDetails; import com.gingersoft.gsa.cloud.print.bean.OrderDetails;
import com.gingersoft.gsa.cloud.print.bean.PrintCleanMachineContent;
import com.gingersoft.gsa.cloud.print.bean.PrintContent; import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.PrintQRCodeContent; import com.gingersoft.gsa.cloud.print.bean.PrintQRCodeContent;
import com.google.zxing.WriterException; import com.google.zxing.WriterException;
...@@ -58,6 +60,7 @@ import com.hyweb.n5.lib.util.PrinterUtil; ...@@ -58,6 +60,7 @@ import com.hyweb.n5.lib.util.PrinterUtil;
import com.hyweb.n5.server.aidl.IOnPrintCallback; import com.hyweb.n5.server.aidl.IOnPrintCallback;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.joe.print.R; import com.joe.print.R;
import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.model.bean.PrintBillBean; import com.joe.print.mvp.model.bean.PrintBillBean;
import com.joe.print.mvp.print.common.PrinterFinderCallback; import com.joe.print.mvp.print.common.PrinterFinderCallback;
import com.joe.print.mvp.print.common.SendResultCode; import com.joe.print.mvp.print.common.SendResultCode;
...@@ -81,7 +84,7 @@ import javax.inject.Inject; ...@@ -81,7 +84,7 @@ import javax.inject.Inject;
import lombok.Getter; import lombok.Getter;
@Getter @Getter
public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener { public abstract class PrinterRoot<T extends PrintContent> implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener {
@Inject @Inject
AppManager mAppManager; AppManager mAppManager;
...@@ -90,35 +93,40 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -90,35 +93,40 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度 private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度
final static String DELIMITER = "/";//將打印位置區分開來。。。。,暫時只有廚房單用到 final static String DELIMITER = "/";//將打印位置區分開來。。。。,暫時只有廚房單用到
private PrintListener printListener; private PrintListener printListener;
private static SparseArray<PrinterRoot> mPrinterStrategy = new SparseArray<>();
static {
mPrinterStrategy.put(PrintConstans.PRINT_TEST, new PrintTest());
mPrinterStrategy.put(PrintConstans.PRINT_SERVE, new PrintServe());
mPrinterStrategy.put(PrintConstans.PRINT_SLIP, new PrintSlip());
mPrinterStrategy.put(PrintConstans.PRINT_BILL, new PrintBill());
mPrinterStrategy.put(PrintConstans.PRINT_KITCHEN, new PrintPrjKitchen());
mPrinterStrategy.put(PrintConstans.PRINT_CLEAN_MACHINE, new PrintCleanMachine());
mPrinterStrategy.put(PrintConstans.PRINT_OTHER_ORDER, new PrintOtherOrder());
mPrinterStrategy.put(PrintConstans.PRINT_INSTRUCTION, new PrintInstruction());
mPrinterStrategy.put(PrintConstans.PRINT_OTHER_CLOSING, new PrintOtherOrderClosing());
mPrinterStrategy.put(PrintConstans.PRINT_SKYORDER_QRCODE, new PrintQRCode());
}
public static PrinterRoot getPrinterByType(int type, PrintContent content) { public static PrinterRoot getPrinterByType(int type, PrintContent content) {
//初始化USB打印 if (mPrinterStrategy.indexOfKey(type) >= 0) {
if (type == PrintConstans.PRINT_TEST) { PrinterRoot printerRoot = mPrinterStrategy.get(type);
return new PrintTest(); printerRoot.setPrintContent(content);
} else if (type == PrintConstans.PRINT_SERVE) { return printerRoot;
return new PrintServe();
} else if (type == PrintConstans.PRINT_SLIP) {
return new PrintSlip();
} else if (type == PrintConstans.PRINT_BILL) {
return new PrintBill();
} else if (type == PrintConstans.PRINT_KITCHEN) {
return new PrintPrjKitchen();
} else if (type == PrintConstans.PRINT_CLEAN_MACHINE) {
return new PrintCleanMachine();
} else if (type == PrintConstans.PRINT_OTHER_ORDER) {
return new PrintOtherOrder();
} else if (type == PrintConstans.PRINT_INSTRUCTION) {
return new PrintInstruction();
} else if (type == PrintConstans.PRINT_OTHER_CLOSING) {
return new PrintOtherOrderClosing();
} else if (type == PrintConstans.PRINT_SKYORDER_QRCODE) {
return new PrintQRCode((PrintQRCodeContent) content);
} }
return null; return null;
} }
/**
* 需要打印的實體類 需要重寫這個方法
*
* @param printContent
*/
protected void setPrintContent(T printContent) {
}
public PrinterRoot setPrintListener(PrintListener printListener) { public PrinterRoot setPrintListener(PrintListener printListener) {
this.printListener = printListener; this.printListener = printListener;
return this; return this;
...@@ -183,7 +191,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -183,7 +191,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
* *
* @return BBPOS是HTMl格式 * @return BBPOS是HTMl格式
*/ */
public abstract String getPrintData(Context mContext, PrinterDeviceBean deviceBean); public abstract String[] getPrintDatas(Context mContext, PrinterDeviceBean deviceBean);
/** /**
* 獲取打印次數 * 獲取打印次數
...@@ -196,7 +204,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -196,7 +204,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
/** /**
* 本機打印 * 本機打印
*/ */
public void locationPrint(List<Bitmap> bitmaps, String printData, PrintListener listener) { public void locationPrint(List<Bitmap> bitmaps, String [] BBPosPrintDatas, PrintListener listener) {
//本機打印 //本機打印
String model = Build.MODEL; String model = Build.MODEL;
if (PrintConstans.PRINT_MODEL_V2.contains(model)) { if (PrintConstans.PRINT_MODEL_V2.contains(model)) {
...@@ -207,7 +215,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -207,7 +215,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
} else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) { } else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) {
//BBPOS Wisepos 打印 localhost 192.168.1.162 //BBPOS Wisepos 打印 localhost 192.168.1.162
//打印結果示例:<?xml version="1.0" encoding= "UTF-8" ?><WAPIResult><status>SUCCESS</status><requestType>PRINT</requestType><state>IDLE</state><systemInfo><appVersion>1.22.4.4.007</appVersion><OSVersion>9</OSVersion><ip>192.168.1.162</ip><mac>2059a018d3d6</mac><serialNumber>WSS503013000075</serialNumber><firmware>WSS50.501-02 (5.00.01.02.beta7)</firmware><hardware></hardware><terminalConfig>GNZZ_MTIPD_v13_with_AE_v1</terminalConfig><key>034040XXXXXXXXXXXXXX</key><bootloader>6.00.00.20 (6.00.00.34)</bootloader></systemInfo><timestamp>1601021267673</timestamp></WAPIResult> //打印結果示例:<?xml version="1.0" encoding= "UTF-8" ?><WAPIResult><status>SUCCESS</status><requestType>PRINT</requestType><state>IDLE</state><systemInfo><appVersion>1.22.4.4.007</appVersion><OSVersion>9</OSVersion><ip>192.168.1.162</ip><mac>2059a018d3d6</mac><serialNumber>WSS503013000075</serialNumber><firmware>WSS50.501-02 (5.00.01.02.beta7)</firmware><hardware></hardware><terminalConfig>GNZZ_MTIPD_v13_with_AE_v1</terminalConfig><key>034040XXXXXXXXXXXXXX</key><bootloader>6.00.00.20 (6.00.00.34)</bootloader></systemInfo><timestamp>1601021267673</timestamp></WAPIResult>
new BBposPrint().print(printData, listener); new BBposPrint().print(BBPosPrintDatas, listener);
} else { } else {
listener.printFile("暫不支持本機型打印"); listener.printFile("暫不支持本機型打印");
} }
...@@ -381,10 +389,11 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -381,10 +389,11 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
printerFinder.startFinder(); printerFinder.startFinder();
} }
public void transmitPrjToPc(PrinterDeviceBean defaultPrint){ public void transmitPrjToPc(PrinterDeviceBean defaultPrint) {
} }
/** /**
* view轉bitmap * view轉bitmap
* *
...@@ -937,7 +946,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -937,7 +946,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return getPLable(content.toString(), gravity); return getPLable(content.toString(), gravity);
} }
protected String generateFoodInfoTwoColumns(List<OrderDetail> foodList) { protected String generateHtmlFoodInfoTwoColumns(List<OrderDetail> foodList) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < foodList.size(); i++) { for (int i = 0; i < foodList.size(); i++) {
OrderDetail orderDetail = foodList.get(i); OrderDetail orderDetail = foodList.get(i);
...@@ -954,7 +963,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -954,7 +963,7 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return stringBuilder.toString(); return stringBuilder.toString();
} }
protected String generateFoodInfo(List<OrderDetail> foodList) { protected String generateHtmlFoodInfo(List<OrderDetail> foodList) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < foodList.size(); i++) { for (int i = 0; i < foodList.size(); i++) {
OrderDetail orderDetail = foodList.get(i); OrderDetail orderDetail = foodList.get(i);
...@@ -979,5 +988,45 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -979,5 +988,45 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return PrintUtils.getLineString(name1, name2, name3, PrintUtils.BBPOS_Chinese_Length); return PrintUtils.getLineString(name1, name2, name3, PrintUtils.BBPOS_Chinese_Length);
} }
protected String getHtmlLables(HtmlLable... lables) {
StringBuilder stringBuilder = new StringBuilder();
for (HtmlLable lable : lables) {
if (TextUtils.isEmpty(lable.getValue()) && lable.getAttributesList() == null) {
//沒有標籤屬性 一般為<row>,<br>標籤直接追加即可
stringBuilder.append(lable.getLablename());
continue;
}
if (lable.getAttributesList() != null) {
stringBuilder.append("<" + lable.getLablename() + traverseAttributes(lable.getAttributesList()) + ">" + lable.getValue() + "</" + lable.getLablename() + ">\n");
} else {
stringBuilder.append("<" + lable.getLablename() + ">" + lable.getValue() + "</" + lable.getLablename() + ">\n");
}
}
return stringBuilder.toString();
}
protected String traverseAttributes(HtmlLable.Attributes[] attributesMap) {
StringBuilder stringBuilder = new StringBuilder();
for (HtmlLable.Attributes attributes : attributesMap) {
stringBuilder.append(" " + attributes.getAttributesName() + "=");
stringBuilder.append(attributes.getAttributesVaule());
}
return stringBuilder.toString();
}
protected String getRowLableStart() {
return "<row>";
}
protected String getRowLableEnd() {
return "</row>\n";
}
protected String getRowLableStart(HtmlLable.Attributes ... attributes) {
return "<row " + traverseAttributes(attributes) + ">";
}
protected String getBrLable() {
return "<br/>\n";
}
} }
\ No newline at end of file
package com.joe.print.mvp.print.common;
/**
* @author : bin
* @create date: 2020-11-28
* @update date: 2020-11-28
* @description:
*/
public class HtmlContract {
public static final String LABLE_BR = "br";
public static final String LABLE_DIV = "div";
public static final String LABLE_P = "p";
public static final String LABLE_ROW = "row";
public static final String LABLE_COLUMN = "column";
public static final String LABLE_QRCODE = "qrcode";
public static final String ATTRIBUTES_WIDTH = "width";
public static final String ATTRIBUTES_OFFSET = "offset";
public static final String ATTRIBUTES_ALIGN = "align";
public static final String ATTRIBUTES_BOLD = "bold";
public static final String ATTRIBUTES_SCALE = "scale";
public static final String ATTRIBUTES_FONT_SIZE = "font-size";
public static final String value_offset_last = "last";
public static final String value_offset_percentage70 = "0.7";
public static final String value_offset_percentage60 = "0.6";
public static final String value_offset_percentage50 = "0.5";
public static final String value_offset_percentage40 = "0.4";
public static final String value_offset_percentage30 = "0.3";
public static final String value_offset_percentage35 = "0.35";
public static final String value_offset_percentage20 = "0.2";
public static final String value_align_center = "center";
public static final String value_align_right = "right";
}
...@@ -18,53 +18,61 @@ import java.net.ConnectException; ...@@ -18,53 +18,61 @@ import java.net.ConnectException;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class BBposPrint { public class BBposPrint {
public void print(String printData, PrintListener listener) { public void print(String[] printDatas, PrintListener listener) {
WiseposBean wiseposBean = new WiseposBean(); for (String printData : printDatas) {
OkHttp3Utils.get("http://localhost:8080/pos?transactionType=PRINT&isExternal=false&apiVersion=21&printData=" + printData).subscribe(new Observer<String>() { WiseposBean wiseposBean = new WiseposBean();
@Override OkHttp3Utils.get("http://localhost:8080/pos?transactionType=PRINT&isExternal=false&apiVersion=21&printData=" + printData)
public void onSubscribe(Disposable d) { .subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
} }
@Override @Override
public void onNext(String s) { public void onNext(String s) {
analysisPrintResult(s, wiseposBean, listener); analysisPrintResult(s, wiseposBean, listener);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
e.printStackTrace(); e.printStackTrace();
if (e instanceof ConnectException) { if (e instanceof ConnectException) {
listener.printFile("無法連接打印,請檢查WisePay是否打開"); listener.printFile("無法連接打印,請檢查WisePay是否打開");
} else if (e instanceof TimeoutException) { } else if (e instanceof TimeoutException) {
backPrintActivity(); backPrintActivity();
} }
} }
@Override @Override
public void onComplete() { public void onComplete() {
//這個節點解析完成 //這個節點解析完成
if (wiseposBean.getState() != null && wiseposBean.getState().equals("SUCCESS")) { if (wiseposBean.getState() != null && wiseposBean.getState().equals("SUCCESS")) {
listener.printSuccess(); listener.printSuccess();
} else { } else {
listener.printFile("打印失敗"); listener.printFile("打印失敗");
} }
backPrintActivity(); backPrintActivity();
} }
});
}
}
private void backPrintActivity() { private void backPrintActivity() {
Intent intent = new Intent(GsaCloudApplication.getAppContext(), PrintActivity.class); Intent intent = new Intent(GsaCloudApplication.getAppContext(), PrintActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
GsaCloudApplication.getAppContext().startActivity(intent); GsaCloudApplication.getAppContext().startActivity(intent);
}
});
} }
private void analysisPrintResult(String s, WiseposBean wiseposBean, PrintListener listener) { private void analysisPrintResult(String s, WiseposBean wiseposBean, PrintListener listener) {
......
...@@ -255,11 +255,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -255,11 +255,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
Map<String, List<Bitmap>> listMap = null; Map<String, List<Bitmap>> listMap = null;
List<Bitmap> zoomBitmaps = null; List<Bitmap> zoomBitmaps = null;
String printData = null; String[] BBPosPrintDatas = null;
if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_LOCAL && PrintConstans.PRINT_MODEL_WISEPOS.contains(Build.MODEL)) { if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_LOCAL && PrintConstans.PRINT_MODEL_WISEPOS.contains(Build.MODEL)) {
//本機打印並且是BBPOS //本機打印並且是BBPOS
printData = printerInIt.getPrintData(mContext, defaultPrint); BBPosPrintDatas = printerInIt.getPrintDatas(mContext, defaultPrint);
if (printData == null) { if (BBPosPrintDatas == null) {
printFile("暫不支持打印此單"); printFile("暫不支持打印此單");
return; return;
} }
...@@ -284,7 +284,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -284,7 +284,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printerInIt.ipDevicePrint(defaultPrint, zoomBitmaps); printerInIt.ipDevicePrint(defaultPrint, zoomBitmaps);
} else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_LOCAL) { } else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_LOCAL) {
//本地N5或Sunmi打印 //本地N5或Sunmi打印
printerInIt.locationPrint(zoomBitmaps, printData, this); printerInIt.locationPrint(zoomBitmaps, BBPosPrintDatas, this);
} else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_USB) { } else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_USB) {
//USB打印打印 //USB打印打印
printerInIt.usbPrint(mContext, zoomBitmaps); printerInIt.usbPrint(mContext, zoomBitmaps);
......
...@@ -14,7 +14,6 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity; ...@@ -14,7 +14,6 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
public class ComponentTable implements IComponent { public class ComponentTable implements IComponent {
public static final String ComponentName = "table";
public static final class table { public static final class table {
/** /**
......
package com.gingersoft.gsa.cloud.table;
import com.gingersoft.gsa.cloud.function.FModule;
import com.gingersoft.gsa.cloud.function.XFunctionItems;
/**
* @author : bin
* @create date: 2020-11-27
* @update date: 2020-11-27
* @description:
*/
public class FunctionTable {
public static final String TABLE_GROUP = "table";
public static final String TABLE_BOTTOM_GROUP = TABLE_GROUP + "/bottom/";
public static final String MANAGER_GROUP = TABLE_GROUP + "/manager/";
public static final String ORDER_GROUP = TABLE_GROUP + "/order/";
/**
* 餐檯頁
*/
@XFunctionItems(TABLE_BOTTOM_GROUP)
public static final FModule[] bottom = {
new FModule(TABLE_BOTTOM_GROUP + "init", R.mipmap.table_init, 0),
new FModule(TABLE_BOTTOM_GROUP + "initSkyorder", R.mipmap.table_paper, 0),
new FModule(TABLE_BOTTOM_GROUP + "move", R.mipmap.table_move, 0),
new FModule(TABLE_BOTTOM_GROUP + "skyorder", 0, 0),
new FModule(TABLE_BOTTOM_GROUP + "splite", R.mipmap.table_splite, 0),
new FModule(TABLE_BOTTOM_GROUP + "parper", R.mipmap.table_paper, 0),
};
/**
* 餐牌頁
*/
@XFunctionItems(MANAGER_GROUP)
public static final FModule[] meal = {
new FModule(MANAGER_GROUP + "plu", R.mipmap.table_paper, 0),
new FModule(MANAGER_GROUP + "discount", R.mipmap.table_skyorder, 0)
};
/**
* 賬單內容頁
*/
@XFunctionItems(ORDER_GROUP)
public static final FModule[] order = {
new FModule(ORDER_GROUP + "send", 0, 0),
new FModule(ORDER_GROUP + "print", 0, 0),
new FModule(ORDER_GROUP + "pay", 0, 0),
new FModule(ORDER_GROUP + "transfer", 0, 0),
new FModule(ORDER_GROUP + "discount", 0, 0)
};
}
...@@ -112,7 +112,7 @@ public class PrintSkyorderAction extends TableAction { ...@@ -112,7 +112,7 @@ public class PrintSkyorderAction extends TableAction {
PrintQRCodeContent printQRCodeBean = new PrintQRCodeContent(); PrintQRCodeContent printQRCodeBean = new PrintQRCodeContent();
printQRCodeBean.setPrintTableName("餐檯:" + tableBean.getTableName()); printQRCodeBean.setPrintTableName("餐檯:" + tableBean.getTableName());
printQRCodeBean.setPrintTopInfo(printTopInfo); printQRCodeBean.setPrintTopInfo(printTopInfo);
printQRCodeBean.setBottonInfo(printBottomInfo); printQRCodeBean.setPrintBottonInfo(printBottomInfo);
printQRCodeBean.setPrintQrcode(QRCodeContent); printQRCodeBean.setPrintQrcode(QRCodeContent);
printQRCodeBean.setPrintTime("打印時間:" + printTime); printQRCodeBean.setPrintTime("打印時間:" + printTime);
printQRCodeBean.setPrintPeopleNum("人數:" + person); printQRCodeBean.setPrintPeopleNum("人數:" + person);
......
...@@ -17,7 +17,9 @@ import com.gingersoft.gsa.cloud.base.table.bean.TableExtBean; ...@@ -17,7 +17,9 @@ import com.gingersoft.gsa.cloud.base.table.bean.TableExtBean;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.constans.FoodSummaryConstans; import com.gingersoft.gsa.cloud.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.table.ComponentTable; import com.gingersoft.gsa.cloud.function.XFunctionManager;
import com.gingersoft.gsa.cloud.function.XFunctionViews;
import com.gingersoft.gsa.cloud.table.FunctionTable;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract; import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
...@@ -109,6 +111,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -109,6 +111,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
private List<TableBean.DataBean> mTableList = new ArrayList<>(); private List<TableBean.DataBean> mTableList = new ArrayList<>();
private BottomFunctionAdapter mBottomFunctionAdapter; private BottomFunctionAdapter mBottomFunctionAdapter;
@XFunctionViews(FunctionTable.TABLE_BOTTOM_GROUP)
private List<Function> mBottomFunctionList = new ArrayList<>(); private List<Function> mBottomFunctionList = new ArrayList<>();
private TableAction mTableAction; private TableAction mTableAction;
...@@ -135,7 +139,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -135,7 +139,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
public TablePresenter(TableContract.Model model, TableContract.View rootView) { public TablePresenter(TableContract.Model model, TableContract.View rootView) {
super(model, rootView); super(model, rootView);
this.IActivity = (TableActivity) rootView; this.IActivity = (TableActivity) rootView;
XFunctionManager.newInstance().inJect(this, FunctionTable.class);
startTablePolling(); startTablePolling();
} }
...@@ -171,11 +175,12 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -171,11 +175,12 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
} }
public void initBottomFunction() { public void initBottomFunction() {
swapSkyorderPosition(mBottomFunctionList);
initTableActions(IActivity, mBottomFunctionList);
if (mBottomFunctionAdapter == null) { if (mBottomFunctionAdapter == null) {
mBottomFunctionAdapter = new BottomFunctionAdapter(IActivity, mBottomFunctionList); mBottomFunctionAdapter = new BottomFunctionAdapter(IActivity, mBottomFunctionList);
mRootView.setBottomFunctionAdapter(mBottomFunctionAdapter); mRootView.setBottomFunctionAdapter(mBottomFunctionAdapter);
} }
initBottomFunctionItem();
initBottomFunctionListener(); initBottomFunctionListener();
} }
...@@ -207,32 +212,6 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -207,32 +212,6 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}); });
} }
public void initBottomFunctionItem() {
if (mBottomFunctionList.size() > 0) {
mBottomFunctionList.clear();
}
boolean addFuctions = false;
List<Function> functions = FunctionManager.getDefault().getFunctionByResModule(GsaCloudApplication.getAppContext(), ComponentTable.table.class, ComponentTable.table.bottom, "bottom");
for (int i = 0; i < functions.size(); i++) {
Function function = functions.get(i);
if (function.getParentId() == 0) {
//有配置餐檯操作模块
functions.remove(i);
addFuctions = true;
}
}
swapSkyorderPosition(functions);
if (addFuctions) {
mBottomFunctionList.addAll(functions);
mBottomFunctionAdapter.notifyDataSetChanged();
mRootView.setBottomFunctionVisibility(true);
} else {
mRootView.setBottomFunctionVisibility(false);
}
initTableActions(IActivity, functions);
}
private void swapSkyorderPosition(List<Function> functions) { private void swapSkyorderPosition(List<Function> functions) {
int skyorderPosition = -1; int skyorderPosition = -1;
for (int i = 0; i < functions.size(); i++) { for (int i = 0; i < functions.size(); i++) {
......
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