Commit 5e45c2a8 by Wyh

10.15 1、BBpos打印印單、上菜紙、處方單 2、PRJ打印頁數優化 3、新訂單頁面

Signed-off-by: Wyh <1239658231>
parent cc2bb8ac
......@@ -51,7 +51,7 @@ android {
/**
* 版本号
*/
schemaVersion 16
schemaVersion 17
/**
* greendao输出dao的数据库操作实体类文件夹(相对路径 包名+自定义路径名称,包将创建于包名的直接路径下)
*/
......
......@@ -30,13 +30,13 @@ import com.gingersoft.gsa.cloud.base.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.xlog.MyBackupStrategy;
import com.gingersoft.gsa.cloud.bean.RestaurantExpandInfo;
import com.gingersoft.gsa.cloud.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.constans.UserConstans;
import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.bean.ExpandInfo;
import com.gingersoft.gsa.cloud.database.utils.ExpandInfoDaoUtils;
import com.gingersoft.gsa.cloud.bean.RestaurantExpandInfo;
import com.hyweb.n5.lib.exception.NoInitPrinterException;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.jess.arms.base.BaseApplication;
......@@ -105,7 +105,7 @@ public class GsaCloudApplication extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
this.mAppContext = this;
mAppContext = this;
CC.enableVerboseLog(true);
CC.enableDebug(true);
CC.enableRemoteCC(true);
......@@ -227,6 +227,8 @@ public class GsaCloudApplication extends BaseApplication {
RetrofitUrlManager.getInstance().putDomain("ricepon_activities", HttpsConstans.ricepon_activities);
///ricepon-cloud-gsa/api/請求地址
RetrofitUrlManager.getInstance().putDomain("ricepon_cloud_gsa", HttpsConstans.ricepon_cloud_gsa);
//61177
RetrofitUrlManager.getInstance().putDomain("ricepon_member", HttpsConstans.RICEPON_MEMBER_61177);
}
private void initPrint() {
......
......@@ -20,4 +20,43 @@ public class BaseResult {
private String errMsg;
private Object 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 String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
......@@ -234,4 +234,332 @@ public class PayMethod {
this.nameSecond = name;
this.nameThird = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getBrandId() {
return brandId;
}
public void setBrandId(int brandId) {
this.brandId = brandId;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public String getNameFirst() {
return nameFirst;
}
public void setNameFirst(String nameFirst) {
this.nameFirst = nameFirst;
}
public String getNameSecond() {
return nameSecond;
}
public void setNameSecond(String nameSecond) {
this.nameSecond = nameSecond;
}
public String getNameThird() {
return nameThird;
}
public void setNameThird(String nameThird) {
this.nameThird = nameThird;
}
public int getWhetherSales() {
return whetherSales;
}
public void setWhetherSales(int whetherSales) {
this.whetherSales = whetherSales;
}
public int getWhetherManagerAuthority() {
return whetherManagerAuthority;
}
public void setWhetherManagerAuthority(int whetherManagerAuthority) {
this.whetherManagerAuthority = whetherManagerAuthority;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getFont_color() {
return font_color;
}
public void setFont_color(String font_color) {
this.font_color = font_color;
}
public int getWhetherReportCount() {
return whetherReportCount;
}
public void setWhetherReportCount(int whetherReportCount) {
this.whetherReportCount = whetherReportCount;
}
public int getInteractiveType() {
return interactiveType;
}
public void setInteractiveType(int interactiveType) {
this.interactiveType = interactiveType;
}
public int getWhetherFixedAmount() {
return whetherFixedAmount;
}
public void setWhetherFixedAmount(int whetherFixedAmount) {
this.whetherFixedAmount = whetherFixedAmount;
}
public double getAmountValue() {
return amountValue;
}
public void setAmountValue(double amountValue) {
this.amountValue = amountValue;
}
public int getPayType() {
return payType;
}
public void setPayType(int payType) {
this.payType = payType;
}
public double getMinPayAmount() {
return minPayAmount;
}
public void setMinPayAmount(double minPayAmount) {
this.minPayAmount = minPayAmount;
}
public int getWhetherFreeService() {
return whetherFreeService;
}
public void setWhetherFreeService(int whetherFreeService) {
this.whetherFreeService = whetherFreeService;
}
public int getWhetherTaxExemption() {
return whetherTaxExemption;
}
public void setWhetherTaxExemption(int whetherTaxExemption) {
this.whetherTaxExemption = whetherTaxExemption;
}
public int getWhetherSignatureLine() {
return whetherSignatureLine;
}
public void setWhetherSignatureLine(int whetherSignatureLine) {
this.whetherSignatureLine = whetherSignatureLine;
}
public int getPaySeq() {
return paySeq;
}
public void setPaySeq(int paySeq) {
this.paySeq = paySeq;
}
public int getWhetherOpenBox() {
return whetherOpenBox;
}
public void setWhetherOpenBox(int whetherOpenBox) {
this.whetherOpenBox = whetherOpenBox;
}
public int getGetIntegral() {
return getIntegral;
}
public void setGetIntegral(int getIntegral) {
this.getIntegral = getIntegral;
}
public int getIntegralMultiple() {
return integralMultiple;
}
public void setIntegralMultiple(int integralMultiple) {
this.integralMultiple = integralMultiple;
}
public float getDeductionIntegral() {
return deductionIntegral;
}
public void setDeductionIntegral(float deductionIntegral) {
this.deductionIntegral = deductionIntegral;
}
public int getDockingType() {
return dockingType;
}
public void setDockingType(int dockingType) {
this.dockingType = dockingType;
}
public String getBillType() {
return billType;
}
public void setBillType(String billType) {
this.billType = billType;
}
public int getTablePrintingAmount() {
return tablePrintingAmount;
}
public void setTablePrintingAmount(int tablePrintingAmount) {
this.tablePrintingAmount = tablePrintingAmount;
}
public int getTakeOutPrintingAmount() {
return takeOutPrintingAmount;
}
public void setTakeOutPrintingAmount(int takeOutPrintingAmount) {
this.takeOutPrintingAmount = takeOutPrintingAmount;
}
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
public long getCreateTimeX() {
return createTimeX;
}
public void setCreateTimeX(long createTimeX) {
this.createTimeX = createTimeX;
}
public int getUpdateUid() {
return updateUid;
}
public void setUpdateUid(int updateUid) {
this.updateUid = updateUid;
}
public int getCreateUid() {
return createUid;
}
public void setCreateUid(int createUid) {
this.createUid = createUid;
}
public double getPayMoney() {
return payMoney;
}
public void setPayMoney(double payMoney) {
this.payMoney = payMoney;
}
public double getTipsPrice() {
return TipsPrice;
}
public void setTipsPrice(double tipsPrice) {
TipsPrice = tipsPrice;
}
public int getPayModeTextColor() {
return payModeTextColor;
}
public void setPayModeTextColor(int payModeTextColor) {
this.payModeTextColor = payModeTextColor;
}
public int getPayMoneyTextColor() {
return payMoneyTextColor;
}
public void setPayMoneyTextColor(int payMoneyTextColor) {
this.payMoneyTextColor = payMoneyTextColor;
}
public int getPayModeTextSelectColor() {
return payModeTextSelectColor;
}
public void setPayModeTextSelectColor(int payModeTextSelectColor) {
this.payModeTextSelectColor = payModeTextSelectColor;
}
public int getPayMoneyTextSelectColor() {
return payMoneyTextSelectColor;
}
public void setPayMoneyTextSelectColor(int payMoneyTextSelectColor) {
this.payMoneyTextSelectColor = payMoneyTextSelectColor;
}
public int getPayModeSize() {
return payModeSize;
}
public void setPayModeSize(int payModeSize) {
this.payModeSize = payModeSize;
}
public int getPayMoneySize() {
return payMoneySize;
}
public void setPayMoneySize(int payMoneySize) {
this.payMoneySize = payMoneySize;
}
public static int getPayTypeCash() {
return PAY_TYPE_CASH;
}
public static int getPayTypeIntegral() {
return PAY_TYPE_INTEGRAL;
}
}
package com.gingersoft.gsa.cloud.base.utils.other;
import android.widget.EditText;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......@@ -23,6 +25,15 @@ public class TextUtil {
!str.equals("null") && !str.equals("undefined");
}
public static boolean isNotEmptyOrNullOrUndefined(EditText editText) {
if (editText != null && editText.getText() != null) {
String str = editText.getText().toString();
return str.length() != 0 && !str.equals("null") && !str.equals("undefined");
} else {
return false;
}
}
public static String isEmptyReturnString(String str) {
if (str == null || str.length() == 0 ||
str.equals("null") || str.equals("undefined")) {
......@@ -53,9 +64,10 @@ public class TextUtil {
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
if (c[i] > 65280 && c[i] < 65375) {
c[i] = (char) (c[i] - 65248);
}
}
return new String(c);
}
......
......@@ -94,4 +94,43 @@ public class TimePickerUtils {
}
/**
* 顯示報表頁面時間選擇樣式
* @param mContext
* @param defaultTime 默認選中時間
* @param onTimeSelectListener 選中時間回調
*/
public static TimePickerView showTimePicker(Context mContext, Calendar defaultTime, TimePickerView.OnTimeSelectListener onTimeSelectListener) {
//獲取今年第一天的日期
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
//打開時間選擇器
TimePickerView pvTime = new TimePickerView.Builder(mContext, onTimeSelectListener)
.setType(TimePickerView.Type.HOURS_MINS)//默认全部显示
.setCancelText("取消")//取消按钮文字
.setSubmitText("確認")//确认按钮文字
.setContentSize(20)//滚轮文字大小
.setTitleSize(20)//标题文字大小
// .setTitleText("请选择时间")//标题文字
.setOutSideCancelable(true)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(false)//是否循环滚动
.setTextColorCenter(Color.BLACK)//设置选中项的颜色
.setTitleColor(Color.BLACK)//标题文字颜色
.setSubmitColor(Color.BLUE)//确定按钮文字颜色
.setCancelColor(Color.BLUE)//取消按钮文字颜色
// .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
// .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
// .setRange(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.YEAR))
// .setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
.setRangDate(Calendar.getInstance(), cal)//時間是今年第一天到今天
.setLabel("", "", "", "", "", "")
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
// .isDialog(true)//是否显示为对话框样式
.build();
//設置默認選中時間
// pvTime.setDate(defaultTime);//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
pvTime.show();
return pvTime;
}
}
......@@ -22,6 +22,67 @@ import timber.log.Timber;
* @Description: TODO(时间工具类)
*/
public class TimeUtils {
/**
* SimpleDateFormat.format把date转成String
* SimpleDateFormat.parse把String转成date。
*
* SimpleDateFormat.parse的时候,经常会有ParseException原因是输入的字符串格式跟SimpleDateFormat定义的格式不一致。
* 这时候,可以先通过SimpleDateFormat.format把参数转成符合格式的字符串,然后再调用SimpleDateFormat.parse
*
* G 年代标志符
* y 年
* M 月
* d 日
* h 时 在上午或下午 (1~12)
* H 时 在一天中 (0~23)
* m 分
* s 秒
* S 毫秒
* E 星期
* D 一年中的第几天
* F 一月中第几个星期几
* w 一年中第几个星期
* W 一月中第几个星期
* a 上午 / 下午 标记符
* k 时 在一天中 (1~24)
* K 时 在上午或下午 (0~11)
* z 时区
* <p>
* yyyy : 代表年(不去区分大小写) 假设年份为 2017
* <p>
* "y" , "yyy" , "yyyy" 匹配的都是4位完整的年 如 : "2017"
* "yy" 匹配的是年分的后两位 如 : "15"
* 超过4位,会在年份前面加"0"补位 如 "YYYYY"对应"02017"
* <p>
* MM : 代表月(只能使用大写) 假设月份为 9
* "M" 对应 "9"
* "MM" 对应 "09"
* "MMM" 对应 "Sep"
* "MMMM" 对应 "Sep"
* 超出3位,仍然对应 "September"
* <p>
* dd : 代表日(只能使用小写) 假设为13号
* "d" , "dd" 都对应 "13"
* 超出2位,会在数字前面加"0"补位. 例如 "dddd" 对应 "0013"
* <p>
* hh : 代表时(区分大小写,大写为24进制计时,小写为12进制计时) 假设为15时
* "H" , "HH" 都对应 "15" , 超出2位,会在数字前面加"0"补位. 例如 "HHHH" 对应 "0015"
* "h" 对应 "3"
* "hh" 对应 "03" , 超出2位,会在数字前面加"0"补位. 例如 "hhhh" 对应 "0003"
* <p>
* mm : 代表分(只能使用小写) 假设为32分
* "m" , "mm" 都对应 "32" , 超出2位,会在数字前面加"0"补位. 例如 "mmmm" 对应 "0032"
* <p>
* ss : 代表秒(只能使用小写) 假设为15秒
* "s" , "ss" 都对应 "15" , 超出2位,会在数字前面加"0"补位. 例如 "ssss" 对应 "0015"
* <p>
* E : 代表星期(只能使用大写) 假设为 Sunday
* "E" , "EE" , "EEE" 都对应 "Sun"
* "EEEE" 对应 "Sunday" , 超出4位 , 仍然对应 "Sunday"
* <p>
* a : 代表上午还是下午,如果是上午就对应 "AM" , 如果是下午就对应 "PM"
*/
public static final SimpleDateFormat ENGLISH_DATE_FORMAT = new SimpleDateFormat("MMM d, yyyy K:m:s a", Locale.ENGLISH);
public static final SimpleDateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//, Locale.CHINESE
public static final SimpleDateFormat DEFAULT_DATE_FORMAT_YMDHM = new SimpleDateFormat("yyyy-MM-dd HH:mm");//, Locale.CHINESE
......@@ -1446,7 +1507,7 @@ public class TimeUtils {
return time;
}
public static String parseDateToString(Date date, SimpleDateFormat dateFormat){
public static String parseDateToString(Date date, SimpleDateFormat dateFormat) {
return dateFormat.format(date);
}
......
......@@ -49,6 +49,182 @@ public class RestaurantExpandInfo {
//估清控制食品字體大小
private int soldoutCtrlFoodFontSize = 16;
public int getFoodGroupRow() {
return foodGroupRow;
}
public void setFoodGroupRow(int foodGroupRow) {
this.foodGroupRow = foodGroupRow;
}
public int getFoodGroupColumn() {
return foodGroupColumn;
}
public void setFoodGroupColumn(int foodGroupColumn) {
this.foodGroupColumn = foodGroupColumn;
}
public int getFoodColumn() {
return foodColumn;
}
public void setFoodColumn(int foodColumn) {
this.foodColumn = foodColumn;
}
public int getComboColumn() {
return comboColumn;
}
public void setComboColumn(int comboColumn) {
this.comboColumn = comboColumn;
}
public int getModColumn() {
return modColumn;
}
public void setModColumn(int modColumn) {
this.modColumn = modColumn;
}
public int getDiscountColumn() {
return discountColumn;
}
public void setDiscountColumn(int discountColumn) {
this.discountColumn = discountColumn;
}
public int getFoodGroupBtnHeight() {
return foodGroupBtnHeight;
}
public void setFoodGroupBtnHeight(int foodGroupBtnHeight) {
this.foodGroupBtnHeight = foodGroupBtnHeight;
}
public int getFoodBtnHeight() {
return foodBtnHeight;
}
public void setFoodBtnHeight(int foodBtnHeight) {
this.foodBtnHeight = foodBtnHeight;
}
public int getModBtnHeight() {
return modBtnHeight;
}
public void setModBtnHeight(int modBtnHeight) {
this.modBtnHeight = modBtnHeight;
}
public int getComboHeight() {
return comboHeight;
}
public void setComboHeight(int comboHeight) {
this.comboHeight = comboHeight;
}
public int getDiscountHeight() {
return discountHeight;
}
public void setDiscountHeight(int discountHeight) {
this.discountHeight = discountHeight;
}
public int getLayoutQtyHeight() {
return LayoutQtyHeight;
}
public void setLayoutQtyHeight(int layoutQtyHeight) {
LayoutQtyHeight = layoutQtyHeight;
}
public int getFoodGroupFontSize() {
return foodGroupFontSize;
}
public void setFoodGroupFontSize(int foodGroupFontSize) {
this.foodGroupFontSize = foodGroupFontSize;
}
public int getFoodFontSize() {
return foodFontSize;
}
public void setFoodFontSize(int foodFontSize) {
this.foodFontSize = foodFontSize;
}
public int getComboFontSize() {
return comboFontSize;
}
public void setComboFontSize(int comboFontSize) {
this.comboFontSize = comboFontSize;
}
public int getModFontSize() {
return modFontSize;
}
public void setModFontSize(int modFontSize) {
this.modFontSize = modFontSize;
}
public int getDiscountFontSize() {
return discountFontSize;
}
public void setDiscountFontSize(int discountFontSize) {
this.discountFontSize = discountFontSize;
}
public int getOrderNumberShowSize() {
return OrderNumberShowSize;
}
public void setOrderNumberShowSize(int orderNumberShowSize) {
OrderNumberShowSize = orderNumberShowSize;
}
public int getOrderNumberFontSize() {
return OrderNumberFontSize;
}
public void setOrderNumberFontSize(int orderNumberFontSize) {
OrderNumberFontSize = orderNumberFontSize;
}
public int getOrderNumberChildShowSize() {
return OrderNumberChildShowSize;
}
public void setOrderNumberChildShowSize(int orderNumberChildShowSize) {
OrderNumberChildShowSize = orderNumberChildShowSize;
}
public int getOrderNumberChildFontSize() {
return OrderNumberChildFontSize;
}
public void setOrderNumberChildFontSize(int orderNumberChildFontSize) {
OrderNumberChildFontSize = orderNumberChildFontSize;
}
public int getSoldoutCtrlFoodFontSize() {
return soldoutCtrlFoodFontSize;
}
public void setSoldoutCtrlFoodFontSize(int soldoutCtrlFoodFontSize) {
this.soldoutCtrlFoodFontSize = soldoutCtrlFoodFontSize;
}
}
......@@ -76,6 +252,149 @@ public class RestaurantExpandInfo {
private int AutoPrinterPaper;//送單自動打印上菜紙
private int ToPrintQRCode;//結賬是否打印積分二維碼
private int AutoQuitTime = 600;//餐檯模式下單頁多少秒不操作返回餐檯頁面
public int getRounding() {
return Rounding;
}
public void setRounding(int rounding) {
Rounding = rounding;
}
public int getRoundingDecimal() {
return RoundingDecimal;
}
public void setRoundingDecimal(int roundingDecimal) {
RoundingDecimal = roundingDecimal;
}
public int getItemDecimals() {
return ItemDecimals;
}
public void setItemDecimals(int itemDecimals) {
ItemDecimals = itemDecimals;
}
public int getDeliveryPrintCount() {
return DeliveryPrintCount;
}
public void setDeliveryPrintCount(int deliveryPrintCount) {
DeliveryPrintCount = deliveryPrintCount;
}
public int getDeliveryClosingPC() {
return DeliveryClosingPC;
}
public void setDeliveryClosingPC(int deliveryClosingPC) {
DeliveryClosingPC = deliveryClosingPC;
}
public int getTableModePrintCount() {
return TableModePrintCount;
}
public void setTableModePrintCount(int tableModePrintCount) {
TableModePrintCount = tableModePrintCount;
}
public int getTableModeClosingPC() {
return TableModeClosingPC;
}
public void setTableModeClosingPC(int tableModeClosingPC) {
TableModeClosingPC = tableModeClosingPC;
}
public int getOrderReceivingTimeout() {
return OrderReceivingTimeout;
}
public void setOrderReceivingTimeout(int orderReceivingTimeout) {
OrderReceivingTimeout = orderReceivingTimeout;
}
public int getPrintMemberInfo() {
return PrintMemberInfo;
}
public void setPrintMemberInfo(int printMemberInfo) {
PrintMemberInfo = printMemberInfo;
}
public int getPrintPage() {
return PrintPage;
}
public void setPrintPage(int printPage) {
PrintPage = printPage;
}
public int getPrintMergerFood() {
return PrintMergerFood;
}
public void setPrintMergerFood(int printMergerFood) {
PrintMergerFood = printMergerFood;
}
public int getPrintStatisticsAmount() {
return PrintStatisticsAmount;
}
public void setPrintStatisticsAmount(int printStatisticsAmount) {
PrintStatisticsAmount = printStatisticsAmount;
}
public int getPrintFirstOrder() {
return PrintFirstOrder;
}
public void setPrintFirstOrder(int printFirstOrder) {
PrintFirstOrder = printFirstOrder;
}
public int getFrozenChainAutoOrder() {
return FrozenChainAutoOrder;
}
public void setFrozenChainAutoOrder(int frozenChainAutoOrder) {
FrozenChainAutoOrder = frozenChainAutoOrder;
}
public int getMergeSendFood() {
return MergeSendFood;
}
public void setMergeSendFood(int mergeSendFood) {
MergeSendFood = mergeSendFood;
}
public int getAutoPrinterPaper() {
return AutoPrinterPaper;
}
public void setAutoPrinterPaper(int autoPrinterPaper) {
AutoPrinterPaper = autoPrinterPaper;
}
public int getToPrintQRCode() {
return ToPrintQRCode;
}
public void setToPrintQRCode(int toPrintQRCode) {
ToPrintQRCode = toPrintQRCode;
}
public int getAutoQuitTime() {
return AutoQuitTime;
}
public void setAutoQuitTime(int autoQuitTime) {
AutoQuitTime = autoQuitTime;
}
}
}
......@@ -73,6 +73,7 @@ public class HttpsConstans {
//---------------------------------------System請求地址----------------------------------------------------------------------------------
public static String SYSTEM_PATH = "/ricepon-system/api/";
public static String API_RICEPON_MEMBER = "/ricepon-member/api/";
//--------------------------------------配置-----------------------------------------------------------------------------------
......@@ -86,7 +87,6 @@ public class HttpsConstans {
*/
public static int isFormal = 0;
//沽清控制地址
public static String _SERVER_ADDRESS;// = (isFormal ? HTTP_ADDRESS_URL_FORMAL : "http://a.ricepon.com:61177") + "/member-web/api/";
......@@ -109,6 +109,10 @@ public class HttpsConstans {
public static String SYSTEM_URL;
public static String RICEPON_MEMBER_SERVER_ADDRESS;
public static String RICEPON_MEMBER_61177;
public static void init(Context context) {
isFormal = (int) SPUtils.get(context, "isFormal", -1);
if (isFormal == -1 && BuildConfig.DEBUG) {
......@@ -119,17 +123,20 @@ public class HttpsConstans {
}
switch (isFormal) {
default:
_SERVER_ADDRESS = HTTP_ADDRESS_URL_FORMAL + "/member-web/api/";
RICEPON_MEMBER_61177 = HTTP_ADDRESS_URL_FORMAL + API_RICEPON_MEMBER;
_SERVER_ADDRESS = HTTP_ADDRESS_URL_FORMAL + WECHAR_REPORT_PATH;
ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = HTTP_ADDRESS_URL_FORMAL;
ROOT_SERVER_ADDRESS_FORMAL = HTTP_ADDRESS_URL_FORMAL + CLOUD_GSA_API_PATH;
ROOT_URL = ROOT_FORMAL_URL;
REPORT_SERVER_ADDRESS = REPORT_FORMAL_ADDRESS + REPORT_PATH;
WECHAR_REPORT_SERVER_ADDRESS = WECHAR_REPORT_FORMAL_ADDRESS + WECHAR_REPORT_PATH;//正式:WECHAR_REPORT_FORMAL_ADDRESS 測試:WECHAR_REPORT_TEST_ADDRESS
RICEPON_MEMBER_SERVER_ADDRESS = WECHAR_REPORT_FORMAL_ADDRESS + WECHAR_REPORT_PATH;
SYSTEM_URL = HTTP_ADDRESS_URL_FORMAL + SYSTEM_PATH;
ROOT_SERVER = HTTP_ADDRESS_URL_FORMAL;
break;
case 1:
_SERVER_ADDRESS = "http://a.ricepon.com:61177" + "/member-web/api/";
RICEPON_MEMBER_61177 = WECHAR_REPORT_TEST_ADDRESS + API_RICEPON_MEMBER;
_SERVER_ADDRESS = WECHAR_REPORT_TEST_ADDRESS + WECHAR_REPORT_PATH;
ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = REPORT_TEST_ADDRESS;
ROOT_SERVER_ADDRESS_FORMAL = HTTP_ADDRESS_URL_HK + CLOUD_GSA_API_PATH;
ROOT_URL = ROOT_HK_TEST_URL;
......@@ -139,7 +146,8 @@ public class HttpsConstans {
ROOT_SERVER = HTTP_ADDRESS_URL_HK;
break;
case 2:
_SERVER_ADDRESS = ROOT_SERVER_ZHI_WANG_HK + "/member-web/api/";
RICEPON_MEMBER_61177 = WECHAR_REPORT_TEST_ADDRESS + API_RICEPON_MEMBER;
_SERVER_ADDRESS = ROOT_SERVER_ZHI_WANG_HK + WECHAR_REPORT_PATH;
ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = REPORT_TEST_ADDRESS;
ROOT_SERVER_ADDRESS_FORMAL = ROOT_SERVER_ZHI_WANG_HK;
ROOT_URL = ROOT_SZ_URL;
......@@ -148,7 +156,8 @@ public class HttpsConstans {
SYSTEM_URL = ROOT_SERVER_ZHI_WANG_HK + SYSTEM_PATH;
break;
case 3:
_SERVER_ADDRESS = ROOT_SERVER_YOU_CHANG_HK + "/member-web/api/";
RICEPON_MEMBER_61177 = WECHAR_REPORT_TEST_ADDRESS + API_RICEPON_MEMBER;
_SERVER_ADDRESS = ROOT_SERVER_YOU_CHANG_HK + WECHAR_REPORT_PATH;
ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = REPORT_TEST_ADDRESS;
ROOT_SERVER_ADDRESS_FORMAL = ROOT_SERVER_YOU_CHANG_HK;
ROOT_URL = ROOT_SZ_URL;
......@@ -157,7 +166,8 @@ public class HttpsConstans {
SYSTEM_URL = ROOT_SERVER_YOU_CHANG_HK + SYSTEM_PATH;
break;
case 4:
_SERVER_ADDRESS = ROOT_SERVER_SHI_SHU_HK + "/member-web/api/";
RICEPON_MEMBER_61177 = WECHAR_REPORT_TEST_ADDRESS + API_RICEPON_MEMBER;
_SERVER_ADDRESS = ROOT_SERVER_SHI_SHU_HK + WECHAR_REPORT_PATH;
ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = REPORT_TEST_ADDRESS;
ROOT_SERVER_ADDRESS_FORMAL = ROOT_SERVER_SHI_SHU_HK;
ROOT_URL = ROOT_SZ_URL;
......@@ -173,8 +183,9 @@ public class HttpsConstans {
ricepon_gsa = HttpsConstans.ROOT_URL + HttpsConstans.URK_RICEPON_GSA;
ricepon_activities = HttpsConstans.ROOT_URL + HttpsConstans.URK_RICEPON_ACTIVITIES;
ricepon_cloud_gsa = HttpsConstans.ROOT_URL + HttpsConstans.CLOUD_GSA_API_PATH;
ricepon_member = HttpsConstans.ROOT_URL + "/ricepon-member/api/";
ricepon_member = HttpsConstans.ROOT_URL + API_RICEPON_MEMBER;
}
public static String ricepon_wechat;
public static String ricepon_order;
public static String member_web_ricepon_gsa;
......@@ -185,7 +196,4 @@ public class HttpsConstans {
public static String ricepon_member;
}
\ No newline at end of file
......@@ -4,14 +4,13 @@ import android.graphics.Color;
import android.text.TextUtils;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Transient;
import java.util.Date;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Transient;
import lombok.Data;
/**
......@@ -414,4 +413,163 @@ public class ComboItem {
this.printSeting = printSeting;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getName1() {
return name1;
}
public void setName1(String name1) {
this.name1 = name1;
}
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
public long getParentId() {
return parentId;
}
public void setParentId(long parentId) {
this.parentId = parentId;
}
public int getSelectQty() {
return selectQty;
}
public void setSelectQty(int selectQty) {
this.selectQty = selectQty;
}
public String getDefmodifier() {
return defmodifier;
}
public void setDefmodifier(String defmodifier) {
this.defmodifier = defmodifier;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public long getAblediscount() {
return ablediscount;
}
public void setAblediscount(long ablediscount) {
this.ablediscount = ablediscount;
}
public int getServiceCharge() {
return serviceCharge;
}
public void setServiceCharge(int serviceCharge) {
this.serviceCharge = serviceCharge;
}
public int getAutoMode() {
return autoMode;
}
public void setAutoMode(int autoMode) {
this.autoMode = autoMode;
}
public boolean isModifier() {
return isModifier;
}
public void setModifier(boolean modifier) {
isModifier = modifier;
}
public long getInvisible() {
return invisible;
}
public void setInvisible(long invisible) {
this.invisible = invisible;
}
public String getMaxNumber() {
return maxNumber;
}
public void setMaxNumber(String maxNumber) {
this.maxNumber = maxNumber;
}
public String getCurrentMaxNumber() {
return currentMaxNumber;
}
public void setCurrentMaxNumber(String currentMaxNumber) {
this.currentMaxNumber = currentMaxNumber;
}
public int getBgColor() {
return bgColor;
}
public void setBgColor(int bgColor) {
this.bgColor = bgColor;
}
public int getFontColor() {
return fontColor;
}
public void setFontColor(int fontColor) {
this.fontColor = fontColor;
}
public Modifier getModifier() {
return modifier;
}
public void setModifier(Modifier modifier) {
this.modifier = modifier;
}
public double getPointsAdd() {
return pointsAdd;
}
public void setPointsAdd(double pointsAdd) {
this.pointsAdd = pointsAdd;
}
public long getPointsRatio() {
return pointsRatio;
}
public void setPointsRatio(long pointsRatio) {
this.pointsRatio = pointsRatio;
}
public double getPointsRedeem() {
return pointsRedeem;
}
public void setPointsRedeem(double pointsRedeem) {
this.pointsRedeem = pointsRedeem;
}
}
......@@ -85,6 +85,13 @@ public class Discount {
public Discount() {
}
public long getMemberId() {
return memberId;
}
public void setMemberId(long memberId) {
this.memberId = memberId;
}
/**
* 計算折扣金額
......
......@@ -50,16 +50,16 @@ public class ExpandInfo {
//是否被編輯了
@Transient
private boolean isUpdate = false;
private String showName;
public static final int data_type_int = 1;
public static final int data_type_string = 2;
public static final int data_type_boolean = 3;
public static final int data_type_date = 4;
@Generated(hash = 372331474)
@Generated(hash = 1155994232)
public ExpandInfo(Long id, int restaurantId, String settingName,
Integer valueInt, String valueChar, String valueDatetime, String remark,
int dataType) {
int dataType, String showName) {
this.id = id;
this.restaurantId = restaurantId;
this.settingName = settingName;
......@@ -68,6 +68,7 @@ public class ExpandInfo {
this.valueDatetime = valueDatetime;
this.remark = remark;
this.dataType = dataType;
this.showName = showName;
}
@Generated(hash = 9429432)
public ExpandInfo() {
......@@ -128,4 +129,12 @@ public class ExpandInfo {
public void setUpdate(boolean update) {
isUpdate = update;
}
public String getShowName() {
return showName;
}
public void setShowName(String showName) {
this.showName = showName;
}
}
package com.gingersoft.gsa.cloud.database.greendao;
import android.database.Cursor;
import android.database.sqlite.SQLiteStatement;
import com.gingersoft.gsa.cloud.database.bean.ColorBean;
import org.greenrobot.greendao.AbstractDao;
import org.greenrobot.greendao.Property;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.database.DatabaseStatement;
import org.greenrobot.greendao.internal.DaoConfig;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
* DAO for table "COLOR_BEAN".
*/
public class ColorBeanDao extends AbstractDao<ColorBean, Void> {
public static final String TABLENAME = "COLOR_BEAN";
/**
* Properties of entity ColorBean.<br/>
* Can be used for QueryBuilder and for referencing column names.
*/
public static class Properties {
public final static Property ColorId = new Property(0, int.class, "colorId", false, "COLOR_ID");
public final static Property ColorStart = new Property(1, String.class, "colorStart", false, "COLOR_START");
public final static Property ColorStop = new Property(2, String.class, "colorStop", false, "COLOR_STOP");
public final static Property FontColor = new Property(3, String.class, "fontColor", false, "FONT_COLOR");
public final static Property AndroidColor = new Property(4, String.class, "androidColor", false, "ANDROID_COLOR");
public final static Property AndroidFontColor = new Property(5, String.class, "androidFontColor", false, "ANDROID_FONT_COLOR");
public final static Property CreateTime = new Property(6, String.class, "createTime", false, "CREATE_TIME");
public final static Property EditTime = new Property(7, String.class, "editTime", false, "EDIT_TIME");
}
public ColorBeanDao(DaoConfig config) {
super(config);
}
public ColorBeanDao(DaoConfig config, DaoSession daoSession) {
super(config, daoSession);
}
/** Creates the underlying database table. */
public static void createTable(Database db, boolean ifNotExists) {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"COLOR_BEAN\" (" + //
"\"COLOR_ID\" INTEGER NOT NULL ," + // 0: colorId
"\"COLOR_START\" TEXT," + // 1: colorStart
"\"COLOR_STOP\" TEXT," + // 2: colorStop
"\"FONT_COLOR\" TEXT," + // 3: fontColor
"\"ANDROID_COLOR\" TEXT," + // 4: androidColor
"\"ANDROID_FONT_COLOR\" TEXT," + // 5: androidFontColor
"\"CREATE_TIME\" TEXT," + // 6: createTime
"\"EDIT_TIME\" TEXT);"); // 7: editTime
}
/** Drops the underlying database table. */
public static void dropTable(Database db, boolean ifExists) {
String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"COLOR_BEAN\"";
db.execSQL(sql);
}
@Override
protected final void bindValues(DatabaseStatement stmt, ColorBean entity) {
stmt.clearBindings();
stmt.bindLong(1, entity.getColorId());
String colorStart = entity.getColorStart();
if (colorStart != null) {
stmt.bindString(2, colorStart);
}
String colorStop = entity.getColorStop();
if (colorStop != null) {
stmt.bindString(3, colorStop);
}
String fontColor = entity.getFontColor();
if (fontColor != null) {
stmt.bindString(4, fontColor);
}
String androidColor = entity.getAndroidColor();
if (androidColor != null) {
stmt.bindString(5, androidColor);
}
String androidFontColor = entity.getAndroidFontColor();
if (androidFontColor != null) {
stmt.bindString(6, androidFontColor);
}
String createTime = entity.getCreateTime();
if (createTime != null) {
stmt.bindString(7, createTime);
}
String editTime = entity.getEditTime();
if (editTime != null) {
stmt.bindString(8, editTime);
}
}
@Override
protected final void bindValues(SQLiteStatement stmt, ColorBean entity) {
stmt.clearBindings();
stmt.bindLong(1, entity.getColorId());
String colorStart = entity.getColorStart();
if (colorStart != null) {
stmt.bindString(2, colorStart);
}
String colorStop = entity.getColorStop();
if (colorStop != null) {
stmt.bindString(3, colorStop);
}
String fontColor = entity.getFontColor();
if (fontColor != null) {
stmt.bindString(4, fontColor);
}
String androidColor = entity.getAndroidColor();
if (androidColor != null) {
stmt.bindString(5, androidColor);
}
String androidFontColor = entity.getAndroidFontColor();
if (androidFontColor != null) {
stmt.bindString(6, androidFontColor);
}
String createTime = entity.getCreateTime();
if (createTime != null) {
stmt.bindString(7, createTime);
}
String editTime = entity.getEditTime();
if (editTime != null) {
stmt.bindString(8, editTime);
}
}
@Override
public Void readKey(Cursor cursor, int offset) {
return null;
}
@Override
public ColorBean readEntity(Cursor cursor, int offset) {
ColorBean entity = new ColorBean( //
cursor.getInt(offset + 0), // colorId
cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // colorStart
cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // colorStop
cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // fontColor
cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // androidColor
cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // androidFontColor
cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6), // createTime
cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7) // editTime
);
return entity;
}
@Override
public void readEntity(Cursor cursor, ColorBean entity, int offset) {
entity.setColorId(cursor.getInt(offset + 0));
entity.setColorStart(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
entity.setColorStop(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
entity.setFontColor(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
entity.setAndroidColor(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
entity.setAndroidFontColor(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5));
entity.setCreateTime(cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6));
entity.setEditTime(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7));
}
@Override
protected final Void updateKeyAfterInsert(ColorBean entity, long rowId) {
// Unsupported or missing PK type
return null;
}
@Override
public Void getKey(ColorBean entity) {
return null;
}
@Override
public boolean hasKey(ColorBean entity) {
// TODO
return false;
}
@Override
protected final boolean isEntityUpdateable() {
return true;
}
}
......@@ -14,10 +14,10 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
* Master of DAO (schema version 16): knows all DAOs.
* Master of DAO (schema version 17): knows all DAOs.
*/
public class DaoMaster extends AbstractDaoMaster {
public static final int SCHEMA_VERSION = 16;
public static final int SCHEMA_VERSION = 17;
/** Creates underlying database table using DAOs. */
public static void createAllTables(Database db, boolean ifNotExists) {
......
......@@ -32,6 +32,7 @@ public class ExpandInfoDao extends AbstractDao<ExpandInfo, Long> {
public final static Property ValueDatetime = new Property(5, String.class, "valueDatetime", false, "VALUE_DATETIME");
public final static Property Remark = new Property(6, String.class, "remark", false, "REMARK");
public final static Property DataType = new Property(7, int.class, "dataType", false, "DATA_TYPE");
public final static Property ShowName = new Property(8, String.class, "showName", false, "SHOW_NAME");
}
......@@ -54,7 +55,8 @@ public class ExpandInfoDao extends AbstractDao<ExpandInfo, Long> {
"\"VALUE_CHAR\" TEXT," + // 4: valueChar
"\"VALUE_DATETIME\" TEXT," + // 5: valueDatetime
"\"REMARK\" TEXT," + // 6: remark
"\"DATA_TYPE\" INTEGER NOT NULL );"); // 7: dataType
"\"DATA_TYPE\" INTEGER NOT NULL ," + // 7: dataType
"\"SHOW_NAME\" TEXT);"); // 8: showName
}
/** Drops the underlying database table. */
......@@ -98,6 +100,11 @@ public class ExpandInfoDao extends AbstractDao<ExpandInfo, Long> {
stmt.bindString(7, remark);
}
stmt.bindLong(8, entity.getDataType());
String showName = entity.getShowName();
if (showName != null) {
stmt.bindString(9, showName);
}
}
@Override
......@@ -135,6 +142,11 @@ public class ExpandInfoDao extends AbstractDao<ExpandInfo, Long> {
stmt.bindString(7, remark);
}
stmt.bindLong(8, entity.getDataType());
String showName = entity.getShowName();
if (showName != null) {
stmt.bindString(9, showName);
}
}
@Override
......@@ -152,7 +164,8 @@ public class ExpandInfoDao extends AbstractDao<ExpandInfo, Long> {
cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // valueChar
cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // valueDatetime
cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6), // remark
cursor.getInt(offset + 7) // dataType
cursor.getInt(offset + 7), // dataType
cursor.isNull(offset + 8) ? null : cursor.getString(offset + 8) // showName
);
return entity;
}
......@@ -167,6 +180,7 @@ public class ExpandInfoDao extends AbstractDao<ExpandInfo, Long> {
entity.setValueDatetime(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5));
entity.setRemark(cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6));
entity.setDataType(cursor.getInt(offset + 7));
entity.setShowName(cursor.isNull(offset + 8) ? null : cursor.getString(offset + 8));
}
@Override
......
package com.gingersoft.gsa.cloud.ui.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.R;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class ListSelectAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
private int textSize;
private int selectTextColor;
private int normalTextColor;
private Drawable normalBg;
private Drawable selectBg;
private int selectIndex = 0;
private int paddingLeft = 0;
private int paddingTop = 0;
private int paddingRight = 0;
private int paddingBottom = 0;
private Context mContext;
// public ListSelectAdapter(List<String> data) {
// super(layoutResId, data);
// }
public ListSelectAdapter(Context context, int layoutResId, @Nullable List<String> data) {
super(layoutResId, data);
this.mContext = context;
textSize = 16;
selectBg = ContextCompat.getDrawable(context, R.drawable.s_tran_twenty_blue);
selectTextColor = ContextCompat.getColor(context, R.color.other_order_details_sure_btn_color);
normalTextColor = ContextCompat.getColor(context, R.color.color_c9);
}
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, String s) {
TextView title = baseViewHolder.getView(R.id.cb_select_title);
title.setText(s);
title.setTextSize(textSize);
title.setBackground(selectBg);
title.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
if (baseViewHolder.getAdapterPosition() == selectIndex) {
title.setBackground(selectBg);
title.setTextColor(selectTextColor);
} else {
title.setBackground(normalBg);
title.setTextColor(normalTextColor);
}
}
public ListSelectAdapter setSelectTextColor(int textColor) {
this.selectTextColor = textColor;
return this;
}
public ListSelectAdapter setNormalTextColor(int textColor) {
this.normalTextColor = textColor;
return this;
}
public ListSelectAdapter setTextSize(int textSize) {
this.textSize = textSize;
return this;
}
public ListSelectAdapter setNormalBg(Drawable bg) {
this.normalBg = bg;
return this;
}
public ListSelectAdapter setSelectBg(Drawable bg) {
this.selectBg = bg;
return this;
}
public ListSelectAdapter setNormalBg(int bg) {
return setNormalBg(ContextCompat.getDrawable(mContext, bg));
}
public ListSelectAdapter setSelectBg(int bg) {
return setSelectBg(ContextCompat.getDrawable(mContext, bg));
}
public ListSelectAdapter setDefaultSelect(int select) {
this.selectIndex = select;
return this;
}
public ListSelectAdapter setPadding(int paddingLeft, int paddingTop, int paddingRight, int paddingBottom) {
this.paddingLeft = paddingLeft;
this.paddingBottom = paddingBottom;
this.paddingTop = paddingTop;
this.paddingRight = paddingRight;
return this;
}
public ListSelectAdapter notifyAdapter() {
notifyDataSetChanged();
return this;
}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/other_order_details_sure_btn_color" android:state_checked="true"/>
<item android:color="@color/color_66"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/tran_twenty_send_order_btn_bg_color" android:state_checked="true"/>
<item android:drawable="@color/color_ea"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/other_order_details_sure_btn_color" android:state_checked="true"/>
<item android:drawable="@drawable/shape_delivery_item_btn_normal"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cb_select_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
\ No newline at end of file
......@@ -21,13 +21,14 @@
android:layout_height="wrap_content"
android:layout_weight="0.15"
android:layout_gravity="bottom"
tools:text="x1111111111111111111111111"
tools:text="x11111111111111111000011111111"
android:gravity="right|center_vertical" />
<TextView
android:id="@+id/tv_food_price"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_weight="0.25"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginLeft="@dimen/dp_5"
......
......@@ -467,7 +467,9 @@
<color name="color_3b">#3b3b3b</color>
<color name="color_18">#181818</color>
<color name="color_e8">#e8e8e8</color>
<color name="color_ea">#EAEAEA</color>
<color name="tran_twenty_send_order_btn_bg_color">#331196DB</color>
<color name="tran_fifty_order_state0_color">#7F009788</color>
<!-- 待確認背景色-->
<color name="order_state0_color">#009788</color>
......
package com.gingersoft.gsa.delivery_pick_mode.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.delivery_pick_mode.mvp.model.MemberAddressInfoBean;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import java.util.Map;
import io.reactivex.Observable;
import okhttp3.RequestBody;
/**
......@@ -22,7 +25,7 @@ import io.reactivex.Observable;
*/
public interface SendOrderContract {
interface View extends IView {
void loadMemberInfo(MemberAddressInfoBean.DataBean data);
}
interface Model extends IModel {
......@@ -30,5 +33,9 @@ public interface SendOrderContract {
* 獲取配送信息
*/
Observable<String> getConfirmTakeawayOrderData(Map<String, Object> map);
Observable<BaseResult> submitOrder(RequestBody requestBody);
Observable<MemberAddressInfoBean> getMemberAddressInfo(String phone);
}
}
package com.gingersoft.gsa.delivery_pick_mode.mvp.model;
public class MemberAddressInfoBean {
/**
* success : true
* sysTime : 1602675733309
* data : {"id":57172,"receiver":"王","sex":1,"phone":"18384840551","addressDetail":"455","currentAddress":"美丽华商场","isDefault":1}
*/
private boolean success;
private long sysTime;
private String errorMsg;
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 String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public static class DataBean {
/**
* id : 57172
* receiver : 王
* sex : 1
* phone : 18384840551
* addressDetail : 455
* currentAddress : 美丽华商场
* isDefault : 1
*/
private int id;
private String receiver;
private int sex;
private String phone;
private String addressDetail;
private String currentAddress;
private int isDefault;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public String getCurrentAddress() {
return currentAddress;
}
public void setCurrentAddress(String currentAddress) {
this.currentAddress = currentAddress;
}
public int getIsDefault() {
return isDefault;
}
public void setIsDefault(int isDefault) {
this.isDefault = isDefault;
}
}
}
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.delivery_pick_mode.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.delivery_pick_mode.mvp.contract.SendOrderContract;
import com.gingersoft.gsa.delivery_pick_mode.mvp.server.SendOrderServer;
import com.google.gson.Gson;
......@@ -14,6 +15,7 @@ import java.util.Map;
import javax.inject.Inject;
import io.reactivex.Observable;
import okhttp3.RequestBody;
/**
......@@ -52,4 +54,14 @@ public class SendOrderModel extends BaseModel implements SendOrderContract.Model
public Observable<String> getConfirmTakeawayOrderData(Map<String, Object> map) {
return mRepositoryManager.obtainRetrofitService(SendOrderServer.class).getConfirmTakeawayOrderData(map);
}
@Override
public Observable<BaseResult> submitOrder(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(SendOrderServer.class).submitOrder(requestBody);
}
@Override
public Observable<MemberAddressInfoBean> getMemberAddressInfo(String phone) {
return mRepositoryManager.obtainRetrofitService(SendOrderServer.class).getMemberAddressInfo(phone);
}
}
\ No newline at end of file
......@@ -2,22 +2,36 @@ package com.gingersoft.gsa.delivery_pick_mode.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.order.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.MyOrderManage;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.delivery_pick_mode.mvp.contract.SendOrderContract;
import com.gingersoft.gsa.delivery_pick_mode.mvp.model.MemberAddressInfoBean;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.RxLifecycleUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import okhttp3.FormBody;
import okhttp3.RequestBody;
/**
......@@ -79,7 +93,149 @@ public class SendOrderPresenter extends BasePresenter<SendOrderContract.Model, S
public void onNext(String s) {
// https://hktest.ricepon.com:64377/member-web/api/member/getAddressAndResSetting?&pageSize=15&shopId=26&isdefault=1&pageIndex=1&price=0&memberId=515
}
@Override
public void onError(Throwable t) {
super.onError(t);
}
});
}
public void getMemberAddressInfo(String phone) {
mModel.getMemberAddressInfo(phone)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("查詢會員信息..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<MemberAddressInfoBean>(mErrorHandler) {
@Override
public void onNext(@NonNull MemberAddressInfoBean info) {
if (info != null) {
if (info.isSuccess() && info.getData() != null) {
mRootView.loadMemberInfo(info.getData());
} else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrorMsg())) {
mRootView.showMessage(info.getErrorMsg());
} else {
mRootView.showMessage("會員信息獲取失敗");
}
} else {
mRootView.showMessage("會員信息獲取失敗");
}
}
});
}
public void submitOrder(String name, String phone, String address) {
RequestBody requestBody = new FormBody.Builder()
.add("order", getOrderJson(name, phone, address))
.add("apiversion", "1")
.build();
mModel.submitOrder(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("正在創建訂單..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult info) {
}
@Override
public void onError(Throwable t) {
super.onError(t);
}
});
}
/**
* 订单提交
*/
private String getOrderJson(String name, String phone, String address) {
JSONObject json;
json = new JSONObject();
try {
json.put("shopId", GsaCloudApplication.getRestaurantId());
json.put("phone", phone);
json.put("replenishmentType", "1");
json.put("transportationType", "3");
json.put("memberId", GsaCloudApplication.getMemberId());
json.put("addressDetail", address);
json.put("orderRemark", "");
json.put("payType", 1);
//原价
json.put("originalAmount", MyOrderManage.getInstance().getWholeAmount());
json.put("orderType", 8);
//实际总价
json.put("totalPrice", MyOrderManage.getInstance().getTotalAmount());
// json.put("waimaiSendTime", waimaiSendTime);//送单时间
JSONArray array = new JSONArray();
List<OrderDetail> orderDetails = MyOrderManage.getInstance().getOrderFoodList();
for (int i = 0; i < orderDetails.size(); i++) {
OrderDetail orderDetail = orderDetails.get(i);
JSONObject food = getFoodJson(orderDetail);
if (i + 1 < orderDetails.size() && orderDetails.get(i + 1).getParentId() == orderDetail.getId()
&& orderDetails.get(i + 1).getItemType() != 0) {
//如果下一個食品的父級id是當前食品的id
JSONArray foodArray = new JSONArray();
long foodId = orderDetail.getId();
for (int j = i + 1; j < orderDetails.size(); j++) {
OrderDetail secondOrderDetail = orderDetails.get(j);
JSONObject secondFood = getFoodJson(secondOrderDetail);
JSONArray secondArray = new JSONArray();
if (orderDetails.get(j).getParentId() == foodId) {
secondArray.put(secondFood);
long secondFoodId = secondOrderDetail.getId();
if (j + 1 < orderDetails.size() && orderDetails.get(j + 1).getParentId() == secondOrderDetail.getId()) {
for (int k = j + 1; k < orderDetails.size(); k++) {
JSONObject thirdFood = getFoodJson(secondOrderDetail);
JSONArray thirdArray = new JSONArray();
if (orderDetails.get(k).getParentId() == secondFoodId) {
thirdArray.put(getFoodJson(orderDetails.get(k)));
} else {
thirdFood.put("itemDetail", thirdArray);
secondArray.put(thirdFood);
i = k;
break;
}
}
}
} else {
secondFood.put("itemDetail", secondArray);
foodArray.put(secondFood);
i = j;
break;
}
}
} else {
array.put(food);
}
}
json.put("foods", array);
} catch (JSONException e) {
e.printStackTrace();
}
return json.toString();
}
private JSONObject getFoodJson(OrderDetail orderDetail) {
JSONObject object = new JSONObject();
try {
object.put("posFid", orderDetail.getParentId());
object.put("productId", orderDetail.getId());
object.put("productName", orderDetail.getProductName());
object.put("number", orderDetail.getNumber());
object.put("price", orderDetail.getPrice());
object.put("lunchboxPrice", orderDetail.getLunchboxPrice());
} catch (JSONException e) {
e.printStackTrace();
}
return object;
}
}
package com.gingersoft.gsa.delivery_pick_mode.mvp.server;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.delivery_pick_mode.mvp.model.MemberAddressInfoBean;
import java.util.Map;
import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
public interface SendOrderServer {
......@@ -14,4 +21,12 @@ public interface SendOrderServer {
@GET("member/getAddressAndResSetting?" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<String> getConfirmTakeawayOrderData(@QueryMap Map<String, Object> map);
@Headers({"Domain-Name: update_version"})
@POST("order/addOrder2" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> submitOrder(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_member"})
@GET("member/getMemberAddressInfo" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<MemberAddressInfoBean> getMemberAddressInfo(@Query("phone") String phone);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_delivery_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/shape_delivery_item_btn_normal"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/dp_5"
android:layout_marginLeft="@dimen/dp_2"
android:layout_marginRight="@dimen/dp_2">
<TextView
android:id="@+id/tv_delivery_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_c8"
android:textSize="@dimen/dp_17" />
</LinearLayout>
\ No newline at end of file
......@@ -12,5 +12,7 @@
<string name="distribution_mode">配送方式:</string>
<string name="pay_mode">支付類型:</string>
<string name="delivery_time">配送時間:</string>
<string name="delivery_shop">本店派送</string>
<string name="logistics_distribution">物流配送</string>
</resources>
......@@ -8,6 +8,7 @@ import com.jess.arms.mvp.IView;
import java.util.List;
import io.reactivex.Observable;
import okhttp3.RequestBody;
public interface ExpandListContract {
......@@ -19,5 +20,7 @@ public interface ExpandListContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<BaseResult> getExpandList(int restaurantId);
Observable<BaseResult> updateExpandInfo(RequestBody requestBody);
}
}
......@@ -4,7 +4,6 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.contract.ExpandListContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.FunctionBean;
import com.gingersoft.gsa.cloud.main.mvp.model.service.ExpandListService;
import com.google.gson.Gson;
import com.jess.arms.di.scope.ActivityScope;
......@@ -14,6 +13,7 @@ import com.jess.arms.mvp.BaseModel;
import javax.inject.Inject;
import io.reactivex.Observable;
import okhttp3.RequestBody;
@ActivityScope
......@@ -40,4 +40,9 @@ public class ExpandListModel extends BaseModel implements ExpandListContract.Mod
public Observable<BaseResult> getExpandList(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(ExpandListService.class).getExpandList(restaurantId);
}
@Override
public Observable<BaseResult> updateExpandInfo(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(ExpandListService.class).updateExpandInfo(requestBody);
}
}
\ No newline at end of file
......@@ -4,11 +4,20 @@ import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface ExpandListService {
@GET("restaurant/ext/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getExpandList(@Query("restaurantId") int restaurantId);
@Headers({"Domain-Name: system_url"})
@POST("restaurantExt/batchUpdate" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateExpandInfo(@Body RequestBody requestBody);
}
......@@ -5,6 +5,8 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.database.bean.ExpandInfo;
import com.gingersoft.gsa.cloud.main.mvp.contract.ExpandListContract;
import com.jess.arms.di.scope.ActivityScope;
......@@ -21,6 +23,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import okhttp3.MediaType;
import okhttp3.RequestBody;
@ActivityScope
......@@ -63,11 +67,33 @@ public class ExpandListPresenter extends BasePresenter<ExpandListContract.Model,
if (result.getData() != null) {
List<ExpandInfo> expandInfoList = JsonUtils.parseArray(result.getData(), ExpandInfo.class);
mRootView.loadExpandList(expandInfoList);
}
}
}
});
}
public void updateExpandInfo(List<ExpandInfo> data){
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(data));
mModel.updateExpandInfo(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(BaseResult result) {
if(TextUtil.isNotEmptyOrNullOrUndefined(result.getErrMsg())){
mRootView.showMessage(result.getErrMsg());
}
if (result.isSuccess()) {
mRootView.killMyself();
}
}
});
}
}
......@@ -2,7 +2,6 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
......@@ -18,7 +17,6 @@ import com.gingersoft.gsa.cloud.database.bean.ExpandInfo;
import com.gingersoft.gsa.cloud.main.R;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.DateFormat;
import java.text.ParseException;
......@@ -28,7 +26,7 @@ import java.util.List;
public class ExpandListAdapter extends BaseQuickAdapter<ExpandInfo, BaseViewHolder> {
public ExpandListAdapter(@Nullable List<ExpandInfo> data) {
public ExpandListAdapter(List<ExpandInfo> data) {
super(R.layout.main_expand_item, data);
for (int i = 0; i < data.size(); i++) {
data.get(i).setDataType(i);
......@@ -37,7 +35,7 @@ public class ExpandListAdapter extends BaseQuickAdapter<ExpandInfo, BaseViewHold
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, ExpandInfo function) {
baseViewHolder.setText(R.id.tv_expand_name, function.getRemark());
baseViewHolder.setText(R.id.tv_expand_name, function.getShowName());
EditText editText = baseViewHolder.getView(R.id.ed_expand_edit);
Switch btn = baseViewHolder.getView(R.id.switch_expand_boolean);
TextView tvTime = baseViewHolder.getView(R.id.tv_expand_time);
......@@ -75,6 +73,7 @@ public class ExpandListAdapter extends BaseQuickAdapter<ExpandInfo, BaseViewHold
tvTime.setVisibility(View.VISIBLE);
Calendar calendar = Calendar.getInstance();
if (function.getValueDatetime() != null) {
try {
calendar.setTime(DateFormat.getDateTimeInstance().parse(function.getValueDatetime()));
} catch (ParseException e) {
......@@ -96,6 +95,7 @@ public class ExpandListAdapter extends BaseQuickAdapter<ExpandInfo, BaseViewHold
.show();
});
}
} else {
btn.setVisibility(View.GONE);
tvTime.setVisibility(View.GONE);
......
......@@ -2,10 +2,12 @@ package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.widget.LinearLayout;
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.PayMethod;
import com.gingersoft.gsa.cloud.base.order.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.base.order.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.MyOrderManage;
......@@ -39,7 +41,49 @@ public class PrintBill extends PrinterRoot {
@Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) {
return null;
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
StringBuilder payInfo = new StringBuilder();
for (PayMethod payMethod : MyOrderManage.getInstance().getBillMoney()) {
payInfo.append(payMethod.getPayName() + " ").append(payMethod.getPayMoney());
}
StringBuilder memberIntegerInfo = new StringBuilder();
OrderDetails.DataBean data = getOrderMemberInfo();
MyOrderManage.getInstance().getIntegralQrcode();
if (data.getAddPoints() != 0 || data.getOldPoints() != 0 || data.getAddPoints() != 0) {
memberIntegerInfo.append(getPLable("本次積分:" + data.getAddPoints(), HTML_PRINT_GRAVITY_LEFT))
.append(getPLable("結餘積分:" + data.getNowPoints(), HTML_PRINT_GRAVITY_LEFT))
.append(getPLable("上次積分:" + data.getOldPoints(), HTML_PRINT_GRAVITY_LEFT));
//名稱中間替換為*號
if (data.getMEMBER_NAME() != null && data.getMEMBER_NAME().length() > 0) {
memberIntegerInfo.append(getPLable("會員名稱:" + getReplaceAfter(data.getMEMBER_NAME()), HTML_PRINT_GRAVITY_LEFT));
}
if (data.getPHONE() != null && data.getPHONE().length() > 0) {
memberIntegerInfo.append(getPLable("會員電話:" + getReplaceAfter(data.getPHONE()), HTML_PRINT_GRAVITY_LEFT));
}
}
String stringBuilder = "<html><body>" +
getHtmlPrintHeadInfo() +
getHtmlPrintHeadOrderInfo(tableBean) +
generateFoodInfo(foodList) +
getHtmlBillInfo() +
getWholeLine() +
getPLable(payInfo.toString(), HTML_PRINT_GRAVITY_LEFT) +
getWholeLine() +
getPLable(memberIntegerInfo.toString(), HTML_PRINT_GRAVITY_LEFT);
String integralQrCode = MyOrderManage.getInstance().getIntegralQrcode();
if (!TextUtils.isEmpty(integralQrCode) &&
(boolean) RestaurantExpandInfoUtils.getValue(ExpandConstant.ToPrintQRCode, false)) {
stringBuilder += getPLable("請掃描二維碼", HTML_PRINT_GRAVITY_CENTER) +
getHtmlQrCode(MyOrderManage.getInstance().getIntegralQrcode()) +
getPLable("《追加積分到個人賬戶》", HTML_PRINT_GRAVITY_CENTER);
}
stringBuilder += "</body></html>";
return stringBuilder;
}
@Override
......
......@@ -6,6 +6,10 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.order.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.MyOrderManage;
......@@ -25,9 +29,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* 打印外賣接單 結賬單
*/
......@@ -240,22 +241,4 @@ public class PrintOtherOrderClosing extends PrinterRoot {
return new PrintBillBean(title, value);
}
private String getReplaceAfter(String str) {
if (str != null && str.length() > 0) {
int replaceStrCount = str.length() / 2;
StringBuilder buffer = new StringBuilder();
if (replaceStrCount >= 5) {
replaceStrCount = str.length() - 5;
}
for (int i = 0; i < replaceStrCount; i++) {
buffer.append("*");
}
String header = str.substring(0, 1);
String tail = str.substring(replaceStrCount + 1);
return header + buffer.toString() + tail;
}
return "";
}
}
\ No newline at end of file
......@@ -179,18 +179,18 @@ public class PrintPrjKitchen extends PrinterRoot {
} else {
tvTakeTime.setVisibility(View.GONE);
}
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintFirstOrder, false)) {
tvFirstOrder.setText("<頭單>");
tvFirstOrder.setVisibility(prjBean.getIsFirstSendOrder() == 1 ? View.VISIBLE : View.GONE);
} else {
tvFirstOrder.setVisibility(View.GONE);
}
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintStatisticsAmount, false)) {
tvPrintQuantity.setText(prjBean.getQuantity() + "");
} else {
tvPrintQuantity.setVisibility(View.GONE);
}
// if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintFirstOrder, false)) {
// tvFirstOrder.setText("<頭單>");
// tvFirstOrder.setVisibility(prjBean.getIsFirstSendOrder() == 1 ? View.VISIBLE : View.GONE);
// } else {
// tvFirstOrder.setVisibility(View.GONE);
// }
//
// if (RestaurantExpandInfoUtils.getValue(ExpandConstant.PrintStatisticsAmount, false)) {
// tvPrintQuantity.setText(prjBean.getQuantity() + "");
// } else {
// tvPrintQuantity.setVisibility(View.GONE);
// }
//開台時間
tvOpeningTime.setText(TimeUtils.parseTimeRepeat(prjBean.getOrderDetailsTime(), TimeUtils.DEFAULT_DATE_MDHM));
......
......@@ -3,16 +3,8 @@ package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.order.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.order.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.MyOrderManage;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.OpenTableManage;
......@@ -43,7 +35,15 @@ public class PrintServe extends PrinterRoot {
@Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) {
return null;
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
String stringBuilder = "<html><body>" +
getHtmlPrintHeadInfo() +
getHtmlPrintHeadOrderInfo(tableBean) +
generateFoodInfoTwoColumns(foodList) +
getWholeLine() +
getHtmlFooter() + "</body></html>";
return stringBuilder;
}
@Override
......@@ -52,69 +52,6 @@ public class PrintServe extends PrinterRoot {
}
private Bitmap getServeBitmap(Context context, PrinterDeviceBean printerDeviceBean) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getNewFoodList();
if (foodList == null || foodList.size() <= 0) {
return null;
}
View view = LinearLayout.inflate(context, R.layout.print_layout_print, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
TextView tableNum = view.findViewById(R.id.tv_dining_table_number);
TextView people = view.findViewById(R.id.tv_people);
TextView orderNum = view.findViewById(R.id.tv_order_num);
TextView orderData = view.findViewById(R.id.tv_date);
RecyclerView rvFood = view.findViewById(R.id.rv_food);
RecyclerView rvBillAmount = view.findViewById(R.id.rv_bill_amount);
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
brandName.setText(GsaCloudApplication.getBrandName());
restaurantName.setText(GsaCloudApplication.getRestaurantName());
tableNum.setText("餐檯:" + tableBean.getTableName());
people.setText("人數:" + OpenTableManage.getDefault().getPeopleNumber());
orderData.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
FoodAdapter foodAdapter = new FoodAdapter(foodList);
rvFood.setLayoutManager(new LinearLayoutManager(context));
rvFood.setAdapter(foodAdapter);
List<BillingBean> billingBeans = new ArrayList<>();
// if (billingBeans.size() <= 0) {
line_food_info.setVisibility(View.GONE);
rvBillAmount.setVisibility(View.GONE);
view.findViewById(R.id.line_price_info).setVisibility(View.GONE);
// } else {
// BillAdapter billAdapter = new BillAdapter(billingBeans);
// rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
// rvBillAmount.setAdapter(billAdapter);
// }
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
// BigDecimal totalAmount = new BigDecimal(0);
// for (OrderDetail OrderDetail : foodList) {
// totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(OrderDetail.getPrice(), OrderDetail.getNumber()));
// }
//總金額
view.findViewById(R.id.tv_total_amount_text).setVisibility(View.GONE);
mTvTotalAmount.setVisibility(View.GONE);
mTvTotalAmount.setText(MyOrderManage.getInstance().getTotalAmount() + "");
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToZoomBitmap(context, view, printerDeviceBean);
}
private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
if (foodList == null || foodList.size() <= 0) {
......
......@@ -5,7 +5,6 @@ import android.graphics.Bitmap;
import android.view.Gravity;
import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.order.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.base.order.bean.OrderDetail;
......@@ -48,62 +47,16 @@ public class PrintSlip extends PrinterRoot {
@Override
public String getPrintData(Context mContext, PrinterDeviceBean deviceBean) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
if (foodList == null || foodList.size() <= 0) {
return null;
}
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<html><body>");
stringBuilder.append(getPLable(GsaCloudApplication.getBrandName()))
.append(getPLable(GsaCloudApplication.getRestaurantName()))
.append(getLineLable())
.append(getPLable("餐檯:" + tableBean.getTableName()))
.append(getPLable("人數:" + OpenTableManage.getDefault().getPeopleNumber()))
.append(getPLable("單號:" + MyOrderManage.getInstance().getOrderId()))
.append(getPLable("日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)))
.append(getLineLable())
.append("<p>\n" +
"<div align=\"left\">Item 1 - WisePOS</div>\n" +
"<div align=\"right\">$999</div>\n" +
"<div align=\"left\">Item 2 - Printer</div>\n" +
"<div align=\"right\">$299</div>\n" +
"<div align=\"left\">Item 3 - Cup</div>\n" +
"<div align=\"right\">$78</div> \n" +
"<div align=\"left\">Item 4 - Data SIM</div>\n" +
"<div align=\"right\">$99</div> \n" +
"<div align=\"right\">____________</div>\n" +
"<div align=\"right\">Total: $XXX</div>\n" +
"</p>");
stringBuilder.append("</body></html>");
//<h1>Heading 1</h1><br/>
//<h2>Heading 2</h2><br/>
//<h3>Heading 3</h3><br/>
//<h4>Heading 4</h4><br/>
//<p align="right">Right</p><div align="center">Center</div>
//<p align="left">Left</p><br/>
//<img src="https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FC510BAQFnb_2T7cLREw%2Fcomp
// any-logo_200_200%2F0%3Fe%3D2159024400%26v%3Dbeta%26t%3De21PjbFv5en9quafFnWxkwWiJh
// 3aAFqZHJJsoE81ggk"></img><br/>
// <ol start="10">
//<li>A</li>
//<li>B</li>
//</ol>
//<ul>
//<li>A</li>
//<li>B</li>
//</ul>
return null;
}
// private String getDiv(String content, String location) {
//
// }
private String getLineLable() {
return "<br/>";
String stringBuilder = "<html><body>" +
getHtmlPrintHeadInfo() +
getHtmlPrintHeadOrderInfo(tableBean) +
generateFoodInfo(foodList) +
getHtmlBillInfo() +
getWholeLine() +
getHtmlFooter() + "</body></html>";
return stringBuilder;
}
private String getPLable(String content) {
......
......@@ -21,6 +21,7 @@ import com.gingersoft.gsa.cloud.base.utils.AidlUtil;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean;
......@@ -323,7 +324,7 @@ public class PrjService extends Service implements ReceiveListener {
private void newPrint(String json) {
printDatas.clear();
listMap.clear();
currentIndex = 1;
currentIndex = 0;
totalPrj = 0;
PrjBean prjBean = JsonUtils.parseObject(json, PrjBean.class);
if (prjBean == null || prjBean.getData() == null) {
......@@ -342,11 +343,24 @@ public class PrjService extends Service implements ReceiveListener {
//最后就可以通过刚刚得到的key值去解析后面的json了
JSONArray dataJson = (JSONArray) jsonObject.get(key);
List<PrjBean.DataBean.Bean> datas = JsonUtils.parseArray(dataJson.toString(), PrjBean.DataBean.Bean.class);
if (datas == null || datas.size() <= 0) {
return;
if (datas != null && datas.size() > 0) {
//打印位置和需要打印的數據
listMap.put(key, datas);
//有沒有不需要切紙的
boolean isHasNoCut = false;
for (PrjBean.DataBean.Bean bean : datas) {
if (bean.getStatus() == 2) {
//需要切紙,prj總數就+1
totalPrj++;
} else {
isHasNoCut = true;
}
}
if (isHasNoCut) {
//有不需要切紙的食物,prj總數+1
totalPrj++;
}
}
totalPrj += datas.size();
listMap.put(key, datas);//打印位置和需要打印的數據
// PrintPrjKitchen.getPrjMap().put(key, datas);
// printDatas.addAll(datas);
}
......@@ -355,11 +369,18 @@ public class PrjService extends Service implements ReceiveListener {
}
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
for (PrjBean.DataBean.Bean bean : prjMap.getValue()) {
bean.setCurrentIndex(currentIndex);
bean.setTotalPrj(totalPrj);
if(bean.getStatus() == 2){
currentIndex++;
} else {
if(currentIndex == 0){
currentIndex = 1;
}
}
bean.setCurrentIndex(currentIndex);
}
currentIndex++;
}
//讀取打印機和通用配置,可以優化
//獲取所有打印機
PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this);
......@@ -472,7 +493,13 @@ public class PrjService extends Service implements ReceiveListener {
updatePrjFailure(EpsIds);
}
} else {
List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
List<Map<String, Bitmap>> bitmapMaps = null;
if (printerDeviceBean.getPrinterDeviceType() == 2 && PrintConstans.PRINT_MODEL_WISEPOS.contains(Build.MODEL)) {
//本機打印並且是BBPOS
} else {
bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
}
switch (printerDeviceBean.getPrinterDeviceType()) {
case 1:
//IP打印
......@@ -562,6 +589,9 @@ public class PrjService extends Service implements ReceiveListener {
} else if (PrintConstans.PRINT_MODEL_N5.contains(model)) {
//N5打印
n5Print(bitmapMaps);
} else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) {
//BBPOS,生成data
ToastUtils.show(this, "BBPOS不支持打印處方單");
} else {
updatePrjFailure(getPrintIds(bitmapMaps));
}
......@@ -665,12 +695,6 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans 打印的食品和其他的一些信息
*/
private List<Map<String, Bitmap>> generatePrintMaps(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) {
// //食品合併
// for (PrjBean.DataBean.Bean bean : beans) {
// for (PrjBean.DataBean.Bean bean2 : beans) {
//
// }
// }
PrintPrjKitchen printPrjKitchen = new PrintPrjKitchen();
//這個Map的key是這張PRJ的所有PRJ記錄的id,然後會同時打印多張,所以是一個List集合
List<Map<String, Bitmap>> bitmapMaps = new ArrayList<>();
......@@ -769,75 +793,12 @@ public class PrjService extends Service implements ReceiveListener {
EpsIds = "";
}
// @Override
// public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
// String tip = "加載中";
// switch (state) {
// case PrintSocketHolder.ERROR_0:
// tip = "打印成功";
// break;
// case PrintSocketHolder.ERROR_1:
// tip = "生成打印數據失敗";
// break;
// case PrintSocketHolder.ERROR_2:
// case PrintSocketHolder.ERROR_3:
// tip = "連接打印機失敗";
// break;
// case PrintSocketHolder.ERROR_4:
// tip = "寫入測試頁面數據失敗";
// break;
// case PrintSocketHolder.ERROR_5:
// tip = "必要的參數不能為空";
// break;
// case PrintSocketHolder.STATE_0:
// case PrintSocketHolder.STATE_1:
// tip = "開始創建連接";
// break;
// case PrintSocketHolder.STATE_2:
// tip = "創建連接成功,開始發送數據";
// break;
// case PrintSocketHolder.STATE_3:
// tip = "開始寫入數據";
// break;
// case PrintSocketHolder.STATE_4:
// tip = "關閉中";
// break;
// }
// Log.e(TAG, "打印機狀態:" + tip);
// }
//
// @Override
// public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
// switch (errorCode) {
// case PrintSocketHolder.ERROR_0:
// //更新狀態
// updatePrjState(3);
// Log.e(TAG, "打印成功");
// break;
// case PrintSocketHolder.ERROR_1:
// break;
// case PrintSocketHolder.ERROR_2:
// Log.e(TAG, "创建Socket失败");
// //再次打開輪詢
// updatePrjState(1);
// case PrintSocketHolder.ERROR_3:
// Log.e(TAG, "获取输出流失败");
// break;
// case PrintSocketHolder.ERROR_4:
// Log.e(TAG, "写入测试页面数据失败");
// break;
// case PrintSocketHolder.ERROR_5:
// Log.e(TAG, "必要参数不能为空");
// break;
// }
// }
@Override
public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) {
//針式打印回調
if (i == 0) {
//打印成功
updatePrjFailure(EpsIds);
updatePrjSuccess(EpsIds);
} else {
//打印失敗
updatePrjFailure(EpsIds);
......
package com.joe.print.mvp.print.utils;
import android.content.Intent;
import android.util.Xml;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.bean.WiseposBean;
import com.joe.print.mvp.print.PrintListener;
import com.joe.print.mvp.ui.activity.PrintActivity;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.ConnectException;
import java.util.concurrent.TimeoutException;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class BBposPrint {
public void print(String printData, PrintListener listener) {
WiseposBean wiseposBean = new WiseposBean();
OkHttp3Utils.get("http://localhost:8080/pos?transactionType=PRINT&isExternal=false&apiVersion=21&printData=" + printData).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
analysisPrintResult(s, wiseposBean, listener);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
if (e instanceof ConnectException) {
listener.printFile("無法連接打印,請檢查WisePay是否打開");
} else if (e instanceof TimeoutException) {
backPrintActivity();
}
}
@Override
public void onComplete() {
//這個節點解析完成
if (wiseposBean.getState() != null && wiseposBean.getState().equals("SUCCESS")) {
listener.printSuccess();
} else {
listener.printFile("打印失敗");
}
backPrintActivity();
}
private void backPrintActivity() {
Intent intent = new Intent(GsaCloudApplication.getAppContext(), PrintActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
GsaCloudApplication.getAppContext().startActivity(intent);
}
});
}
private void analysisPrintResult(String s, WiseposBean wiseposBean, PrintListener listener) {
XmlPullParser xmlPullParser = Xml.newPullParser();
try {
xmlPullParser.setInput(new ByteArrayInputStream(s.getBytes()), "utf-8");
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
//開始解析
break;
case XmlPullParser.START_TAG:
//解析到某一個節點
String xmlName = xmlPullParser.getName();
switch (xmlName) {
case "status":
wiseposBean.setState(xmlPullParser.nextText());
break;
case "ErrorMessage":
if (xmlPullParser.nextText().equals("Please login first")) {
listener.printFile("請先登錄WisePay");
} else {
listener.printFile("" + xmlPullParser.nextText());
}
break;
case "requestType":
wiseposBean.setRequestType(xmlPullParser.nextText());
break;
default:
break;
}
break;
case XmlPullParser.END_TAG:
break;
default:
break;
}
eventType = xmlPullParser.next();
}
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
}
}
......@@ -6,6 +6,7 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
......@@ -230,37 +231,46 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
if (isShowDialog) {
initDialog();
}
// if (defaultPrint.getPrinterDeviceType() == 2 && PrintConstans.PRINT_MODEL_WISEPOS.contains(Build.MODEL)) {
// //本機打印並且是BBPOS
//
//
//
// } else {
//獲得對應的圖片
Map<String, List<Bitmap>> listMap = printerInIt.getPrintBitmapByCount(mContext, defaultPrint);
Map<String, List<Bitmap>> listMap = null;
List<Bitmap> zoomBitmaps = null;
String printData = null;
if (defaultPrint.getPrinterDeviceType() == 2 && PrintConstans.PRINT_MODEL_WISEPOS.contains(Build.MODEL)) {
//本機打印並且是BBPOS
printData = printerInIt.getPrintData(mContext, defaultPrint);
if (printData == null) {
printFile("暫不支持打印此單");
return;
}
} else {
listMap = printerInIt.getPrintBitmapByCount(mContext, defaultPrint);
if (listMap != null) {
List<Bitmap> zoomBitmaps = listMap.get("");
zoomBitmaps = listMap.get("");
} else {
printFile("暫不支持打印此單");
return;
}
if (zoomBitmaps != null && zoomBitmaps.size() > 0) {
} else {
//打印失敗
printFile("打印失敗,生成打印數據失敗");
}
}
//獲得對應的圖片
if (defaultPrint.getPrinterDeviceType() == 1) {
//IP打印
printerInIt.ipDevicePrint(defaultPrint, zoomBitmaps);
} else if (defaultPrint.getPrinterDeviceType() == 2) {
//本地N5或Sunmi打印
printerInIt.locationPrint(zoomBitmaps, this);
printerInIt.locationPrint(zoomBitmaps, printData, this);
} else if (defaultPrint.getPrinterDeviceType() == 3) {
//USB打印打印
printerInIt.usbPrint(mContext, zoomBitmaps);
} else {
printFile("未找到對應的打印類型");
}
} else {
//打印失敗
printFile("打印失敗,生成打印數據失敗");
}
} else {
printFile("打印失敗,打印次數為0");
}
// }
}
}
......
......@@ -10,7 +10,6 @@ import androidx.appcompat.app.AppCompatActivity;
import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo;
import com.epson.epos2.printer.ReceiveListener;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.order.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
......@@ -34,7 +33,7 @@ import io.reactivex.disposables.Disposable;
public class PrintTestActivity extends AppCompatActivity implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener {
private int lineLength = 42;//一行42個
private int lineLength = 42;//一行42個 17.5
private static int foodNameSpace = 16;
private static int foodNumSpace = 8;
private static int foodAmountSpace = 10;
......@@ -50,7 +49,7 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
int spaceLength = (int) Math.ceil(MaxLength - getChineseValueLength(text));
StringBuilder space = new StringBuilder();
for (int i = 0; i < spaceLength; i++) {
space.append(" ");
space.append("_");
}
space.append(text);
return space.toString();
......@@ -61,7 +60,7 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
StringBuilder space = new StringBuilder();
space.append(text);
for (int i = 0; i < spaceLength; i++) {
space.append(" ");
space.append("_");
}
return space.toString();
}
......@@ -182,22 +181,16 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
printerFinder.startFinder();
List<OrderDetail> foodList = new ArrayList<>();
foodList.add(new OrderDetail("Thịt bò não trong nước sốt nâu", 5, 0));
foodList.add(new OrderDetail(" 紅燒牛肉 拉麵", 10, 1));
foodList.add(new OrderDetail("เนื้อตุ๋น", 200, 2));
foodList.add(new OrderDetail("牛肉の角煮アスティフェン", 1000, 30));
foodList.add(new OrderDetail("牛肉拉麵", 10, 1));
foodList.add(new OrderDetail("紅燒牛肉拉麵", 200, 2));
findViewById(R.id.btn_test).setOnClickListener(view -> {
//打印測試
String stringBuilder = "<html><body>" +
getPLable(GsaCloudApplication.getBrandName()) +
getPLable(GsaCloudApplication.getRestaurantName()) +
getPLable(getLineChar(lineLength,"_")) +
getPLable("餐檯: " + "111") +
getPLable("人數:23") +
getPLable("123456789123456789123456789123456789123456789") +
getPLable("日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)) +
getPLable(getLineChar(lineLength,"_")) +
getPLable("GingerSoft") +
getPLable("Gs1") +
getPLable("開檯時間:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)) +
getPLable(getLineChar(lineLength, "_")) +
getPLable(getFoodListStr(foodList)) +
"</body></html>";
OkHttp3Utils.get("http://localhost:8080/pos?transactionType=PRINT&isExternal=false&apiVersion=21&printData=" + stringBuilder).subscribe(new Observer<String>() {
......@@ -223,7 +216,7 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
});
}
public String getLineChar(int size, String str){
public String getLineChar(int size, String str) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < size; i++) {
stringBuilder.append(str);
......@@ -231,33 +224,12 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
return stringBuilder.toString();
}
public static void main(String[] args) {
List<OrderDetail> foodList = new ArrayList<>();
foodList.add(new OrderDetail("牛肉", 0.5, 3));
foodList.add(new OrderDetail("紅燒牛肉", 5, 0));
foodList.add(new OrderDetail(" 紅燒牛肉 拉麵", 10, 1));
foodList.add(new OrderDetail("康師傅紅燒牛肉麵", 200, 2));
foodList.add(new OrderDetail("紅燒牛肉炒康師傅", 1000, 30));
System.out.print(getFoodListStr(foodList));
}
public static String getFoodListStr(List<OrderDetail> foodList) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<strong>");
for (OrderDetail detail : foodList) {
// stringBuilder.append(getLineFood(detail.getProductName(), detail.getNumber(), detail.getPrice()));
stringBuilder.append("<div align=\"left\">")
.append(detail.getProductName())
.append("</div>");
stringBuilder.append("<div align=\"right\">")
.append("X")
.append(detail.getNumber())
.append(" $")
.append(detail.getPrice())
.append("</div>");
}
stringBuilder.append("</strong>");
stringBuilder.append(getLineFood(detail.getProductName(), detail.getNumber(), detail.getPrice()));
stringBuilder.append("<br/>");
}
return stringBuilder.toString();
}
......@@ -266,24 +238,16 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < stringList.size(); i++) {
if (i == 0) {
stringBuilder.append("<p>")
.append(getSpaceByTextLength2(stringList.get(i), foodNameSpace))
.append(getSpaceByTextLength("X" + foodNum, foodNumSpace))
.append(getSpaceByTextLength("$" + foodAmount, foodAmountSpace))
.append("</p>");
// stringBuilder.append(getSpaceByTextLength2(stringList.get(i), foodNameSpace));
// String foodNumStr = "X" + foodNum;
// stringBuilder.append(getSpaceByTextLength(foodNumStr, foodNumSpace));
// stringBuilder.append(getSpaceByTextLength("$" + foodAmount, foodAmountSpace));
stringBuilder.append(getSpaceByTextLength2(stringList.get(i), foodNameSpace));
String foodNumStr = "X" + foodNum;
stringBuilder.append(getSpaceByTextLength(foodNumStr, foodNumSpace));
stringBuilder.append(getSpaceByTextLength("$" + foodAmount, foodAmountSpace));
} else {
stringBuilder.append("<p>")
.append(stringList.get(i))
.append("</p>");
}
// if (i != stringList.size() - 1) {
// stringBuilder.append("<br/>");
stringBuilder.append("\n");
// }
stringBuilder.append(stringList.get(i));
}
if (i != stringList.size() - 1) {
stringBuilder.append("<br/>");
}
}
return stringBuilder.toString();
}
......
......@@ -15,6 +15,15 @@ import android.widget.Chronometer;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.MyOrderManage;
import com.gingersoft.gsa.cloud.base.order.bean.mealManger.OpenTableManage;
......@@ -61,14 +70,6 @@ import java.util.Map;
import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import butterknife.BindView;
import butterknife.OnClick;
......@@ -178,7 +179,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
@Override
public void initData(@Nullable Bundle savedInstanceState) {
initOrderDetail();
initTopInfo();
mPresenter.initTopFunctionData();
......
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