Commit efb23dc1 by Wyh

Merge remote-tracking branch 'origin/master'

parents 1cbb24c5 8ef87d75
...@@ -106,7 +106,12 @@ dependencies { ...@@ -106,7 +106,12 @@ dependencies {
//多功能輸入框 //多功能輸入框
api 'com.rengwuxian.materialedittext:library:2.1.4' api 'com.rengwuxian.materialedittext:library:2.1.4'
//扫码 //扫码
implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3' implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
implementation 'cn.bingoogolapple:bga-photopicker:1.2.8@aar'
implementation 'cn.bingoogolapple:bga-baseadapter:1.2.9@aar'
implementation 'cn.bingoogolapple:bga-flowlayout:1.0.0@aar'
api 'androidx.core:core-ktx:+' api 'androidx.core:core-ktx:+'
implementation 'org.projectlombok:lombok:1.18.8' implementation 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8' annotationProcessor 'org.projectlombok:lombok:1.18.8'
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.VIBRATE" />
<application <application
android:name="com.gingersoft.gsa.cloud.base.application.GsaCloudApplication" android:name="com.gingersoft.gsa.cloud.base.application.GsaCloudApplication"
android:allowBackup="true" android:allowBackup="true"
......
...@@ -19,6 +19,8 @@ import java.util.Date; ...@@ -19,6 +19,8 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import lombok.Data;
/** /**
* 作者:ELEGANT_BIN * 作者:ELEGANT_BIN
* 版本:1.6.0 * 版本:1.6.0
...@@ -26,6 +28,7 @@ import java.util.Objects; ...@@ -26,6 +28,7 @@ import java.util.Objects;
* 修订历史:2020-02-18 * 修订历史:2020-02-18
* 描述:訂單實體類 * 描述:訂單實體類
*/ */
@Data
public class OrderDetail implements Serializable { public class OrderDetail implements Serializable {
private static final long serialVersionUID = -958791295551999853L; private static final long serialVersionUID = -958791295551999853L;
/** /**
...@@ -172,7 +175,7 @@ public class OrderDetail implements Serializable { ...@@ -172,7 +175,7 @@ public class OrderDetail implements Serializable {
/** /**
* 是否参与折扣#0:不參與;1:參與; * 是否参与折扣#0:不參與;1:參與;
*/ */
private long ablediscount; private long ablediscount = 1;
/** /**
* 折扣實體 * 折扣實體
*/ */
...@@ -864,12 +867,14 @@ public class OrderDetail implements Serializable { ...@@ -864,12 +867,14 @@ public class OrderDetail implements Serializable {
orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem()); orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem());
orderDetail.setPrintFont(orderDetailsBean.getPrintFont()); orderDetail.setPrintFont(orderDetailsBean.getPrintFont());
orderDetail.setPrintToBill(orderDetailsBean.getPrintToBill()); orderDetail.setPrintToBill(orderDetailsBean.getPrintToBill());
orderDetail.setPrintTo(orderDetail.getPrintTo()); orderDetail.setPrintTo(orderDetailsBean.getPrintTo());
orderDetail.setKtShowPrice(orderDetail.getKtShowPrice()); orderDetail.setKtShowPrice(orderDetailsBean.getKtShowPrice());
orderDetail.setAblediscount(orderDetailsBean.getAblediscount());
orderDetail.setIsfood(orderDetailsBean.getType() == FOOD_TYPE); orderDetail.setIsfood(orderDetailsBean.getType() == FOOD_TYPE);
orderDetail.setNew(false); orderDetail.setNew(false);
orderDetail.setType(orderDetailsBean.getType()); orderDetail.setType(orderDetailsBean.getType());
orderDetail.setItemType(getItemType(orderDetailsBean, parentOrderDetail)); orderDetail.setItemType(getItemType(orderDetailsBean, parentOrderDetail));
orderDetail.setAblediscount(orderDetailsBean.getAblediscount());
orderDetailList.add(orderDetail); orderDetailList.add(orderDetail);
// if (orderDetail.isIsfood()) { // if (orderDetail.isIsfood()) {
...@@ -890,7 +895,7 @@ public class OrderDetail implements Serializable { ...@@ -890,7 +895,7 @@ public class OrderDetail implements Serializable {
int nextIndex = i + 1; int nextIndex = i + 1;
if (orderList.size() == nextIndex || orderList.get(nextIndex).getParentId() == 0) { if (orderList.size() == nextIndex || orderList.get(nextIndex).getParentId() == 0) {
//已到結尾或者下一個食品是主食品 //已到結尾或者下一個食品是主食品
Discount discount = getDiscountItem(orderDetailsBean.getRestaurantDiscountVO(), parentId, discountSourcePrice); Discount discount = getDiscountItem(orderDetailsBean.getRestaurantDiscountVO());
if (discount != null) { if (discount != null) {
orderDetailList.add(discountTransOrderDetail(discount, false, parentId, discountSourcePrice)); orderDetailList.add(discountTransOrderDetail(discount, false, parentId, discountSourcePrice));
} }
...@@ -906,11 +911,13 @@ public class OrderDetail implements Serializable { ...@@ -906,11 +911,13 @@ public class OrderDetail implements Serializable {
return orderDetailList; return orderDetailList;
} }
private static Discount getDiscountItem(OrderBean.OrderDetailsBean.RestaurantDiscountVO discountBean, long parentId, double discountAmount) { //PLU可输入子项
//食品数量支持小数 例如1.25
private static Discount getDiscountItem(OrderBean.OrderDetailsBean.RestaurantDiscountVO discountBean) {
Discount discount = new Discount(); Discount discount = new Discount();
discount.setId(discountBean.getId()); discount.setId(discountBean.getId());
discount.setDiscount_value(discountBean.getDiscountValue()); discount.setDiscount_value(discountBean.getDiscountValue());
discount.setAmount(discountAmount); discount.setAmount(discountBean.getDiscountAmount());
discount.setType(discountBean.getType()); discount.setType(discountBean.getType());
discount.setRemark(discountBean.getRemark()); discount.setRemark(discountBean.getRemark());
return discount; return discount;
...@@ -974,6 +981,7 @@ public class OrderDetail implements Serializable { ...@@ -974,6 +981,7 @@ public class OrderDetail implements Serializable {
orderDetail.setType(FOOD_TYPE); orderDetail.setType(FOOD_TYPE);
orderDetail.setItemType(1); orderDetail.setItemType(1);
orderDetail.setProp(FOOD_PROP); orderDetail.setProp(FOOD_PROP);
orderDetail.setAblediscount(food.getAbleDiscount());
orderDetail.setAutoMod(food.getAutoMod()); orderDetail.setAutoMod(food.getAutoMod());
int comboLevel = food.isComboFood() ? 1 : 0; int comboLevel = food.isComboFood() ? 1 : 0;
orderDetail.setComboLevel(comboLevel); orderDetail.setComboLevel(comboLevel);
...@@ -1014,6 +1022,7 @@ public class OrderDetail implements Serializable { ...@@ -1014,6 +1022,7 @@ public class OrderDetail implements Serializable {
orderDetail.setItemType(2); orderDetail.setItemType(2);
orderDetail.setProp(prop); orderDetail.setProp(prop);
orderDetail.setPrintseting(foodCombo.getPrintSeting()); orderDetail.setPrintseting(foodCombo.getPrintSeting());
orderDetail.setAblediscount(foodCombo.getAblediscount());
// orderDetail.setComboAuto(foodCombo.isAutoMode()); // orderDetail.setComboAuto(foodCombo.isAutoMode());
if (isRvMealClicked) { if (isRvMealClicked) {
//手动点击细项 才将子食品作为主体被选中 //手动点击细项 才将子食品作为主体被选中
...@@ -1048,9 +1057,10 @@ public class OrderDetail implements Serializable { ...@@ -1048,9 +1057,10 @@ public class OrderDetail implements Serializable {
orderDetail.setMid(modifier.getMid()); orderDetail.setMid(modifier.getMid());
orderDetail.setIsfood(false); orderDetail.setIsfood(false);
orderDetail.setNew(true); orderDetail.setNew(true);
orderDetail.setType(MODIFIER_TYPE);
orderDetail.setItemType(3); orderDetail.setItemType(3);
orderDetail.setType(MODIFIER_TYPE);
orderDetail.setProp(MODIFIER_PROP); orderDetail.setProp(MODIFIER_PROP);
orderDetail.setAblediscount(modifier.getAbleDisCount());
//手动点击细项 才将子食品作为主体被选中 //手动点击细项 才将子食品作为主体被选中
orderDetail.setSelected(2); orderDetail.setSelected(2);
orderDetail.setCurrentMaxNumber(modifier.getCurrentMaxNumber()); orderDetail.setCurrentMaxNumber(modifier.getCurrentMaxNumber());
...@@ -1080,15 +1090,23 @@ public class OrderDetail implements Serializable { ...@@ -1080,15 +1090,23 @@ public class OrderDetail implements Serializable {
orderDetail.setIsfood(false); orderDetail.setIsfood(false);
orderDetail.setNew(isNew); orderDetail.setNew(isNew);
orderDetail.setType(DISCOUNT_TYPE); orderDetail.setType(DISCOUNT_TYPE);
orderDetail.setItemType(2);
orderDetail.setProp(DISCOUNT_PROP); orderDetail.setProp(DISCOUNT_PROP);
orderDetail.setSelected(2); orderDetail.setSelected(2);
orderDetail.setItemType(2);
orderDetail.setDiscount(discount); orderDetail.setDiscount(discount);
return orderDetail; return orderDetail;
} }
public static List<OrderDetail> transNewOrderDetails(List<OrderDetail> orderDetailList) {
List<OrderDetail> newOrderList = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) {
newOrderList.add(new OrderDetail(orderDetail));
}
return newOrderList;
}
/** /**
* 此食品是否包含折扣 * 此食品是否包含折扣
* *
......
...@@ -181,6 +181,7 @@ public class TableBean { ...@@ -181,6 +181,7 @@ public class TableBean {
tableBean.setStatus(dataBean.getTableStatus()); tableBean.setStatus(dataBean.getTableStatus());
tableBean.setUseStatus(dataBean.getInUse()); tableBean.setUseStatus(dataBean.getInUse());
tableBean.setTableNumber(dataBean.getTableNumber()); tableBean.setTableNumber(dataBean.getTableNumber());
tableBean.setServiceCharge(dataBean.getServiceCharge());
return tableBean; return tableBean;
} }
...@@ -197,6 +198,7 @@ public class TableBean { ...@@ -197,6 +198,7 @@ public class TableBean {
tableBean.setStatus(dataBean.getTableStatus()); tableBean.setStatus(dataBean.getTableStatus());
tableBean.setUseStatus(dataBean.getInUse()); tableBean.setUseStatus(dataBean.getInUse());
tableBean.setTableNumber(dataBean.getTableNumber()); tableBean.setTableNumber(dataBean.getTableNumber());
tableBean.setServiceCharge(dataBean.getServiceCharge());
return tableBean; return tableBean;
} }
} }
...@@ -56,6 +56,7 @@ public class MyOrderManage { ...@@ -56,6 +56,7 @@ public class MyOrderManage {
private int sseq = 0;//二级序 private int sseq = 0;//二级序
private int mseq = 0;//三级序 private int mseq = 0;//三级序
private OrderBean orderBean; private OrderBean orderBean;
/** /**
...@@ -89,6 +90,8 @@ public class MyOrderManage { ...@@ -89,6 +90,8 @@ public class MyOrderManage {
/** /**
* 記錄修改訂單操作 * 記錄修改訂單操作
* false#送單
* true#修改訂單
*/ */
private boolean modifyOrder = false; private boolean modifyOrder = false;
......
...@@ -12,6 +12,8 @@ import java.util.Date; ...@@ -12,6 +12,8 @@ import java.util.Date;
import org.greenrobot.greendao.annotation.Generated; import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Transient; import org.greenrobot.greendao.annotation.Transient;
import lombok.Data;
/** /**
* 作者:ELEGANT_BIN * 作者:ELEGANT_BIN
* 版本:1.6.0 * 版本:1.6.0
...@@ -19,6 +21,7 @@ import org.greenrobot.greendao.annotation.Transient; ...@@ -19,6 +21,7 @@ import org.greenrobot.greendao.annotation.Transient;
* 修订历史:2020-02-18 * 修订历史:2020-02-18
* 描述:套餐食品關係 * 描述:套餐食品關係
*/ */
@Data
@Entity @Entity
public class ComboItem { public class ComboItem {
...@@ -63,9 +66,9 @@ public class ComboItem { ...@@ -63,9 +66,9 @@ public class ComboItem {
@Id(autoincrement = true) @Id(autoincrement = true)
private Long id; private Long id;
private long comId; private Long comId;
private long fid; private Long fid;
private long qty; private long qty;
...@@ -93,6 +96,7 @@ public class ComboItem { ...@@ -93,6 +96,7 @@ public class ComboItem {
private byte isMainAccount; private byte isMainAccount;
// /** // /**
// * 廚房單打印主項 // * 廚房單打印主項
// */ // */
...@@ -140,6 +144,11 @@ public class ComboItem { ...@@ -140,6 +144,11 @@ public class ComboItem {
*/ */
@Transient @Transient
private double price = 0.00; private double price = 0.00;
/**
* 是否参与折扣#0:不參與;1:參與;
*/
@Transient
private long ablediscount;
/*** 是否自動展開*/ /*** 是否自動展開*/
@Transient @Transient
private int autoMode = 0; private int autoMode = 0;
...@@ -170,9 +179,29 @@ public class ComboItem { ...@@ -170,9 +179,29 @@ public class ComboItem {
* 打印設定, 用逗號分隔, *=切紙 * 打印設定, 用逗號分隔, *=切紙
*/ */
private String printSeting=""; private String printSeting="";
/**
* 額外食品加分
*/
@Transient
private double pointsAdd;
/**
* 額外積分比率
*/
@Transient
private long pointsRatio;
/**
* 換購食品所需積分
*/
@Transient
private double pointsRedeem;
@Generated(hash = 435228340)
public ComboItem() {
}
@Generated(hash = 426398155)
public ComboItem(Long id, long comId, long fid, long qty, double diffAmt, long seqNo, long visible, Date createTime, @Generated(hash = 1579207287)
public ComboItem(Long id, Long comId, Long fid, long qty, double diffAmt, long seqNo, long visible, Date createTime,
String createBy, Date updateTime, long conditions, long isRT, byte deletes, long posId, long restaurant_id, String createBy, Date updateTime, long conditions, long isRT, byte deletes, long posId, long restaurant_id,
byte isMainAccount, String printSeting) { byte isMainAccount, String printSeting) {
this.id = id; this.id = id;
...@@ -194,10 +223,6 @@ public class ComboItem { ...@@ -194,10 +223,6 @@ public class ComboItem {
this.printSeting = printSeting; this.printSeting = printSeting;
} }
@Generated(hash = 435228340)
public ComboItem() {
}
public boolean isSold() { public boolean isSold() {
if(!TextUtils.isEmpty(currentMaxNumber) && ("售罄".equals(currentMaxNumber) || "暫停".equals(currentMaxNumber))){ if(!TextUtils.isEmpty(currentMaxNumber) && ("售罄".equals(currentMaxNumber) || "暫停".equals(currentMaxNumber))){
...@@ -206,360 +231,182 @@ public class ComboItem { ...@@ -206,360 +231,182 @@ public class ComboItem {
return false; return false;
} }
public Long getId() { public static ComboItem addFoodInfo(Food food, ComboItem foodCombo) {
return id; foodCombo.setName(food.getFoodName());
} foodCombo.setFid(food.getId());
foodCombo.setPrice(food.getPrice());
public Long getComId() { foodCombo.setAutoMode(food.getAutoMod());
return comId; return foodCombo;
}
public Long getFid() {
return fid;
}
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 Long getQty() {
return qty;
} }
public Double getDiffAmt() {
return diffAmt;
}
public Long getSeqNo() { public Long getId() {
return seqNo; return this.id;
} }
public Long getVisible() {
return visible;
}
public Date getCreateTime() { public void setId(Long id) {
return createTime; this.id = id;
} }
public String getCreateBy() {
return createBy;
}
public Date getUpdateTime() { public Long getComId() {
return updateTime; return this.comId;
} }
public Long getConditions() {
return conditions;
}
public Long getIsRT() { public void setComId(Long comId) {
return isRT; this.comId = comId;
} }
public Byte getDeletes() {
return deletes;
}
public Long getPosId() { public Long getFid() {
return posId; return this.fid;
} }
public Long getRestaurant_id() {
return restaurant_id;
}
public Byte getIsMainAccount() { public void setFid(Long fid) {
return isMainAccount; this.fid = fid;
} }
public String getName() {
return name;
}
public String getName1() { public long getQty() {
return name1; return this.qty;
} }
public String getName2() {
return name2;
}
public long getParentId() { public void setQty(long qty) {
return parentId; this.qty = qty;
} }
public double getPrice() {
return price;
}
public int getAutoMode() { public double getDiffAmt() {
return autoMode; return this.diffAmt;
} }
public boolean isModifier() {
return isModifier;
}
public int getBgColor() { public void setDiffAmt(double diffAmt) {
return bgColor; this.diffAmt = diffAmt;
} }
public int getFontColor() {
return fontColor;
}
public void setName1(String name1) { public long getSeqNo() {
this.name1 = name1; return this.seqNo;
} }
public void setName2(String name2) {
this.name2 = name2;
}
public Modifier getModifier() { public void setSeqNo(long seqNo) {
return modifier; this.seqNo = seqNo;
} }
public void setId(Long id) {
this.id = id;
}
public void setComId(Long comId) { public long getVisible() {
this.comId = comId; return this.visible;
} }
public void setFid(Long fid) {
this.fid = fid;
}
public void setQty(Long qty) { public void setVisible(long visible) {
this.qty = qty; this.visible = visible;
} }
public void setDiffAmt(Double diffAmt) {
this.diffAmt = diffAmt;
}
public void setSeqNo(Long seqNo) { public Date getCreateTime() {
this.seqNo = seqNo; return this.createTime;
} }
public void setVisible(Long visible) {
this.visible = visible;
}
public void setCreateTime(Date createTime) { public void setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
} }
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public void setUpdateTime(Date updateTime) { public String getCreateBy() {
this.updateTime = updateTime; return this.createBy;
}
public void setConditions(Long conditions) {
this.conditions = conditions;
} }
public void setIsRT(Long isRT) {
this.isRT = isRT;
}
public void setDeletes(Byte deletes) { public void setCreateBy(String createBy) {
this.deletes = deletes; this.createBy = createBy;
}
public void setPosId(Long posId) {
this.posId = posId;
} }
public void setRestaurant_id(Long restaurant_id) {
this.restaurant_id = restaurant_id;
}
public void setIsMainAccount(Byte isMainAccount) { public Date getUpdateTime() {
this.isMainAccount = isMainAccount; return this.updateTime;
} }
public void setName(String name) {
this.name = name;
}
public void setParentId(long parentId) { public void setUpdateTime(Date updateTime) {
this.parentId = parentId; this.updateTime = updateTime;
} }
public void setPrice(double price) {
this.price = price;
}
public void setAutoMode(int autoMode) { public long getConditions() {
this.autoMode = autoMode; return this.conditions;
} }
public void setModifier(boolean modifier) {
isModifier = modifier;
}
public void setBgColor(int bgColor) { public void setConditions(long conditions) {
this.bgColor = bgColor; this.conditions = conditions;
} }
public void setFontColor(int fontColor) {
this.fontColor = fontColor;
}
public void setModifier(Modifier modifier) { public long getIsRT() {
this.modifier = modifier; return this.isRT;
} }
public int getSelectQty() {
return selectQty;
}
public void setSelectQty(int selectQty) { public void setIsRT(long isRT) {
this.selectQty = selectQty; this.isRT = isRT;
} }
public String getDefmodifier() {
return defmodifier;
}
public void setDefmodifier(String defmodifier) { public byte getDeletes() {
this.defmodifier = defmodifier; return this.deletes;
} }
public static ComboItem addFoodInfo(Food food, ComboItem foodCombo) {
foodCombo.setName(food.getFoodName());
foodCombo.setFid(food.getId());
foodCombo.setPrice(food.getPrice());
foodCombo.setAutoMode(food.getAutoMod());
return foodCombo;
}
public void setId(long id) { public void setDeletes(byte deletes) {
this.id = id; this.deletes = deletes;
} }
public void setComId(long comId) {
this.comId = comId;
}
public void setFid(long fid) { public long getPosId() {
this.fid = fid; return this.posId;
} }
public void setQty(long qty) {
this.qty = qty;
}
public void setDiffAmt(double diffAmt) { public void setPosId(long posId) {
this.diffAmt = diffAmt; this.posId = posId;
} }
public void setSeqNo(long seqNo) {
this.seqNo = seqNo;
}
public void setVisible(long visible) { public long getRestaurant_id() {
this.visible = visible; return this.restaurant_id;
} }
public void setConditions(long conditions) {
this.conditions = conditions;
}
public void setIsRT(long isRT) { public void setRestaurant_id(long restaurant_id) {
this.isRT = isRT; this.restaurant_id = restaurant_id;
} }
public void setDeletes(byte deletes) {
this.deletes = deletes;
}
public void setPosId(long posId) { public byte getIsMainAccount() {
this.posId = posId; return this.isMainAccount;
} }
public void setRestaurant_id(long restaurant_id) {
this.restaurant_id = restaurant_id;
}
public void setIsMainAccount(byte isMainAccount) { public void setIsMainAccount(byte isMainAccount) {
this.isMainAccount = isMainAccount; this.isMainAccount = isMainAccount;
} }
//
// public long getKtPrintMainItem() {
// return ktPrintMainItem;
// }
//
// public void setKtPrintMainItem(long ktPrintMainItem) {
// this.ktPrintMainItem = ktPrintMainItem;
// }
//
// public long getPrintFont() {
// return printFont;
// }
//
// public void setPrintFont(long printFont) {
// this.printFont = printFont;
// }
//
// public long getPrintToBill() {
// return printToBill;
// }
//
// public void setPrintToBill(long printToBill) {
// this.printToBill = printToBill;
// }
//
// public long getPrintTo() {
// return printTo;
// }
//
// public void setPrintTo(long printTo) {
// this.printTo = printTo;
// }
//
// public long getKtShowPrice() {
// return ktShowPrice;
// }
//
// public void setKtShowPrice(long ktShowPrice) {
// this.ktShowPrice = ktShowPrice;
// }
public String getPrintSeting() { public String getPrintSeting() {
return printSeting; return this.printSeting;
} }
public void setPrintSeting(String printSeting) { public void setPrintSeting(String printSeting) {
this.printSeting = printSeting; this.printSeting = printSeting;
} }
} }
...@@ -25,8 +25,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> { ...@@ -25,8 +25,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
*/ */
public static class Properties { public static class Properties {
public final static Property Id = new Property(0, Long.class, "id", true, "_id"); public final static Property Id = new Property(0, Long.class, "id", true, "_id");
public final static Property ComId = new Property(1, long.class, "comId", false, "COM_ID"); public final static Property ComId = new Property(1, Long.class, "comId", false, "COM_ID");
public final static Property Fid = new Property(2, long.class, "fid", false, "FID"); public final static Property Fid = new Property(2, Long.class, "fid", false, "FID");
public final static Property Qty = new Property(3, long.class, "qty", false, "QTY"); public final static Property Qty = new Property(3, long.class, "qty", false, "QTY");
public final static Property DiffAmt = new Property(4, double.class, "diffAmt", false, "DIFF_AMT"); public final static Property DiffAmt = new Property(4, double.class, "diffAmt", false, "DIFF_AMT");
public final static Property SeqNo = new Property(5, long.class, "seqNo", false, "SEQ_NO"); public final static Property SeqNo = new Property(5, long.class, "seqNo", false, "SEQ_NO");
...@@ -57,8 +57,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> { ...@@ -57,8 +57,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
String constraint = ifNotExists? "IF NOT EXISTS ": ""; String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"COMBO_ITEM\" (" + // db.execSQL("CREATE TABLE " + constraint + "\"COMBO_ITEM\" (" + //
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
"\"COM_ID\" INTEGER NOT NULL ," + // 1: comId "\"COM_ID\" INTEGER," + // 1: comId
"\"FID\" INTEGER NOT NULL ," + // 2: fid "\"FID\" INTEGER," + // 2: fid
"\"QTY\" INTEGER NOT NULL ," + // 3: qty "\"QTY\" INTEGER NOT NULL ," + // 3: qty
"\"DIFF_AMT\" REAL NOT NULL ," + // 4: diffAmt "\"DIFF_AMT\" REAL NOT NULL ," + // 4: diffAmt
"\"SEQ_NO\" INTEGER NOT NULL ," + // 5: seqNo "\"SEQ_NO\" INTEGER NOT NULL ," + // 5: seqNo
...@@ -89,8 +89,16 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> { ...@@ -89,8 +89,16 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
if (id != null) { if (id != null) {
stmt.bindLong(1, id); stmt.bindLong(1, id);
} }
stmt.bindLong(2, entity.getComId());
stmt.bindLong(3, entity.getFid()); Long comId = entity.getComId();
if (comId != null) {
stmt.bindLong(2, comId);
}
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
stmt.bindLong(4, entity.getQty()); stmt.bindLong(4, entity.getQty());
stmt.bindDouble(5, entity.getDiffAmt()); stmt.bindDouble(5, entity.getDiffAmt());
stmt.bindLong(6, entity.getSeqNo()); stmt.bindLong(6, entity.getSeqNo());
...@@ -131,8 +139,16 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> { ...@@ -131,8 +139,16 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
if (id != null) { if (id != null) {
stmt.bindLong(1, id); stmt.bindLong(1, id);
} }
stmt.bindLong(2, entity.getComId());
stmt.bindLong(3, entity.getFid()); Long comId = entity.getComId();
if (comId != null) {
stmt.bindLong(2, comId);
}
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
stmt.bindLong(4, entity.getQty()); stmt.bindLong(4, entity.getQty());
stmt.bindDouble(5, entity.getDiffAmt()); stmt.bindDouble(5, entity.getDiffAmt());
stmt.bindLong(6, entity.getSeqNo()); stmt.bindLong(6, entity.getSeqNo());
...@@ -174,8 +190,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> { ...@@ -174,8 +190,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
public ComboItem readEntity(Cursor cursor, int offset) { public ComboItem readEntity(Cursor cursor, int offset) {
ComboItem entity = new ComboItem( // ComboItem entity = new ComboItem( //
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
cursor.getLong(offset + 1), // comId cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1), // comId
cursor.getLong(offset + 2), // fid cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2), // fid
cursor.getLong(offset + 3), // qty cursor.getLong(offset + 3), // qty
cursor.getDouble(offset + 4), // diffAmt cursor.getDouble(offset + 4), // diffAmt
cursor.getLong(offset + 5), // seqNo cursor.getLong(offset + 5), // seqNo
...@@ -197,8 +213,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> { ...@@ -197,8 +213,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
@Override @Override
public void readEntity(Cursor cursor, ComboItem entity, int offset) { public void readEntity(Cursor cursor, ComboItem entity, int offset) {
entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setComId(cursor.getLong(offset + 1)); entity.setComId(cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1));
entity.setFid(cursor.getLong(offset + 2)); entity.setFid(cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2));
entity.setQty(cursor.getLong(offset + 3)); entity.setQty(cursor.getLong(offset + 3));
entity.setDiffAmt(cursor.getDouble(offset + 4)); entity.setDiffAmt(cursor.getDouble(offset + 4));
entity.setSeqNo(cursor.getLong(offset + 5)); entity.setSeqNo(cursor.getLong(offset + 5));
......
...@@ -162,7 +162,7 @@ public class ComboItemDaoUtils { ...@@ -162,7 +162,7 @@ public class ComboItemDaoUtils {
ArrayList<ComboItem> comboItems = new ArrayList<>(); ArrayList<ComboItem> comboItems = new ArrayList<>();
// String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID "; // String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID ";
String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD,f.PRINT_SETING,SELECT_QTY,DEF_MODIFIER,INVISIBLE FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE!=1 join FOOD_COMBO r on r.COM_ID=c.COM_ID and r.DELETES!=1"; String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD,f.PRINT_SETING,f.ABLE_DISCOUNT,SELECT_QTY,DEF_MODIFIER,INVISIBLE,POINTS_ADD,POINTS_RATIO,POINTS_REDEEM FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE!=1 join FOOD_COMBO r on r.COM_ID=c.COM_ID and r.DELETES!=1";
if (fid > 0) { if (fid > 0) {
sql = sql + " where r.FID='" + fid + "'"; sql = sql + " where r.FID='" + fid + "'";
...@@ -183,7 +183,10 @@ public class ComboItemDaoUtils { ...@@ -183,7 +183,10 @@ public class ComboItemDaoUtils {
order.setSelectQty(c.getInt(c.getColumnIndex("SELECT_QTY"))); order.setSelectQty(c.getInt(c.getColumnIndex("SELECT_QTY")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE"))); order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
order.setPrintSeting(c.getString(c.getColumnIndex("PRINT_SETING"))); order.setPrintSeting(c.getString(c.getColumnIndex("PRINT_SETING")));
int deletes = c.getInt(c.getColumnIndex("DELETES")); order.setAblediscount(c.getLong(c.getColumnIndex("ABLE_DISCOUNT")));
order.setPointsAdd(c.getDouble(c.getColumnIndex("POINTS_ADD")));
order.setPointsRatio(c.getLong(c.getColumnIndex("POINTS_RATIO")));
order.setPointsRedeem(c.getDouble(c.getColumnIndex("POINTS_REDEEM")));
String defmodifier = c.getString(c.getColumnIndex("DEF_MODIFIER")); String defmodifier = c.getString(c.getColumnIndex("DEF_MODIFIER"));
if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) { if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) {
order.setDefmodifier(defmodifier); order.setDefmodifier(defmodifier);
......
...@@ -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" + 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" +
" 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" + 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" +
" 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" + 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" +
" 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);
...@@ -397,6 +397,7 @@ public class ModifierDaoUtils { ...@@ -397,6 +397,7 @@ public class ModifierDaoUtils {
order.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG"))); order.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG")));
order.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE"))); order.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE")));
order.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE"))); order.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE")));
order.setAbleDisCount(c.getLong(c.getColumnIndex("ABLE_DIS_COUNT")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE"))); order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
if (fid != 0) { if (fid != 0) {
//非公共細項 //非公共細項
......
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.zxing; ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.zxing;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentUris; import android.content.ContentUris;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
...@@ -11,6 +12,7 @@ import android.content.pm.PackageManager; ...@@ -11,6 +12,7 @@ import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor; import android.content.res.AssetFileDescriptor;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.PointF; import android.graphics.PointF;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
...@@ -32,8 +34,8 @@ import android.view.SurfaceView; ...@@ -32,8 +34,8 @@ import android.view.SurfaceView;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.dlazaro66.qrcodereaderview.QRCodeReaderView;
import com.gingersoft.gsa.cloud.base.R; import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.R2; import com.gingersoft.gsa.cloud.base.R2;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
...@@ -53,6 +55,7 @@ import com.google.zxing.Result; ...@@ -53,6 +55,7 @@ import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer; import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader; import com.google.zxing.qrcode.QRCodeReader;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -60,56 +63,58 @@ import com.jess.arms.utils.ArmsUtils; ...@@ -60,56 +63,58 @@ import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DrawableProvider; import com.jess.arms.utils.DrawableProvider;
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.IOException; import java.io.IOException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import cn.bingoogolapple.photopicker.activity.BGAPhotoPickerActivity;
import cn.bingoogolapple.qrcode.core.QRCodeView;
import cn.bingoogolapple.qrcode.zxing.ZXingView;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements IView, Callback, OnClickListener, QRCodeReaderView.OnQRCodeReadListener { public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements IView, QRCodeView.Delegate, OnClickListener {
@BindView(R2.id.topbar) @BindView(R2.id.topbar)
QMUITopBar mTopBar; QMUITopBar mTopBar;
@BindView(R2.id.btn_album) @BindView(R2.id.btn_album)
TextView btn_album; TextView btn_album;
@BindView(R2.id.qrdecoderview) @BindView(R2.id.zxingview)
QRCodeReaderView qrCodeReaderView; ZXingView mZXingView;
// @BindView(R2.id.preview_view)
// SurfaceView preview_view;
// @BindView(R2.id.viewfinder_view)
// ViewfinderView viewfinderView;
// private Vector<BarcodeFormat> decodeFormats;
private String characterSet;
private MediaPlayer mediaPlayer;
private boolean hasSurface;
private boolean playBeep;
private static final float BEEP_VOLUME = 0.10f;
private boolean vibrate;
private final int ALBUM_REQUEST_CODE = 6; private final int ALBUM_REQUEST_CODE = 6;
public static final int PHOTOZOOM = 0; // 相册 public static final int PHOTOZOOM = 0; // 相册
private boolean isCheckSelfPermission = false;
private String cameraPermissions = Manifest.permission.CAMERA;//请求的权限 private String cameraPermissions = Manifest.permission.CAMERA;//请求的权限
private String[] needPermissions = { private String[] needPermissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
}; };
private final int CAMERA_STORAGE_REQUEST_CODE = 11;
public static final int CALL_BACK_QR_RESULT = 100; public static final int CALL_BACK_QR_RESULT = 100;
private static final int REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY = 666;
private String title = "掃碼";
public static void startMipcaCaptureActivity(Context context, String title) {
Intent intent = new Intent(context, MipcaCaptureActivity.class);
intent.putExtra("title", title);
context.startActivity(intent);
// context.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
}
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
...@@ -128,28 +133,14 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -128,28 +133,14 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
qrCodeReaderView.setOnQRCodeReadListener(this);
// Use this function to enable/disable decoding
qrCodeReaderView.setQRDecodingEnabled(true);
// Use this function to change the autofocus interval (default is 5 secs)
qrCodeReaderView.setAutofocusInterval(2000L);
// Use this function to enable/disable Torch
qrCodeReaderView.setTorchEnabled(true);
// Use this function to set front camera preview mZXingView.setDelegate(this);
qrCodeReaderView.setFrontCamera();
// Use this function to set back camera preview
qrCodeReaderView.setBackCamera();
hasSurface = false;
} }
@Override @Override
public void initIntent() { public void initIntent() {
Intent intent = getIntent();
title = intent.getStringExtra("title");
} }
@Override @Override
...@@ -163,7 +154,7 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -163,7 +154,7 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
killMyself(); killMyself();
} }
}); });
mTopBar.setTitle("掃碼"); mTopBar.setTitle(title);
} }
@Override @Override
...@@ -182,82 +173,32 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -182,82 +173,32 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
} }
@Override @Override
protected void onResume() { protected void onStart() {
super.onResume(); super.onStart();
qrCodeReaderView.startCamera();
}
@Override
protected void onPause() {
super.onPause();
qrCodeReaderView.stopCamera();
}
mZXingView.startCamera(); // 打开后置摄像头开始预览,但是并未开始识别
// mZXingView.startCamera(Camera.CameraInfo.CAMERA_FACING_FRONT); // 打开前置摄像头开始预览,但是并未开始识别
@Override mZXingView.startSpotAndShowRect(); // 显示扫描框,并开始识别
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
} }
@Override @Override
public void surfaceCreated(SurfaceHolder holder) { protected void onStop() {
mZXingView.stopCamera(); // 关闭摄像头预览,并且隐藏扫描框
super.onStop();
} }
@Override @Override
public void surfaceDestroyed(SurfaceHolder holder) { protected void onDestroy() {
hasSurface = false; mZXingView.onDestroy(); // 销毁二维码扫描控件
super.onDestroy();
} }
// public ViewfinderView getViewfinderView() { private void vibrate() {
// return viewfinderView;
// }
//
// public Handler getHandler() {
// return handler;
// }
//
// public void drawViewfinder() {
// viewfinderView.drawViewfinder();
// }
private void initBeepSound() {
if (playBeep && mediaPlayer == null) {
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnCompletionListener(beepListener);
AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);
try {
mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
file.close();
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
mediaPlayer.prepare();
} catch (IOException e) {
mediaPlayer = null;
}
}
}
private static final long VIBRATE_DURATION = 200L;
@SuppressLint("MissingPermission")
private void playBeepSoundAndVibrate() {
if (playBeep && mediaPlayer != null) {
mediaPlayer.start();
}
if (vibrate) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(VIBRATE_DURATION); vibrator.vibrate(200);
}
} }
/**
* When the beep has finished playing, rewind to queue up another one.
*/
private final OnCompletionListener beepListener = mediaPlayer -> mediaPlayer.seekTo(0);
@OnClick({R2.id.btn_album}) @OnClick({R2.id.btn_album})
public void onClick(View v) { public void onClick(View v) {
if (v.getId() == R.id.btn_album) { if (v.getId() == R.id.btn_album) {
...@@ -275,6 +216,18 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -275,6 +216,18 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, PHOTOZOOM); startActivityForResult(intent, PHOTOZOOM);
} }
/*
从相册选取二维码图片,这里为了方便演示,使用的是
https://github.com/bingoogolapple/BGAPhotoPicker-Android
这个库来从图库中选择二维码图片,这个库不是必须的,你也可以通过自己的方式从图库中选择图片
*/
// Intent photoPickerIntent = new BGAPhotoPickerActivity.IntentBuilder(this)
// .cameraFileDir(null)
// .maxChooseCount(1)
// .selectedPhotos(null)
// .pauseOnScroll(false)
// .build();
// startActivityForResult(photoPickerIntent, REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY);
} }
} }
...@@ -282,6 +235,10 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -282,6 +235,10 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
// 显示扫描框,并开始识别
mZXingView.startSpotAndShowRect();
if (requestCode == PHOTOZOOM) { if (requestCode == PHOTOZOOM) {
if (data == null) { if (data == null) {
return; return;
...@@ -294,14 +251,80 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -294,14 +251,80 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
finish(); finish();
return; return;
} }
// qrCodeResult(result); mZXingView.decodeQRCode(result.getText());
} }
} else { } else {
finish(); finish();
} }
// if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY) {
// final String picturePath = BGAPhotoPickerActivity.getSelectedPhotos(data).get(0);
// // 本来就用到 QRCodeView 时可直接调 QRCodeView 的方法,走通用的回调
// mZXingView.decodeQRCode(picturePath);
//
// }
}
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(this, message, true);
else
LoadingDialog.showDialogForLoading(this);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onScanQRCodeSuccess(String result) {
Log.i(TAG, "onScanQRCodeSuccess:" + result);
showMessage("掃描結果: " + result);
vibrate();
mZXingView.startSpot(); // 开始识别
}
@Override
public void onCameraAmbientBrightnessChanged(boolean isDark) {
// 这里是通过修改提示文案来展示环境是否过暗的状态,接入方也可以根据 isDark 的值来实现其他交互效果
String tipText = mZXingView.getScanBoxView().getTipText();
String ambientBrightnessTip = "\n環境過暗,請打開閃光燈";
if (isDark) {
if (!tipText.contains(ambientBrightnessTip)) {
mZXingView.getScanBoxView().setTipText(tipText + ambientBrightnessTip);
}
} else {
if (tipText.contains(ambientBrightnessTip)) {
tipText = tipText.substring(0, tipText.indexOf(ambientBrightnessTip));
mZXingView.getScanBoxView().setTipText(tipText);
}
}
}
@Override
public void onScanQRCodeOpenCameraError() {
showMessage("打開相機出錯!");
} }
private Bitmap scanBitmap;
//解析二维码图片,返回结果封装在Result对象中 //解析二维码图片,返回结果封装在Result对象中
private com.google.zxing.Result parseQRcodeBitmap(Uri uri) { private com.google.zxing.Result parseQRcodeBitmap(Uri uri) {
...@@ -309,47 +332,36 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -309,47 +332,36 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
if (path == null) { if (path == null) {
return null; return null;
} }
scanBitmap = BitmapUtil.decodeUri(this, uri, 500, 500); Bitmap scanBitmap = BitmapUtil.decodeUri(this, uri, 500, 500);
Hashtable<DecodeHintType, String> hints = new Hashtable<>(); Hashtable<DecodeHintType, String> hints = new Hashtable<>();
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); // 设置二维码内容的编码 // 设置二维码内容的编码
// BitmapFactory.Options options = new BitmapFactory.Options(); hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
// options.inJustDecodeBounds = true; // 先获取原大小
// scanBitmap = BitmapFactory.decodeFile(path, options);
//
//// ercode_img.setImageBitmap(BitmapFactory.decodeFile(path));//filePath);
// options.inJustDecodeBounds = false;
// int sampleSize = (int) (options.outHeight / (float) 200);
// if (sampleSize <= 0)
// sampleSize = 1;
//
// options.inSampleSize = sampleSize;
//
// scanBitmap = BitmapFactory.decodeFile(path, options);
// int[] data = new int[scanBitmap.getWidth() * scanBitmap.getHeight()];
// scanBitmap.getPixels(data, 0, scanBitmap.getWidth(), 0, 0, scanBitmap.getWidth(), scanBitmap.getHeight());
//新建一个RGBLuminanceSource对象,将bitmap图片传给此对象 //新建一个RGBLuminanceSource对象,将bitmap图片传给此对象
// RGBLuminanceSource rgbLuminanceSource = new RGBLuminanceSource(scanBitmap); int width = scanBitmap.getWidth();
// //将图片转换成二进制图片 int height = scanBitmap.getHeight();
// BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(rgbLuminanceSource)); int[] pixels = new int[width * height];
// //初始化解析对象 scanBitmap.getPixels(pixels, 0, width, 0, 0, width, height);
// QRCodeReader reader = new QRCodeReader(); RGBLuminanceSource rgbLuminanceSource = new RGBLuminanceSource(width, height, pixels);
// scanBitmap.recycle(); //将图片转换成二进制图片
// //开始解析 BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(rgbLuminanceSource));
//初始化解析对象
QRCodeReader reader = new QRCodeReader();
scanBitmap.recycle();
//开始解析
Result result = null; Result result = null;
// try { try {
// result = reader.decode(binaryBitmap, hints); result = reader.decode(binaryBitmap, hints);
// } catch (NotFoundException e) { } catch (NotFoundException e) {
// Log.e("hxy", "NotFoundException"); Log.e("hxy", "NotFoundException");
// } catch (ChecksumException e) { } catch (ChecksumException e) {
// Log.e("hxy", "ChecksumException"); Log.e("hxy", "ChecksumException");
// } catch (FormatException e) { } catch (FormatException e) {
// Log.e("hxy", "FormatException"); Log.e("hxy", "FormatException");
// } }
return result; return result;
} }
@SuppressLint("NewApi")
public static String getPath(final Context context, final Uri uri) { public static String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
// DocumentProvider // DocumentProvider
...@@ -362,7 +374,6 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -362,7 +374,6 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
if ("primary".equalsIgnoreCase(type)) { if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1]; return Environment.getExternalStorageDirectory() + "/" + split[1];
} }
// TODO handle non-primary volumes
} }
// DownloadsProvider // DownloadsProvider
else if (isDownloadsDocument(uri)) { else if (isDownloadsDocument(uri)) {
...@@ -405,8 +416,17 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -405,8 +416,17 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
return null; return null;
} }
public static String getDataColumn(Context context, Uri uri, String selection, /**
String[] selectionArgs) { * Get the value of the data column for this Uri. This is useful for
* MediaStore Uris, and other file-based ContentProviders.
*
* @param context The context.
* @param uri The Uri to query.
* @param selection (Optional) Filter used in the query.
* @param selectionArgs (Optional) Selection arguments used in the query.
* @return The value of the _data column, which is typically a file path.
*/
public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null; Cursor cursor = null;
final String column = "_data"; final String column = "_data";
final String[] projection = { final String[] projection = {
...@@ -457,45 +477,4 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements ...@@ -457,45 +477,4 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
public static boolean isGooglePhotosUri(Uri uri) { public static boolean isGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.content".equals(uri.getAuthority()); return "com.google.android.apps.photos.content".equals(uri.getAuthority());
} }
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(this, message, true);
else
LoadingDialog.showDialogForLoading(this);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onQRCodeRead(String text, PointF[] points) {
Intent intent = new Intent();
intent.putExtra("qrCodeResult",text);
setResult(CALL_BACK_QR_RESULT,intent);
finish();
// showMessage("onQRCodeRead "+text);
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" > android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- <SurfaceView-->
<!-- android:id="@+id/preview_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_gravity="center"/>-->
<!-- <com.gingersoft.gsa.cloud.zxing.view.ViewfinderView-->
<!-- android:id="@+id/viewfinder_view"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content" />-->
<!-- <LinearLayout-->
<!-- android:id="@+id/title_layout"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_alignParentTop="true"-->
<!-- android:orientation="vertical">-->
<!-- <com.zxing.view.ViewfinderView-->
<!-- android:id="@+id/viewfinder_view"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content" />-->
<!-- <include layout="@layout/title_bar_" />-->
<com.qmuiteam.qmui.widget.QMUITopBar <com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar" android:id="@+id/topbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/head_height" android:layout_height="@dimen/head_height"
app:qmui_topbar_title_color="@color/theme_white_color" /> app:qmui_topbar_title_color="@color/theme_white_color" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<cn.bingoogolapple.qrcode.zxing.ZXingView
android:id="@+id/zxingview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:qrcv_animTime="1000"
app:qrcv_barCodeTipText="將條碼放入框內,即可自動掃描"
app:qrcv_barcodeRectHeight="120dp"
app:qrcv_borderColor="@android:color/white"
app:qrcv_borderSize="1dp"
app:qrcv_cornerColor="@color/colorPrimaryDark"
app:qrcv_cornerDisplayType="center"
app:qrcv_cornerLength="20dp"
app:qrcv_cornerSize="3dp"
app:qrcv_customScanLineDrawable="@mipmap/qrcode_default_scan_line"
app:qrcv_isAutoZoom="true"
app:qrcv_isBarcode="false"
app:qrcv_isOnlyDecodeScanBoxArea="false"
app:qrcv_isScanLineReverse="true"
app:qrcv_isShowDefaultGridScanLineDrawable="false"
app:qrcv_isShowDefaultScanLineDrawable="true"
app:qrcv_isShowLocationPoint="true"
app:qrcv_isShowTipBackground="true"
app:qrcv_isShowTipTextAsSingleLine="false"
app:qrcv_isTipTextBelowRect="false"
app:qrcv_maskColor="@color/trans"
app:qrcv_qrCodeTipText="將二維碼/條碼框內,即可自動掃描"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_scanLineMargin="0dp"
app:qrcv_scanLineSize="0.5dp"
app:qrcv_tipTextColor="@android:color/white"
app:qrcv_tipTextSize="12sp"
app:qrcv_toolbarHeight="56dp"
app:qrcv_topOffset="65dp"
app:qrcv_verticalBias="-1" />
<TextView <TextView
android:id="@+id/btn_album" android:id="@+id/btn_album"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -54,17 +67,6 @@ ...@@ -54,17 +67,6 @@
android:background="@drawable/shape_delivery_item_btn_normal" android:background="@drawable/shape_delivery_item_btn_normal"
android:textSize="@dimen/font_normal2" android:textSize="@dimen/font_normal2"
android:layout_gravity="right"/> android:layout_gravity="right"/>
<com.dlazaro66.qrcodereaderview.QRCodeReaderView
android:id="@+id/qrdecoderview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/head_height"/>
<com.gingersoft.gsa.cloud.zxing.PointsOverlayView
android:id="@+id/points_overlay_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- </LinearLayout>--> <!-- </LinearLayout>-->
</RelativeLayout> </FrameLayout>
</FrameLayout> </LinearLayout>
\ No newline at end of file \ No newline at end of file
...@@ -26,5 +26,5 @@ QMUI_LINT_VERSION = 1.1.0 ...@@ -26,5 +26,5 @@ QMUI_LINT_VERSION = 1.1.0
QMUI_SKIN_MAKER_VERSION = 0.0.1 QMUI_SKIN_MAKER_VERSION = 0.0.1
POM_GIT_URL=https://github.com/Tencent/QMUI_Android/ POM_GIT_URL=https://github.com/Tencent/QMUI_Android/
POM_SITE_URL=https://qmuiteam.com/android POM_SITE_URL=https://qmuiteam.com/android
android.injected.testOnly=false #android.injected.testOnly=false
...@@ -324,11 +324,11 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -324,11 +324,11 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
if (mTableItem.getLayoutType() == 0 && mTableItem.getServiceCharge() != 0) { if (mTableItem.getLayoutType() == 0 && mTableItem.getServiceCharge() != 0) {
serverchargeEditText.setText(mTableItem.getServiceCharge() + ""); serverchargeEditText.setText(mTableItem.getServiceCharge() + "");
} }
InputFilter[] filters3 = {new InputFilter.LengthFilter(5)}; InputFilter[] filters3 = {new InputFilter.LengthFilter(2)};
serverchargeEditText.setFilters(filters3); serverchargeEditText.setFilters(filters3);
serverchargeEditText.setTextSize(16); serverchargeEditText.setTextSize(16);
serverchargeEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); serverchargeEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
serverchargeEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); serverchargeEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
serverchargeItemView.addAccessoryCustomView(serverchargeEditText); serverchargeItemView.addAccessoryCustomView(serverchargeEditText);
// 如下是内容为空的配置,需要两个属性结合使用;如果有默认值,进行相反的配置 // 如下是内容为空的配置,需要两个属性结合使用;如果有默认值,进行相反的配置
// 设置文字的对齐方式 // 设置文字的对齐方式
......
...@@ -107,7 +107,6 @@ public class OrderDetailItem implements Serializable { ...@@ -107,7 +107,6 @@ public class OrderDetailItem implements Serializable {
public static final byte STATUS_CANCEL = 6; public static final byte STATUS_CANCEL = 6;
@Data @Data
public static class OrderPayBean implements Serializable{ public static class OrderPayBean implements Serializable{
private long id; private long id;
......
...@@ -5,6 +5,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; ...@@ -5,6 +5,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import lombok.Data;
/** /**
* 作者:ELEGANT_BIN * 作者:ELEGANT_BIN
* 版本:1.6.0 * 版本:1.6.0
...@@ -14,74 +16,22 @@ import java.util.Map; ...@@ -14,74 +16,22 @@ import java.util.Map;
*/ */
public class DeleteOrderRequest { public class DeleteOrderRequest {
@Data
public static class Request{ public static class Request{
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete; private List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete;
private long orderId ; private long orderId ;
private long tableId; private long tableId;
private String tableNumber;
private byte type; private byte type;
private long reasonId; private long reasonId;
public List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete() {
return mapsDelete;
}
public void setMapsDelete(List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete) {
this.mapsDelete = mapsDelete;
}
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
public long getTableId() {
return tableId;
}
public void setTableId(long tableId) {
this.tableId = tableId;
}
public byte getType() {
return type;
}
public void setType(byte type) {
this.type = type;
}
public long getReasonId() {
return reasonId;
} }
public void setReasonId(long reasonId) { @Data
this.reasonId = reasonId;
}
}
public static class DeleteBean{ public static class DeleteBean{
private long id; private long id;
private int number; private int number;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
} }
} }
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter; ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Activity; import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.content.Intent;
import android.text.TextUtils; import android.text.TextUtils;
import android.widget.TextView; import android.widget.TextView;
...@@ -13,6 +14,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; ...@@ -13,6 +14,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean; import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil; import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
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.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
...@@ -20,16 +22,21 @@ import com.gingersoft.gsa.cloud.table.R; ...@@ -20,16 +22,21 @@ import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.BaseOrderContract; import com.gingersoft.gsa.cloud.table.mvp.contract.BaseOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderMoneyAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderMoneyAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.jess.arms.utils.PermissionUtil;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
...@@ -138,6 +145,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -138,6 +145,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
addTableServiceAmount(); addTableServiceAmount();
addSentOrderDiscount(); addSentOrderDiscount();
addOrderRounding(); addOrderRounding();
updateOrderDiscount();
//設置賬單總金額 //設置賬單總金額
myOrderManage.setTotalAmount(getTotalAmount()); myOrderManage.setTotalAmount(getTotalAmount());
...@@ -217,6 +225,29 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -217,6 +225,29 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}); });
} }
protected void toScanActivity() {
PermissionUtil.launchCamera(new PermissionUtil.RequestPermission() {
@Override
public void onRequestPermissionSuccess() {
Intent intent = new Intent(IActivity, MipcaCaptureActivity.class);
IActivity.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
}
@Override
public void onRequestPermissionFailure(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
@Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
}, new RxPermissions(IActivity), mErrorHandler);
}
public void changeNumber(int number) { public void changeNumber(int number) {
if (!changeNumberCondition(number)) { if (!changeNumberCondition(number)) {
return; return;
...@@ -341,7 +372,8 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -341,7 +372,8 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
if (dataBean == null) { if (dataBean == null) {
return; return;
} }
double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100; // double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
double serviceAmount = getFoodTotal() * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) { if (serviceAmount > 0) {
BillOrderMoney orderMoney = new BillOrderMoney(); BillOrderMoney orderMoney = new BillOrderMoney();
orderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount)); orderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
...@@ -360,15 +392,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -360,15 +392,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
} }
/** /**
* 更新账单折扣 * 更新服务费
*/ */
private void updateTableServiceAmount() { private void updateTableServiceAmount() {
BillOrderMoney billOrderMoney = getBillOrderItemByType(BillOrderMoney.SERVERCHARGE_TYPE); BillOrderMoney billOrderMoney = getBillOrderItemByType(BillOrderMoney.SERVERCHARGE_TYPE);
if (billOrderMoney != null) { if (billOrderMoney != null) {
TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean(); TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean();
double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100; // double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
double serviceAmount = getFoodTotal() * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) { if (serviceAmount > 0) {
billOrderMoney.setMoney(serviceAmount); billOrderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
} else { } else {
mOrderMoneyList.remove(billOrderMoney); mOrderMoneyList.remove(billOrderMoney);
} }
...@@ -382,7 +415,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -382,7 +415,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
* @param discount * @param discount
*/ */
protected void addOrderDiscount(boolean init, Discount discount, int status) { protected void addOrderDiscount(boolean init, Discount discount, int status) {
double totalMoney = getFoodTotal(); double totalMoney = getDiscountableFoodTotal();
for (BillOrderMoney item : mOrderMoneyList) { for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.ROUNDING_TYPE) { if (item.getType() == BillOrderMoney.ROUNDING_TYPE) {
mOrderMoneyList.remove(item); mOrderMoneyList.remove(item);
...@@ -420,7 +453,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -420,7 +453,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
protected void updateOrderDiscount() { protected void updateOrderDiscount() {
BillOrderMoney orderMoney = getBillOrderItemByType(BillOrderMoney.DISCOUNT_TYPE); BillOrderMoney orderMoney = getBillOrderItemByType(BillOrderMoney.DISCOUNT_TYPE);
if (orderMoney != null) { if (orderMoney != null) {
double totalMoney = getFoodTotal(); double totalMoney = getDiscountableFoodTotal();
double discountPrice = Discount.calculationDiscount(orderMoney.getDiscount(), totalMoney); double discountPrice = Discount.calculationDiscount(orderMoney.getDiscount(), totalMoney);
orderMoney.setMoney(discountPrice); orderMoney.setMoney(discountPrice);
} }
...@@ -459,6 +492,9 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -459,6 +492,9 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
orderDetailsBean.setPrice(-discountPrice); orderDetailsBean.setPrice(-discountPrice);
break; break;
} else { } else {
if (orderDetailsBean.getAblediscount() == 0)
//此食品或细项不支持折扣 直接跳过
continue;
//保存每個食品套餐折扣總額 //保存每個食品套餐折扣總額
totalMoney = MoneyUtil.sum(totalMoney, orderDetailsBean.getPrice()); totalMoney = MoneyUtil.sum(totalMoney, orderDetailsBean.getPrice());
//往下找 //往下找
...@@ -469,7 +505,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -469,7 +505,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
totalMoney = 0; totalMoney = 0;
} }
//參與折扣 //參與折扣
orderDetailsBean.setAblediscount(1); // orderDetailsBean.setAblediscount(1);
if (!orderDetailsBean.isNew()) { if (!orderDetailsBean.isNew()) {
if (orderDetailsBean.getDiscountStatus() == 0) { if (orderDetailsBean.getDiscountStatus() == 0) {
//此食品新增折扣 //此食品新增折扣
...@@ -483,7 +519,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -483,7 +519,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
for (int i = 0; i < orderDetailList.size(); i++) { for (int i = 0; i < orderDetailList.size(); i++) {
if (start_position <= i && i <= end_position) { if (start_position <= i && i <= end_position) {
OrderDetail orderDetailsBean = orderDetailList.get(i); OrderDetail orderDetailsBean = orderDetailList.get(i);
orderDetailsBean.setAblediscount(0); // orderDetailsBean.setAblediscount(0);
orderDetailsBean.setDiscountStatus(0); orderDetailsBean.setDiscountStatus(0);
} }
} }
...@@ -557,15 +593,55 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -557,15 +593,55 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
} }
/** /**
* 獲取食品合計金額 * 獲取食品合計
* *
* @return * @return
*/ */
public double getFoodTotal() { public double getFoodTotal() {
double total = 0.0; double total = 0.0;
for (OrderDetail food : myOrderManage.getOrderFoodList()) { for (OrderDetail food : myOrderManage.getOrderFoodList()) {
if (food.getType() == OrderDetail.DISCOUNT_TYPE) {
//折扣金额直接减掉
total = MoneyUtil.sub(total, Math.abs(food.getPrice()));
} else {
total = MoneyUtil.sum(total, food.getPrice()); total = MoneyUtil.sum(total, food.getPrice());
} }
}
if (total < 0) {
total = 0;
}
return MoneyUtil.get_ItemDecimals_money(total);
}
/**
* 獲取所有可折扣食品合計
*
* @return
*/
public double getDiscountableFoodTotal() {
double total = 0.0;
int orderSize = myOrderManage.getOrderFoodList().size();
for (int i = 0; i < orderSize; i++) {
OrderDetail food = myOrderManage.getOrderFoodList().get(i);
if (food.getItemType() == 1) {
if (food.getAblediscount() == 1) {
total = MoneyUtil.sum(total, food.getPrice());
}
} else {
if (food.getType() == OrderDetail.DISCOUNT_TYPE) {
//折扣金额直接减掉
total = MoneyUtil.sub(total, Math.abs(food.getPrice()));
} else {
int parentIndex = food.getParentIndex() - 1;
if (orderSize > parentIndex && myOrderManage.getOrderFoodList().get(parentIndex).getAblediscount() == 1) {
//主食品可參與折扣 子食品才能參與折扣
if (food.getAblediscount() == 1) {
total = MoneyUtil.sum(total, food.getPrice());
}
}
}
}
}
if (total < 0) { if (total < 0) {
total = 0; total = 0;
} }
...@@ -742,13 +818,14 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -742,13 +818,14 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
} }
protected CreateOrderRequest getCreateOrderRequest(List<OrderDetail> foodList) { protected CreateOrderRequest getCreateOrderRequest(List<OrderDetail> foodList) {
List<OrderDetail> newFoodList = new ArrayList<>(); List<OrderDetail> newFoodList = OrderDetail.transNewOrderDetails(foodList);
newFoodList.addAll(foodList);
if (GsaCloudApplication.androidSetting.isMergeSendFood()) { if (GsaCloudApplication.androidSetting.isMergeSendFood()) {
//合并未送单主食品 //合并未送单主食品
mergeMainFoodNumber(newFoodList); mergeMainFoodNumber(newFoodList);
} }
setChildAblediscountByMainAblediscount(newFoodList);
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication); int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
CreateOrderRequest request = new CreateOrderRequest(); CreateOrderRequest request = new CreateOrderRequest();
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber()); request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
...@@ -768,14 +845,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -768,14 +845,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
return request; return request;
} }
protected AddOrderRequest getAddOrderRequest(List<OrderDetail> foodList) { protected AddOrderRequest getAddOrderRequest(List<OrderDetail> foodList) {
List<OrderDetail> newFoodList = new ArrayList<>(); List<OrderDetail> newFoodList = OrderDetail.transNewOrderDetails(foodList);
newFoodList.addAll(foodList);
if (GsaCloudApplication.androidSetting.isMergeSendFood()) { if (GsaCloudApplication.androidSetting.isMergeSendFood()) {
//合并未送单主食品 //合并未送单主食品
mergeMainFoodNumber(newFoodList); mergeMainFoodNumber(newFoodList);
} }
setChildAblediscountByMainAblediscount(newFoodList);
AddOrderRequest request = new AddOrderRequest(); AddOrderRequest request = new AddOrderRequest();
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber()); request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
request.setMaps(orderDetailBeanToAddFoodRequest(newFoodList)); request.setMaps(orderDetailBeanToAddFoodRequest(newFoodList));
...@@ -942,6 +1021,25 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -942,6 +1021,25 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
} }
/** /**
* 送单前根据主食品Ablediscount更新子食品Ablediscount(前端处理后台直接存即可)
*
* @param newFoodList
*/
private void setChildAblediscountByMainAblediscount(List<OrderDetail> newFoodList) {
int orderSize = newFoodList.size();
for (int i = 0; i < orderSize; i++) {
OrderDetail food = newFoodList.get(i);
if (food.getItemType() != 1) {
int parentIndex = food.getParentIndex() - 1;
if (orderSize > parentIndex && newFoodList.get(parentIndex).getAblediscount() == 0) {
//主食品不可參與折扣 子食品也不能參與折扣
food.setAblediscount(0);
}
}
}
}
/**
* 合并新下单主食品数量 * 合并新下单主食品数量
* *
* @param foodList * @param foodList
......
...@@ -62,6 +62,7 @@ import com.tbruyelle.rxpermissions2.RxPermissions; ...@@ -62,6 +62,7 @@ import com.tbruyelle.rxpermissions2.RxPermissions;
import org.simple.eventbus.EventBus; import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber; import org.simple.eventbus.Subscriber;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -158,27 +159,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -158,27 +159,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
this.mApplication = null; this.mApplication = null;
} }
public void toScanActivity() { public void startScanActivity() {
PermissionUtil.launchCamera(new PermissionUtil.RequestPermission() { toScanActivity();
@Override
public void onRequestPermissionSuccess() {
Intent intent = new Intent(IActivity, MipcaCaptureActivity.class);
IActivity.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
}
@Override
public void onRequestPermissionFailure(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
@Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
}, new RxPermissions(IActivity), mErrorHandler);
} }
public void initMealData() { public void initMealData() {
...@@ -295,6 +277,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -295,6 +277,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
addFoodItemBefore(mCurrentOrderDetailBean); addFoodItemBefore(mCurrentOrderDetailBean);
//沽清食品數量 //沽清食品數量
updateFoodSoldoutCtrData(); updateFoodSoldoutCtrData();
//更新賬單金額
updateOrderMoneyItem();
updateOrderFoodNumber(); updateOrderFoodNumber();
} }
}); });
...@@ -354,8 +338,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -354,8 +338,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
addModifierItem(datasBean); addModifierItem(datasBean);
//沽清細項沽清數 //沽清細項沽清數
updateModifierSoldoutCtrData(); updateModifierSoldoutCtrData();
//更新賬單金額
updateOrderMoneyItem();
// } // }
} }
}); });
...@@ -373,8 +355,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -373,8 +355,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// if (!discountConditionFilter(datasBean)) { // if (!discountConditionFilter(datasBean)) {
// return; // return;
// } // }
cutOutDiscount(); if (cutOutDiscount() == -100) {
return;
}
addDiscountItem(datasBean); addDiscountItem(datasBean);
//更新賬單金額
updateOrderMoneyItem();
} }
}); });
} }
...@@ -445,6 +431,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -445,6 +431,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
addPosition = mSelectMealAdapter.addFoodItem(mCurrentOrderDetailBean); addPosition = mSelectMealAdapter.addFoodItem(mCurrentOrderDetailBean);
} }
//更新賬單金額
updateOrderMoneyItem();
IActivity.setFineItemSlodoutListFull(mSoldoutCtrList); IActivity.setFineItemSlodoutListFull(mSoldoutCtrList);
mRootView.setMealRvScrollToPosition(addPosition); mRootView.setMealRvScrollToPosition(addPosition);
...@@ -503,17 +492,29 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -503,17 +492,29 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* *
* @return * @return
*/ */
private void cutOutDiscount() { private int cutOutDiscount() {
OrderDetail mainOrderDetail = mSelectMealAdapter.getCurrentMainOrderDetail(); OrderDetail mainOrderDetail1 = mSelectMealAdapter.getCurrentMainOrderDetail();
if (mainOrderDetail.getItemType() == 1) { if (mainOrderDetail1 != null) {
for (OrderDetail orderDetail : mOrderFoodList) { if (mainOrderDetail1.getItemType() == 1) {
if (orderDetail.getParentIndex() == mainOrderDetail.getMyIndex() && orderDetail.getType() == OrderDetail.DISCOUNT_TYPE) { for (int i = 0; i < mOrderFoodList.size(); i++) {
mOrderFoodList.remove(orderDetail); OrderDetail orderDetail = mOrderFoodList.get(i);
if (orderDetail.getParentIndex() == mainOrderDetail1.getMyIndex() && orderDetail.getType() == OrderDetail.DISCOUNT_TYPE) {
if (!orderDetail.isNew()) {
//已送单折扣不可替换
return -100;
}
if (mOrderFoodList.get(mSelectMealAdapter.getSelect_position()).getType() == OrderDetail.DISCOUNT_TYPE) {
//选中折扣 替换原有折扣防止将折扣添加到下面一个食品
mSelectMealAdapter.setSelect_position(mSelectMealAdapter.getSelect_position() - 1);
}
mSelectMealAdapter.removeItemByPosition(i);
break; break;
} }
} }
} }
} }
return 0;
}
/** /**
* 裁減掉已超出的細項 * 裁減掉已超出的細項
...@@ -524,7 +525,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -524,7 +525,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private int cutOutModifier(Modifier datasBean) { private int cutOutModifier(Modifier datasBean) {
int cutPosition = getCutPositionByOutLimitModifier(datasBean); int cutPosition = getCutPositionByOutLimitModifier(datasBean);
if (cutPosition != -1 && cutPosition != -100) { if (cutPosition != -1 && cutPosition != -100) {
mSelectMealAdapter.removeFoodItemByPosition(cutPosition); mSelectMealAdapter.removeItemByPosition(cutPosition);
} }
return cutPosition; return cutPosition;
} }
...@@ -538,7 +539,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -538,7 +539,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private int cutOutCombo(ComboItem datasBean) { private int cutOutCombo(ComboItem datasBean) {
int cutPosition = getCutPositionOutLimitCombo(datasBean); int cutPosition = getCutPositionOutLimitCombo(datasBean);
if (cutPosition != -1 && cutPosition != -100) { if (cutPosition != -1 && cutPosition != -100) {
mSelectMealAdapter.removeFoodItemByPosition(cutPosition); mSelectMealAdapter.removeItemByPosition(cutPosition);
} }
return cutPosition; return cutPosition;
} }
...@@ -1162,7 +1163,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1162,7 +1163,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// } // }
} }
private void setModifierSoldoutCtrData(List<Modifier> modifierList, List<SoldoutCtrFood> soldoutCtrFoods) { private void setModifierSoldoutCtrData
(List<Modifier> modifierList, List<SoldoutCtrFood> soldoutCtrFoods) {
for (SoldoutCtrFood scc : soldoutCtrFoods) { for (SoldoutCtrFood scc : soldoutCtrFoods) {
for (Modifier modifier : modifierList) { for (Modifier modifier : modifierList) {
if (scc.getType() == MODIFIER_TYPE && scc.getModifierId() != null && modifier.getMid() != 0 && modifier.getMid() == scc.getModifierId()) { if (scc.getType() == MODIFIER_TYPE && scc.getModifierId() != null && modifier.getMid() != 0 && modifier.getMid() == scc.getModifierId()) {
...@@ -1326,7 +1328,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1326,7 +1328,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false; return false;
} }
private boolean isContainModifier(List<SoldoutCtrFood> soldoutCtrFoods, Modifier modifier) { private boolean isContainModifier(List<SoldoutCtrFood> soldoutCtrFoods, Modifier
modifier) {
for (SoldoutCtrFood soldoutCtrFood : soldoutCtrFoods) { for (SoldoutCtrFood soldoutCtrFood : soldoutCtrFoods) {
if (soldoutCtrFood.getType() == MODIFIER_TYPE && soldoutCtrFood.getModifierId() == modifier.getMid()) { if (soldoutCtrFood.getType() == MODIFIER_TYPE && soldoutCtrFood.getModifierId() == modifier.getMid()) {
return true; return true;
...@@ -1452,6 +1455,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1452,6 +1455,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false; return false;
} }
} }
if (!memberPointsCondition(foodBean.getPointsRedeem(),foodBean.getFoodName())) {
return false;
}
return true; return true;
} }
...@@ -1470,6 +1476,36 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1470,6 +1476,36 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false; return false;
} }
} }
if (!memberPointsCondition(comboItem.getPointsRedeem(),comboItem.getName())) {
return false;
}
return true;
}
/**
* 積分是否滿足條件
*
* @param pointsRedeem
* @return
*/
private boolean memberPointsCondition(double pointsRedeem, String foodName) {
MemberInfo memberInfo = myOrderManage.getMemberInfo();
if (memberInfo == null) {
//当前食品需要会员积分
if (pointsRedeem > 0) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "unused_members_can.not.order.food", "積分食品,未使用會員,不可點選") + "\"" + foodName + "\"");
return false;
}
} else {
//如果没有会员,则pointsadd=5是加5分 pointsredeem=5是減5分
//當一張臺號沒有會員登錄時判定積分為0 不能為負數
//此時call pointsredeem=5 的食物 不給過
//點選pointsadd=5的食物 0+5 是正數 這個給過
if (pointsRedeem > 0 && memberInfo.getMemberPoint() < pointsRedeem) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "insufficient.points.can.not.selected", "積分食品,會員積分不足,不可點選") + "\"" + foodName + "\"");
return false;
}
}
return true; return true;
} }
...@@ -1758,58 +1794,74 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1758,58 +1794,74 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* 添加多選細項 * 添加多選細項
*/ */
public int addMultipleModifierItems(Modifier modifierItem, int addPosition) { public int addMultipleModifierItems(Modifier modifierItem, int addPosition) {
List<OrderDetail> newOrderList = new ArrayList<>(); int overIndex = 0;
newOrderList.addAll(mOrderFoodList);
for (int i = 0; i < mOrderFoodList.size(); i++) { for (int i = 0; i < mOrderFoodList.size(); i++) {
if (overIndex > i)
continue;
OrderDetail item = mOrderFoodList.get(i); OrderDetail item = mOrderFoodList.get(i);
if (item.getSelected() != 0) { if (item.getSelected() != 0) {
if (item.getItemType() == 1) { if (item.getItemType() == 1) {
int j = i; int j = i;
int insertPosition = getEndInsertPosition(newOrderList, item, i); int insertPosition = getEndInsertPosition(mOrderFoodList, item, i);
if (insertPosition != -1) { if (insertPosition != -1) {
if (insertPosition < newOrderList.size()) { if (insertPosition < mOrderFoodList.size()) {
j = insertPosition + 1; j = insertPosition + 1;
} else { } else {
j = insertPosition; j = insertPosition;
} }
} }
overIndex = j;
long id = item.isNew() ? item.getProductId() : item.getId(); long id = item.isNew() ? item.getProductId() : item.getId();
OrderDetail modifierTransOrderDetail = OrderDetail.modifierTransOrderDetail(modifierItem, id, item.getProductId(), 1); OrderDetail modifierTransOrderDetail = OrderDetail.modifierTransOrderDetail(modifierItem, id, item.getProductId(), 1);
newOrderList.add(j, modifierTransOrderDetail); mOrderFoodList.add(j, modifierTransOrderDetail);
setIndex(mOrderFoodList); setIndex(mOrderFoodList);
} }
} }
} }
mOrderFoodList.clear();
mOrderFoodList.addAll(newOrderList);
//重新更新下標 //重新更新下標
mSelectMealAdapter.setIndex(); mSelectMealAdapter.setIndex();
mSelectMealAdapter.notifyDataSetChanged(); mSelectMealAdapter.notifyDataSetChanged();
return addPosition; return addPosition;
} }
private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail, int currentI) { private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail,
int currentI) {
boolean hasChildFood = false;
for (int i = currentI; i < newOrderList.size(); i++) { for (int i = currentI; i < newOrderList.size(); i++) {
OrderDetail item = newOrderList.get(i); OrderDetail item = newOrderList.get(i);
if (item.getItemType() == 2) {
continue;
}
//往下找 //往下找
int nextIndex = i + 1; int nextIndex = i + 1;
// if (mOrderFoodList.size() == (nextIndex - 1) && mOrderFoodList.get(nextIndex).getItemType() == 3) { if (newOrderList.size() == nextIndex) {
// //最後一個並且是第三層
// return i;
// }
// if (item.getItemType() == 3 && item.getParentProductId() == orderDetail.getProductId() && mOrderFoodList.get(nextIndex).getItemType() != 3) {
// //添加到主食品細項最後面
// return i;
// }
boolean samePackage = (item.getParentProductId() == orderDetail.getProductId() || item.getProductId() == orderDetail.getProductId());
if (newOrderList.size() == nextIndex && samePackage) {
//最後一個 //最後一個
return nextIndex; return nextIndex;
} }
if (newOrderList.get(nextIndex).getItemType() != 3) { if (item.getItemType() == 1) {
//添加到主食品細項最後面 hasChildFood = mSelectMealAdapter.hasChildFood(item);
}
OrderDetail nextItem = newOrderList.get(nextIndex);
if (item.getItemType() == 1) {
if (hasChildFood) {
if (nextItem.getItemType() != 3) {
return i;
}
} else {
return i; return i;
} }
} else {
if (hasChildFood) {
if (nextItem.getItemType() == 1 || nextItem.getItemType() == 2) {
return i;
}
} else {
if (nextItem.getItemType() == 1) {
return nextIndex;
}
}
}
} }
return -1; return -1;
} }
...@@ -1896,7 +1948,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1896,7 +1948,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
discount = MoneyUtil.sum(discount, orderDetailsBean.getPrice()); discount = MoneyUtil.sum(discount, orderDetailsBean.getPrice());
} }
//參與折扣 //參與折扣
orderDetailsBean.setAblediscount(1); // orderDetailsBean.setAblediscount(1);
if (!orderDetailsBean.isNew()) { if (!orderDetailsBean.isNew()) {
if (orderDetailsBean.getDiscountStatus() == 0) { if (orderDetailsBean.getDiscountStatus() == 0) {
//此食品新增折扣 //此食品新增折扣
...@@ -1926,6 +1978,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1926,6 +1978,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
request.setMapsDelete(mapsDelete); request.setMapsDelete(mapsDelete);
request.setOrderId(orderId); request.setOrderId(orderId);
request.setTableId(OpenTableManage.getDefault().getTableBean().getId()); request.setTableId(OpenTableManage.getDefault().getTableBean().getId());
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
request.setType(type); request.setType(type);
request.setReasonId(reasonId); request.setReasonId(reasonId);
return request; return request;
...@@ -1939,7 +1992,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1939,7 +1992,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* @param deleteNumber * @param deleteNumber
* @return * @return
*/ */
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete(String ids, int maxNumber, int deleteNumber) { private List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete(String ids,
int maxNumber, int deleteNumber) {
List<Map<Byte, DeleteOrderRequest.DeleteBean>> deleteMaps = new ArrayList<>(); List<Map<Byte, DeleteOrderRequest.DeleteBean>> deleteMaps = new ArrayList<>();
//取消食品id //取消食品id
String[] idsArray = ids.split(","); String[] idsArray = ids.split(",");
......
...@@ -122,6 +122,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -122,6 +122,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
this.mApplication = null; this.mApplication = null;
} }
public void initAdapter() { public void initAdapter() {
if (mOrderTopFunctionAdapter == null) { if (mOrderTopFunctionAdapter == null) {
mOrderTopFunctionAdapter = new OrderTopFunctionAdapter(IActivity, mFunctionList); mOrderTopFunctionAdapter = new OrderTopFunctionAdapter(IActivity, mFunctionList);
...@@ -702,12 +703,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -702,12 +703,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private void showDiscountDialog() { private void showDiscountDialog() {
if (mDiscountDialog == null) { if (mDiscountDialog == null) {
mDiscountDialog = new DiscountDialog.Builder(IActivity); mDiscountDialog = new DiscountDialog.Builder(IActivity);
mDiscountDialog.setCanScan(true);
mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() { mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() {
@Override @Override
public void onItemClick(Discount item, int position) { public void onItemClick(Discount item, int position) {
addOrderDiscount(false, item, 0); addOrderDiscount(false, item, 0);
updateOrderMoneyItem(); updateOrderMoneyItem();
} }
@Override
public void onScan() {
toScanActivity();
}
}); });
} }
List<Discount> discountList = filterDiscountByType(mModel.queryDB_DiscountList("1"), "1"); List<Discount> discountList = filterDiscountByType(mModel.queryDB_DiscountList("1"), "1");
......
...@@ -205,18 +205,15 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -205,18 +205,15 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
* 結賬 * 結賬
*/ */
public void toOrderPay(boolean show) { public void toOrderPay(boolean show) {
if(myOrderManage.isModifyOrder()){
//修改訂單
updateOrderPay();
return;
}
OrderPayView orderPayView = IActivity.getGsaPayView(); OrderPayView orderPayView = IActivity.getGsaPayView();
if (orderPayView.getBillMoneyList() == null || orderPayView.getBillMoneyList().size() == 0) if (orderPayView.getBillMoneyList() == null || orderPayView.getBillMoneyList().size() == 0)
return; return;
// RequestBody requestBody = new FormBody.Builder()
// .add("orderPayType", String.valueOf(orderPayType))
// .add("payType", String.valueOf(orderPayView.getBillMoneyList().get(0).getId()))
// .add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
// .add("amount", String.valueOf(orderPayView.getBillMoney()))
// .add("linePayType", String.valueOf(orderPayView.getLinePayType()))
// .add("tipsPrice", String.valueOf(orderPayView.getTipsPrice()))
// .build();
String payRequest = GsonUtils.GsonString(getOrderPayRequest(orderPayView)); String payRequest = GsonUtils.GsonString(getOrderPayRequest(orderPayView));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest);
...@@ -280,29 +277,33 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -280,29 +277,33 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
/** /**
* 修改訂單更新支付方式 * 修改訂單更新支付方式
*/ */
// public void updateOrderPay() { public void updateOrderPay() {
// RequestBody requestBody = new FormBody.Builder() OrderPayView orderPayView = IActivity.getGsaPayView();
// .add("payType", String.valueOf(mBillMoneyList.get(0).getId())) if (orderPayView.getBillMoneyList() == null || orderPayView.getBillMoneyList().size() == 0)
// .add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId())) return;
// .build();
// mModel.updateOrderPay(requestBody) String payRequest = GsonUtils.GsonString(getOrderPayRequest(orderPayView));
// .subscribeOn(Schedulers.io()) RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest);
// .doOnSubscribe(disposable -> mRootView.showLoading(null))
// .subscribeOn(AndroidSchedulers.mainThread()) mModel.updateOrderPay(requestBody)
// .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io())
// .doAfterTerminate(() -> mRootView.hideLoading()) .doOnSubscribe(disposable -> mRootView.showLoading(null))
// .compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .subscribeOn(AndroidSchedulers.mainThread())
// .subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) { .observeOn(AndroidSchedulers.mainThread())
// .doAfterTerminate(() -> mRootView.hideLoading())
// @Override .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
// public void onNext(BaseResult baseResult) { .subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
// if (baseResult.isSuccess()) {
// //結賬成功 @Override
// mRootView.paySuccess(); public void onNext(BaseResult baseResult) {
// } if (baseResult.isSuccess()) {
// } //結賬成功
// }); mRootView.paySuccess();
// } }
}
});
}
protected void createOrder() { protected void createOrder() {
CreateOrderRequest request = getCreateOrderRequest(getOrderFoodLists()); CreateOrderRequest request = getCreateOrderRequest(getOrderFoodLists());
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(request)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(request));
......
...@@ -120,16 +120,17 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -120,16 +120,17 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
*/ */
private int mCurrentOperatType = -1; private int mCurrentOperatType = -1;
/** /**
* 选中操作的台名、id * 选中操作的台名、id、分檯編號
*/ */
private String originalTableName = ""; private String originalTableName = "";
private long originalTableId; private long originalTableId;
private String originalTableNumber = "";
/** /**
* 转台需要转到台名、id * 转台需要转到台名、id、分檯編號
*/ */
private String targetTableName = ""; private String targetTableName = "";
private long targetTableId; private long targetTableId;
private String targetTableNumber = "";
@Inject @Inject
public TablePresenter(TableContract.Model model, TableContract.View rootView) { public TablePresenter(TableContract.Model model, TableContract.View rootView) {
...@@ -522,6 +523,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -522,6 +523,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
} }
originalTableName = tableBean.getTableName(); originalTableName = tableBean.getTableName();
originalTableId = tableBean.getId(); originalTableId = tableBean.getId();
originalTableNumber = tableBean.getTableNumber();
mRootView.setOperatContentText("由: " + originalTableName + " 轉到 "); mRootView.setOperatContentText("由: " + originalTableName + " 轉到 ");
} else { } else {
if (tableBean.getUseStatus() == 1) { if (tableBean.getUseStatus() == 1) {
...@@ -530,6 +532,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -530,6 +532,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
} }
targetTableName = tableBean.getTableName(); targetTableName = tableBean.getTableName();
targetTableId = tableBean.getId(); targetTableId = tableBean.getId();
targetTableNumber = tableBean.getTableNumber();
if (tableBean.getStatus() == 1 || tableBean.getStatus() == 2 || tableBean.getStatus() == 3) { if (tableBean.getStatus() == 1 || tableBean.getStatus() == 2 || tableBean.getStatus() == 3) {
mRootView.setOperatContentText("由: " + originalTableName + " 合併 " + targetTableName); mRootView.setOperatContentText("由: " + originalTableName + " 合併 " + targetTableName);
} else { } else {
...@@ -545,11 +548,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -545,11 +548,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}); });
} }
public void turnTable(long originalTableId, long targetTableId, boolean isMergeTable) { public void turnTable(long originalTableId, long targetTableId, String tableNumber, String targetTableNumber, boolean isMergeTable) {
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("id", String.valueOf(originalTableId)) .add("id", String.valueOf(originalTableId))
.add("tableId", String.valueOf(targetTableId)) .add("tableId", String.valueOf(targetTableId))
.add("tableNumber", tableNumber)
.add("targetTableNumber", targetTableNumber)
.build(); .build();
mModel.turnTable(requestBody) mModel.turnTable(requestBody)
...@@ -845,7 +850,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -845,7 +850,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
initTable(dataBean.getId(), dataBean.getTableNumber(), true); initTable(dataBean.getId(), dataBean.getTableNumber(), true);
break; break;
case TableOperatTypeConstant.move_table_4: case TableOperatTypeConstant.move_table_4:
turnTable(originalTableId, targetTableId, finalIsMergeTable); turnTable(originalTableId, targetTableId,originalTableNumber,targetTableNumber, finalIsMergeTable);
break; break;
case TableOperatTypeConstant.skyorder_mode_5: case TableOperatTypeConstant.skyorder_mode_5:
...@@ -871,8 +876,10 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -871,8 +876,10 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
public void initTableParameter() { public void initTableParameter() {
originalTableName = ""; originalTableName = "";
originalTableId = 0; originalTableId = 0;
originalTableNumber = "";
targetTableName = ""; targetTableName = "";
targetTableId = 0; targetTableId = 0;
targetTableNumber = "";
} }
private TableBean.DataBean getTableById(long id) { private TableBean.DataBean getTableById(long id) {
......
...@@ -38,6 +38,7 @@ import androidx.viewpager.widget.ViewPager; ...@@ -38,6 +38,7 @@ import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
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.OrderBean; import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean; import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
...@@ -89,7 +90,9 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper; ...@@ -89,7 +90,9 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.util.QMUIDrawableHelper; import com.qmuiteam.qmui.util.QMUIDrawableHelper;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.tbruyelle.rxpermissions2.RxPermissions; import com.tbruyelle.rxpermissions2.RxPermissions;
import org.simple.eventbus.EventBus; import org.simple.eventbus.EventBus;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
...@@ -559,6 +562,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -559,6 +562,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@OnClick(R2.id.btn_meal_discount) @OnClick(R2.id.btn_meal_discount)
void onClickDiscount() { void onClickDiscount() {
OrderDetail mainOrderDetail = mPresenter.getSelectMealAdapter().getCurrentMainOrderDetail();
if(mainOrderDetail != null && mainOrderDetail.getAblediscount() == 0){
showMessage("此食品不能參與折扣!");
return;
}
//更新折扣数据 //更新折扣数据
mPresenter.loadDiscountData(); mPresenter.loadDiscountData();
...@@ -569,7 +577,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -569,7 +577,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
void onClickTable() { void onClickTable() {
//type取值:1qrCdoetype,2:手機號,3:memberId //type取值:1qrCdoetype,2:手機號,3:memberId
// mUseMemberDialog = new UseMemberDialog(this); // mUseMemberDialog = new UseMemberDialog(this);
if(mUseMemberDialog == null) { if (mUseMemberDialog == null) {
mUseMemberDialog = new UseMemberDialog.BottomLayoutBuilder(this) mUseMemberDialog = new UseMemberDialog.BottomLayoutBuilder(this)
.setOnLayoutClickListener(new UseMemberDialog.BottomLayoutBuilder.OnLayoutClickListener() { .setOnLayoutClickListener(new UseMemberDialog.BottomLayoutBuilder.OnLayoutClickListener() {
...@@ -580,7 +588,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -580,7 +588,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@Override @Override
public void onScanAction(UseMemberDialog dialog) { public void onScanAction(UseMemberDialog dialog) {
mPresenter.toScanActivity(); mPresenter.startScanActivity();
} }
@Override @Override
...@@ -745,9 +753,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -745,9 +753,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
case 3: case 3:
case 4: case 4:
case 5: case 5:
if (i == 1) {
OrderBean order = MyOrderManage.getInstance().getOrderBean(); OrderBean order = MyOrderManage.getInstance().getOrderBean();
if (order != null) { if (order != null) {
// ArmsUtils.snackbarText("訂單ID:" + order.getId()); ArmsUtils.snackbarText("訂單ID:" + order.getId());
}
} }
mPresenter.changeNumber(i); mPresenter.changeNumber(i);
break; break;
...@@ -1252,7 +1262,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -1252,7 +1262,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
//打印成功 //打印成功
//結賬成功 //結賬成功
//關閉當前頁面 //關閉當前頁面
killMyself(); killMyself();
} }
} else if (requestCode == MipcaCaptureActivity.CALL_BACK_QR_RESULT) { } else if (requestCode == MipcaCaptureActivity.CALL_BACK_QR_RESULT) {
......
...@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment; ...@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.BaseFragmentActivity; import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
...@@ -574,6 +575,9 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese ...@@ -574,6 +575,9 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
setResult(Activity.RESULT_OK, null); setResult(Activity.RESULT_OK, null);
killMyself(); killMyself();
} }
}else if (requestCode == MipcaCaptureActivity.CALL_BACK_QR_RESULT) {
String qrCodeResult = data.getStringExtra("qrCodeResult");
} }
} }
......
...@@ -151,9 +151,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -151,9 +151,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
context.startActivity(intent); context.startActivity(intent);
} }
// private List<BillMethodBean> billMoney = new ArrayList<>();
// private BillMoneyAdapter billMoneyAdapter;
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderPayComponent //如找不到该类,请编译一下项目 DaggerOrderPayComponent //如找不到该类,请编译一下项目
......
...@@ -135,6 +135,7 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -135,6 +135,7 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
private OrderCenterMoneyAdapter mOrderDetailPayMethodAdapter; private OrderCenterMoneyAdapter mOrderDetailPayMethodAdapter;
private List<SectionTextItem3> mOrderCenterPayMethodList = new ArrayList<>(); private List<SectionTextItem3> mOrderCenterPayMethodList = new ArrayList<>();
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderDetailComponent //如找不到该类,请编译一下项目 DaggerOrderDetailComponent //如找不到该类,请编译一下项目
...@@ -335,13 +336,14 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -335,13 +336,14 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
} }
private void setTitleByOrderType(OrderDetailItem item) { private void setTitleByOrderType(OrderDetailItem item) {
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "訂單碼") + ": "; String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
if (item.getOrderType() == 2) { if (item.getOrderType() == 2) {
tv_table_name.setText("外賣"); tv_table_name.setText("外賣");
tv_order_num.setText(mealCode + item.getBillNo()); tv_order_num.setText(orderCode + item.getTakeFoodCode());
} else if (item.getOrderType() == 7) { } else if (item.getOrderType() == 7) {
tv_table_name.setText("自取"); tv_table_name.setText("自取");
tv_order_num.setText(mealCode + item.getBillNo()); tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode());
} else { } else {
String tableName = LanguageUtils.get_language_system(this, "table.number", "檯號") + ": "; String tableName = LanguageUtils.get_language_system(this, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(this, "order.number", "訂單號") + ": "; String orderNumber = LanguageUtils.get_language_system(this, "order.number", "訂單號") + ": ";
...@@ -405,15 +407,17 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -405,15 +407,17 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
orderBean.setDiscountAmount(datasBean.getDiscountAmount()); orderBean.setDiscountAmount(datasBean.getDiscountAmount());
orderBean.setDiscountValue(datasBean.getDiscountValue()); orderBean.setDiscountValue(datasBean.getDiscountValue());
orderBean.setCreateTime(datasBean.getCreateTime()); orderBean.setCreateTime(datasBean.getCreateTime());
orderBean.setOrderDetails(datasBean.getOrderDetails());
MyOrderManage.getInstance().setOrderBean(orderBean); MyOrderManage.getInstance().setOrderBean(orderBean);
TableBean.DataBean openTableBean = new TableBean.DataBean(); TableBean.DataBean openTableBean = new TableBean.DataBean();
openTableBean.setCreateTime(TimeUtil.getStringByFormat(new Date(datasBean.getCreateTime()), TimeUtil.dateFormatYMDHM)); openTableBean.setCreateTime(TimeUtil.getStringByFormat(new Date(datasBean.getCreateTime()), TimeUtil.dateFormatYMDHM));
openTableBean.setTableName(datasBean.getTableName()); openTableBean.setTableName(datasBean.getTableName());
openTableBean.setId(datasBean.getTableId()); openTableBean.setId(datasBean.getTableId());
// openTableBean.setServiceCharge(datasBean.getServiceAmount()/datasBean.getTotalAmount());
OpenTableManage.getDefault().setTableBean(openTableBean); OpenTableManage.getDefault().setTableBean(openTableBean);
OpenTableManage.getDefault().setPeopleNumber(datasBean.getPerson()); OpenTableManage.getDefault().setPeopleNumber(datasBean.getPerson());
List<OrderBean.OrderDetailsBean> orderDetailsBeans = datasBean.getOrderDetails(); List<OrderBean.OrderDetailsBean> orderDetailsBeans = datasBean.getOrderDetails();
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans)); List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans));
MyOrderManage.getInstance().setOrderFoodList(orderDetailList); MyOrderManage.getInstance().setOrderFoodList(orderDetailList);
......
...@@ -117,13 +117,14 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderDetailItem> { ...@@ -117,13 +117,14 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderDetailItem> {
} }
private void setTitleByOrderType(OrderDetailItem item) { private void setTitleByOrderType(OrderDetailItem item) {
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "訂單碼") + ": "; String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
if (item.getOrderType() == 2) { if (item.getOrderType() == 2) {
tv_table_name.setText("外賣"); tv_table_name.setText("外賣");
tv_order_num.setText(mealCode + item.getBillNo()); tv_order_num.setText(orderCode + item.getTakeFoodCode());
} else if (item.getOrderType() == 7) { } else if (item.getOrderType() == 7) {
tv_table_name.setText("自取"); tv_table_name.setText("自取");
tv_order_num.setText(mealCode + item.getBillNo()); tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode());
} else { } else {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": "; String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": "; String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": ";
......
...@@ -179,7 +179,11 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -179,7 +179,11 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
private void setViewVisibility(OrderDetail datasBean) { private void setViewVisibility(OrderDetail datasBean) {
if(datasBean.getAblediscount() == 0){
tv_D.setVisibility(View.VISIBLE);
}else {
tv_D.setVisibility(View.INVISIBLE); tv_D.setVisibility(View.INVISIBLE);
}
tv_D_1.setVisibility(View.INVISIBLE); tv_D_1.setVisibility(View.INVISIBLE);
tv_discount_money.setVisibility(View.INVISIBLE); tv_discount_money.setVisibility(View.INVISIBLE);
...@@ -277,7 +281,6 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -277,7 +281,6 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
} else { } else {
tv_money.setText(carshStr + MoneyUtil.get_ItemDecimals_money(price)); tv_money.setText(carshStr + MoneyUtil.get_ItemDecimals_money(price));
} }
} else { } else {
tv_money.setText(""); tv_money.setText("");
} }
...@@ -428,7 +431,7 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -428,7 +431,7 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
* *
* @param position * @param position
*/ */
public void removeFoodItemByPosition(int position) { public void removeItemByPosition(int position) {
if (mInfos.size() > position) { if (mInfos.size() > position) {
mInfos.remove(position); mInfos.remove(position);
notifyItemChanged(position); notifyItemChanged(position);
...@@ -1081,8 +1084,8 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -1081,8 +1084,8 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
} }
public OrderDetail getCurrentMainOrderDetail() { public OrderDetail getCurrentMainOrderDetail() {
if (select_start_position != -1) { if (select_full_start_position != -1) {
return mInfos.get(select_start_position); return mInfos.get(select_full_start_position);
} else { } else {
return null; return null;
} }
......
...@@ -85,6 +85,7 @@ public class DiscountDialog extends Dialog { ...@@ -85,6 +85,7 @@ public class DiscountDialog extends Dialog {
private float mShadowAlpha = 0.25f; private float mShadowAlpha = 0.25f;
private int mShadowElevationDp = 14; private int mShadowElevationDp = 14;
private int mBagcolor; private int mBagcolor;
private boolean canScan = false;
private List<Discount> mItems; private List<Discount> mItems;
private DiscountAdapter mAdapter; private DiscountAdapter mAdapter;
...@@ -110,6 +111,10 @@ public class DiscountDialog extends Dialog { ...@@ -110,6 +111,10 @@ public class DiscountDialog extends Dialog {
mItems.addAll(items); mItems.addAll(items);
} }
public void setCanScan(boolean canScan) {
this.canScan = canScan;
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
} }
...@@ -150,6 +155,17 @@ public class DiscountDialog extends Dialog { ...@@ -150,6 +155,17 @@ public class DiscountDialog extends Dialog {
} else { } else {
mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color)); mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color));
} }
if (canScan) {
mTopBar.addRightImageButton(R.mipmap.table_white_scan, R.id.topbar_right_change_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClickListener != null) {
onClickListener.onScan();
}
}
});
}
mTopBar.setTitle("折扣"); mTopBar.setTitle("折扣");
} }
...@@ -202,6 +218,8 @@ public class DiscountDialog extends Dialog { ...@@ -202,6 +218,8 @@ public class DiscountDialog extends Dialog {
void onItemClick(Discount item, int position); void onItemClick(Discount item, int position);
void onScan();
} }
} }
......
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