Commit 60d1a9cf by Wyh

1、打印的recyclerview切換成普通視圖

2、供應鏈驗收代碼
parent d3938c2e
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.alpha.QMUIAlphaLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <com.qmuiteam.qmui.alpha.QMUIAlphaLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_20"
android:gravity="center" android:gravity="center"
......
...@@ -151,8 +151,9 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> { ...@@ -151,8 +151,9 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> {
//訂單信息 //訂單信息
layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + mPrintServingPaperContent.getTableName(), "人數:" + mPrintServingPaperContent.getPerson(), orderNo, "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT))); layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + mPrintServingPaperContent.getTableName(), "人數:" + mPrintServingPaperContent.getPerson(), orderNo, "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//食品
layout.addView(getDiningFoodList(mContext, foodItemList, printerDeviceBean, 0, false)); layout.addView(getDiningFoodList(mContext, foodItemList, printerDeviceBean, 0, false));
//打印紙
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
......
...@@ -74,6 +74,10 @@ import com.joe.print.mvp.ui.adapter.BillAdapter; ...@@ -74,6 +74,10 @@ import com.joe.print.mvp.ui.adapter.BillAdapter;
import com.joe.print.mvp.ui.adapter.BillItemAdapter; import com.joe.print.mvp.ui.adapter.BillItemAdapter;
import com.joe.print.mvp.ui.adapter.BillTypeAdapter; import com.joe.print.mvp.ui.adapter.BillTypeAdapter;
import com.joe.print.mvp.ui.adapter.FoodAdapter; import com.joe.print.mvp.ui.adapter.FoodAdapter;
import com.joe.print.mvp.ui.view.BillItemView;
import com.joe.print.mvp.ui.view.BillTypeView;
import com.joe.print.mvp.ui.view.BillView;
import com.joe.print.mvp.ui.view.PrintFoodView;
import com.sunmi.peripheral.printer.InnerResultCallbcak; import com.sunmi.peripheral.printer.InnerResultCallbcak;
import java.io.IOException; import java.io.IOException;
...@@ -717,7 +721,8 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -717,7 +721,8 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
protected View getTakeawayBillInfoView(Context mContext, List<PrintBillItem> data) { protected View getTakeawayBillInfoView(Context mContext, List<PrintBillItem> data) {
return getVerticalRecyclerView(mContext, new BillItemAdapter(data)); // return getVerticalRecyclerView(mContext, new BillItemAdapter(data));
return new BillItemView(mContext, data);
} }
protected void addTakeawayPayViews(Context mContext, ViewGroup parent, List<OrderDetails.DataBean.PayMultiple> payMultiples, double payAmount) { protected void addTakeawayPayViews(Context mContext, ViewGroup parent, List<OrderDetails.DataBean.PayMultiple> payMultiples, double payAmount) {
...@@ -810,40 +815,63 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -810,40 +815,63 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
/** /**
* 獲取食品列表
* 結賬單、印單。外送都用這個
* @param mContext * @param mContext
* @param foodList * @param foodList 食品信息
* @param deviceBean * @param deviceBean 打印設備
* @param type 0 食品清單,1 結賬單 * @param type 0 食品清單,1 結賬單
* @param showPrice 是否顯示價格 * @param showPrice 是否顯示價格
* @return * @return
*/ */
public View getDiningFoodList(Context mContext, List<PrintFoodItem> foodList, PrinterDeviceBean deviceBean, int type, boolean showPrice) { public View getDiningFoodList(Context mContext, List<PrintFoodItem> foodList, PrinterDeviceBean deviceBean, int type, boolean showPrice) {
// List<OrderDetail> newsFoodList = new ArrayList<>(); //// List<OrderDetail> newsFoodList = new ArrayList<>();
// for (OrderDetail orderDetail : foodList) { //// for (OrderDetail orderDetail : foodList) {
// //如果食品設置了0元不打印並且食品等於0元,或者設置了不打印到單,就不打印 //// //如果食品設置了0元不打印並且食品等於0元,或者設置了不打印到單,就不打印
// if (!(orderDetail.getPrintToBill() == 0 && orderDetail.getPrice() == 0) //// if (!(orderDetail.getPrintToBill() == 0 && orderDetail.getPrice() == 0)
// || OrderDetail.isPrint((int) orderDetail.getPrintTo(), type)) { //// || OrderDetail.isPrint((int) orderDetail.getPrintTo(), type)) {
// newsFoodList.add(orderDetail); //// newsFoodList.add(orderDetail);
// } //// }
// } //// }
return getVerticalRecyclerView(mContext, new FoodAdapter(foodList, deviceBean, showPrice)); // return getVerticalRecyclerView(mContext, new FoodAdapter(foodList, deviceBean, showPrice));
return new PrintFoodView(mContext, foodList, deviceBean, showPrice);
} }
/**
* 結賬單和印單
* @param mContext
* @param billingBeans
* @return
*/
public View getDiningBillInfo(Context mContext, List<BillingBean> billingBeans) { public View getDiningBillInfo(Context mContext, List<BillingBean> billingBeans) {
return getVerticalRecyclerView(mContext, new BillAdapter(billingBeans)); // return getVerticalRecyclerView(mContext, new BillAdapter(billingBeans));
return new BillView(mContext, billingBeans);
} }
/**
* 結賬單,支付方式
* @param mContext
* @param payBillMoneys 支付方式數據
* @return
*/
public View getDiningBillPayMethod(Context mContext, List<PrintBillItem> payBillMoneys) { public View getDiningBillPayMethod(Context mContext, List<PrintBillItem> payBillMoneys) {
return getVerticalRecyclerView(mContext, new BillTypeAdapter(payBillMoneys)); // return getVerticalRecyclerView(mContext, new BillTypeAdapter(payBillMoneys));
return new BillTypeView(mContext, payBillMoneys);
} }
/**
* 不用recyclerview,recyclerview可能會導致食品顯示不出來
*
* @param mContext
* @param adapter
* @return
*/
@Deprecated
public View getVerticalRecyclerView(Context mContext, RecyclerView.Adapter adapter) { public View getVerticalRecyclerView(Context mContext, RecyclerView.Adapter adapter) {
RecyclerView recyclerView = new RecyclerView(mContext); RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
recyclerView.setAdapter(adapter); recyclerView.setAdapter(adapter);
return recyclerView; return recyclerView;
} }
public View getAmountText(Context mContext, String text) { public View getAmountText(Context mContext, String text) {
......
...@@ -121,10 +121,6 @@ public class FoodAdapter extends BaseQuickAdapter<PrintFoodItem, BaseViewHolder> ...@@ -121,10 +121,6 @@ public class FoodAdapter extends BaseQuickAdapter<PrintFoodItem, BaseViewHolder>
tvNum.setTypeface(null, Typeface.NORMAL); tvNum.setTypeface(null, Typeface.NORMAL);
tvPrice.setTypeface(null, Typeface.NORMAL); tvPrice.setTypeface(null, Typeface.NORMAL);
} }
// tvFoodName.setTypeface(null, Typeface.BOLD_ITALIC);
// tvFoodName.setTypeface(null, Typeface.BOLD);
// tvFoodName.setTypeface(null, Typeface.ITALIC);
// tvFoodName.setTypeface(null, Typeface.NORMAL);
tvNum.setText("X" + item.getNum()); tvNum.setText("X" + item.getNum());
tvPrice.setText("$" + item.getPrice()); tvPrice.setText("$" + item.getPrice());
} }
......
package com.joe.print.mvp.ui.view;
import android.content.Context;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/30
* Time: 11:00
* Use:
*/
public class BillItemView extends LinearLayout {
private List<PrintBillItem> data;
public BillItemView(Context context, List<PrintBillItem> data) {
super(context);
this.data = data;
}
private void init() {
for (PrintBillItem item : data) {
View view = View.inflate(getContext(), R.layout.print_bill_adapter_item_bill, null);
TextView billNam = view.findViewById(R.id.print_bill_name);
TextView billValue = view.findViewById(R.id.print_bill_value);
billNam.setText(item.getBillName());
billValue.setText(item.getBillAmount());
addView(view);
}
}
}
package com.joe.print.mvp.ui.view;
import android.content.Context;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.joe.print.R;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/30
* Time: 11:16
* Use:結賬單,支付方式的view
*/
public class BillTypeView extends LinearLayout {
private List<PrintBillItem> data;
public BillTypeView(Context context, List<PrintBillItem> data) {
super(context);
this.data = data;
init();
}
private void init() {
for (PrintBillItem item : data) {
View view = View.inflate(getContext(), R.layout.base_print_item_bill_type, null);
TextView tvBillTotalText = view.findViewById(R.id.tv_total_amount_text);
TextView tvBillTotal = view.findViewById(R.id.tv_total_amount);
tvBillTotalText.setText(item.getBillName());
tvBillTotal.setText("$" + item.getBillAmount());
addView(view);
}
}
}
package com.joe.print.mvp.ui.view;
import android.content.Context;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.joe.print.R;
import com.joe.print.mvp.model.bean.BillingBean;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/30
* Time: 11:12
* Use:結賬單和印單的賬單信息
*/
public class BillView extends LinearLayout {
private List<BillingBean> data;
public BillView(Context context, List<BillingBean> data) {
super(context);
this.data = data;
init();
}
private void init() {
for (BillingBean item : data) {
View view = View.inflate(getContext(), R.layout.base_print_bill_adapter_item_bill, null);
TextView tvBillTotalText = view.findViewById(R.id.tv_bill_total_text);
TextView tvBillTotal = view.findViewById(R.id.tv_bill_total);
tvBillTotalText.setText(item.getOptionName());
if (item.getTotalAmount() < 0) {
tvBillTotal.setText("-$" + Math.abs(item.getTotalAmount()));
} else if (item.getTotalAmount() > 0) {
tvBillTotal.setText("$" + item.getTotalAmount());
}
addView(view);
}
}
}
\ No newline at end of file
package com.joe.print.mvp.ui.view;
import android.content.Context;
import android.graphics.Typeface;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/30
* Time: 10:40
* Use:
*/
public class PrintFoodView extends LinearLayout {
private int foodFontSize = 24;
private int modifierFontSize = 24;
private int foodIsBold = 2;
private int modifierIsBold = 2;
private int foodIsItalic = 2;
private int modifierIsItalic = 2;
private int numberIsFlip = 2;//熱敏打印沒有顏色,翻轉用不了
private boolean showPrice = true;
private List<PrintFoodItem> data;
public PrintFoodView(Context context, List<PrintFoodItem> data, PrinterDeviceBean deviceBean, boolean showPrice) {
super(context);
this.showPrice = showPrice;
this.data = data;
init(deviceBean);
}
public void init(PrinterDeviceBean deviceBean) {
try {
this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2;//36
this.modifierFontSize = Integer.parseInt(deviceBean.getModifierFont()) * 2;
} catch (NumberFormatException e) {
e.printStackTrace();
}
this.foodIsBold = deviceBean.getFoodIsBold();
this.modifierIsBold = deviceBean.getModifierIsBold();
this.foodIsItalic = deviceBean.getFoodIsItalic();
this.modifierIsItalic = deviceBean.getModifierIsItalic();
this.numberIsFlip = deviceBean.getNumberIsFlip();
initView();
}
private void initView() {
for (PrintFoodItem item : data) {
View view = View.inflate(getContext(), R.layout.print_item_food, null);
TextView tvFoodName = view.findViewById(R.id.tv_food_name);
TextView tvNum = view.findViewById(R.id.tv_food_quantity);
TextView tvPrice = view.findViewById(R.id.tv_food_price);
if (showPrice) {
tvPrice.setVisibility(View.VISIBLE);
} else {
tvPrice.setVisibility(View.GONE);
}
boolean isBold, isItalic;
if (item.getItemType() == 2) {
//細項,縮進
tvFoodName.setText("\u3000" + item.getName());
tvFoodName.setTextSize(modifierFontSize);
tvNum.setTextSize(modifierFontSize);
tvPrice.setTextSize(modifierFontSize);
isBold = modifierIsBold == 1;
isItalic = modifierIsItalic == 1;
} else if (item.getItemType() == 3) {
//細項,縮進
tvFoodName.setText("\u3000\u3000" + item.getName());
tvFoodName.setTextSize(modifierFontSize);
tvNum.setTextSize(modifierFontSize);
tvPrice.setTextSize(modifierFontSize);
isBold = modifierIsBold == 1;
isItalic = modifierIsItalic == 1;
} else {
tvFoodName.setText(item.getName());
tvFoodName.setTextSize(foodFontSize);
tvNum.setTextSize(foodFontSize);
tvPrice.setTextSize(foodFontSize);
isBold = foodIsBold == 1;
isItalic = foodIsItalic == 1;
}
if (isBold && isItalic) {
tvFoodName.setTypeface(null, Typeface.BOLD_ITALIC);
tvNum.setTypeface(null, Typeface.BOLD_ITALIC);
tvPrice.setTypeface(null, Typeface.BOLD_ITALIC);
} else if (isBold) {
tvFoodName.setTypeface(null, Typeface.BOLD);
tvNum.setTypeface(null, Typeface.BOLD);
tvPrice.setTypeface(null, Typeface.BOLD);
} else if (isItalic) {
tvFoodName.setTypeface(null, Typeface.ITALIC);
tvNum.setTypeface(null, Typeface.ITALIC);
tvPrice.setTypeface(null, Typeface.ITALIC);
} else {
tvFoodName.setTypeface(null, Typeface.NORMAL);
tvNum.setTypeface(null, Typeface.NORMAL);
tvPrice.setTypeface(null, Typeface.NORMAL);
}
tvNum.setText("X" + item.getNum());
tvPrice.setText("$" + item.getPrice());
addView(view);
}
}
}
package com.gingersoft.supply_chain.mvp.content; package com.gingersoft.supply_chain.mvp.content;
import com.gingersoft.supply_chain.mvp.bean.OrderCategoryBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean; import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Observable;
/** /**
* @author 宇航. * @author 宇航.
...@@ -36,6 +39,117 @@ public class SupplyShoppingCart { ...@@ -36,6 +39,117 @@ public class SupplyShoppingCart {
return cartFoods; return cartFoods;
} }
public void clear() {
if (cartFoods == null) {
return;
}
cartFoods.clear();
cartFoods = null;
}
public void removeFoodsByFoodId(int foodId) {
RxJavaUtils.doInIOThread(new RxIOTask<Object>(0) {
@Override
public Void doInIOThread(Object o) {
//刪除供應商成功後,需要從購物車數據中將這個供應商的食材都刪除掉
List<PurchaseFoodBean> cartFoods = SupplyShoppingCart.getInstance().getCartFoods();
Iterator<PurchaseFoodBean> iterator = cartFoods.iterator();
while (iterator.hasNext()) {
PurchaseFoodBean next = iterator.next();
if (next.getId() != null && next.getId() == foodId) {
iterator.remove();
break;
}
}
return null;
}
});
}
public void removeFoodsBySupplier(int supplierId) {
RxJavaUtils.doInIOThread(new RxIOTask<Object>(0) {
@Override
public Void doInIOThread(Object o) {
//刪除供應商成功後,需要從購物車數據中將這個供應商的食材都刪除掉
List<PurchaseFoodBean> cartFoods = SupplyShoppingCart.getInstance().getCartFoods();
Iterator<PurchaseFoodBean> iterator = cartFoods.iterator();
while (iterator.hasNext()) {
PurchaseFoodBean next = iterator.next();
if (next.getSupplierId() != null && next.getSupplierId() == supplierId) {
iterator.remove();
}
}
return null;
}
});
}
public void removeFoodsByCategoryId(int categoryId) {
RxJavaUtils.doInIOThread(new RxIOTask<Object>(0) {
@Override
public Void doInIOThread(Object o) {
//刪除供應商成功後,需要從購物車數據中將這個供應商的食材都刪除掉
List<PurchaseFoodBean> cartFoods = SupplyShoppingCart.getInstance().getCartFoods();
Iterator<PurchaseFoodBean> iterator = cartFoods.iterator();
while (iterator.hasNext()) {
PurchaseFoodBean next = iterator.next();
if (next.getFoodCategoryId() != null && next.getFoodCategoryId() == categoryId) {
iterator.remove();
}
}
return null;
}
});
}
public void removeFoodsByCategoryTress(OrderCategoryBean.FoodCategoryTrees foodCategoryTrees) {
RxJavaUtils.doInIOThread(new RxIOTask<Object>(0) {
@Override
public Void doInIOThread(Object o) {
//刪除分類成功後,需要從購物車數據中將這個分類的食材都刪除掉
List<PurchaseFoodBean> cartFoods = SupplyShoppingCart.getInstance().getCartFoods();
Iterator<PurchaseFoodBean> iterator = cartFoods.iterator();
while (iterator.hasNext()) {
PurchaseFoodBean next = iterator.next();
if (next.getFoodCategoryId() != null && next.getFoodCategoryId() == foodCategoryTrees.getId()) {
iterator.remove();
}
}
//分類中的刪除完了,需要刪除分類下子分類的食材
List<OrderCategoryBean.FoodCategoryTrees> childCategory = foodCategoryTrees.getFoodCategoryTrees();
if (childCategory != null) {
//遍歷二級分類
for (OrderCategoryBean.FoodCategoryTrees categoryTrees : childCategory) {
for (PurchaseFoodBean cartFood : cartFoods) {
if (cartFood.getFoodCategoryId() == categoryTrees.getId()) {
cartFoods.remove(cartFood);
break;
}
}
//對三級分類進行遍歷
List<OrderCategoryBean.FoodCategoryTrees> thirdCategory = categoryTrees.getFoodCategoryTrees();
removeFoodsByCategoryTress(thirdCategory);
}
}
return null;
}
});
}
public void removeFoodsByCategoryTress(List<OrderCategoryBean.FoodCategoryTrees> thirdCategory) {
if (thirdCategory != null) {
for (OrderCategoryBean.FoodCategoryTrees trees : thirdCategory) {
for (PurchaseFoodBean cartFood : cartFoods) {
if (cartFood.getFoodCategoryId() == trees.getId()) {
cartFoods.remove(cartFood);
}
}
}
}
}
public void setCartFoods(List<PurchaseFoodBean> cartFoods) { public void setCartFoods(List<PurchaseFoodBean> cartFoods) {
SupplyShoppingCart.cartFoods = cartFoods; SupplyShoppingCart.cartFoods = cartFoods;
} }
......
...@@ -6,10 +6,12 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult; ...@@ -6,10 +6,12 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.supply_chain.mvp.bean.CategoryFoodTreeBean; import com.gingersoft.supply_chain.mvp.bean.CategoryFoodTreeBean;
import com.gingersoft.supply_chain.mvp.bean.FoodCategoryResultBean; import com.gingersoft.supply_chain.mvp.bean.FoodCategoryResultBean;
import com.gingersoft.supply_chain.mvp.bean.OrderCategoryBean; import com.gingersoft.supply_chain.mvp.bean.OrderCategoryBean;
import com.gingersoft.supply_chain.mvp.content.Constant; import com.gingersoft.supply_chain.mvp.content.Constant;
import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.gingersoft.supply_chain.mvp.contract.CategoryContract; import com.gingersoft.supply_chain.mvp.contract.CategoryContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -171,13 +173,13 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -171,13 +173,13 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
/** /**
* 刪除分類 * 刪除分類
* *
* @param id 分類id * @param foodCategoryTrees 分類信息
* @param hierarchy 第幾級分類,用於刪除後刷新 * @param hierarchy 第幾級分類,用於刪除後刷新
* @param position 刪除的分類下標 * @param position 刪除的分類下標
*/ */
public void deleteFoodCategory(int id, int hierarchy, int position) { public void deleteFoodCategory(OrderCategoryBean.FoodCategoryTrees foodCategoryTrees, int hierarchy, int position) {
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("id", id + "") .add("id", foodCategoryTrees.getId() + "")
.add("brandId", RestaurantInfoManager.newInstance().getBrandId() + "") .add("brandId", RestaurantInfoManager.newInstance().getBrandId() + "")
.add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "") .add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "")
.build(); .build();
...@@ -192,6 +194,8 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -192,6 +194,8 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
@Override @Override
public void onNext(@NonNull BaseResult info) { public void onNext(@NonNull BaseResult info) {
if (info.isSuccess()) { if (info.isSuccess()) {
//需要刪除購物車中被刪除的分類下的食材
SupplyShoppingCart.getInstance().removeFoodsByCategoryTress(foodCategoryTrees);
mRootView.updateCategory(Constant.DELETE, hierarchy, "", position); mRootView.updateCategory(Constant.DELETE, hierarchy, "", position);
} else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) { } else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg()); mRootView.showMessage(info.getErrMsg());
......
...@@ -290,6 +290,16 @@ public class FoodIngredientsPresenter extends BasePresenter<FoodIngredientsContr ...@@ -290,6 +290,16 @@ public class FoodIngredientsPresenter extends BasePresenter<FoodIngredientsContr
return supplierId; return supplierId;
} }
/**
* 清除指定供應商的緩存
* @return
*/
public void removeSupplierCacheById(int supplierId) {
if (supplierFoodsMap != null) {
List<PurchaseFoodBean> purchaseFoodBeans = supplierFoodsMap.get(supplierId);
supplierFoodsMap.put(supplierId, null);
}
}
/** /**
* 獲取選中的食品,存入購物車 * 獲取選中的食品,存入購物車
...@@ -336,6 +346,8 @@ public class FoodIngredientsPresenter extends BasePresenter<FoodIngredientsContr ...@@ -336,6 +346,8 @@ public class FoodIngredientsPresenter extends BasePresenter<FoodIngredientsContr
} }
//移除在分類中的緩存 //移除在分類中的緩存
removeCacheByCategoryId(categoryId); removeCacheByCategoryId(categoryId);
//移除在購物車中的緩存
SupplyShoppingCart.getInstance().removeFoodsByFoodId(foodId);
mRootView.onDeleteFoodSuccess(position); mRootView.onDeleteFoodSuccess(position);
} else if (TextUtil.isNotEmptyOrNullOrUndefined(baseResult.getErrMsg())) { } else if (TextUtil.isNotEmptyOrNullOrUndefined(baseResult.getErrMsg())) {
mRootView.showMessage(baseResult.getErrMsg()); mRootView.showMessage(baseResult.getErrMsg());
......
...@@ -204,7 +204,7 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -204,7 +204,7 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材名稱", true, "請輸入名稱")); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材名稱", true, "請輸入名稱"));
infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "食材類別", true, "請選擇食材類別", SELECT_FOOD_CATEGORY_REQUEST_CODE, CategorySelectFragment.class)); infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "食材類別", true, "請選擇食材類別", SELECT_FOOD_CATEGORY_REQUEST_CODE, CategorySelectFragment.class));
infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "基本單位", true, "請選擇食材單位", SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE, FoodUnitPageFragment.class)); infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "基本單位", true, "請選擇食材單位", SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE, FoodUnitPageFragment.class));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "包裝說明", false, "請輸入包裝說明", new InputFilter[]{new InputFilter.LengthFilter(4)})); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "包裝說明", false, "請輸入包裝說明", new InputFilter[]{new InputFilter.LengthFilter(10)}));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材編號", false, "請輸入食材編號")); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材編號", false, "請輸入食材編號"));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "單價($)", false, "請輸入單價,保留2位小數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 9), new DecimalDigitsInputFilter(context, 2)}, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "單價($)", false, "請輸入單價,保留2位小數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 9), new DecimalDigitsInputFilter(context, 2)}, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
...@@ -281,7 +281,7 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -281,7 +281,7 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
/** /**
* 設置供應商信息 * 設置供應商信息R
* *
* @param supplierInfoBean * @param supplierInfoBean
* @param infoMultiBeans * @param infoMultiBeans
...@@ -447,7 +447,7 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -447,7 +447,7 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
//食材所屬供應商 //食材所屬供應商
purchaseFoodBean.setSupplierName(infoMultiBeans.get(supplierIndex).getShowValue()); purchaseFoodBean.setSupplierName(infoMultiBeans.get(supplierIndex).getShowValue());
//食材名稱 //食材名稱
purchaseFoodBean.setName(infoMultiBeans.get(foodNameIndex).getShowValue()); purchaseFoodBean.setName(infoMultiBeans.get(foodNameIndex).getShowValue().trim());
//食材類別名稱 //食材類別名稱
purchaseFoodBean.setFoodCategoryName(getCategoryName()); purchaseFoodBean.setFoodCategoryName(getCategoryName());
//食材基本單位 //食材基本單位
...@@ -455,7 +455,12 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -455,7 +455,12 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
//包裝描述 //包裝描述
purchaseFoodBean.setPackingDescription(infoMultiBeans.get(packingDescriptionIndex).getShowValue()); purchaseFoodBean.setPackingDescription(infoMultiBeans.get(packingDescriptionIndex).getShowValue());
//食材編號 //食材編號
String foodNo = infoMultiBeans.get(foodNoIndex).getShowValue();
if (TextUtil.isNotEmptyOrNullOrUndefined(foodNo)) {
purchaseFoodBean.setFoodNo(infoMultiBeans.get(foodNoIndex).getShowValue()); purchaseFoodBean.setFoodNo(infoMultiBeans.get(foodNoIndex).getShowValue());
} else {
purchaseFoodBean.setFoodNo(null);
}
//單價 //單價
String unitPriceStr = infoMultiBeans.get(foodIngredientPriceIndex).getShowValue(); String unitPriceStr = infoMultiBeans.get(foodIngredientPriceIndex).getShowValue();
if (TextUtil.isNotEmptyOrNullOrUndefined(unitPriceStr)) { if (TextUtil.isNotEmptyOrNullOrUndefined(unitPriceStr)) {
...@@ -499,13 +504,13 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -499,13 +504,13 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
if (inventoryAlarm.getReviews() != purchaseFoodBean.getInventoryAlarm().getReviews()) { if (inventoryAlarm.getReviews() != purchaseFoodBean.getInventoryAlarm().getReviews()) {
isUpdateAlarm = true; isUpdateAlarm = true;
} }
if (!isUpdateAlarm && mixInventory.equals(purchaseFoodBean.getInventoryAlarm().getMinimumInventory() + "")) { if (!isUpdateAlarm && !mixInventory.equals(purchaseFoodBean.getInventoryAlarm().getMinimumInventory() + "")) {
isUpdateAlarm = true; isUpdateAlarm = true;
} }
if (!isUpdateAlarm && shelfLife.equals(purchaseFoodBean.getInventoryAlarm().getShelfLife() + "")) { if (!isUpdateAlarm && !shelfLife.equals(purchaseFoodBean.getInventoryAlarm().getShelfLife() + "")) {
isUpdateAlarm = true; isUpdateAlarm = true;
} }
if (!isUpdateAlarm && shelfLifeWarning.equals(purchaseFoodBean.getInventoryAlarm().getWarningDays() + "")) { if (!isUpdateAlarm && !shelfLifeWarning.equals(purchaseFoodBean.getInventoryAlarm().getWarningDays() + "")) {
isUpdateAlarm = true; isUpdateAlarm = true;
} }
if (isUpdateAlarm) { if (isUpdateAlarm) {
......
...@@ -22,8 +22,10 @@ import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiSelectBean; ...@@ -22,8 +22,10 @@ import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiSelectBean;
import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter; import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter;
import com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider; import com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean;
import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean; import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean;
import com.gingersoft.supply_chain.mvp.content.Constant; import com.gingersoft.supply_chain.mvp.content.Constant;
import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.gingersoft.supply_chain.mvp.contract.NewSupplierContract; import com.gingersoft.supply_chain.mvp.contract.NewSupplierContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -31,6 +33,8 @@ import com.jess.arms.integration.AppManager; ...@@ -31,6 +33,8 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.EnAndNumInputFilter; import com.jess.arms.utils.EnAndNumInputFilter;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -176,22 +180,27 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode ...@@ -176,22 +180,27 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
infoMultiAdapter.setOnItemChildClickListener((adapter, view, position) -> { infoMultiAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.cb_multi_check) { if (view.getId() == R.id.cb_multi_check) {
// 聯繫方式的選中 // 聯繫方式的選中
//先找到之前的默認聯繫方式
List<InfoMultiBean> data = infoMultiAdapter.getData(); List<InfoMultiBean> data = infoMultiAdapter.getData();
InfoMultiBean infoMultiBean = data.get(position); int lastDefault = emailIndex;
if (infoMultiBean instanceof MultiCheckInputBean) { for (int i = emailIndex; i < smsIndex + 1; i++) {
//從email開始,到sms,是所有的聯繫方式
//將聯繫方式的選中設為false
InfoMultiBean infoMultiBean = data.get(i);
//拿到對象,找到上一次被設為默認的那個聯繫方式,修改為false
MultiCheckInputBean multiCheckInputBean = (MultiCheckInputBean) infoMultiBean; MultiCheckInputBean multiCheckInputBean = (MultiCheckInputBean) infoMultiBean;
int index = contactInfo.indexOf(multiCheckInputBean); if (multiCheckInputBean.isDefault()) {
if (index >= 0) { lastDefault = i;
MultiCheckInputBean multiCheckInputBean1 = contactInfo.get(index); multiCheckInputBean.setDefault(false);
if (multiCheckInputBean1 != null) { break;
for (MultiCheckInputBean checkInputBean : contactInfo) {
checkInputBean.setDefault(false);
}
multiCheckInputBean1.setDefault(true);
} }
} }
infoMultiAdapter.notifyDataSetChanged(); //然後再將本次選中的設為true,刷新這兩個item
} InfoMultiBean infoMultiBean = data.get(position);
MultiCheckInputBean multiCheckInputBean = (MultiCheckInputBean) infoMultiBean;
multiCheckInputBean.setDefault(true);
infoMultiAdapter.notifyItemChanged(lastDefault);
infoMultiAdapter.notifyItemChanged(position);
} }
}); });
return infoMultiAdapter; return infoMultiAdapter;
...@@ -203,9 +212,9 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode ...@@ -203,9 +212,9 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
if (!hasFocus) { if (!hasFocus) {
EditText editText = (EditText) v; EditText editText = (EditText) v;
if (TextUtil.isNotEmptyOrNullOrUndefined(editText)) { if (TextUtil.isNotEmptyOrNullOrUndefined(editText)) {
if(TextUtil.isNotEmptyOrNullOrUndefined(supplierName)){ if (TextUtil.isNotEmptyOrNullOrUndefined(supplierName)) {
//當供應商名稱不為空時,是修改供應商 //當供應商名稱不為空時,是修改供應商
if(!editText.getText().toString().equals(supplierName)){ if (!editText.getText().toString().equals(supplierName)) {
//輸入的供應商名稱和之前的名稱不相同,說明進行了修改,需要進行查詢 //輸入的供應商名稱和之前的名稱不相同,說明進行了修改,需要進行查詢
getSupplierInfo(editText, editText.getText().toString()); getSupplierInfo(editText, editText.getText().toString());
} }
...@@ -299,7 +308,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode ...@@ -299,7 +308,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
public void deleteSupplier(int supplierId) { public void deleteSupplier(int supplierId) {
mModel.deleteSupplier(supplierId) mModel.deleteSupplier(supplierId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("保存中...")) .doOnSubscribe(disposable -> mRootView.showLoading(Constant.SAVE_LOADING))
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
...@@ -310,11 +319,12 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode ...@@ -310,11 +319,12 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
public void onNext(@NonNull BaseResult info) { public void onNext(@NonNull BaseResult info) {
if (info != null) { if (info != null) {
if (info.isSuccess()) { if (info.isSuccess()) {
SupplyShoppingCart.getInstance().removeFoodsBySupplier(supplierId);
mRootView.saveSuccess(); mRootView.saveSuccess();
} else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) { } else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg()); mRootView.showMessage(info.getErrMsg());
} else { } else {
mRootView.showMessage("保存失敗"); mRootView.showMessage(Constant.SAVE_FAIL);
} }
} }
} }
......
...@@ -82,6 +82,10 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -82,6 +82,10 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
* 逗號分隔符 * 逗號分隔符
*/ */
private final String COMMA_SEPARATED = ","; private final String COMMA_SEPARATED = ",";
/**
* 訂單狀態
*/
public int orderState;
@Inject @Inject
public OrderDetailsPresenter(OrderDetailsContract.Model model, OrderDetailsContract.View rootView) { public OrderDetailsPresenter(OrderDetailsContract.Model model, OrderDetailsContract.View rootView) {
...@@ -117,10 +121,16 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -117,10 +121,16 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
PurchaseOrderDetailsBean orderDetailsBean = GsonUtils.GsonToBean(GsonUtils.GsonString(baseResult.getData()), PurchaseOrderDetailsBean.class); PurchaseOrderDetailsBean orderDetailsBean = GsonUtils.GsonToBean(GsonUtils.GsonString(baseResult.getData()), PurchaseOrderDetailsBean.class);
if (orderDetailsBean != null) { if (orderDetailsBean != null) {
OrderDetailsPresenter.this.orderId = orderId; OrderDetailsPresenter.this.orderId = orderId;
try {
transformationWareHouse(orderDetailsBean); transformationWareHouse(orderDetailsBean);
orderState = orderDetailsBean.getStatus();
//加載圖片 //加載圖片
loadImages(orderDetailsBean.getFiles()); loadImages(orderDetailsBean.getFiles());
mRootView.loadOrderDetails(orderDetailsBean); mRootView.loadOrderDetails(orderDetailsBean);
} catch (NullPointerException e) {
mRootView.showMessage(e.getMessage());
mRootView.killMyself();
}
} else { } else {
mRootView.showMessage(GET_INFO_ERROR); mRootView.showMessage(GET_INFO_ERROR);
} }
...@@ -139,7 +149,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -139,7 +149,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
* 收過貨的單:不可操作單位,顯示入庫單位 purchaseWarehousingUnits * 收過貨的單:不可操作單位,顯示入庫單位 purchaseWarehousingUnits
* showUnit 用於顯示的單位,進行收貨操作時傳遞給後台 * showUnit 用於顯示的單位,進行收貨操作時傳遞給後台
*/ */
private void transformationWareHouse(PurchaseOrderDetailsBean orderDetailsBean) { private void transformationWareHouse(PurchaseOrderDetailsBean orderDetailsBean) throws NullPointerException {
List<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean> purchaseOrderDetailsInfoVos = orderDetailsBean.getPurchaseOrderDetailsInfoVOS(); List<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean> purchaseOrderDetailsInfoVos = orderDetailsBean.getPurchaseOrderDetailsInfoVOS();
if (purchaseOrderDetailsInfoVos != null) { if (purchaseOrderDetailsInfoVos != null) {
//遍歷訂單商品 //遍歷訂單商品
...@@ -149,27 +159,29 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -149,27 +159,29 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
List<DeputyUnitBean> deputyUnitBeans = purchaseOrderDetailsInfoVO.getFoodUnits(); List<DeputyUnitBean> deputyUnitBeans = purchaseOrderDetailsInfoVO.getFoodUnits();
//計算出當前食材總金額 //計算出當前食材總金額
double warehousingAmount = MoneyUtil.priceCalculation(purchaseOrderDetailsInfoVO.getFoodPrice(), purchaseOrderDetailsInfoVO.getFoodQuantity()); double warehousingAmount = MoneyUtil.priceCalculation(purchaseOrderDetailsInfoVO.getFoodPrice(), purchaseOrderDetailsInfoVO.getFoodQuantity());
//待收貨的 //待收貨的
if (purchaseOrderDetailsInfoVO.getStatus() == PurchaseOrderDetailsBean.WAIT_RECEIVED) { if (purchaseOrderDetailsInfoVO.getStatus() == PurchaseOrderDetailsBean.WAIT_RECEIVED) {
//副單位為空,設置顯示主單位 //副單位為空,設置顯示主單位
if (deputyUnitBeans == null) { if (deputyUnitBeans == null) {
deputyUnitBeans = new ArrayList<>(); deputyUnitBeans = new ArrayList<>();
}
if (TextUtil.isEmptyOrNullOrUndefined(purchaseOrderDetailsInfoVO.getBasicUnitName())) {
throw new NullPointerException("未獲取到食品主單位,請檢查後重試");
}
//添加主單位到副單位列表,用戶可手動切換 //添加主單位到副單位列表,用戶可手動切換
DeputyUnitBean deputyUnitBean = new DeputyUnitBean(purchaseOrderDetailsInfoVO.getBasicUnitName(), purchaseOrderDetailsInfoVO.getFoodQuantity()); DeputyUnitBean deputyUnitBean = new DeputyUnitBean(purchaseOrderDetailsInfoVO.getBasicUnitName(), purchaseOrderDetailsInfoVO.getFoodQuantity());
deputyUnitBean.setDeputyValue(purchaseOrderDetailsInfoVO.getFoodQuantity()); deputyUnitBean.setDeputyValue(purchaseOrderDetailsInfoVO.getFoodQuantity());
deputyUnitBean.setUnitPrice(purchaseOrderDetailsInfoVO.getFoodPrice()); deputyUnitBean.setUnitPrice(purchaseOrderDetailsInfoVO.getFoodPrice());
deputyUnitBeans.add(deputyUnitBean); deputyUnitBeans.add(0, deputyUnitBean);
//设置显示的单位為主單位 //设置显示的单位,如果大於1,則顯示第一個,因為第一個是副單位,默認顯示副單位
purchaseOrderDetailsInfoVO.setShowUnit(deputyUnitBeans.get(0)); if (deputyUnitBeans.size() > 1) {
purchaseOrderDetailsInfoVO.setFoodUnits(deputyUnitBeans); purchaseOrderDetailsInfoVO.setShowUnit(deputyUnitBeans.get(1));
} else { } else {
//设置显示的单位為第一個副單位 //只有一個單位,顯示主單位
DeputyUnitBean deputyUnitBean = purchaseOrderDetailsInfoVO.getFoodUnits().get(0); purchaseOrderDetailsInfoVO.setShowUnit(deputyUnitBeans.get(0));
deputyUnitBean.setDeputyValue(purchaseOrderDetailsInfoVO.getFoodQuantity());
deputyUnitBean.setUnitPrice(purchaseOrderDetailsInfoVO.getFoodPrice());
purchaseOrderDetailsInfoVO.setShowUnit(deputyUnitBean);
} }
//設置單位集合
purchaseOrderDetailsInfoVO.setFoodUnits(deputyUnitBeans);
} else { } else {
//如果不是待收貨的商品:部分收貨和已完成,都不可再更改收貨單位,只顯示一個固定的單位 //如果不是待收貨的商品:部分收貨和已完成,都不可再更改收貨單位,只顯示一個固定的單位
//拿到入庫的那個單位 //拿到入庫的那個單位
......
...@@ -6,9 +6,11 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; ...@@ -6,9 +6,11 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean;
import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean; import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean;
import com.gingersoft.supply_chain.mvp.bean.SupplierResultBean; import com.gingersoft.supply_chain.mvp.bean.SupplierResultBean;
import com.gingersoft.supply_chain.mvp.content.Constant; import com.gingersoft.supply_chain.mvp.content.Constant;
import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.gingersoft.supply_chain.mvp.contract.SupplierListContract; import com.gingersoft.supply_chain.mvp.contract.SupplierListContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -17,9 +19,11 @@ import com.jess.arms.mvp.BasePresenter; ...@@ -17,9 +19,11 @@ import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils; import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxAsyncTask; import com.xuexiang.rxutil2.rxjava.task.RxAsyncTask;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -125,7 +129,7 @@ public class SupplierListPresenter extends BasePresenter<SupplierListContract.Mo ...@@ -125,7 +129,7 @@ public class SupplierListPresenter extends BasePresenter<SupplierListContract.Mo
RxJavaUtils.executeAsyncTask(new RxAsyncTask<Object, Integer>(1) { RxJavaUtils.executeAsyncTask(new RxAsyncTask<Object, Integer>(1) {
@Override @Override
public void doInUIThread(Integer o) { public void doInUIThread(Integer o) {
if(o != null){ if (o != null) {
mRootView.setSelectIndex(o); mRootView.setSelectIndex(o);
} }
} }
...@@ -164,6 +168,7 @@ public class SupplierListPresenter extends BasePresenter<SupplierListContract.Mo ...@@ -164,6 +168,7 @@ public class SupplierListPresenter extends BasePresenter<SupplierListContract.Mo
/** /**
* 刪除供應商 * 刪除供應商
*
* @param id 供應商id * @param id 供應商id
* @param position 所刪除的供應商下標 * @param position 所刪除的供應商下標
*/ */
...@@ -181,6 +186,7 @@ public class SupplierListPresenter extends BasePresenter<SupplierListContract.Mo ...@@ -181,6 +186,7 @@ public class SupplierListPresenter extends BasePresenter<SupplierListContract.Mo
public void onNext(@NonNull BaseResult info) { public void onNext(@NonNull BaseResult info) {
if (info != null) { if (info != null) {
if (info.isSuccess()) { if (info.isSuccess()) {
SupplyShoppingCart.getInstance().removeFoodsBySupplier(id);
mRootView.deleteSuccess(position); mRootView.deleteSuccess(position);
} else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) { } else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg()); mRootView.showMessage(info.getErrMsg());
......
...@@ -14,6 +14,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter; ...@@ -14,6 +14,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent; import com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent;
import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.gingersoft.supply_chain.mvp.contract.SupplyChainMainContract; import com.gingersoft.supply_chain.mvp.contract.SupplyChainMainContract;
import com.gingersoft.supply_chain.mvp.presenter.SupplyChainMainPresenter; import com.gingersoft.supply_chain.mvp.presenter.SupplyChainMainPresenter;
import com.gingersoft.supply_chain.mvp.ui.fragment.FunctionListFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.FunctionListFragment;
...@@ -151,6 +152,12 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai ...@@ -151,6 +152,12 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
} }
@Override @Override
protected void onDestroy() {
super.onDestroy();
SupplyShoppingCart.getInstance().clear();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
} }
......
...@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; ...@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean; import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean;
import com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodIngredientsFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodIngredientsFragment;
import com.google.android.material.textfield.TextInputEditText;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
...@@ -161,7 +162,7 @@ public class FoodListAdapter extends BaseQuickAdapter<PurchaseFoodBean, BaseView ...@@ -161,7 +162,7 @@ public class FoodListAdapter extends BaseQuickAdapter<PurchaseFoodBean, BaseView
*/ */
private void setEdit(@NotNull BaseViewHolder viewHolder, PurchaseFoodBean foodInfoBean) { private void setEdit(@NotNull BaseViewHolder viewHolder, PurchaseFoodBean foodInfoBean) {
//食品數量 //食品數量
EditText editText = viewHolder.getView(R.id.ed_food_ingredient_number); TextInputEditText editText = viewHolder.getView(R.id.ed_food_ingredient_number);
//當前食品總價 //當前食品總價
TextView mTvTotalAmount = viewHolder.getViewOrNull(R.id.tv_food_item_total_amount); TextView mTvTotalAmount = viewHolder.getViewOrNull(R.id.tv_food_item_total_amount);
//從緩存中取出這個食品信息,如果沒有對應的食品信息,說明沒操作過這個食品 //從緩存中取出這個食品信息,如果沒有對應的食品信息,說明沒操作過這個食品
...@@ -252,9 +253,6 @@ public class FoodListAdapter extends BaseQuickAdapter<PurchaseFoodBean, BaseView ...@@ -252,9 +253,6 @@ public class FoodListAdapter extends BaseQuickAdapter<PurchaseFoodBean, BaseView
if (hasFocus) { if (hasFocus) {
// if ("0".equals(editText.getText() + "")) { // if ("0".equals(editText.getText() + "")) {
// editText.setText(""); // editText.setText("");
// editText.setText(null);
// editText.requestFocusFromTouch();
// editText.requestFocus();
// } // }
editText.addTextChangedListener(foodNumTextWatcher); editText.addTextChangedListener(foodNumTextWatcher);
} else { } else {
......
...@@ -16,13 +16,17 @@ import org.jetbrains.annotations.NotNull; ...@@ -16,13 +16,17 @@ import org.jetbrains.annotations.NotNull;
*/ */
public class ImageAdapter extends BaseQuickAdapter<String, BaseViewHolder> { public class ImageAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
public ImageAdapter() { private boolean notShowDelete;
public ImageAdapter(boolean notShowDelete) {
super(R.layout.item_image); super(R.layout.item_image);
addChildClickViewIds(R.id.iv_img, R.id.iv_img_delete); addChildClickViewIds(R.id.iv_img, R.id.iv_img_delete);
this.notShowDelete = notShowDelete;
} }
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, String s) { protected void convert(@NotNull BaseViewHolder viewHolder, String s) {
GlideUtils.display(getContext(), viewHolder.getView(R.id.iv_img), s); GlideUtils.display(getContext(), viewHolder.getView(R.id.iv_img), s);
viewHolder.setGone(R.id.iv_img_delete, notShowDelete);
} }
} }
...@@ -141,9 +141,10 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai ...@@ -141,9 +141,10 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai
double beforeNum = showUnit.getDeputyValue(); double beforeNum = showUnit.getDeputyValue();
if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) { if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) {
showUnit.setDeputyValue(Double.parseDouble(s.toString())); showUnit.setDeputyValue(Double.parseDouble(s.toString()));
} else {
showUnit.setDeputyValue(0);
} }
// else {
// showUnit.setDeputyValue(0);
// }
//實付金額發生改變,需要通知頁面刷新總金額 //實付金額發生改變,需要通知頁面刷新總金額
if (checkBox.isChecked()) { if (checkBox.isChecked()) {
//現在的數量減去之前的數量,再乘以單價,得到增加或減少了多少總價 //現在的數量減去之前的數量,再乘以單價,得到增加或減少了多少總價
...@@ -156,7 +157,15 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai ...@@ -156,7 +157,15 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai
edFoodNum.setOnFocusChangeListener((v, hasFocus) -> { edFoodNum.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) { if (hasFocus) {
edFoodNum.addTextChangedListener(watcher); edFoodNum.addTextChangedListener(watcher);
if("0".equals(edFoodNum.getText().toString())){
edFoodNum.setText("");
}
} else { } else {
if (TextUtil.isEmptyOrNullOrUndefined(edFoodNum)) {
DeputyUnitBean showUnit = getItem(viewHolder.getAdapterPosition()).getShowUnit();
showUnit.setDeputyValue(0);
edFoodNum.setText("0");
}
edFoodNum.removeTextChangedListener(watcher); edFoodNum.removeTextChangedListener(watcher);
} }
}); });
...@@ -182,9 +191,10 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai ...@@ -182,9 +191,10 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai
double beforePrice = showUnit.getUnitPrice(); double beforePrice = showUnit.getUnitPrice();
if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) { if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) {
showUnit.setUnitPrice(Double.parseDouble(s.toString())); showUnit.setUnitPrice(Double.parseDouble(s.toString()));
} else {
showUnit.setUnitPrice(0);
} }
// else {
// showUnit.setUnitPrice(0);
// }
//當前食品已選中,實付金額發生改變,需要通知頁面刷新總金額 //當前食品已選中,實付金額發生改變,需要通知頁面刷新總金額
if (checkBox.isChecked()) { if (checkBox.isChecked()) {
//現在的單價減去之前的單價,再乘以數量,得到增加或減少的金額 //現在的單價減去之前的單價,再乘以數量,得到增加或減少的金額
...@@ -196,12 +206,22 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai ...@@ -196,12 +206,22 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai
}; };
edUnitPrice.setOnFocusChangeListener((v, hasFocus) -> { edUnitPrice.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) { if (hasFocus) {
if (TextUtil.isNotEmptyOrNullOrUndefined(edUnitPrice)) {
double price = Double.parseDouble(edUnitPrice.getText().toString());
if(price == 0){
edUnitPrice.setText("");
}
}
edUnitPrice.addTextChangedListener(unitPriceWatcher); edUnitPrice.addTextChangedListener(unitPriceWatcher);
} else { } else {
if (TextUtil.isEmptyOrNullOrUndefined(edUnitPrice)) {
DeputyUnitBean showUnit = getItem(viewHolder.getAdapterPosition()).getShowUnit();
showUnit.setUnitPrice(0);
edUnitPrice.setText("0");
}
edUnitPrice.removeTextChangedListener(unitPriceWatcher); edUnitPrice.removeTextChangedListener(unitPriceWatcher);
} }
}); });
} }
/** /**
......
...@@ -74,19 +74,21 @@ public class WareHousingDetailsAdapter extends BaseQuickAdapter<WarehouseDetails ...@@ -74,19 +74,21 @@ public class WareHousingDetailsAdapter extends BaseQuickAdapter<WarehouseDetails
viewHolder.setText(R.id.tv_warehouse_order_time_text, "下單日期:"); viewHolder.setText(R.id.tv_warehouse_order_time_text, "下單日期:");
//入庫日期 //入庫日期
viewHolder.setText(R.id.tv_warehouse_details_time, purchaseWarehousingOrderDetailsContentsBean.getWarehousingTime()); viewHolder.setText(R.id.tv_warehouse_details_time, purchaseWarehousingOrderDetailsContentsBean.getWarehousingTime());
viewHolder.setGone(R.id.tv_warehouse_details_time, false);
} else { } else {
//出庫,顯示- //出庫,顯示-
if (purchaseWarehousingOrderDetailsContentsBean.getFoodQuantity() >= 0) { if (purchaseWarehousingOrderDetailsContentsBean.getFoodQuantity() >= 0) {
//如果大於0,前面顯示-號 //如果大於0,前面顯示-號
viewHolder.setText(R.id.tv_warehouse_details_food_num, String.format(getContext().getString(R.string.str_format_less), MoneyUtil.formatDouble(purchaseWarehousingOrderDetailsContentsBean.getFoodQuantity()))); viewHolder.setText(R.id.tv_warehouse_details_food_num, String.format(getContext().getString(R.string.str_format_less), MoneyUtil.formatDouble(purchaseWarehousingOrderDetailsContentsBean.getFoodQuantity())));
} else { } else {
//小於0,直接顯示負數 //小於0,顯示正數,負負得正
viewHolder.setText(R.id.tv_warehouse_details_food_num, String.valueOf(purchaseWarehousingOrderDetailsContentsBean.getFoodQuantity())); viewHolder.setText(R.id.tv_warehouse_details_food_num, String.format(getContext().getString(R.string.str_format_positive), MoneyUtil.formatDouble(Math.abs(purchaseWarehousingOrderDetailsContentsBean.getFoodQuantity()))));
} }
// 入庫顯示消耗日期,不顯示入庫日期 // 入庫顯示消耗日期,不顯示入庫日期
viewHolder.setGone(R.id.tv_warehouse_time_text, true); viewHolder.setGone(R.id.tv_warehouse_time_text, true);
//消耗日期 //消耗日期
viewHolder.setText(R.id.tv_warehouse_order_time_text, "消耗日期:"); viewHolder.setText(R.id.tv_warehouse_order_time_text, "消耗日期:");
viewHolder.setGone(R.id.tv_warehouse_details_time, true);
} }
//下單時間 //下單時間
viewHolder.setText(R.id.tv_warehouse_details_order_time, purchaseWarehousingOrderDetailsContentsBean.getPurchaseTime()); viewHolder.setText(R.id.tv_warehouse_details_order_time, purchaseWarehousingOrderDetailsContentsBean.getPurchaseTime());
...@@ -102,6 +104,7 @@ public class WareHousingDetailsAdapter extends BaseQuickAdapter<WarehouseDetails ...@@ -102,6 +104,7 @@ public class WareHousingDetailsAdapter extends BaseQuickAdapter<WarehouseDetails
tvState.setBackground(allConsumeBg); tvState.setBackground(allConsumeBg);
tvState.setText("庫存已使用"); tvState.setText("庫存已使用");
} else { } else {
//未消耗或消耗部分的
if (purchaseWarehousingOrderDetailsContentsBean.getDistanceExpiresTime() >= 0) { if (purchaseWarehousingOrderDetailsContentsBean.getDistanceExpiresTime() >= 0) {
//即將過期天數大於等於0 //即將過期天數大於等於0
if (purchaseWarehousingOrderDetailsContentsBean.getWarningDays() > purchaseWarehousingOrderDetailsContentsBean.getDistanceExpiresTime()) { if (purchaseWarehousingOrderDetailsContentsBean.getWarningDays() > purchaseWarehousingOrderDetailsContentsBean.getDistanceExpiresTime()) {
......
...@@ -155,7 +155,7 @@ public class CategoryFragment extends BaseSupplyChainFragment<CategoryPresenter> ...@@ -155,7 +155,7 @@ public class CategoryFragment extends BaseSupplyChainFragment<CategoryPresenter>
AppDialog.getInstance().showWaringDialog(mContext, String.format(getString(R.string.str_delete_category_tip), foodCategoryTrees.getName()), (view, dialog) -> { AppDialog.getInstance().showWaringDialog(mContext, String.format(getString(R.string.str_delete_category_tip), foodCategoryTrees.getName()), (view, dialog) -> {
categoryPopup.dismiss(); categoryPopup.dismiss();
dialog.dismiss(); dialog.dismiss();
mPresenter.deleteFoodCategory(foodCategoryTrees.getId(), currentLevel, position); mPresenter.deleteFoodCategory(foodCategoryTrees, currentLevel, position);
}); });
}); });
new XPopup.Builder(getContext()) new XPopup.Builder(getContext())
......
...@@ -615,6 +615,8 @@ public class FoodIngredientsFragment extends BaseSupplyChainFragment<FoodIngredi ...@@ -615,6 +615,8 @@ public class FoodIngredientsFragment extends BaseSupplyChainFragment<FoodIngredi
String categoryName = data.getString(NewFoodIngredientsFragment.CATEGORY_NAME_KEY); String categoryName = data.getString(NewFoodIngredientsFragment.CATEGORY_NAME_KEY);
//從供應商的數據中將緩存移除掉,並拿到這個食材所屬的供應商 //從供應商的數據中將緩存移除掉,並拿到這個食材所屬的供應商
int removeSupplierId = mPresenter.removeSupplierCache(supplierName); int removeSupplierId = mPresenter.removeSupplierCache(supplierName);
//當前頁面顯示的供應商緩存也要移除掉,重新查詢,避免用戶修改了供應商或者分類
mPresenter.removeSupplierCacheById(supplierId);
//從分類的數據中將緩存移除掉 //從分類的數據中將緩存移除掉
mPresenter.removeCacheByCategoryName(categoryName); mPresenter.removeCacheByCategoryName(categoryName);
//如果所屬供應商是當前選中的供應商,則調用接口重新獲取數據 //如果所屬供應商是當前選中的供應商,則調用接口重新獲取數據
......
...@@ -44,6 +44,7 @@ import com.gingersoft.supply_chain.mvp.presenter.OrderDetailsPresenter; ...@@ -44,6 +44,7 @@ import com.gingersoft.supply_chain.mvp.presenter.OrderDetailsPresenter;
import com.gingersoft.supply_chain.mvp.ui.adapter.ImageAdapter; import com.gingersoft.supply_chain.mvp.ui.adapter.ImageAdapter;
import com.gingersoft.supply_chain.mvp.ui.adapter.OrderDetailsFoodAdapter; import com.gingersoft.supply_chain.mvp.ui.adapter.OrderDetailsFoodAdapter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.gingersoft.supply_chain.mvp.ui.widget.ChooseUnitPopup;
import com.gingersoft.supply_chain.mvp.ui.widget.PurchaseListMorePopup; import com.gingersoft.supply_chain.mvp.ui.widget.PurchaseListMorePopup;
import com.gingersoft.supply_chain.mvp.utils.SelectPicture; import com.gingersoft.supply_chain.mvp.utils.SelectPicture;
import com.google.android.material.checkbox.MaterialCheckBox; import com.google.android.material.checkbox.MaterialCheckBox;
...@@ -111,6 +112,8 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -111,6 +112,8 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
LinearLayout layoutEdRemark; LinearLayout layoutEdRemark;
private OrderDetailsFoodAdapter orderDetailsFoodAdapter; private OrderDetailsFoodAdapter orderDetailsFoodAdapter;
ImageAdapter imageAdapter;
private int typesOfFood = 0; private int typesOfFood = 0;
private double totalAmount = 0; private double totalAmount = 0;
...@@ -285,12 +288,10 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -285,12 +288,10 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
}); });
} }
ImageAdapter imageAdapter;
@Override @Override
public void uploadPicSuccess(String imgUrl) { public void uploadPicSuccess(String imgUrl) {
if (imageAdapter == null) { if (imageAdapter == null) {
imageAdapter = new ImageAdapter(); imageAdapter = new ImageAdapter(mPresenter.orderState == PurchaseOrderDetailsBean.ALL);
rvOrderDetailsPictures.setAdapter(imageAdapter); rvOrderDetailsPictures.setAdapter(imageAdapter);
rvOrderDetailsPictures.setLayoutManager(new GridLayoutManager(requireContext(), 4)); rvOrderDetailsPictures.setLayoutManager(new GridLayoutManager(requireContext(), 4));
imageAdapter.setOnItemChildClickListener((adapter, view, position) -> { imageAdapter.setOnItemChildClickListener((adapter, view, position) -> {
...@@ -373,23 +374,33 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -373,23 +374,33 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
//切換單位 //切換單位
PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean purchaseOrderDetailsInfoVosBean = orderDetailsFoodAdapter.getData().get(position); PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean purchaseOrderDetailsInfoVosBean = orderDetailsFoodAdapter.getData().get(position);
List<DeputyUnitBean> foodUnits = purchaseOrderDetailsInfoVosBean.getFoodUnits(); List<DeputyUnitBean> foodUnits = purchaseOrderDetailsInfoVosBean.getFoodUnits();
String[] units = new String[0]; // String[] units = new String[0];
List<String> units = new ArrayList<>();
if (foodUnits != null) { if (foodUnits != null) {
units = new String[foodUnits.size()]; // units = new String[foodUnits.size()];
for (int i = 0; i < foodUnits.size(); i++) { for (int i = 0; i < foodUnits.size(); i++) {
units[i] = foodUnits.get(i).getDeputyUnit(); // units[i] = foodUnits.get(i).getDeputyUnit();
units.add(foodUnits.get(i).getDeputyUnit());
} }
} }
if (units.length > 1) { if (units.size() > 1) {
ChooseUnitPopup popup = new ChooseUnitPopup(requireContext()).setStringData(units).setOnSelectListener(new OnSelectListener() {
@Override
public void onSelect(int position, String text) {
//將用戶之前輸入的值,修改到新選擇的單位匯中
DeputyUnitBean showUnit = purchaseOrderDetailsInfoVosBean.getShowUnit();
DeputyUnitBean deputyUnitBean = foodUnits.get(position);
deputyUnitBean.setDeputyValue(showUnit.getDeputyValue());
deputyUnitBean.setUnitPrice(showUnit.getUnitPrice());
purchaseOrderDetailsInfoVosBean.setShowUnit(deputyUnitBean);
orderDetailsFoodAdapter.notifyItemChanged(position);
}
});
new XPopup.Builder(getContext()) new XPopup.Builder(getContext())
.hasShadowBg(false) .hasShadowBg(false)
.atView(view) // 依附于所点击的View,内部会自动判断在上方或者下方显示 .atView(view) // 依附于所点击的View,内部会自动判断在上方或者下方显示
.asAttachList(units, .asCustom(popup)
null, .show();
(position1, text) -> {
purchaseOrderDetailsInfoVosBean.setShowUnit(foodUnits.get(position1));
orderDetailsFoodAdapter.notifyItemChanged(position);
}).show();
} }
} }
}); });
......
...@@ -131,7 +131,13 @@ public class WarehousingInventoryFragment extends BaseSupplyChainFragment<Wareho ...@@ -131,7 +131,13 @@ public class WarehousingInventoryFragment extends BaseSupplyChainFragment<Wareho
if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) { if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) {
//用戶輸入的盤點數量 //用戶輸入的盤點數量
int inventoryNum = Integer.parseInt(s + ""); int inventoryNum = Integer.parseInt(s + "");
tvWarehouseDifference.setText(String.valueOf(foodNum - inventoryNum)); // if (inventoryNum > foodNum) {
// inventoryNum = foodNum;
// showMessage("不能大於庫存數");
// edWarehouseLoss.setText(String.valueOf(foodNum));
// edWarehouseLoss.setSelection(edWarehouseLoss.getText().length());
// }
tvWarehouseDifference.setText(String.valueOf(Math.abs(foodNum - inventoryNum)));
} else { } else {
tvWarehouseDifference.setText(String.valueOf(foodNum)); tvWarehouseDifference.setText(String.valueOf(foodNum));
} }
......
package com.gingersoft.supply_chain.mvp.ui.widget;
import android.content.Context;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.supply_chain.R;
import com.lxj.xpopup.animator.PopupAnimator;
import com.lxj.xpopup.animator.ScrollScaleAnimator;
import com.lxj.xpopup.enums.PopupAnimation;
import com.lxj.xpopup.impl.AttachListPopupView;
import com.lxj.xpopup.interfaces.OnSelectListener;
import com.lxj.xpopup.widget.VerticalRecyclerView;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/29
* Time: 16:45
* Use:
*/
public class ChooseUnitPopup extends AttachListPopupView {
private OnSelectListener selectListener;
private RecyclerView recyclerView;
private int width;
/**
* @param context
*/
public ChooseUnitPopup(@NonNull Context context) {
super(context, 0, R.layout.popup_choose_unit);
}
@Override
protected void onCreate() {
recyclerView = findViewById(R.id.recyclerView);
width = popupInfo.atView.getMeasuredWidth();
recyclerView.setHasFixedSize(false);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
ChooseUnitAdapter adapter = new ChooseUnitAdapter();
adapter.setOnItemClickListener((a, view, position) -> {
if (selectListener != null) {
selectListener.onSelect(position, adapter.getItem(position));
}
if (popupInfo.autoDismiss) {
dismiss();
}
});
recyclerView.setAdapter(adapter);
applyTheme();
}
private List<String> data;
public ChooseUnitPopup setStringData(List<String> data) {
this.data = data;
return this;
}
@Override
protected PopupAnimator getPopupAnimator() {
PopupAnimator animator;
if (isShowUpToTarget()) {
// 在上方展示
animator = new ScrollScaleAnimator(getPopupContentView(), PopupAnimation.ScrollAlphaFromBottom);
} else {
// 在下方展示
animator = new ScrollScaleAnimator(getPopupContentView(), PopupAnimation.ScrollAlphaFromTop);
}
return animator;
}
@Override
protected void applyDarkTheme() {
((VerticalRecyclerView)recyclerView).setupDivider(true);
}
@Override
protected void applyLightTheme() {
((VerticalRecyclerView)recyclerView).setupDivider(false);
}
@Override
public ChooseUnitPopup setOnSelectListener(OnSelectListener selectListener) {
this.selectListener = selectListener;
return this;
}
public class ChooseUnitAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
public ChooseUnitAdapter() {
super(R.layout.popup_choose_unit, data);
}
@Override
protected void convert(@NotNull BaseViewHolder viewHolder, String s) {
viewHolder.setText(R.id.tv_text, s);
LinearLayout layout = viewHolder.getView(R.id.layout_choose_unit);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width, LinearLayout.LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(layoutParams);
}
}
}
...@@ -155,22 +155,24 @@ ...@@ -155,22 +155,24 @@
android:layout_height="@dimen/dp_24" android:layout_height="@dimen/dp_24"
android:background="@drawable/ic_circle_gray_sub" /> android:background="@drawable/ic_circle_gray_sub" />
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/ed_food_ingredient_number" android:id="@+id/ed_food_ingredient_number"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minWidth="@dimen/dp_10" android:layout_marginLeft="@dimen/dp_4"
android:layout_marginLeft="@dimen/dp_10" android:layout_marginRight="@dimen/dp_4"
android:layout_marginRight="@dimen/dp_10"
android:background="@null" android:background="@null"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:inputType="number" android:inputType="number"
android:maxLength="4" android:maxLength="4"
android:paddingLeft="@dimen/dp_4" android:maxLines="1"
android:paddingRight="@dimen/dp_4" android:minWidth="@dimen/dp_30"
android:text="0"
android:textColor="@color/black" android:textColor="@color/black"
android:textCursorDrawable="@drawable/cursor_theme" android:textCursorDrawable="@drawable/cursor_theme"
android:textSize="@dimen/dp_22" /> android:textSize="@dimen/dp_22"
tools:text="10" />
<com.qmuiteam.qmui.layout.QMUIButton <com.qmuiteam.qmui.layout.QMUIButton
android:id="@+id/btn_food_operation_add" android:id="@+id/btn_food_operation_add"
......
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
<ImageView <ImageView
android:id="@+id/iv_img_delete" android:id="@+id/iv_img_delete"
android:layout_width="@dimen/dp_20" android:layout_width="@dimen/dp_17"
android:layout_height="@dimen/dp_20" android:layout_height="@dimen/dp_17"
android:layout_gravity="right" android:layout_gravity="right"
android:src="@drawable/icon_dialog_close" /> android:src="@drawable/ic_red_delete_pic" />
</FrameLayout> </FrameLayout>
\ No newline at end of file
...@@ -128,11 +128,11 @@ ...@@ -128,11 +128,11 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:layout_marginRight="@dimen/dp_5"
android:background="@null" android:background="@null"
android:gravity="end|center_vertical" android:gravity="end|center_vertical"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:maxLines="1" android:maxLines="1"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/color_3c" android:textColor="@color/color_3c"
android:textColorHighlight="@color/theme_color" android:textColorHighlight="@color/theme_color"
android:textCursorDrawable="@drawable/cursor_theme" android:textCursorDrawable="@drawable/cursor_theme"
...@@ -163,13 +163,13 @@ ...@@ -163,13 +163,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:layout_marginRight="@dimen/dp_5"
android:background="@null" android:background="@null"
android:textCursorDrawable="@drawable/cursor_theme" android:paddingRight="@dimen/dp_10"
android:gravity="end|center_vertical" android:gravity="end|center_vertical"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:maxLines="1" android:maxLines="1"
android:textColor="@color/color_3c" android:textColor="@color/color_3c"
android:textCursorDrawable="@drawable/cursor_theme"
android:textSize="@dimen/dp_15" android:textSize="@dimen/dp_15"
android:textStyle="bold" android:textStyle="bold"
tools:text="2" /> tools:text="2" />
......
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
android:layout_height="@dimen/dp_24" android:layout_height="@dimen/dp_24"
android:background="@drawable/ic_circle_gray_sub" /> android:background="@drawable/ic_circle_gray_sub" />
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/ed_food_ingredient_number" android:id="@+id/ed_food_ingredient_number"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_choose_unit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="@dimen/dp_7"
android:paddingBottom="@dimen/dp_7">
<ImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="但"
android:textColor="@color/color_3c"
android:textSize="@dimen/dp_15" />
</LinearLayout>
\ No newline at end of file
...@@ -56,6 +56,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T ...@@ -56,6 +56,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
MultiInputBean infoMultiBean = (MultiInputBean) t; MultiInputBean infoMultiBean = (MultiInputBean) t;
TextInputEditText editText = baseViewHolder.getView(R.id.ed_multi_value); TextInputEditText editText = baseViewHolder.getView(R.id.ed_multi_value);
editText.setError(null);
initEditFocusable(infoMultiBean, editText); initEditFocusable(infoMultiBean, editText);
//設置輸入限制 //設置輸入限制
setFilters(editText, infoMultiBean); setFilters(editText, infoMultiBean);
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -9,6 +10,7 @@ ...@@ -9,6 +10,7 @@
android:id="@+id/tv_bill_total_text" android:id="@+id/tv_bill_total_text"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="微信:"
android:layout_weight="0.7" android:layout_weight="0.7"
android:gravity="right" android:gravity="right"
style="@style/Print_text_style"/> style="@style/Print_text_style"/>
...@@ -20,5 +22,6 @@ ...@@ -20,5 +22,6 @@
android:layout_weight="0.3" android:layout_weight="0.3"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:gravity="right" android:gravity="right"
tools:text="$500"
style="@style/Print_text_style" /> style="@style/Print_text_style" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
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